From 3b5d75133b9e7ef5e59d7f4ecace43bbcd14bf77 Mon Sep 17 00:00:00 2001 From: Joe Fiorini Date: Fri, 31 Jul 2015 12:21:28 -0400 Subject: [PATCH 1/5] Move all survey code to job-templates module --- awx/ui/client/src/app.js | 2 - awx/ui/client/src/controllers/JobTemplates.js | 4 +- awx/ui/client/src/forms.js | 2 - awx/ui/client/src/forms/SurveyQuestion.js | 304 ---------- awx/ui/client/src/helpers.js | 2 - awx/ui/client/src/helpers/JobSubmission.js | 8 +- awx/ui/client/src/job-templates/main.js | 5 +- .../src/job-templates/survey-maker/main.js | 12 + .../survey-maker/questions/edit.factory.js | 99 ++++ .../questions/finalize.factory.js | 185 ++++++ .../survey-maker/questions/main.js | 7 + .../job-templates/survey-maker/shared/main.js | 5 + .../shared/question-definition.form.js | 303 ++++++++++ .../survey-maker/surveys/add.factory.js | 25 + .../survey-maker/surveys/delete.factory.js | 63 ++ .../survey-maker/surveys/edit.factory.js | 80 +++ .../survey-maker/surveys/init.factory.js} | 537 +----------------- .../survey-maker/surveys/main.js | 13 + .../survey-maker/surveys/show.factory.js | 84 +++ 19 files changed, 906 insertions(+), 834 deletions(-) delete mode 100644 awx/ui/client/src/forms/SurveyQuestion.js create mode 100644 awx/ui/client/src/job-templates/survey-maker/main.js create mode 100644 awx/ui/client/src/job-templates/survey-maker/questions/edit.factory.js create mode 100644 awx/ui/client/src/job-templates/survey-maker/questions/finalize.factory.js create mode 100644 awx/ui/client/src/job-templates/survey-maker/questions/main.js create mode 100644 awx/ui/client/src/job-templates/survey-maker/shared/main.js create mode 100644 awx/ui/client/src/job-templates/survey-maker/shared/question-definition.form.js create mode 100644 awx/ui/client/src/job-templates/survey-maker/surveys/add.factory.js create mode 100644 awx/ui/client/src/job-templates/survey-maker/surveys/delete.factory.js create mode 100644 awx/ui/client/src/job-templates/survey-maker/surveys/edit.factory.js rename awx/ui/client/src/{helpers/Survey.js => job-templates/survey-maker/surveys/init.factory.js} (50%) create mode 100644 awx/ui/client/src/job-templates/survey-maker/surveys/main.js create mode 100644 awx/ui/client/src/job-templates/survey-maker/surveys/show.factory.js diff --git a/awx/ui/client/src/app.js b/awx/ui/client/src/app.js index 2804ca7f09..362e89770a 100644 --- a/awx/ui/client/src/app.js +++ b/awx/ui/client/src/app.js @@ -177,14 +177,12 @@ var tower = angular.module('Tower', [ 'LogViewerOptionsDefinition', 'EventViewerHelper', 'HostEventsViewerHelper', - 'SurveyHelper', 'JobDetailHelper', 'SocketIO', 'lrInfiniteScroll', 'LoadConfigHelper', 'SocketHelper', 'AboutAnsibleHelpModal', - 'SurveyQuestionFormDefinition', 'PortalJobsListDefinition', diff --git a/awx/ui/client/src/controllers/JobTemplates.js b/awx/ui/client/src/controllers/JobTemplates.js index 9b579bf00b..93fbc9175a 100644 --- a/awx/ui/client/src/controllers/JobTemplates.js +++ b/awx/ui/client/src/controllers/JobTemplates.js @@ -654,7 +654,7 @@ export function JobTemplatesAdd($filter, $scope, $rootScope, $compile, $location JobTemplatesAdd.$inject = ['$filter', '$scope', '$rootScope', '$compile', '$location', '$log', '$routeParams', 'JobTemplateForm', 'GenerateForm', 'Rest', 'Alert', 'ProcessErrors', 'LoadBreadCrumbs', 'ReturnToCaller', 'ClearScope', 'GetBasePath', 'InventoryList', 'CredentialList', 'ProjectList', 'LookUpInit', - 'md5Setup', 'ParseTypeChange', 'Wait', 'Empty', 'ToJSON', 'CallbackHelpInit', 'SurveyControllerInit', 'Prompt', 'GetChoices' + 'md5Setup', 'ParseTypeChange', 'Wait', 'Empty', 'ToJSON', 'CallbackHelpInit', 'initSurvey', 'Prompt', 'GetChoices' ]; @@ -1231,5 +1231,5 @@ JobTemplatesEdit.$inject = ['$filter', '$scope', '$rootScope', '$compile', '$loc 'ReturnToCaller', 'ClearScope', 'InventoryList', 'CredentialList', 'ProjectList', 'LookUpInit', 'GetBasePath', 'md5Setup', 'ParseTypeChange', 'JobStatusToolTip', 'FormatDate', 'Wait', 'Stream', 'Empty', 'Prompt', 'ParseVariableString', 'ToJSON', 'SchedulesControllerInit', 'JobsControllerInit', 'JobsListUpdate', 'GetChoices', - 'SchedulesListInit', 'SchedulesList', 'CallbackHelpInit', 'PlaybookRun' , 'SurveyControllerInit' + 'SchedulesListInit', 'SchedulesList', 'CallbackHelpInit', 'PlaybookRun' , 'initSurvey' ]; diff --git a/awx/ui/client/src/forms.js b/awx/ui/client/src/forms.js index 1620543189..5ac8de52d0 100644 --- a/awx/ui/client/src/forms.js +++ b/awx/ui/client/src/forms.js @@ -27,7 +27,6 @@ import Permissions from "./forms/Permissions"; import ProjectStatus from "./forms/ProjectStatus"; import Projects from "./forms/Projects"; import Source from "./forms/Source"; -import SurveyQuestion from "./forms/SurveyQuestion"; import Teams from "./forms/Teams"; import Users from "./forms/Users"; @@ -56,7 +55,6 @@ export ProjectStatus, Projects, Source, - SurveyQuestion, Teams, Users }; diff --git a/awx/ui/client/src/forms/SurveyQuestion.js b/awx/ui/client/src/forms/SurveyQuestion.js deleted file mode 100644 index 4d575799b0..0000000000 --- a/awx/ui/client/src/forms/SurveyQuestion.js +++ /dev/null @@ -1,304 +0,0 @@ -/************************************************* - * Copyright (c) 2015 Ansible, Inc. - * - * All Rights Reserved - *************************************************/ - - /** - * @ngdoc function - * @name forms.function:Questions - * @description This form is for adding a question -*/ - -export default - angular.module('SurveyQuestionFormDefinition', []) - .value('SurveyQuestionForm', { - - addTitle: 'Add Question', - editTitle: 'Edit Question', - base: 'survey_question', - name: 'survey_question', - well: true, - twoColumns: true, - breadcrumbs: false, - - fields: { - question_name: { - realName: 'question_text', - label: 'Name', - type: 'text', - addRequired: true, - editRequired: true, - column: 1, - awSurveyQuestion: true - }, - question_description: { - realName: 'question_description', - label: 'Description', - type: 'text', - addRequired: false, - editRequired: false, - column: 1 - }, - variable: { - ealName: 'variable', - type: 'custom', - control:''+ - '
'+ - '
Please enter an answer variable name.
'+ - '
Please remove the illegal character from the survey question variable name.
'+ - '
This question variable is already in use. Please enter a different variable name.
' + - '
'+ - '
', - addRequired: true, - editRequired: true, - column: 1 - }, - type: { - realName: 'answer_type', - label: 'Answer Type', - type: 'select', - defaultText: 'Choose an answer type', - ngOptions: 'answer_types.name for answer_types in answer_types track by answer_types.type', - addRequired: true, - editRequired: true, - column: 2, - ngChange: 'typeChange()' - }, - choices: { - realName: 'answer_options', - label: 'Multiple Choice Options', - type: 'textarea', - rows: 3, - addRequired: true, - editRequired: true, - ngRequired: "type.type=== 'multiselect' || type.type=== 'multiplechoice' " , - ngShow: 'type.type=== "multiselect" || type.type=== "multiplechoice" ', - awPopOver: '

Type an option on each line.

'+ - '

For example the following input:

Apple
\n Banana
\n Cherry

would be displayed as:

\n'+ - '
  1. Apple
  2. Banana
  3. Cherry
', - dataTitle: 'Multiple Choice Options', - dataPlacement: 'right', - dataContainer: "body", - column: 2 - }, - text_options: { - realName: 'answer_options', - type: 'custom', - control:'
'+ - '
'+ - ''+ - '
The minimum length you entered is not a valid number. Please enter a whole number.
'+ - '
The minimium length is too high. Please enter a lower number.
'+ - '
The minimum length is too low. Please enter a positive number.
'+ - '
'+ - '
'+ - ''+ - '
The maximum length you entered is not a valid number. Please enter a whole nnumber.
'+ - '
The maximum length is too low. Please enter a number larger than the minimum length you set.
'+ - '
'+ - '
', - ngShow: 'type.type==="text" ', - addRequired: true, - editRequired: true, - column: 2 - }, - textarea_options: { - realName: 'answer_options', - type: 'custom', - control:'
'+ - '
'+ - ''+ - '
The minimum length you entered is not a valid number. Please enter a whole number.
'+ - '
The minimium length is too high. Please enter a lower number.
'+ - '
The minimum length is too low. Please enter a positive number.
'+ - '
'+ - '
'+ - ''+ - '
The maximum length you entered is not a valid number. Please enter a whole number.
'+ - '
The maximum length is too low. Please enter a number larger than the minimum length you set.
'+ - '
'+ - '
', - ngShow: 'type.type==="textarea" ', - addRequired: true, - editRequired: true, - column: 2 - }, - password_options: { - realName: 'answer_options', - type: 'custom', - control:'
'+ - '
'+ - ''+ - '
The minimum length you entered is not a valid number. Please enter a whole number.
'+ - '
The minimium length is too high. Please enter a lower number.
'+ - '
The minimum length is too low. Please enter a positive number.
'+ - '
'+ - '
'+ - ''+ - '
The maximum length you entered is not a valid number. Please enter a whole number.
'+ - '
The maximum length is too low. Please enter a number larger than the minimum length you set.
'+ - '
'+ - '
', - ngShow: 'type.type==="password" ', - addRequired: true, - editRequired: true, - column: 2 - }, - int_options: { - realName: 'answer_options', - type: 'custom', - control:'
'+ - '
'+ - ''+ - '
Please enter a valid integer.
'+ - '
Please enter a smaller integer.
'+ - '
'+ - '
'+ - ''+ - '
Please enter a valid integer.
'+ - '
Please enter a larger integer.
'+ - '
'+ - '
', - ngShow: 'type.type==="integer" ', - addRequired: true, - editRequired: true, - column: 2 - }, - float_options: { - realName: 'answer_options', - type: 'custom', - control: '
'+ - '
'+ - ''+ - '
Please enter a valid float.
'+ - '
Please enter a smaller float.
'+ - '
'+ - '
'+ - ''+ - '
Please enter a valid float.
'+ - '
Please enter a larger float.
'+ - - '
'+ - '
', - ngShow: 'type.type==="float" ', - addRequired: true, - editRequired: true, - column: 2 - }, - default:{ - realName: 'default_answer', - type: 'custom' , - control: '
'+ - ''+ - '
'+ - ''+ - '
Please enter an answer from the choices listed.
' + - '
The answer is shorter than the minimium length. Please make the answer longer.
' + - '
The answer is longer than the maximum length. Please make the answer shorter.
' + - '
'+ - '
'+ - '
', - column: 2, - ngShow: 'type.type === "text" || type.type === "multiplechoice" ' - }, - default_multiselect: { - realName: 'default_answer' , - type: 'custom', - control: '
'+ - ''+ - '
'+ - ''+ - '
Please enter an answer/answers from the choices listed.
' + - '
'+ - '
'+ - '
', - column: 2, - ngShow: 'type.type==="multiselect" ' - }, - default_int: { - realName: 'default_answer', - type: 'custom', - control: '
'+ - ''+ - ''+ - '
Please enter a valid integer.
'+ - '
Please enter a value in the range of {{int_min}} to {{int_max}}.
'+ - '
', - column: 2, - ngShow: 'type.type === "integer" ' - }, - default_float: { - realName: 'default_answer', - type: 'custom', - control: '
'+ - ''+ - ''+ - '
Please enter a valid float.
'+ - '
Please enter a value in the range of {{float_min}} to {{float_max}}!
'+ - '
', - column: 2, - ngShow: 'type.type=== "float" ' - }, - default_textarea: { - realName: "default_answer" , - type: 'custom', - control: '
'+ - ''+ - '
'+ - ''+ - '
The answer is shorter than the minimium length. Please make the answer longer.
' + - '
The answer is longer than the maximum length. Please make the answer shorter.
' + - '
'+ - '
'+ - '
', - column : 2, - ngShow: 'type.type === "textarea" ' - }, - default_password: { - realName: 'default_answer' , - type: 'custom' , - control: '
'+ - ''+ - '
'+ - '
'+ - ''+ - ''+ - ''+ - ''+ - '
'+ - '
The answer is shorter than the minimium length. Please make the answer longer.
' + - '
The answer is longer than the maximum length. Please make the answer shorter.
' + - '
'+ - '
'+ - '
', - column: 2, - ngShow: 'type.type === "password" ' - }, - required: { - realName: 'required_answer', - label: 'Required', - type: 'checkbox', - addRequired: false, - editRequired: false, - column: 2 - } - }, - buttons: { - question_cancel : { - label: 'Cancel', - 'class' : 'btn btn-default', - ngClick: 'cancelQuestion($event)' - }, - submit_question: { - ngClick: 'submitQuestion($event)', - ngDisabled: true, - 'class': 'btn btn-sm btn-primary', - label: 'Add Question' - } - } - - }); diff --git a/awx/ui/client/src/helpers.js b/awx/ui/client/src/helpers.js index 05a3f5b12f..be783b45a9 100644 --- a/awx/ui/client/src/helpers.js +++ b/awx/ui/client/src/helpers.js @@ -32,7 +32,6 @@ import Projects from "./helpers/Projects"; import Schedules from "./helpers/Schedules"; import Selection from "./helpers/Selection"; import SocketHelper from "./helpers/SocketHelper"; -import Survey from "./helpers/Survey"; import Users from "./helpers/Users"; import Variables from "./helpers/Variables"; import ApiDefaults from "./helpers/api-defaults"; @@ -71,7 +70,6 @@ export Schedules, Selection, SocketHelper, - Survey, Users, Variables, ApiDefaults, diff --git a/awx/ui/client/src/helpers/JobSubmission.js b/awx/ui/client/src/helpers/JobSubmission.js index 473848b3cc..345183ab82 100644 --- a/awx/ui/client/src/helpers/JobSubmission.js +++ b/awx/ui/client/src/helpers/JobSubmission.js @@ -497,10 +497,10 @@ function($compile, Rest, GetBasePath, TextareaResize,CreateDialog, GenerateForm, }; }]) - .factory('PromptForSurvey', ['$filter', '$compile', 'Wait', 'Alert', 'CredentialForm', 'CreateLaunchDialog', 'SurveyControllerInit' , 'GetBasePath', 'Rest' , 'Empty', - 'GenerateForm', 'ShowSurveyModal', 'ProcessErrors', '$routeParams' , - function($filter, $compile, Wait, Alert, CredentialForm, CreateLaunchDialog, SurveyControllerInit, GetBasePath, Rest, Empty, - GenerateForm, ShowSurveyModal, ProcessErrors, $routeParams) { + .factory('PromptForSurvey', ['$filter', '$compile', 'Wait', 'Alert', 'CredentialForm', 'CreateLaunchDialog', 'GetBasePath', 'Rest' , 'Empty', + 'GenerateForm', 'ProcessErrors', '$routeParams' , + function($filter, $compile, Wait, Alert, CredentialForm, CreateLaunchDialog, GetBasePath, Rest, Empty, + GenerateForm, ProcessErrors, $routeParams) { return function(params) { var html = params.html || "", id= params.id, diff --git a/awx/ui/client/src/job-templates/main.js b/awx/ui/client/src/job-templates/main.js index f38fce2023..f69679e350 100644 --- a/awx/ui/client/src/job-templates/main.js +++ b/awx/ui/client/src/job-templates/main.js @@ -5,7 +5,10 @@ *************************************************/ import deleteJobTemplate from './delete-job-template.service'; +import surveyMaker from './survey-maker/main'; export default - angular.module('jobTemplates', []) + angular.module('jobTemplates', + [ surveyMaker.name + ]) .service('deleteJobTemplate', deleteJobTemplate); diff --git a/awx/ui/client/src/job-templates/survey-maker/main.js b/awx/ui/client/src/job-templates/survey-maker/main.js new file mode 100644 index 0000000000..38d30679d9 --- /dev/null +++ b/awx/ui/client/src/job-templates/survey-maker/main.js @@ -0,0 +1,12 @@ +import listGenerator from '../../shared/list-generator/main'; +import questions from './questions/main'; +import surveys from './surveys/main'; +import shared from './shared/main'; + +export default + angular.module('jobTemplates.surveyMaker', + [ listGenerator.name, + questions.name, + surveys.name, + shared.name + ]); diff --git a/awx/ui/client/src/job-templates/survey-maker/questions/edit.factory.js b/awx/ui/client/src/job-templates/survey-maker/questions/edit.factory.js new file mode 100644 index 0000000000..6a4ab46eea --- /dev/null +++ b/awx/ui/client/src/job-templates/survey-maker/questions/edit.factory.js @@ -0,0 +1,99 @@ +export default + function EditQuestion(GetBasePath, Rest, Wait, ProcessErrors, $compile, GenerateForm, SurveyQuestionForm) { + return function(params) { + + var scope = params.scope, + index = params.index, + element, + tmpVar, + i, + question = params.question, //scope.survey_questions[index], + form = SurveyQuestionForm; + + $('#survey-save-button').attr('disabled', 'disabled'); + angular.element('#survey_question_question_cancel_btn').trigger('click'); + $('#add_question_btn').hide(); + // $('#new_question .aw-form-well').remove(); + element = $('.question_final:eq('+index+')'); + element.css('opacity', 1.0); + element.empty(); + scope.text_min = null; + scope.text_max = null; + scope.int_min = null; + scope.int_max = null; + scope.float_min = null; + scope.float_max = null; + scope.password_min = null; + scope.password_max = null; + scope.pwcheckbox = false; + + if (scope.removeFillQuestionForm) { + scope.removeFillQuestionForm(); + } + scope.removeFillQuestionForm = scope.$on('FillQuestionForm', function() { + for( var fld in form.fields){ + scope[fld] = question[fld]; + if(form.fields[fld].type === 'select'){ + for (i = 0; i < scope.answer_types.length; i++) { + if (question[fld] === scope.answer_types[i].type) { + scope[fld] = scope.answer_types[i]; + } + } + } + } + if( question.type === 'text'){ + scope.text_min = question.min; + scope.text_max = question.max; + scope.default_text = question.default; + } + if( question.type === 'textarea'){ + scope.textarea_min = question.min; + scope.textarea_max = question.max; + scope.default_textarea= question.default; + } + if(question.type === 'password'){ + scope.password_min = question.min; + scope.password_max = question.max; + scope.default_password = question.default; + } + if( question.type === 'integer'){ + scope.int_min = question.min; + scope.int_max = question.max; + scope.default_int = question.default; + } + else if( question.type === 'float' ) { + scope.float_min = question.min; + scope.float_max = question.max; + scope.default_float = question.default; + + } + else if ( question.type === 'multiselect'){ + scope.default_multiselect = question.default; + } + }); + + if (scope.removeGenerateForm) { + scope.removeGenerateForm(); + } + scope.removeGenerateForm = scope.$on('GenerateForm', function() { + tmpVar = scope.mode; + GenerateForm.inject(form, { id: 'question_'+index, mode: 'edit' , related: false, scope:scope, breadCrumbs: false}); + scope.mode = tmpVar; + scope.$emit('FillQuestionForm'); + }); + + + scope.$emit('GenerateForm'); + + }; + } + +EditQuestion.$inject = + [ 'GetBasePath', + 'Rest', + 'Wait', + 'ProcessErrors', + '$compile', + 'GenerateForm', + 'questionDefinitionForm' + ]; diff --git a/awx/ui/client/src/job-templates/survey-maker/questions/finalize.factory.js b/awx/ui/client/src/job-templates/survey-maker/questions/finalize.factory.js new file mode 100644 index 0000000000..9c81ec8d37 --- /dev/null +++ b/awx/ui/client/src/job-templates/survey-maker/questions/finalize.factory.js @@ -0,0 +1,185 @@ +/** + * Takes a finalized question and displays it on the survey maker page + * + * FinalizeQuestion({ + * scope: $scope containing list of survey form fields + * question: question object that was submitted by the question form + * id: id of job template that survey is attached to + * callback: $scope.$emit label to call when delete is completed + * }) + * + */ +export default + function FinalizeQuestion(GetBasePath, Rest, Wait, ProcessErrors, $compile, Empty, $filter) { + return function(params) { + + var scope = params.scope, + question = params.question, + index = params.index, + required, + element, + choices, + i, + checked, + max, + min, + defaultValue, + answers, + html = ""; + + question.index = index; + question.question_name = $filter('sanitize')(question.question_name); + question.question_description = (question.question_description) ? $filter('sanitize')(question.question_description) : undefined; + + + if(!$('#question_'+question.index+':eq(0)').is('div')){ + html+='
'; + $('#finalized_questions').append(html); + } + + required = (question.required===true) ? "prepend-asterisk" : ""; + html = '
'; + html += ''; + html += '
'; + + if(!Empty(question.question_description)){ + html += '
'+question.question_description+'
\n'; + } + + if(question.type === 'text' ){ + defaultValue = (question.default) ? question.default : ""; + defaultValue = $filter('sanitize')(defaultValue); + defaultValue = scope.serialize(defaultValue); + html+='
'+ + '
'+ + ''+ + '
'; + } + if(question.type === "textarea"){ + defaultValue = (question.default) ? question.default : (question.default_textarea) ? question.default_textarea: "" ; + defaultValue = $filter('sanitize')(defaultValue); + defaultValue = scope.serialize(defaultValue); + html+='
'+ + '
'+ + ''+ + '
'; + } + if(question.type === 'multiplechoice' || question.type === "multiselect"){ + choices = question.choices.split(/\n/); + element = (question.type==="multiselect") ? "checkbox" : 'radio'; + question.default = (question.default) ? question.default : (question.default_multiselect) ? question.default_multiselect : "" ; + answers = question.default.split(/\n/); + html += '
'; + for( i = 0; i' + + ''+choices[i] +'
' ; + } + html += '
'; + } + + if(question.type === 'password'){ + defaultValue = (question.default) ? question.default : ""; + defaultValue = $filter('sanitize')(defaultValue); + defaultValue = scope.serialize(defaultValue); + html+='
'+ + '
'+ + ''+ + ''+ + ''+ + ''+ + '
'+ + '
'; + } + + if(question.type === 'integer'){ + min = (!Empty(question.min)) ? question.min : ""; + max = (!Empty(question.max)) ? question.max : "" ; + defaultValue = (!Empty(question.default)) ? question.default : (!Empty(question.default_int)) ? question.default_int : "" ; + html+='
'+ + '
'+ + ''+ + '
'; + + } + if(question.type === "float"){ + min = (!Empty(question.min)) ? question.min : ""; + max = (!Empty(question.max)) ? question.max : "" ; + defaultValue = (!Empty(question.default)) ? question.default : (!Empty(question.default_float)) ? question.default_float : "" ; + html+='
'+ + '
'+ + ''+ + '
'; + + } + html += '
'; + html += ' '; + html += ' '; + html += ' '; + html += ' '; + html+='
'; + + $('#question_'+question.index).append(html); + + element = angular.element(document.getElementById('question_'+question.index)); + // // element.html(html); + //element.css('opacity', 0.7); + $compile(element)(scope); + // var questionScope = scope.$new; + + $('#add_question_btn').show(); + $('#add_question_btn').removeAttr('disabled'); + $('#add_question_btn').focus(); + $('#survey_maker_save_btn').removeAttr('disabled'); + + // Sometimes the $event.target returns the anchor element that wraps the icon, and sometimes the icon itself + // is returned. So for each icon click event we check to see which target the user clicked, and depending no which one + // they clicked, we move up the dom hierarchy to get the index on the question. Ultimatley the object that is passed to + // each one of these functions should be the index of the question that the user is trying to perform an action on. + $('#delete-question_'+question.index+'').on('click', function($event){ + if($event.target.nodeName==="A"){ + scope.deleteQuestion($event.target.parentElement.parentElement.id.split('_')[1]); + } + else if($event.target.nodeName === "I"){ + scope.deleteQuestion($event.target.parentElement.parentElement.parentElement.id.split('_')[1]); + } + }); + $('#edit-question_'+question.index+'').on('click', function($event){ + if($event.target.nodeName==="A"){ + scope.editQuestion($event.target.parentElement.parentElement.id.split('_')[1]); + } + else if($event.target.nodeName === "I"){ + scope.editQuestion($event.target.parentElement.parentElement.parentElement.id.split('_')[1]); + } + }); + $('#question-up_'+question.index+'').on('click', function($event){ + if($event.target.nodeName==="A"){ + scope.questionUp($event.target.parentElement.parentElement.id.split('_')[1]); + } + else if($event.target.nodeName === "I"){ + scope.questionUp($event.target.parentElement.parentElement.parentElement.id.split('_')[1]); + } + }); + $('#question-down_'+question.index+'').on('click', function($event){ + if($event.target.nodeName==="A"){ + scope.questionDown($event.target.parentElement.parentElement.id.split('_')[1]); + } + else if($event.target.nodeName === "I"){ + scope.questionDown($event.target.parentElement.parentElement.parentElement.id.split('_')[1]); + } + + }); + }; + } + +FinalizeQuestion.$inject = + [ 'GetBasePath', + 'Rest', + 'Wait', + 'ProcessErrors', + '$compile', + 'Empty', + '$filter' + ]; diff --git a/awx/ui/client/src/job-templates/survey-maker/questions/main.js b/awx/ui/client/src/job-templates/survey-maker/questions/main.js new file mode 100644 index 0000000000..f1bbd8bc7c --- /dev/null +++ b/awx/ui/client/src/job-templates/survey-maker/questions/main.js @@ -0,0 +1,7 @@ +import finalize from './finalize.factory'; +import edit from './edit.factory'; + +export default + angular.module('jobTemplates.surveyMaker.questions', []) + .factory('finalizeQuestion', finalize) + .factory('editQuestion', edit); diff --git a/awx/ui/client/src/job-templates/survey-maker/shared/main.js b/awx/ui/client/src/job-templates/survey-maker/shared/main.js new file mode 100644 index 0000000000..8ee46b0bcf --- /dev/null +++ b/awx/ui/client/src/job-templates/survey-maker/shared/main.js @@ -0,0 +1,5 @@ +import form from './question-definition.form'; + +export default + angular.module('jobTemplates.surveyMaker.shared', []) + .value('questionDefinitionForm', form); diff --git a/awx/ui/client/src/job-templates/survey-maker/shared/question-definition.form.js b/awx/ui/client/src/job-templates/survey-maker/shared/question-definition.form.js new file mode 100644 index 0000000000..01bfff1f5f --- /dev/null +++ b/awx/ui/client/src/job-templates/survey-maker/shared/question-definition.form.js @@ -0,0 +1,303 @@ +/************************************************* + * Copyright (c) 2015 Ansible, Inc. + * + * All Rights Reserved + *************************************************/ + + /** + * @ngdoc function + * @name forms.function:Questions + * @description This form is for adding a question +*/ + +export default + { + + addTitle: 'Add Question', + editTitle: 'Edit Question', + base: 'survey_question', + name: 'survey_question', + well: true, + twoColumns: true, + breadcrumbs: false, + + fields: { + question_name: { + realName: 'question_text', + label: 'Name', + type: 'text', + addRequired: true, + editRequired: true, + column: 1, + awSurveyQuestion: true + }, + question_description: { + realName: 'question_description', + label: 'Description', + type: 'text', + addRequired: false, + editRequired: false, + column: 1 + }, + variable: { + ealName: 'variable', + type: 'custom', + control:''+ + '
'+ + '
Please enter an answer variable name.
'+ + '
Please remove the illegal character from the survey question variable name.
'+ + '
This question variable is already in use. Please enter a different variable name.
' + + '
'+ + '
', + addRequired: true, + editRequired: true, + column: 1 + }, + type: { + realName: 'answer_type', + label: 'Answer Type', + type: 'select', + defaultText: 'Choose an answer type', + ngOptions: 'answer_types.name for answer_types in answer_types track by answer_types.type', + addRequired: true, + editRequired: true, + column: 2, + ngChange: 'typeChange()' + }, + choices: { + realName: 'answer_options', + label: 'Multiple Choice Options', + type: 'textarea', + rows: 3, + addRequired: true, + editRequired: true, + ngRequired: "type.type=== 'multiselect' || type.type=== 'multiplechoice' " , + ngShow: 'type.type=== "multiselect" || type.type=== "multiplechoice" ', + awPopOver: '

Type an option on each line.

'+ + '

For example the following input:

Apple
\n Banana
\n Cherry

would be displayed as:

\n'+ + '
  1. Apple
  2. Banana
  3. Cherry
', + dataTitle: 'Multiple Choice Options', + dataPlacement: 'right', + dataContainer: "body", + column: 2 + }, + text_options: { + realName: 'answer_options', + type: 'custom', + control:'
'+ + '
'+ + ''+ + '
The minimum length you entered is not a valid number. Please enter a whole number.
'+ + '
The minimium length is too high. Please enter a lower number.
'+ + '
The minimum length is too low. Please enter a positive number.
'+ + '
'+ + '
'+ + ''+ + '
The maximum length you entered is not a valid number. Please enter a whole nnumber.
'+ + '
The maximum length is too low. Please enter a number larger than the minimum length you set.
'+ + '
'+ + '
', + ngShow: 'type.type==="text" ', + addRequired: true, + editRequired: true, + column: 2 + }, + textarea_options: { + realName: 'answer_options', + type: 'custom', + control:'
'+ + '
'+ + ''+ + '
The minimum length you entered is not a valid number. Please enter a whole number.
'+ + '
The minimium length is too high. Please enter a lower number.
'+ + '
The minimum length is too low. Please enter a positive number.
'+ + '
'+ + '
'+ + ''+ + '
The maximum length you entered is not a valid number. Please enter a whole number.
'+ + '
The maximum length is too low. Please enter a number larger than the minimum length you set.
'+ + '
'+ + '
', + ngShow: 'type.type==="textarea" ', + addRequired: true, + editRequired: true, + column: 2 + }, + password_options: { + realName: 'answer_options', + type: 'custom', + control:'
'+ + '
'+ + ''+ + '
The minimum length you entered is not a valid number. Please enter a whole number.
'+ + '
The minimium length is too high. Please enter a lower number.
'+ + '
The minimum length is too low. Please enter a positive number.
'+ + '
'+ + '
'+ + ''+ + '
The maximum length you entered is not a valid number. Please enter a whole number.
'+ + '
The maximum length is too low. Please enter a number larger than the minimum length you set.
'+ + '
'+ + '
', + ngShow: 'type.type==="password" ', + addRequired: true, + editRequired: true, + column: 2 + }, + int_options: { + realName: 'answer_options', + type: 'custom', + control:'
'+ + '
'+ + ''+ + '
Please enter a valid integer.
'+ + '
Please enter a smaller integer.
'+ + '
'+ + '
'+ + ''+ + '
Please enter a valid integer.
'+ + '
Please enter a larger integer.
'+ + '
'+ + '
', + ngShow: 'type.type==="integer" ', + addRequired: true, + editRequired: true, + column: 2 + }, + float_options: { + realName: 'answer_options', + type: 'custom', + control: '
'+ + '
'+ + ''+ + '
Please enter a valid float.
'+ + '
Please enter a smaller float.
'+ + '
'+ + '
'+ + ''+ + '
Please enter a valid float.
'+ + '
Please enter a larger float.
'+ + + '
'+ + '
', + ngShow: 'type.type==="float" ', + addRequired: true, + editRequired: true, + column: 2 + }, + default:{ + realName: 'default_answer', + type: 'custom' , + control: '
'+ + ''+ + '
'+ + ''+ + '
Please enter an answer from the choices listed.
' + + '
The answer is shorter than the minimium length. Please make the answer longer.
' + + '
The answer is longer than the maximum length. Please make the answer shorter.
' + + '
'+ + '
'+ + '
', + column: 2, + ngShow: 'type.type === "text" || type.type === "multiplechoice" ' + }, + default_multiselect: { + realName: 'default_answer' , + type: 'custom', + control: '
'+ + ''+ + '
'+ + ''+ + '
Please enter an answer/answers from the choices listed.
' + + '
'+ + '
'+ + '
', + column: 2, + ngShow: 'type.type==="multiselect" ' + }, + default_int: { + realName: 'default_answer', + type: 'custom', + control: '
'+ + ''+ + ''+ + '
Please enter a valid integer.
'+ + '
Please enter a value in the range of {{int_min}} to {{int_max}}.
'+ + '
', + column: 2, + ngShow: 'type.type === "integer" ' + }, + default_float: { + realName: 'default_answer', + type: 'custom', + control: '
'+ + ''+ + ''+ + '
Please enter a valid float.
'+ + '
Please enter a value in the range of {{float_min}} to {{float_max}}!
'+ + '
', + column: 2, + ngShow: 'type.type=== "float" ' + }, + default_textarea: { + realName: "default_answer" , + type: 'custom', + control: '
'+ + ''+ + '
'+ + ''+ + '
The answer is shorter than the minimium length. Please make the answer longer.
' + + '
The answer is longer than the maximum length. Please make the answer shorter.
' + + '
'+ + '
'+ + '
', + column : 2, + ngShow: 'type.type === "textarea" ' + }, + default_password: { + realName: 'default_answer' , + type: 'custom' , + control: '
'+ + ''+ + '
'+ + '
'+ + ''+ + ''+ + ''+ + ''+ + '
'+ + '
The answer is shorter than the minimium length. Please make the answer longer.
' + + '
The answer is longer than the maximum length. Please make the answer shorter.
' + + '
'+ + '
'+ + '
', + column: 2, + ngShow: 'type.type === "password" ' + }, + required: { + realName: 'required_answer', + label: 'Required', + type: 'checkbox', + addRequired: false, + editRequired: false, + column: 2 + } + }, + buttons: { + question_cancel : { + label: 'Cancel', + 'class' : 'btn btn-default', + ngClick: 'cancelQuestion($event)' + }, + submit_question: { + ngClick: 'submitQuestion($event)', + ngDisabled: true, + 'class': 'btn btn-sm btn-primary', + label: 'Add Question' + } + } + + }; diff --git a/awx/ui/client/src/job-templates/survey-maker/surveys/add.factory.js b/awx/ui/client/src/job-templates/survey-maker/surveys/add.factory.js new file mode 100644 index 0000000000..62b8576d06 --- /dev/null +++ b/awx/ui/client/src/job-templates/survey-maker/surveys/add.factory.js @@ -0,0 +1,25 @@ +export default + function AddFactory($location, $routeParams, ShowSurveyModal, Wait) { + return function(params) { + var scope = params.scope; + + if (scope.removeDialogReady) { + scope.removeDialogReady(); + } + scope.removeDialogReady = scope.$on('DialogReady', function() { + $('#survey-modal-dialog').dialog('open'); + scope.addQuestion(); + }); + Wait('start'); + $('#form-container').empty(); + scope.resetForm(); + ShowSurveyModal({ title: "Add Survey", scope: scope, callback: 'DialogReady' }); + }; + } + +AddFactory.$inject = + [ '$location', + '$routeParams', + 'showSurvey', + 'Wait' + ]; diff --git a/awx/ui/client/src/job-templates/survey-maker/surveys/delete.factory.js b/awx/ui/client/src/job-templates/survey-maker/surveys/delete.factory.js new file mode 100644 index 0000000000..4c753816c6 --- /dev/null +++ b/awx/ui/client/src/job-templates/survey-maker/surveys/delete.factory.js @@ -0,0 +1,63 @@ +/** + * Delete a survey. Prompts user to confirm delete + * + * DeleteSurvey({ + * scope: $scope containing list of survey form fields + * id: id of job template that survey is attached to + * callback: $scope.$emit label to call when delete is completed + * }) + * + */ +export default + function DeleteSurvey(GetBasePath, Rest, Wait, ProcessErrors) { + return function(params) { + + var scope = params.scope, + id = params.id, + // callback = params.callback, + url; + + + if (scope.removeSurveyDeleted) { + scope.removeSurveyDeleted(); + } + scope.$on('SurveyDeleted', function(){ + scope.survey_name = ""; + scope.survey_description = ""; + scope.survey_questions = []; + Wait('stop'); + scope.survey_exists = false; + $('#job_templates_delete_survey_btn').hide(); + $('#job_templates_edit_survey_btn').hide(); + $('#job_templates_create_survey_btn').show(); + }); + + + Wait('start'); + + if(scope.mode==="add"){ + scope.$emit("SurveyDeleted"); + + } else { + url = GetBasePath('job_templates')+ id + '/survey_spec/'; + + Rest.setUrl(url); + Rest.destroy() + .success(function () { + scope.$emit("SurveyDeleted"); + + }) + .error(function (data, status) { + ProcessErrors(scope, data, status, { hdr: 'Error!', + msg: 'Failed to delete survey. DELETE returned status: ' + status }); + }); + } + }; + } + +DeleteSurvey.$inject = + [ 'GetBasePath', + 'Rest', + 'Wait', + 'ProcessErrors' + ]; diff --git a/awx/ui/client/src/job-templates/survey-maker/surveys/edit.factory.js b/awx/ui/client/src/job-templates/survey-maker/surveys/edit.factory.js new file mode 100644 index 0000000000..857136096f --- /dev/null +++ b/awx/ui/client/src/job-templates/survey-maker/surveys/edit.factory.js @@ -0,0 +1,80 @@ +export default + function EditFactory($routeParams, SchedulerInit, ShowSurveyModal, Wait, Rest, ProcessErrors, GetBasePath, GenerateForm, + Empty, AddSurvey) { + return function(params) { + var scope = params.scope, + id = params.id, + tempSurv = {}, + url = GetBasePath('job_templates') + id + '/survey_spec/', i; + + if (scope.removeDialogReady) { + scope.removeDialogReady(); + } + scope.removeDialogReady = scope.$on('DialogReady', function() { + $('#survey-modal-dialog').dialog('open'); + }); + + scope.resetForm(); + Wait('start'); + //for adding a job template: + if(scope.mode === 'add'){ + tempSurv.survey_name = scope.survey_name; + tempSurv.survey_description = scope.survey_description; + tempSurv.survey_questions = scope.survey_questions; + + ShowSurveyModal({ title: "Edit Survey", scope: scope, callback: 'DialogReady' }); + + // scope.survey_name = tempSurv.survey_name; + // scope.survey_description = tempSurv.survey_description; + + for(i=0; i'; - $('#finalized_questions').append(html); - } - - required = (question.required===true) ? "prepend-asterisk" : ""; - html = '
'; - html += ''; - html += '
'; - - if(!Empty(question.question_description)){ - html += '
'+question.question_description+'
\n'; - } - - if(question.type === 'text' ){ - defaultValue = (question.default) ? question.default : ""; - defaultValue = $filter('sanitize')(defaultValue); - defaultValue = scope.serialize(defaultValue); - html+='
'+ - '
'+ - ''+ - '
'; - } - if(question.type === "textarea"){ - defaultValue = (question.default) ? question.default : (question.default_textarea) ? question.default_textarea: "" ; - defaultValue = $filter('sanitize')(defaultValue); - defaultValue = scope.serialize(defaultValue); - html+='
'+ - '
'+ - ''+ - '
'; - } - if(question.type === 'multiplechoice' || question.type === "multiselect"){ - choices = question.choices.split(/\n/); - element = (question.type==="multiselect") ? "checkbox" : 'radio'; - question.default = (question.default) ? question.default : (question.default_multiselect) ? question.default_multiselect : "" ; - answers = question.default.split(/\n/); - html += '
'; - for( i = 0; i' + - ''+choices[i] +'
' ; - } - html += '
'; - } - - if(question.type === 'password'){ - defaultValue = (question.default) ? question.default : ""; - defaultValue = $filter('sanitize')(defaultValue); - defaultValue = scope.serialize(defaultValue); - html+='
'+ - '
'+ - ''+ - ''+ - ''+ - ''+ - '
'+ - '
'; - } - - if(question.type === 'integer'){ - min = (!Empty(question.min)) ? question.min : ""; - max = (!Empty(question.max)) ? question.max : "" ; - defaultValue = (!Empty(question.default)) ? question.default : (!Empty(question.default_int)) ? question.default_int : "" ; - html+='
'+ - '
'+ - ''+ - '
'; - - } - if(question.type === "float"){ - min = (!Empty(question.min)) ? question.min : ""; - max = (!Empty(question.max)) ? question.max : "" ; - defaultValue = (!Empty(question.default)) ? question.default : (!Empty(question.default_float)) ? question.default_float : "" ; - html+='
'+ - '
'+ - ''+ - '
'; - - } - html += '
'; - html += ' '; - html += ' '; - html += ' '; - html += ' '; - html+='
'; - - $('#question_'+question.index).append(html); - - element = angular.element(document.getElementById('question_'+question.index)); - // // element.html(html); - //element.css('opacity', 0.7); - $compile(element)(scope); - // var questionScope = scope.$new; - - $('#add_question_btn').show(); - $('#add_question_btn').removeAttr('disabled'); - $('#add_question_btn').focus(); - $('#survey_maker_save_btn').removeAttr('disabled'); - - // Sometimes the $event.target returns the anchor element that wraps the icon, and sometimes the icon itself - // is returned. So for each icon click event we check to see which target the user clicked, and depending no which one - // they clicked, we move up the dom hierarchy to get the index on the question. Ultimatley the object that is passed to - // each one of these functions should be the index of the question that the user is trying to perform an action on. - $('#delete-question_'+question.index+'').on('click', function($event){ - if($event.target.nodeName==="A"){ - scope.deleteQuestion($event.target.parentElement.parentElement.id.split('_')[1]); - } - else if($event.target.nodeName === "I"){ - scope.deleteQuestion($event.target.parentElement.parentElement.parentElement.id.split('_')[1]); - } - }); - $('#edit-question_'+question.index+'').on('click', function($event){ - if($event.target.nodeName==="A"){ - scope.editQuestion($event.target.parentElement.parentElement.id.split('_')[1]); - } - else if($event.target.nodeName === "I"){ - scope.editQuestion($event.target.parentElement.parentElement.parentElement.id.split('_')[1]); - } - }); - $('#question-up_'+question.index+'').on('click', function($event){ - if($event.target.nodeName==="A"){ - scope.questionUp($event.target.parentElement.parentElement.id.split('_')[1]); - } - else if($event.target.nodeName === "I"){ - scope.questionUp($event.target.parentElement.parentElement.parentElement.id.split('_')[1]); - } - }); - $('#question-down_'+question.index+'').on('click', function($event){ - if($event.target.nodeName==="A"){ - scope.questionDown($event.target.parentElement.parentElement.id.split('_')[1]); - } - else if($event.target.nodeName === "I"){ - scope.questionDown($event.target.parentElement.parentElement.parentElement.id.split('_')[1]); - } - - }); - }; - }]) - - - .factory('EditQuestion', ['GetBasePath','Rest', 'Wait', 'ProcessErrors', '$compile', 'GenerateForm', 'SurveyQuestionForm', - function(GetBasePath, Rest, Wait, ProcessErrors, $compile, GenerateForm, SurveyQuestionForm) { - return function(params) { - - var scope = params.scope, - index = params.index, - element, - tmpVar, - i, - question = params.question, //scope.survey_questions[index], - form = SurveyQuestionForm; - - $('#survey-save-button').attr('disabled', 'disabled'); - angular.element('#survey_question_question_cancel_btn').trigger('click'); - $('#add_question_btn').hide(); - // $('#new_question .aw-form-well').remove(); - element = $('.question_final:eq('+index+')'); - element.css('opacity', 1.0); - element.empty(); - scope.text_min = null; - scope.text_max = null; - scope.int_min = null; - scope.int_max = null; - scope.float_min = null; - scope.float_max = null; - scope.password_min = null; - scope.password_max = null; - scope.pwcheckbox = false; - - if (scope.removeFillQuestionForm) { - scope.removeFillQuestionForm(); - } - scope.removeFillQuestionForm = scope.$on('FillQuestionForm', function() { - for( var fld in form.fields){ - scope[fld] = question[fld]; - if(form.fields[fld].type === 'select'){ - for (i = 0; i < scope.answer_types.length; i++) { - if (question[fld] === scope.answer_types[i].type) { - scope[fld] = scope.answer_types[i]; - } - } - } - } - if( question.type === 'text'){ - scope.text_min = question.min; - scope.text_max = question.max; - scope.default_text = question.default; - } - if( question.type === 'textarea'){ - scope.textarea_min = question.min; - scope.textarea_max = question.max; - scope.default_textarea= question.default; - } - if(question.type === 'password'){ - scope.password_min = question.min; - scope.password_max = question.max; - scope.default_password = question.default; - } - if( question.type === 'integer'){ - scope.int_min = question.min; - scope.int_max = question.max; - scope.default_int = question.default; - } - else if( question.type === 'float' ) { - scope.float_min = question.min; - scope.float_max = question.max; - scope.default_float = question.default; - - } - else if ( question.type === 'multiselect'){ - scope.default_multiselect = question.default; - } - }); - - if (scope.removeGenerateForm) { - scope.removeGenerateForm(); - } - scope.removeGenerateForm = scope.$on('GenerateForm', function() { - tmpVar = scope.mode; - GenerateForm.inject(form, { id: 'question_'+index, mode: 'edit' , related: false, scope:scope, breadCrumbs: false}); - scope.mode = tmpVar; - scope.$emit('FillQuestionForm'); - }); - - - scope.$emit('GenerateForm'); - - }; - }]) - - .factory('SurveyControllerInit', ['$location', 'DeleteSurvey', 'EditSurvey', 'AddSurvey', 'GenerateForm', 'SurveyQuestionForm', 'Wait', 'Alert', - 'GetBasePath', 'Rest', 'ProcessErrors' , '$compile', 'FinalizeQuestion', 'EditQuestion', '$sce', - function($location, DeleteSurvey, EditSurvey, AddSurvey, GenerateForm, SurveyQuestionForm, Wait, Alert, + function Init($location, DeleteSurvey, EditSurvey, AddSurvey, GenerateForm, SurveyQuestionForm, Wait, Alert, GetBasePath, Rest, ProcessErrors, $compile, FinalizeQuestion, EditQuestion, $sce) { return function(params) { var scope = params.scope, @@ -1049,4 +534,22 @@ angular.module('SurveyHelper', [ 'Utilities', 'RestServices', 'SchedulesHelper', }; }; - }]); + } + +Init.$inject = + [ '$location', + 'deleteSurvey', + 'editSurvey', + 'addSurvey', + 'GenerateForm', + 'questionDefinitionForm', + 'Wait', + 'Alert', + 'GetBasePath', + 'Rest', + 'ProcessErrors', + '$compile', + 'finalizeQuestion', + 'editQuestion', + '$sce' + ]; diff --git a/awx/ui/client/src/job-templates/survey-maker/surveys/main.js b/awx/ui/client/src/job-templates/survey-maker/surveys/main.js new file mode 100644 index 0000000000..a16c10073c --- /dev/null +++ b/awx/ui/client/src/job-templates/survey-maker/surveys/main.js @@ -0,0 +1,13 @@ +import add from './add.factory'; +import edit from './edit.factory'; +import _delete from './delete.factory'; +import init from './init.factory'; +import show from './show.factory'; + +export default + angular.module('jobTemplates.surveyMaker.surveys', []) + .factory('showSurvey', show) + .factory('addSurvey', add) + .factory('editSurvey', edit) + .factory('deleteSurvey', _delete) + .factory('initSurvey', init); diff --git a/awx/ui/client/src/job-templates/survey-maker/surveys/show.factory.js b/awx/ui/client/src/job-templates/survey-maker/surveys/show.factory.js new file mode 100644 index 0000000000..74b0b7fd1c --- /dev/null +++ b/awx/ui/client/src/job-templates/survey-maker/surveys/show.factory.js @@ -0,0 +1,84 @@ +export default + function ShowFactory(Wait, CreateDialog, Empty, $compile) { + return function(params) { + // Set modal dimensions based on viewport width + + var scope = params.scope, + callback = params.callback, + mode = (params.mode) ? params.mode : "survey-maker", + title = params.title, + element, + target = (mode==='survey-taker') ? 'password-modal' : "survey-modal-dialog", + buttons = [{ + "label": "Cancel", + "onClick": function() { + scope.cancelSurvey(this); + }, + "icon": "fa-times", + "class": "btn btn-default", + "id": "survey-close-button" + },{ + "label": (mode==='survey-taker') ? "Launch" : "Save" , + "onClick": function() { + setTimeout(function(){ + scope.$apply(function(){ + if(mode==='survey-taker'){ + scope.$emit('SurveyTakerCompleted'); + } else{ + scope.saveSurvey(); + } + }); + }); + }, + "icon": (mode==='survey-taker') ? "fa-rocket" : "fa-check", + "class": "btn btn-primary", + "id": "survey-save-button" + }]; + + CreateDialog({ + id: target, + title: title, + scope: scope, + buttons: buttons, + width: 700, + height: 725, + minWidth: 400, + onClose: function() { + $('#'+target).empty(); + }, + onOpen: function() { + Wait('stop'); + if(mode!=="survey-taker"){ + // if(scope.mode === 'add'){ + // $('#survey-save-button').attr('disabled' , true); + // } else + if(scope.can_edit === false){ + $('#survey-save-button').attr('disabled', "disabled"); + } + else { + $('#survey-save-button').attr('ng-disabled', "survey_questions.length<1 "); + } + element = angular.element(document.getElementById('survey-save-button')); + $compile(element)(scope); + + } + if(mode==="survey-taker"){ + $('#survey-save-button').attr('ng-disabled', "survey_taker_form.$invalid"); + element = angular.element(document.getElementById('survey-save-button')); + $compile(element)(scope); + + } + + }, + callback: callback + }); + }; + } + +ShowFactory.$inject = + [ 'Wait', + 'CreateDialog', + 'Empty', + '$compile' + ]; + From e8c0e68789690776bc83547091b30ebd13edcf04 Mon Sep 17 00:00:00 2001 From: Joe Fiorini Date: Tue, 4 Aug 2015 11:04:52 -0400 Subject: [PATCH 2/5] Update to latest select2 --- .../lib/select2-bootstrap-theme/.bower.json | 30 + .../lib/select2-bootstrap-theme/Gruntfile.js | 128 + .../lib/select2-bootstrap-theme/LICENSE | 21 + .../lib/select2-bootstrap-theme/README.md | 58 + .../lib/select2-bootstrap-theme/bower.json | 19 + .../dist}/select2-bootstrap.css | 91 +- .../dist/select2-bootstrap.min.css | 1 + .../select2-bootstrap-theme/docs/4.0.0.html | 4 + .../select2-bootstrap-theme/docs/_config.yml | 5 + .../docs/_includes/footer-links.html | 7 + .../docs/_includes/footer.html | 10 + .../docs/_includes/head.html | 13 + .../docs/_includes/navbar.html | 23 + .../docs/_includes/scripts.html | 2 + .../docs/_includes/select2-select.html | 55 + .../docs/_layouts/default.html | 628 +++ .../docs/_layouts/minimal.html | 7 + .../docs/_sass/_alert.sass | 17 + .../docs/_sass/_anchorjs.sass | 6 + .../docs/_sass/_buttons.sass | 8 + .../docs/_sass/_common.sass | 25 + .../docs/_sass/_extends.sass | 4 + .../docs/_sass/_footer.sass | 22 + .../docs/_sass/_home.sass | 8 + .../docs/_sass/_jumbotron.sass | 36 + .../docs/_sass/_mixins.sass | 9 + .../docs/_sass/_navbar.sass | 4 + .../_sass/_select2-result-repository.sass | 40 + .../docs/_sass/_variables.sass | 1 + .../docs/css/bootstrap.min.css | 5 + .../docs/css/gh-pages.sass | 16 + .../docs/css/select2-bootstrap.css | 598 +++ .../select2-bootstrap-theme/docs/favicon.ico | Bin 0 -> 6518 bytes .../fonts/glyphicons-halflings-regular.eot | Bin 0 -> 20127 bytes .../fonts/glyphicons-halflings-regular.svg | 288 ++ .../fonts/glyphicons-halflings-regular.ttf | Bin 0 -> 45404 bytes .../fonts/glyphicons-halflings-regular.woff | Bin 0 -> 23424 bytes .../fonts/glyphicons-halflings-regular.woff2 | Bin 0 -> 18028 bytes .../select2-bootstrap-theme/docs/index.html | 54 + .../docs/js/anchor.min.js | 6 + .../docs/js/bootstrap.min.js | 7 + .../docs/js/respond.min.js | 5 + .../lib/select2-bootstrap-theme/package.json | 43 + .../select2-bootstrap-theme/src/build.less | 3 + .../select2-bootstrap-theme/src/build.scss | 3 + .../src/select2-bootstrap.less | 768 ++++ .../src/select2-bootstrap.scss | 768 ++++ .../tests/less_test.js | 25 + .../tests/scss_test.js | 25 + .../tests/support/less.patch | 610 +++ .../tests/support/scss.patch | 4 + awx/ui/client/lib/select2/.bower.json | 8 +- awx/ui/client/lib/select2/Gruntfile.js | 13 +- awx/ui/client/lib/select2/LICENSE | 18 - awx/ui/client/lib/select2/component.json | 2 +- .../client/lib/select2/dist/css/select2.css | 10 + .../lib/select2/dist/css/select2.min.css | 2 +- awx/ui/client/lib/select2/dist/js/i18n/az.js | 2 +- awx/ui/client/lib/select2/dist/js/i18n/bg.js | 2 +- awx/ui/client/lib/select2/dist/js/i18n/ca.js | 2 +- awx/ui/client/lib/select2/dist/js/i18n/cs.js | 2 +- awx/ui/client/lib/select2/dist/js/i18n/da.js | 2 +- awx/ui/client/lib/select2/dist/js/i18n/de.js | 2 +- awx/ui/client/lib/select2/dist/js/i18n/en.js | 2 +- awx/ui/client/lib/select2/dist/js/i18n/es.js | 2 +- awx/ui/client/lib/select2/dist/js/i18n/et.js | 2 +- awx/ui/client/lib/select2/dist/js/i18n/eu.js | 2 +- awx/ui/client/lib/select2/dist/js/i18n/fa.js | 2 +- awx/ui/client/lib/select2/dist/js/i18n/fi.js | 2 +- awx/ui/client/lib/select2/dist/js/i18n/fr.js | 2 +- awx/ui/client/lib/select2/dist/js/i18n/gl.js | 2 +- awx/ui/client/lib/select2/dist/js/i18n/he.js | 3 + awx/ui/client/lib/select2/dist/js/i18n/hi.js | 2 +- awx/ui/client/lib/select2/dist/js/i18n/hr.js | 2 +- awx/ui/client/lib/select2/dist/js/i18n/hu.js | 2 +- awx/ui/client/lib/select2/dist/js/i18n/id.js | 2 +- awx/ui/client/lib/select2/dist/js/i18n/is.js | 2 +- awx/ui/client/lib/select2/dist/js/i18n/it.js | 2 +- awx/ui/client/lib/select2/dist/js/i18n/ko.js | 2 +- awx/ui/client/lib/select2/dist/js/i18n/lt.js | 2 +- awx/ui/client/lib/select2/dist/js/i18n/lv.js | 2 +- awx/ui/client/lib/select2/dist/js/i18n/mk.js | 2 +- awx/ui/client/lib/select2/dist/js/i18n/nb.js | 2 +- awx/ui/client/lib/select2/dist/js/i18n/nl.js | 2 +- awx/ui/client/lib/select2/dist/js/i18n/pl.js | 2 +- .../client/lib/select2/dist/js/i18n/pt-BR.js | 2 +- awx/ui/client/lib/select2/dist/js/i18n/pt.js | 2 +- awx/ui/client/lib/select2/dist/js/i18n/ro.js | 2 +- awx/ui/client/lib/select2/dist/js/i18n/ru.js | 4 +- awx/ui/client/lib/select2/dist/js/i18n/sk.js | 2 +- awx/ui/client/lib/select2/dist/js/i18n/sr.js | 2 +- awx/ui/client/lib/select2/dist/js/i18n/sv.js | 2 +- awx/ui/client/lib/select2/dist/js/i18n/th.js | 2 +- awx/ui/client/lib/select2/dist/js/i18n/tr.js | 2 +- awx/ui/client/lib/select2/dist/js/i18n/uk.js | 2 +- awx/ui/client/lib/select2/dist/js/i18n/vi.js | 2 +- .../client/lib/select2/dist/js/i18n/zh-CN.js | 2 +- .../client/lib/select2/dist/js/i18n/zh-TW.js | 2 +- .../lib/select2/dist/js/select2.full.js | 1144 ++++-- .../lib/select2/dist/js/select2.full.min.js | 6 +- awx/ui/client/lib/select2/dist/js/select2.js | 247 +- .../client/lib/select2/dist/js/select2.min.js | 4 +- .../lib/select2/docs/announcements-4.0.html | 79 +- awx/ui/client/lib/select2/docs/examples.html | 4 +- awx/ui/client/lib/select2/docs/index.html | 6 +- awx/ui/client/lib/select2/package.json | 2 +- awx/ui/client/lib/select2/release.sh | 79 - .../client/lib/select2/select2-bootstrap.css | 87 - awx/ui/client/lib/select2/select2-spinner.gif | Bin 1849 -> 0 bytes awx/ui/client/lib/select2/select2.css | 704 ---- awx/ui/client/lib/select2/select2.jquery.json | 2 +- awx/ui/client/lib/select2/select2.js | 3508 ----------------- awx/ui/client/lib/select2/select2.min.js | 23 - awx/ui/client/lib/select2/select2.png | Bin 613 -> 0 bytes .../client/lib/select2/select2_locale_ar.js | 19 - .../client/lib/select2/select2_locale_az.js | 20 - .../client/lib/select2/select2_locale_bg.js | 20 - .../client/lib/select2/select2_locale_ca.js | 19 - .../client/lib/select2/select2_locale_cs.js | 51 - .../client/lib/select2/select2_locale_da.js | 19 - .../client/lib/select2/select2_locale_de.js | 18 - .../client/lib/select2/select2_locale_el.js | 19 - .../lib/select2/select2_locale_en.js.template | 20 - .../client/lib/select2/select2_locale_es.js | 17 - .../client/lib/select2/select2_locale_et.js | 19 - .../client/lib/select2/select2_locale_eu.js | 45 - .../client/lib/select2/select2_locale_fa.js | 21 - .../client/lib/select2/select2_locale_fi.js | 30 - .../client/lib/select2/select2_locale_fr.js | 18 - .../client/lib/select2/select2_locale_gl.js | 45 - .../client/lib/select2/select2_locale_he.js | 19 - .../client/lib/select2/select2_locale_hr.js | 24 - .../client/lib/select2/select2_locale_hu.js | 17 - .../client/lib/select2/select2_locale_id.js | 19 - .../client/lib/select2/select2_locale_is.js | 17 - .../client/lib/select2/select2_locale_it.js | 17 - .../client/lib/select2/select2_locale_ja.js | 17 - .../client/lib/select2/select2_locale_ka.js | 19 - .../client/lib/select2/select2_locale_ko.js | 19 - .../client/lib/select2/select2_locale_lt.js | 26 - .../client/lib/select2/select2_locale_lv.js | 19 - .../client/lib/select2/select2_locale_mk.js | 19 - .../client/lib/select2/select2_locale_ms.js | 19 - .../client/lib/select2/select2_locale_nl.js | 17 - .../client/lib/select2/select2_locale_no.js | 20 - .../client/lib/select2/select2_locale_pl.js | 25 - .../lib/select2/select2_locale_pt-BR.js | 17 - .../lib/select2/select2_locale_pt-PT.js | 17 - .../client/lib/select2/select2_locale_ro.js | 17 - .../client/lib/select2/select2_locale_rs.js | 19 - .../client/lib/select2/select2_locale_ru.js | 23 - .../client/lib/select2/select2_locale_sk.js | 50 - .../client/lib/select2/select2_locale_sv.js | 19 - .../client/lib/select2/select2_locale_th.js | 19 - .../client/lib/select2/select2_locale_tr.js | 19 - .../lib/select2/select2_locale_ug-CN.js | 16 - .../client/lib/select2/select2_locale_uk.js | 25 - .../client/lib/select2/select2_locale_vi.js | 20 - .../lib/select2/select2_locale_zh-CN.js | 16 - .../lib/select2/select2_locale_zh-TW.js | 16 - awx/ui/client/lib/select2/select2x2.png | Bin 845 -> 0 bytes .../select2/src/js/jquery.mousewheel.shim.js | 6 + .../lib/select2/src/js/jquery.select2.js | 28 +- .../src/js/select2/compat/containerCss.js | 56 + .../src/js/select2/compat/dropdownCss.js | 56 + .../src/js/select2/compat/inputData.js | 4 +- .../select2/src/js/select2/compat/utils.js | 43 + .../client/lib/select2/src/js/select2/core.js | 8 +- .../lib/select2/src/js/select2/data/ajax.js | 8 +- .../lib/select2/src/js/select2/data/array.js | 10 +- .../lib/select2/src/js/select2/data/select.js | 8 +- .../lib/select2/src/js/select2/data/tags.js | 2 +- .../lib/select2/src/js/select2/defaults.js | 36 +- .../src/js/select2/dropdown/attachBody.js | 11 +- .../src/js/select2/dropdown/selectOnClose.js | 4 +- .../lib/select2/src/js/select2/i18n/he.js | 44 + .../lib/select2/src/js/select2/i18n/ru.js | 3 + .../lib/select2/src/js/select2/options.js | 3 +- .../lib/select2/src/js/select2/results.js | 3 +- .../src/js/select2/selection/allowClear.js | 88 +- .../src/js/select2/selection/multiple.js | 8 +- .../src/js/select2/selection/search.js | 2 + .../lib/select2/src/js/select2/utils.js | 17 + .../client/lib/select2/src/js/wrapper.end.js | 2 +- awx/ui/client/lib/select2/src/scss/core.scss | 11 + .../tests/dropdown/dropdownCss-tests.js | 104 + .../tests/options/translation-tests.js | 28 + .../tests/selection/containerCss-tests.js | 104 + awx/ui/client/lib/select2/tests/unit.html | 3 + awx/ui/templates/ui/index.html | 2 +- 190 files changed, 6163 insertions(+), 6088 deletions(-) create mode 100644 awx/ui/client/lib/select2-bootstrap-theme/.bower.json create mode 100755 awx/ui/client/lib/select2-bootstrap-theme/Gruntfile.js create mode 100755 awx/ui/client/lib/select2-bootstrap-theme/LICENSE create mode 100755 awx/ui/client/lib/select2-bootstrap-theme/README.md create mode 100755 awx/ui/client/lib/select2-bootstrap-theme/bower.json rename awx/ui/client/lib/{select2/dist/css => select2-bootstrap-theme/dist}/select2-bootstrap.css (89%) mode change 100644 => 100755 create mode 100755 awx/ui/client/lib/select2-bootstrap-theme/dist/select2-bootstrap.min.css create mode 100755 awx/ui/client/lib/select2-bootstrap-theme/docs/4.0.0.html create mode 100755 awx/ui/client/lib/select2-bootstrap-theme/docs/_config.yml create mode 100755 awx/ui/client/lib/select2-bootstrap-theme/docs/_includes/footer-links.html create mode 100755 awx/ui/client/lib/select2-bootstrap-theme/docs/_includes/footer.html create mode 100755 awx/ui/client/lib/select2-bootstrap-theme/docs/_includes/head.html create mode 100755 awx/ui/client/lib/select2-bootstrap-theme/docs/_includes/navbar.html create mode 100755 awx/ui/client/lib/select2-bootstrap-theme/docs/_includes/scripts.html create mode 100755 awx/ui/client/lib/select2-bootstrap-theme/docs/_includes/select2-select.html create mode 100755 awx/ui/client/lib/select2-bootstrap-theme/docs/_layouts/default.html create mode 100755 awx/ui/client/lib/select2-bootstrap-theme/docs/_layouts/minimal.html create mode 100644 awx/ui/client/lib/select2-bootstrap-theme/docs/_sass/_alert.sass create mode 100644 awx/ui/client/lib/select2-bootstrap-theme/docs/_sass/_anchorjs.sass create mode 100644 awx/ui/client/lib/select2-bootstrap-theme/docs/_sass/_buttons.sass create mode 100644 awx/ui/client/lib/select2-bootstrap-theme/docs/_sass/_common.sass create mode 100755 awx/ui/client/lib/select2-bootstrap-theme/docs/_sass/_extends.sass create mode 100644 awx/ui/client/lib/select2-bootstrap-theme/docs/_sass/_footer.sass create mode 100644 awx/ui/client/lib/select2-bootstrap-theme/docs/_sass/_home.sass create mode 100644 awx/ui/client/lib/select2-bootstrap-theme/docs/_sass/_jumbotron.sass create mode 100755 awx/ui/client/lib/select2-bootstrap-theme/docs/_sass/_mixins.sass create mode 100644 awx/ui/client/lib/select2-bootstrap-theme/docs/_sass/_navbar.sass create mode 100755 awx/ui/client/lib/select2-bootstrap-theme/docs/_sass/_select2-result-repository.sass create mode 100755 awx/ui/client/lib/select2-bootstrap-theme/docs/_sass/_variables.sass create mode 100755 awx/ui/client/lib/select2-bootstrap-theme/docs/css/bootstrap.min.css create mode 100755 awx/ui/client/lib/select2-bootstrap-theme/docs/css/gh-pages.sass create mode 100755 awx/ui/client/lib/select2-bootstrap-theme/docs/css/select2-bootstrap.css create mode 100755 awx/ui/client/lib/select2-bootstrap-theme/docs/favicon.ico create mode 100755 awx/ui/client/lib/select2-bootstrap-theme/docs/fonts/glyphicons-halflings-regular.eot create mode 100755 awx/ui/client/lib/select2-bootstrap-theme/docs/fonts/glyphicons-halflings-regular.svg create mode 100755 awx/ui/client/lib/select2-bootstrap-theme/docs/fonts/glyphicons-halflings-regular.ttf create mode 100755 awx/ui/client/lib/select2-bootstrap-theme/docs/fonts/glyphicons-halflings-regular.woff create mode 100755 awx/ui/client/lib/select2-bootstrap-theme/docs/fonts/glyphicons-halflings-regular.woff2 create mode 100755 awx/ui/client/lib/select2-bootstrap-theme/docs/index.html create mode 100644 awx/ui/client/lib/select2-bootstrap-theme/docs/js/anchor.min.js create mode 100755 awx/ui/client/lib/select2-bootstrap-theme/docs/js/bootstrap.min.js create mode 100755 awx/ui/client/lib/select2-bootstrap-theme/docs/js/respond.min.js create mode 100755 awx/ui/client/lib/select2-bootstrap-theme/package.json create mode 100755 awx/ui/client/lib/select2-bootstrap-theme/src/build.less create mode 100755 awx/ui/client/lib/select2-bootstrap-theme/src/build.scss create mode 100755 awx/ui/client/lib/select2-bootstrap-theme/src/select2-bootstrap.less create mode 100755 awx/ui/client/lib/select2-bootstrap-theme/src/select2-bootstrap.scss create mode 100755 awx/ui/client/lib/select2-bootstrap-theme/tests/less_test.js create mode 100755 awx/ui/client/lib/select2-bootstrap-theme/tests/scss_test.js create mode 100755 awx/ui/client/lib/select2-bootstrap-theme/tests/support/less.patch create mode 100755 awx/ui/client/lib/select2-bootstrap-theme/tests/support/scss.patch delete mode 100644 awx/ui/client/lib/select2/LICENSE create mode 100644 awx/ui/client/lib/select2/dist/js/i18n/he.js delete mode 100755 awx/ui/client/lib/select2/release.sh delete mode 100644 awx/ui/client/lib/select2/select2-bootstrap.css delete mode 100644 awx/ui/client/lib/select2/select2-spinner.gif delete mode 100644 awx/ui/client/lib/select2/select2.css delete mode 100644 awx/ui/client/lib/select2/select2.js delete mode 100644 awx/ui/client/lib/select2/select2.min.js delete mode 100644 awx/ui/client/lib/select2/select2.png delete mode 100644 awx/ui/client/lib/select2/select2_locale_ar.js delete mode 100644 awx/ui/client/lib/select2/select2_locale_az.js delete mode 100644 awx/ui/client/lib/select2/select2_locale_bg.js delete mode 100644 awx/ui/client/lib/select2/select2_locale_ca.js delete mode 100644 awx/ui/client/lib/select2/select2_locale_cs.js delete mode 100644 awx/ui/client/lib/select2/select2_locale_da.js delete mode 100644 awx/ui/client/lib/select2/select2_locale_de.js delete mode 100644 awx/ui/client/lib/select2/select2_locale_el.js delete mode 100644 awx/ui/client/lib/select2/select2_locale_en.js.template delete mode 100644 awx/ui/client/lib/select2/select2_locale_es.js delete mode 100644 awx/ui/client/lib/select2/select2_locale_et.js delete mode 100644 awx/ui/client/lib/select2/select2_locale_eu.js delete mode 100644 awx/ui/client/lib/select2/select2_locale_fa.js delete mode 100644 awx/ui/client/lib/select2/select2_locale_fi.js delete mode 100644 awx/ui/client/lib/select2/select2_locale_fr.js delete mode 100644 awx/ui/client/lib/select2/select2_locale_gl.js delete mode 100644 awx/ui/client/lib/select2/select2_locale_he.js delete mode 100644 awx/ui/client/lib/select2/select2_locale_hr.js delete mode 100644 awx/ui/client/lib/select2/select2_locale_hu.js delete mode 100644 awx/ui/client/lib/select2/select2_locale_id.js delete mode 100644 awx/ui/client/lib/select2/select2_locale_is.js delete mode 100644 awx/ui/client/lib/select2/select2_locale_it.js delete mode 100644 awx/ui/client/lib/select2/select2_locale_ja.js delete mode 100644 awx/ui/client/lib/select2/select2_locale_ka.js delete mode 100644 awx/ui/client/lib/select2/select2_locale_ko.js delete mode 100644 awx/ui/client/lib/select2/select2_locale_lt.js delete mode 100644 awx/ui/client/lib/select2/select2_locale_lv.js delete mode 100644 awx/ui/client/lib/select2/select2_locale_mk.js delete mode 100644 awx/ui/client/lib/select2/select2_locale_ms.js delete mode 100644 awx/ui/client/lib/select2/select2_locale_nl.js delete mode 100644 awx/ui/client/lib/select2/select2_locale_no.js delete mode 100644 awx/ui/client/lib/select2/select2_locale_pl.js delete mode 100644 awx/ui/client/lib/select2/select2_locale_pt-BR.js delete mode 100644 awx/ui/client/lib/select2/select2_locale_pt-PT.js delete mode 100644 awx/ui/client/lib/select2/select2_locale_ro.js delete mode 100644 awx/ui/client/lib/select2/select2_locale_rs.js delete mode 100644 awx/ui/client/lib/select2/select2_locale_ru.js delete mode 100644 awx/ui/client/lib/select2/select2_locale_sk.js delete mode 100644 awx/ui/client/lib/select2/select2_locale_sv.js delete mode 100644 awx/ui/client/lib/select2/select2_locale_th.js delete mode 100644 awx/ui/client/lib/select2/select2_locale_tr.js delete mode 100644 awx/ui/client/lib/select2/select2_locale_ug-CN.js delete mode 100644 awx/ui/client/lib/select2/select2_locale_uk.js delete mode 100644 awx/ui/client/lib/select2/select2_locale_vi.js delete mode 100644 awx/ui/client/lib/select2/select2_locale_zh-CN.js delete mode 100644 awx/ui/client/lib/select2/select2_locale_zh-TW.js delete mode 100644 awx/ui/client/lib/select2/select2x2.png create mode 100644 awx/ui/client/lib/select2/src/js/jquery.mousewheel.shim.js create mode 100644 awx/ui/client/lib/select2/src/js/select2/compat/containerCss.js create mode 100644 awx/ui/client/lib/select2/src/js/select2/compat/dropdownCss.js create mode 100644 awx/ui/client/lib/select2/src/js/select2/compat/utils.js create mode 100644 awx/ui/client/lib/select2/src/js/select2/i18n/he.js create mode 100644 awx/ui/client/lib/select2/tests/dropdown/dropdownCss-tests.js create mode 100644 awx/ui/client/lib/select2/tests/options/translation-tests.js create mode 100644 awx/ui/client/lib/select2/tests/selection/containerCss-tests.js diff --git a/awx/ui/client/lib/select2-bootstrap-theme/.bower.json b/awx/ui/client/lib/select2-bootstrap-theme/.bower.json new file mode 100644 index 0000000000..545b43c759 --- /dev/null +++ b/awx/ui/client/lib/select2-bootstrap-theme/.bower.json @@ -0,0 +1,30 @@ +{ + "name": "select2-bootstrap-theme", + "version": "0.1.0-beta.4", + "main": [ + "dist/select2-bootstrap.css", + "dist/select2-bootstrap.min.css" + ], + "ignore": [ + "**/.*", + "node_modules", + "components" + ], + "devDependencies": { + "bootstrap": "~3.3.5", + "bootstrap-sass-official": "~3.3.5", + "respond": "~1.4.2", + "anchor-js": "~1.1.1" + }, + "homepage": "https://github.com/fk/select2-bootstrap-theme", + "_release": "0.1.0-beta.4", + "_resolution": { + "type": "version", + "tag": "0.1.0-beta.4", + "commit": "2fe20fd58120bf323fb6846d99ca91e6dbf11109" + }, + "_source": "git://github.com/fk/select2-bootstrap-theme.git", + "_target": "~0.1.0-beta.4", + "_originalSource": "select2-bootstrap-theme", + "_direct": true +} \ No newline at end of file diff --git a/awx/ui/client/lib/select2-bootstrap-theme/Gruntfile.js b/awx/ui/client/lib/select2-bootstrap-theme/Gruntfile.js new file mode 100755 index 0000000000..d2c9b9bfe5 --- /dev/null +++ b/awx/ui/client/lib/select2-bootstrap-theme/Gruntfile.js @@ -0,0 +1,128 @@ +module.exports = function(grunt) { + // Load all grunt tasks. + require('matchdep').filterDev('grunt-*').forEach(grunt.loadNpmTasks); + + // Project configuration. + grunt.initConfig({ + nodeunit: { + all: ['tests/*_test.js'] + }, + + sass: { + options: { + style: 'expanded', + sourcemap: 'none', + // Increase Sass' default (5) precision to 9 to match Less output. + // + // @see https://github.com/twbs/bootstrap-sass#sass-number-precision + // @see https://github.com/sass/node-sass/issues/673#issue-57581701 + // @see https://github.com/sass/sass/issues/1122 + precision: 9 + }, + dist: { + files: { + 'docs/css/select2-bootstrap.css': 'src/build.scss', + 'dist/select2-bootstrap.css': 'src/build.scss' + } + }, + test: { + files: { + 'tmp/select2-bootstrap.css': 'src/build.scss' + } + } + }, + + cssmin: { + target: { + files: { + 'dist/select2-bootstrap.min.css': 'dist/select2-bootstrap.css' + } + } + }, + + jshint: { + all: ['Gruntfile.js', '*.json'] + }, + + bump: { + options: { + files: [ + 'package.json', + 'bower.json' + ], + push: false, + createTag: false + } + }, + + copy: { + main: { + files: [ + { + src: 'bower_components/bootstrap/dist/css/bootstrap.min.css', + dest: 'docs/css/bootstrap.min.css', + expand: false + }, + { + src: 'bower_components/bootstrap/dist/js/bootstrap.min.js', + dest: 'docs/js/bootstrap.min.js', + expand: false + }, + { + src: 'bower_components/respond/dest/respond.min.js', + dest: 'docs/js/respond.min.js', + expand: false + }, + { + cwd: 'bower_components/bootstrap/dist/fonts', + src: ['**/*'], + dest: 'docs/fonts', + expand: true + }, + { + src: 'bower_components/anchor-js/anchor.min.js', + dest: 'docs/js/anchor.min.js', + expand: false + } + ] + } + }, + + 'gh-pages': { + options: { + base: 'docs/_site', + message: 'Update gh-pages.' + }, + src: ['**/*'] + }, + + jekyll: { + options: { + src: 'docs', + dest: 'docs/_site', + sourcemaps: false + }, + build: { + d: null + }, + serve: { + options: { + serve: true, + watch: true + } + } + }, + + watch: { + files: 'src/select2-bootstrap.scss', + tasks: ['sass'], + options: { + livereload: true + } + } + }); + + // Default tasks. + grunt.registerTask('build', ['sass', 'cssmin', 'copy', 'jekyll:build']); + grunt.registerTask('serve', ['jekyll:serve']); +}; diff --git a/awx/ui/client/lib/select2-bootstrap-theme/LICENSE b/awx/ui/client/lib/select2-bootstrap-theme/LICENSE new file mode 100755 index 0000000000..406d19a3c3 --- /dev/null +++ b/awx/ui/client/lib/select2-bootstrap-theme/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2012-2015 Florian Kissling and contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/awx/ui/client/lib/select2-bootstrap-theme/README.md b/awx/ui/client/lib/select2-bootstrap-theme/README.md new file mode 100755 index 0000000000..52a4793dff --- /dev/null +++ b/awx/ui/client/lib/select2-bootstrap-theme/README.md @@ -0,0 +1,58 @@ +A Select2 v4 [Theme](https://select2.github.io/examples.html#themes) for Bootstrap 3 + +**Note: Work in progress – depending on your use case, select2-bootstrap-theme might not be production-ready yet!** + +Demonstrations available at +http://select2.github.io/select2-bootstrap-theme/ + +Tested with Bootstrap v3.3.5 and Select2 v4.0.0 +in latest Chrome. + +##### Installation + +The Select2 Bootstrap Theme only works with Select2 v4.x. Applying the theme requires `select2-bootstrap.css` referenced after the default `select2.css` that comes with Select2: + + + + +To apply the theme, tell Select2 to do so by passing `bootstrap` to the [`theme`](https://select2.github.io/examples.html#themes) option when initializing Select2: + + $( "#dropdown" ).select2({ + theme: "bootstrap" + }); + +##### Changelog + +###### 0.1.0-beta.4 + + * Added missing styles for `.select2-container--focus`. [[#18](https://github.com/select2/select2-bootstrap-theme/issues/18)] + * Added support for Bootstrap's [`.form-inline`](http://getbootstrap.com/css/#forms-inline). [[#13](https://github.com/select2/select2-bootstrap-theme/pull/13)] + * Added basic styles for `.select2-selection__clear` in `.select2-selection--multiple`. [[#11](https://github.com/select2/select2-bootstrap-theme/issues/11)] + * Brought Less source in line with the Sass version and fixed Less patch file and test. [[`3e86f34](https://github.com/select2/select2-bootstrap-theme/commit/3e86f34f6c94302cd8b4d6c3d751c5fb70fe61f6)] + +###### 0.1.0-beta.3 + + * Fixed specifity problems with `.form-control.select2-hidden-accessible`. + +###### 0.1.0-beta.2 + + * Added Less version. + +###### 0.1.0-beta.1 + +##### Contributing + +The project offers [Less](http://lesscss.org/) and [Sass](http://sass-lang.com/) sources for building `select2-bootstrap.css`; both make use of variables from either [Bootstrap](https://github.com/twbs/bootstrap) (Less) or [Bootstrap for Sass](https://github.com/twbs/bootstrap-sass). The demo pages are built using [Jekyll](http://jekyllrb.com/) and there are a bunch of [Grunt](http://gruntjs.com/) tasks to ease development. + +With [Ruby](https://www.ruby-lang.org/en/downloads/) and [RubyGems](http://rubygems.org/pages/download), [Jekyll](http://jekyllrb.com/), [Bower](http://bower.io/), [node.js](http://nodejs.org/), [Less](http://lesscss.org/) and [Sass](http://sass-lang.com/) installed, run + + npm install && bower install + +to install all necessary development dependencies. + + * `grunt copy` copies assets from `components` to `_jekyll` – use this in case a new version of Twitter Bootstrap or Select2 are out and need to be tested + * `grunt build` builds `docs` + * `grunt serve` builds `docs` and serves them via Jekyll's `--watch` flag on http://localhost:4000 + * `grunt watch` watches for changes in `src/select2-bootstrap.scss` ([livereload](https://github.com/gruntjs/grunt-contrib-watch#optionslivereload) is enabled) + +Develop in `src/select2-bootstrap.scss` and test your changes using `grunt watch` and `grunt serve`. Ideally, port your changes to `lib/select2-bootstrap.less` and make sure tests are passing to verify that Less and Sass compile down to the target CSS via `npm test`. diff --git a/awx/ui/client/lib/select2-bootstrap-theme/bower.json b/awx/ui/client/lib/select2-bootstrap-theme/bower.json new file mode 100755 index 0000000000..a1933febec --- /dev/null +++ b/awx/ui/client/lib/select2-bootstrap-theme/bower.json @@ -0,0 +1,19 @@ +{ + "name": "select2-bootstrap-theme", + "version": "0.1.0-beta.4", + "main": [ + "dist/select2-bootstrap.css", + "dist/select2-bootstrap.min.css" + ], + "ignore": [ + "**/.*", + "node_modules", + "components" + ], + "devDependencies": { + "bootstrap": "~3.3.5", + "bootstrap-sass-official": "~3.3.5", + "respond": "~1.4.2", + "anchor-js": "~1.1.1" + } +} diff --git a/awx/ui/client/lib/select2/dist/css/select2-bootstrap.css b/awx/ui/client/lib/select2-bootstrap-theme/dist/select2-bootstrap.css old mode 100644 new mode 100755 similarity index 89% rename from awx/ui/client/lib/select2/dist/css/select2-bootstrap.css rename to awx/ui/client/lib/select2-bootstrap-theme/dist/select2-bootstrap.css index 019f5ea914..a2385b5440 --- a/awx/ui/client/lib/select2/dist/css/select2-bootstrap.css +++ b/awx/ui/client/lib/select2-bootstrap-theme/dist/select2-bootstrap.css @@ -1,4 +1,4 @@ -/*! Select2 Bootstrap Theme v0.1.0-beta.1 | MIT License | github.com/fk/select2-bootstrap-theme */ +/*! Select2 Bootstrap Theme v0.1.0-beta.4 | MIT License | github.com/select2/select2-bootstrap-theme */ .select2-container--bootstrap { display: block; /*------------------------------------*\ @@ -17,6 +17,9 @@ * * @see http://getbootstrap.com/components/#dropdowns */ + /** + * Clear the selection. + */ /** * Address disabled Select2 styles. * @@ -153,24 +156,24 @@ display: block; padding: 6px 12px; font-size: 12px; - line-height: 1.42857143; + line-height: 1.428571429; white-space: nowrap; } -.select2-container--bootstrap.select2-container--open { - /** - * Handle border radii of the container when the dropdown is showing. - */ -} -.select2-container--bootstrap.select2-container--open .select2-selection { +.select2-container--bootstrap.select2-container--focus .select2-selection, .select2-container--bootstrap.select2-container--open .select2-selection { -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6); box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6); -webkit-transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s; -o-transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s; transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s; border-color: #66afe9; +} +.select2-container--bootstrap.select2-container--open { /** * Make the dropdown arrow point up while the dropdown is visible. */ + /** + * Handle border radii of the container when the dropdown is showing. + */ } .select2-container--bootstrap.select2-container--open .select2-selection .select2-selection__arrow b { border-color: transparent transparent #999 transparent; @@ -186,6 +189,21 @@ border-top-left-radius: 0; border-top-color: transparent; } +.select2-container--bootstrap .select2-selection__clear { + color: #999; + cursor: pointer; + float: right; + font-weight: bold; + margin-right: 10px; +} +.select2-container--bootstrap .select2-selection__clear:hover { + color: #333; +} +.select2-container--bootstrap.select2-container--disabled .select2-selection { + border-color: #ccc; + -webkit-box-shadow: none; + box-shadow: none; +} .select2-container--bootstrap.select2-container--disabled .select2-selection, .select2-container--bootstrap.select2-container--disabled .select2-search__field { cursor: not-allowed; @@ -214,25 +232,12 @@ } .select2-container--bootstrap .select2-selection--single { height: 34px; - line-height: 1.42857143; + line-height: 1.428571429; padding: 6px 24px 6px 12px; - /** - * Clear the selection. - */ /** * Adjust the single Select2's dropdown arrow button appearance. */ } -.select2-container--bootstrap .select2-selection--single .select2-selection__clear { - color: #999; - cursor: pointer; - float: right; - font-weight: bold; - margin-right: 10px; -} -.select2-container--bootstrap .select2-selection--single .select2-selection__clear:hover { - color: #333; -} .select2-container--bootstrap .select2-selection--single .select2-selection__arrow { position: absolute; bottom: 0; @@ -267,11 +272,14 @@ /** * Minus 2px borders. */ + /** + * Clear the selection. + */ } .select2-container--bootstrap .select2-selection--multiple .select2-selection__rendered { box-sizing: border-box; display: block; - line-height: 1.42857143; + line-height: 1.428571429; list-style: none; margin: 0; overflow: hidden; @@ -299,7 +307,7 @@ background: transparent; padding: 0 12px; height: 32px; - line-height: 1.42857143; + line-height: 1.428571429; margin-top: 0; min-width: 5em; } @@ -313,6 +321,9 @@ .select2-container--bootstrap .select2-selection--multiple .select2-selection__choice__remove:hover { color: #333; } +.select2-container--bootstrap .select2-selection--multiple .select2-selection__clear { + margin-top: 6px; +} .select2-container--bootstrap.input-sm, .select2-container--bootstrap.input-lg { border-radius: 0; font-size: 12px; @@ -346,6 +357,9 @@ height: 28px; line-height: 1.5; } +.select2-container--bootstrap.input-sm .select2-selection--multiple .select2-selection__clear, .input-group-sm .select2-container--bootstrap .select2-selection--multiple .select2-selection__clear, .form-group-sm .select2-container--bootstrap .select2-selection--multiple .select2-selection__clear { + margin-top: 5px; +} .select2-container--bootstrap.input-lg .select2-selection--single, .input-group-lg .select2-container--bootstrap .select2-selection--single, .form-group-lg .select2-container--bootstrap .select2-selection--single { border-radius: 6px; font-size: 18px; @@ -379,6 +393,9 @@ height: 44px; line-height: 1.3333333; } +.select2-container--bootstrap.input-lg .select2-selection--multiple .select2-selection__clear, .input-group-lg .select2-container--bootstrap .select2-selection--multiple .select2-selection__clear, .form-group-lg .select2-container--bootstrap .select2-selection--multiple .select2-selection__clear { + margin-top: 10px; +} .select2-container--bootstrap.input-lg.select2-container--open .select2-selection--single { /** * Make the dropdown arrow point up while the dropdown is visible. @@ -458,6 +475,7 @@ .has-warning .select2-selection { border-color: #8a6d3b; } +.has-warning .select2-container--focus .select2-selection, .has-warning .select2-container--open .select2-selection { -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b; box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b; @@ -474,6 +492,7 @@ .has-error .select2-selection { border-color: #a94442; } +.has-error .select2-container--focus .select2-selection, .has-error .select2-container--open .select2-selection { -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483; box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483; @@ -490,6 +509,7 @@ .has-success .select2-selection { border-color: #3c763d; } +.has-success .select2-container--focus .select2-selection, .has-success .select2-container--open .select2-selection { -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168; box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168; @@ -543,7 +563,7 @@ /** * Adjust alignment of Bootstrap buttons in Bootstrap Input Groups to address * Multi Select2's height which - depending on how many elements have been selected - - * may grown higher than their initial size. + * may grow taller than its initial size. * * @see http://getbootstrap.com/components/#input-groups */ @@ -555,3 +575,24 @@ .select2-bootstrap-prepend .input-group-btn .btn { vertical-align: top; } + +/** + * Temporary fix for https://github.com/select2/select2-bootstrap-theme/issues/9 + * + * Provides `!important` for certain properties of the class applied to the + * original ` + + +
+ + +
+ +
+ + +
+ + + +

To let the Select2 widget know if any elements are directly being appended, prepended or both in the context of a Bootstrap Input Group, add .select2-bootstrap-prepend and/or .select2-bootstrap-append to the .input-group wrapper element to address Select2's corresponding border-radii.

+ +
+ +
+ + + + +
+
+ +
+ +
+ + + + +
+
+ +
+ +
+ + + + +
+
+ +
+ +
+ + + + +
+
+ +
+ +
+ + + + +
+
+ +
+ +
+ + + + +
+
+ + + +

The theme offers styles to display "small" and "large" Select2 widgets in Bootstrap Input Groups with Bootstrap Control Sizing classes applied (e. g. Select2 in .input-group.input-group-sm or .input-group.input-group-lg). You may also apply the Bootstrap Control Sizing classes directly to the .select2-container to alter its appearance.

+ + + +
+
+ + +

RTL support via dir="rtl"

+
+
+ + +
+
+ + +
+
+
+ +
+ + + + +
+
+
+
+ + + +
+
+ + +

Example block-level help text.

+
+
+ + +
+
+ + +
+
+
+ +
+ + + + +
+
+
+
+ + + +
+
+ + +
+
+ + +
+
+ + +
+
+
+ +
+ + + + +
+
+
+
+ +

+ Horizontal form group sizes +

+ +

The theme's styles work in Bootstrap's Horizontal Forms and offers support for Horizontal Form Group Sizes, too.

+ +
+
+ + +
+ +
+ +
+ +
+
+ +
+ + +
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ + +
+ +
+
+ +
+
+
+ +
+
+
+ +
+
+ +
+
+
+ + + +
+
+
+
+ +
+
$
+ +
.00
+
+
+ +
+
+
+ +
+
+
+
+ + +
+
+ + +
+ +
+ +
+ +
+
+
+ + + +

Tests for Select2 widgets used in context with Bootstrap's Button Addons.

+ +
+
+ +
+
+ +
+ +
+
+
+ +
+ + + + +
+
+
+ + + +
+
+ +
+ + +
+
+
+ +
+ + + + +
+
+
+ + + +
+
+ +
+ + + + +
+
+
+ +
+ + + + +
+
+
+ + + +

The theme applies Bootstrap's styles for disabled input elements and for disabled dropdown options to the Select2 widgets and its options. Also see Select2's documentation on its "Disabled mode".

+ +
+
+
+ +
+ + + + +
+
+
+
+
+ +
+ + + + +
+
+
+
+ + + + {% include footer.html %} + + {% include scripts.html %} + + + + + diff --git a/awx/ui/client/lib/select2-bootstrap-theme/docs/_layouts/minimal.html b/awx/ui/client/lib/select2-bootstrap-theme/docs/_layouts/minimal.html new file mode 100755 index 0000000000..9f63c182f6 --- /dev/null +++ b/awx/ui/client/lib/select2-bootstrap-theme/docs/_layouts/minimal.html @@ -0,0 +1,7 @@ + + + {% include head.html %} + + {{ content }} + + diff --git a/awx/ui/client/lib/select2-bootstrap-theme/docs/_sass/_alert.sass b/awx/ui/client/lib/select2-bootstrap-theme/docs/_sass/_alert.sass new file mode 100644 index 0000000000..ce89228001 --- /dev/null +++ b/awx/ui/client/lib/select2-bootstrap-theme/docs/_sass/_alert.sass @@ -0,0 +1,17 @@ +.alert + padding: 20px + margin: 20px 0 + border: 1px solid #EEE + border-left-width: 5px + border-radius: 3px + .btn-set-scaling-classes + margin-top: 5px + &-info + border-left-color: #CE4844 + background: white + color: #333 + h4 + color: #CE4844 + margin-top: 0 + margin-bottom: 5px + font-size: 18px diff --git a/awx/ui/client/lib/select2-bootstrap-theme/docs/_sass/_anchorjs.sass b/awx/ui/client/lib/select2-bootstrap-theme/docs/_sass/_anchorjs.sass new file mode 100644 index 0000000000..be1c0a8ec0 --- /dev/null +++ b/awx/ui/client/lib/select2-bootstrap-theme/docs/_sass/_anchorjs.sass @@ -0,0 +1,6 @@ +.anchorjs-link + color: inherit + transition: all .25s linear + +*:hover > .anchorjs-link + margin-left: -1.125em !important diff --git a/awx/ui/client/lib/select2-bootstrap-theme/docs/_sass/_buttons.sass b/awx/ui/client/lib/select2-bootstrap-theme/docs/_sass/_buttons.sass new file mode 100644 index 0000000000..3bf6890e22 --- /dev/null +++ b/awx/ui/client/lib/select2-bootstrap-theme/docs/_sass/_buttons.sass @@ -0,0 +1,8 @@ +.btn-outline + border-color: $component-active-bg + color: $component-active-bg + background-color: transparent + &:hover, + &:active + color: $component-active-color + background-color: $component-active-bg diff --git a/awx/ui/client/lib/select2-bootstrap-theme/docs/_sass/_common.sass b/awx/ui/client/lib/select2-bootstrap-theme/docs/_sass/_common.sass new file mode 100644 index 0000000000..93ff58116d --- /dev/null +++ b/awx/ui/client/lib/select2-bootstrap-theme/docs/_sass/_common.sass @@ -0,0 +1,25 @@ +a + &:hover, + &:focus + text-decoration: none + +h1[id] + padding-top: 20px + margin-top: 0 + +.row + padding-bottom: 20px + +@media (min-width: $screen-sm) + .jumbotron + padding-top: 60px + padding-bottom: 60px + font-size: $lead-font-size + h1 + font-size: 32px + .lead + font-size: $lead-font-size + .btn-lg + margin: 20px 0 + padding: 18px 24px + font-size: $lead-font-size diff --git a/awx/ui/client/lib/select2-bootstrap-theme/docs/_sass/_extends.sass b/awx/ui/client/lib/select2-bootstrap-theme/docs/_sass/_extends.sass new file mode 100755 index 0000000000..c5c38ed627 --- /dev/null +++ b/awx/ui/client/lib/select2-bootstrap-theme/docs/_sass/_extends.sass @@ -0,0 +1,4 @@ +%background-image + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAwoAAAJ1CAYAAAB5OweBAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAABpxhJREFUeNrsnQe0FFX29cs46lAGRDBgFnPCMCLmwCAiomMgKRkFFFERUBCQpKKgmBgwYUCUIIgJs6hjAhzBiHHMCjqmMo8zfvd3Pm7/6zWdw0vsvdZZr193VXWFW9Xn3LPPPqv88ccfgSAIgiAIgiAIQhyr6hQIgiAIgiAIgqBAQRAEQRAEQRAEBQqCIAiCIAiCIChQEARBEARBEARBgYIgCIIgCIIgCAoUBEEQBEEQBEFQoLAy4+OPPw6//PLLUGdCEARBEARBUKAgJLB06dIgiiKdCEEQBEEQBKFKsIoargmCIAiCIAiCkAxlFARBEARBEARBUKAgCIIgCIIgCIICBUEQBEEQBEEQFCgIgiAIgiAIgqBAQRAEQRAEQRAEBQqCIAiCIAiCIChQEARBEARBEARBgYIgCIIgCIIgCAoUBEEQBEEQBEFQoCAIgiAIgiAIggIFQRAEQRAEQRAUKAiCIAiCIAiCoEBBEARBEARBEAQFCoIgCIIgCIIgKFAQBEEQBEEQBEGBgiAIgiAIgiAIggIFQRAEQRAEQRAUKAiCIAiCIAiCoEBBEARBEARBEAQFCoIgCIIgCIIgKFAQBEEQBEEQBEGBgiAIgiAIgiAIChQEQRAEQRAEQVCgIAiCIAiCIAiCAoWC8fnnn4e6VIIgCIIgCIKgQKECPvvss+Ddd99VsCAIgiAIgiAIlYRV/vjjD50FQRAEQRAEQRAqQDUKgiAIgiAIgiAoUBAEQRAEQRAEQYGCIAiCIAiCIAgKFARBEARBEARBUKAgCIIgCIIgCIICBUEQBEEQBEEQFCgIgiAIgiAIgqBAQRAEQRAEQRAEBQqCINQqfPLJJ+qeLgiCIAgKFARBEP4Py5YtCz/44AOdCEEQBEGoRVjljz/+0FkQBEEQBEEQBKEClFEQBEEQBEEQBEGBgiAIgiAIgiAIChSEGoL58+erEFYQBEEQBEGBgiBUxIYbbqiTIAiCIAiCUI2gYmZBEARBEARBEFaAMgqCIAiCIAiCIChQEARBEARBEAQhO1bXKRCE2oWrr746/Oqrr4IJEyYE//73vxPvH3fcccFuu+0WdOvWLdhyyy0jnSlBEARBEDJBNQqCUIPx7LPPhrNmzQq++eabYPLkyRU+23TTTYMWLVoEu+++e/DLL7/Y50uWLLHPbrjhhqB79+4KFgRBEARBUKAgCLUFL7/8cnj++ecHjzzyiP2/5pprBn/961+DunXr2us+ffoEG2+8cVC/fv0VAoEvv/wy7NmzZ0BwMXXq1KBdu3YKFgRBEARBUKAgCDUdnTt3Dm+99dYgDMPg5JNPDrp27Ro0bdo0b2ffrRM+//zzgbv/FSgIgiAIgqBAQRBqKl577bVwv/32C1ZfffVg9OjRwZlnnlmUg//FF1+Em2yySbDddtsF77zzjoIFQRAEQRBWgFSPBKGaY8CAASFFyPvss0/w3XffRcUGCWDjjTeOFixYELz77rvUMKgrtiAIgiAIChQEoSZhwoQJ4eWXXx40aNAgeOqpp0o68+8Cjwj60auvvhqMGjVKwYIgCIIgCBUg6pEgFIjx48eHqA2tuuqqwSqrrBJEURSMHTvWnPrTTz+dQuFgxx13LMi579ixY3j77bfb6w4dOgRTpkwpGz1oww03DOvVqxe89dZboiAJgiAIgqBAQRAy4YknngjfeOON4F//+lew2mqrUfQbXHPNNcGvv/5qn9evXz9YtmxZhXXWWGMNKy5euHBh8NJLLwU43/QziAPJUr/sTjvtFKy99tomX/rzzz8HZA78/bj++usHxx9/vCkYNW7cuKwO/ODBg8Mnn3wyeO655xQoCIIgCIKQgBquCSstnOMf0pDsiy++CCZNmhQceeSRwTPPPJMIBgDqQuDHH380CVIc/f/+978WEGy//fbm2JNR4C+8f7/e0qVLLdtw4403IklqRchkHW666abgwAMPDLbYYguKiI32M3v27GCttdYii2Dr/u9//wuW040qxXH//vvvLWARBEEQBEGIQxkFYaVD7969w7///e+J/w8++OBgq622Cn744YdgnXXWsdn+Xr16BagCNWzYsOzO+meffRa6AKTKZvNPPvnkkCzI+++/r4yCIAiCIAgKFISqx4IFC8L777///w/EVVYJUPaBgvPee+8FH330kc2yQ99hjPI5s/hbbrllwc7s/PnzQzoVf/3118ExxxwTXHbZZcEGG2xQIROwMuK+++4Ljz322OCFF14I9ttvPwULgiAIgiAoUBCqBq+88kpIL4Dp06enXaZly5YWMCxZsuT/BqsLFhivp556KgFD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dKnKqCBfXCiNCNoQNB/OXZcuXXKuj5oEKDm6+RkOi0kRe+qppxS10C21zHuCSPq1116bcxtInSZxvaZOnaqMcwIc7CN9OXhnxb0dRBq0MMP06dMzpgzwlVdeqf6uV6+e+ttdGC4QR0EgEAiqHC644IIKHF/L6J4s50dQCE466STPWgNoHUwngmuqyng1K8Nogyte1c4N2ZJCGp3RUHH48OHZ5TGczaZ2XoAug2Oh/z7xxBMzZ599dsake7Vt27bCOmiCV2rlJtS0dFT/3XffLcq+oAZlGd3HdYZM05CgKPE3VDp51sVREAgEgioNKAl0dNZwc32L9XEWVC1g5MPz9nMiTCNVG65eGQiyD3DIq9r5wdikuDbqco8//rjK9rmnU8Tbt29f3/WRSTCbqxEMuOaaa7J/U3dA5F7/zbqgG5X6PNHQjYxGsbdLATPOQPPmzTNQ5nThNHQvfod+BQ1JnnVxFAQCgWCbBQ2YKF6Uc1HeCMtjjxMY/X7qRdBcWrRoUeE3OO8o07jnff/999V6HnvssSp3H/br1y+ysYmB7+4/Ae69917P82dSuXbccceMfq6pFfH6TVOIOOdBnZqLgQ8//FDtB/01SrF9sl5169bNZmLoB8H+/PnPf87oe1beLxVRXQRiZciQIWPbGb/5zW/sXr16iXZ4mY/DDz+8qNfw+uuvz6xcudKaNGmS5+9t27a1dthhByXRqac5BrONVj3yu+a8++yzj40ef/fu3RV9pipdl5kzZ9rLly+3yK6EXeaLL77I9gkwR9++fW3HOVMOg9dyb775pnXaaaep///888//jf5uHbNmzVLXY8uWLWrZd955R/UgOOigg0r27G+VJFX71bt375Lsw2GHHWZ/++239nfffUc/icwtt9xin3nmmdbpp5+unCvuWXm7VBziKMiQIUOGDBkyfAdKRxj8GHdjx471NKR22WUXm8ZXy5YtqzD93HPPtW677TZFkzGn//rXv7YdI80aOHBglTtfNKh74IEHQs2LuECTJk2siy66yPO81qpViyi457Kc11133VX9XzceM9ZLcbNyIPS8zjkvyfm49dZbVS+Eo446Su3vq6++SpfrkhrkCxcutNatW6c63T/00EM2TitOjAxxFGTIkCFDhgwZEQYOws4774zxG2jcdenSBYegwrQ999zTPuKII9C1rzT/iBEj7GbNmllb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) + background-repeat: no-repeat + background-position: 50% 0 diff --git a/awx/ui/client/lib/select2-bootstrap-theme/docs/_sass/_footer.sass b/awx/ui/client/lib/select2-bootstrap-theme/docs/_sass/_footer.sass new file mode 100644 index 0000000000..b809547448 --- /dev/null +++ b/awx/ui/client/lib/select2-bootstrap-theme/docs/_sass/_footer.sass @@ -0,0 +1,22 @@ +.footer + text-align: center + color: #ccc + a + +link + small a + color: #999 + &-links + margin-top: $padding-large-horizontal + margin-bottom: 0 + padding-bottom: $padding-large-horizontal + padding-left: 0 + list-style: none + font-size: 14px + li + display: inline + margin-left: 2px + margin-right: 2px + .demo & + padding-top: 200px + padding-bottom: 80px + @extend %background-image diff --git a/awx/ui/client/lib/select2-bootstrap-theme/docs/_sass/_home.sass b/awx/ui/client/lib/select2-bootstrap-theme/docs/_sass/_home.sass new file mode 100644 index 0000000000..7c419f9d18 --- /dev/null +++ b/awx/ui/client/lib/select2-bootstrap-theme/docs/_sass/_home.sass @@ -0,0 +1,8 @@ +.home + padding-bottom: 30px + @extend %background-image + background-position: 50% 50% + body + background-color: transparent + .container + max-width: 700px diff --git a/awx/ui/client/lib/select2-bootstrap-theme/docs/_sass/_jumbotron.sass b/awx/ui/client/lib/select2-bootstrap-theme/docs/_sass/_jumbotron.sass new file mode 100644 index 0000000000..60ed699b1f --- /dev/null +++ b/awx/ui/client/lib/select2-bootstrap-theme/docs/_sass/_jumbotron.sass @@ -0,0 +1,36 @@ +.jumbotron + background-color: transparent + text-align: center + font-weight: normal + &-title + margin-top: 40px + font-size: 28px + h2 + text-align: center + font-size: 16px + hr + border-color: #eee + width: 100px + .lead + font-size: 16px + a + +link + .form-group + background: none + .select2-wrapper + width: 300px + text-align: left + margin: 0 auto $padding-large-horizontal + transition: all .1s ease-in-out + .btn + &-outline + padding: 18px 24px + transition: all .1s ease-in-out + &-lg + padding: 10px 16px + font-size: 18px + line-height: 1.33 + border-radius: 6px + margin-top: 15px + margin-bottom: 15px + margin-left: 0 diff --git a/awx/ui/client/lib/select2-bootstrap-theme/docs/_sass/_mixins.sass b/awx/ui/client/lib/select2-bootstrap-theme/docs/_sass/_mixins.sass new file mode 100755 index 0000000000..765a75f186 --- /dev/null +++ b/awx/ui/client/lib/select2-bootstrap-theme/docs/_sass/_mixins.sass @@ -0,0 +1,9 @@ +=link($color: $link-color, $hover-color: $link-hover-color, $border-width: 1px, $font-weight: normal) + border-bottom: $border-width solid transparent + color: $color + font-weight: $font-weight + transition: all .1s ease-in-out + &:hover + border-color: $hover-color + border-width: $border-width + color: $hover-color diff --git a/awx/ui/client/lib/select2-bootstrap-theme/docs/_sass/_navbar.sass b/awx/ui/client/lib/select2-bootstrap-theme/docs/_sass/_navbar.sass new file mode 100644 index 0000000000..c01caf16da --- /dev/null +++ b/awx/ui/client/lib/select2-bootstrap-theme/docs/_sass/_navbar.sass @@ -0,0 +1,4 @@ +.navbar-default + background: rgba(#fff,.95) + border-width: 0 0 1px + border-radius: 0 diff --git a/awx/ui/client/lib/select2-bootstrap-theme/docs/_sass/_select2-result-repository.sass b/awx/ui/client/lib/select2-bootstrap-theme/docs/_sass/_select2-result-repository.sass new file mode 100755 index 0000000000..85365c2386 --- /dev/null +++ b/awx/ui/client/lib/select2-bootstrap-theme/docs/_sass/_select2-result-repository.sass @@ -0,0 +1,40 @@ +.select2-result-repository + padding-top: 4px + padding-bottom: 3px + &__avatar + float: left + width: 60px + margin-right: 10px + img + width: 100% + height: auto + border-radius: 2px + &__meta + margin-left: 70px + &__title + color: black + font-weight: bold + word-wrap: break-word + line-height: 1.1 + margin-bottom: 4px + &__forks, + &__stargazers + margin-right: 1em + &__forks, + &__stargazers, + &__watchers + display: inline-block + color: #aaa + font-size: 11px + &__description + font-size: 13px + color: #777 + margin-top: 4px + .select2-results__option--highlighted & + &__title + color: white + &__forks, + &__stargazers, + &__description, + &__watchers + color: mix($link-color, white, 30%) diff --git a/awx/ui/client/lib/select2-bootstrap-theme/docs/_sass/_variables.sass b/awx/ui/client/lib/select2-bootstrap-theme/docs/_sass/_variables.sass new file mode 100755 index 0000000000..e94242b70a --- /dev/null +++ b/awx/ui/client/lib/select2-bootstrap-theme/docs/_sass/_variables.sass @@ -0,0 +1 @@ +$lead-font-size: 20px diff --git a/awx/ui/client/lib/select2-bootstrap-theme/docs/css/bootstrap.min.css b/awx/ui/client/lib/select2-bootstrap-theme/docs/css/bootstrap.min.css new file mode 100755 index 0000000000..d65c66b1ba --- /dev/null +++ b/awx/ui/client/lib/select2-bootstrap-theme/docs/css/bootstrap.min.css @@ -0,0 +1,5 @@ +/*! + * Bootstrap v3.3.5 (http://getbootstrap.com) + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0;font-size:2em}mark{color:#000;background:#ff0}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}legend{padding:0;border:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,:after,:before{color:#000!important;text-shadow:none!important;background:0 0!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff2) format('woff2'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-eur:before,.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:focus,a:hover{color:#23527c;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.carousel-inner>.item>a>img,.carousel-inner>.item>img,.img-responsive,.thumbnail a>img,.thumbnail>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;max-width:100%;height:auto;padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role=button]{cursor:pointer}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-weight:400;line-height:1;color:#777}.h1,.h2,.h3,h1,h2,h3{margin-top:20px;margin-bottom:10px}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small{font-size:65%}.h4,.h5,.h6,h4,h5,h6{margin-top:10px;margin-bottom:10px}.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-size:75%}.h1,h1{font-size:36px}.h2,h2{font-size:30px}.h3,h3{font-size:24px}.h4,h4{font-size:18px}.h5,h5{font-size:14px}.h6,h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}.small,small{font-size:85%}.mark,mark{padding:.2em;background-color:#fcf8e3}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:focus,a.text-primary:hover{color:#286090}.text-success{color:#3c763d}a.text-success:focus,a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:focus,a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:focus,a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:focus,a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#337ab7}a.bg-primary:focus,a.bg-primary:hover{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:focus,a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:focus,a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:focus,a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:focus,a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ol,ul{margin-top:0;margin-bottom:10px}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;margin-left:-5px;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-top:0;margin-bottom:20px}dd,dt{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child{margin-bottom:0}blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote .small:before,blockquote footer:before,blockquote small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0}.blockquote-reverse .small:before,.blockquote-reverse footer:before,.blockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{content:''}.blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;font-weight:700;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{margin-right:-15px;margin-left:-15px}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>td,.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.table>thead:first-child>tr:first-child>th{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #ddd}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*=col-]{position:static;display:table-column;float:none}table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none}.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{background-color:#f5f5f5}.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{background-color:#e8e8e8}.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#dff0d8}.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6}.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>thead>tr>td.info,.table>thead>tr>th.info{background-color:#d9edf7}.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover{background-color:#c4e3f3}.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fcf8e3}.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#faf2cc}.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#f2dede}.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ebcccc}.table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=checkbox],input[type=radio]{margin:4px 0 0;margin-top:1px\9;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=file]:focus,input[type=checkbox]:focus,input[type=radio]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type=search]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date].form-control,input[type=time].form-control,input[type=datetime-local].form-control,input[type=month].form-control{line-height:34px}.input-group-sm input[type=date],.input-group-sm input[type=time],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{line-height:30px}.input-group-lg input[type=date],.input-group-lg input[type=time],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{line-height:46px}}.form-group{margin-bottom:15px}.checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px}.checkbox label,.radio label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-top:4px\9;margin-left:-20px}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{cursor:not-allowed}.checkbox-inline.disabled,.radio-inline.disabled,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio-inline{cursor:not-allowed}.checkbox.disabled label,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .radio label{cursor:not-allowed}.form-control-static{min-height:34px;padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.form-control-static.input-sm{padding-right:0;padding-left:0}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}select[multiple].input-sm,textarea.input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm select[multiple].form-control,.form-group-sm textarea.form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-lg{height:46px;line-height:46px}select[multiple].input-lg,textarea.input-lg{height:auto}.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.form-group-lg select.form-control{height:46px;line-height:46px}.form-group-lg select[multiple].form-control,.form-group-lg textarea.form-control{height:auto}.form-group-lg .form-control-static{height:46px;min-height:38px;padding:11px 16px;font-size:18px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.form-group-lg .form-control+.form-control-feedback,.input-group-lg+.form-control-feedback,.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.form-group-sm .form-control+.form-control-feedback,.input-group-sm+.form-control-feedback,.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.has-success .form-control-feedback{color:#3c763d}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-error .form-control-feedback{color:#a94442}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .checkbox,.form-inline .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .checkbox label,.form-inline .radio label{padding-left:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .checkbox,.form-horizontal .radio{min-height:27px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:14.33px;font-size:18px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn.focus,.btn:focus,.btn:hover{color:#333;text-decoration:none}.btn.active,.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;opacity:.65}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default.focus,.btn-default:focus{color:#333;background-color:#e6e6e6;border-color:#8c8c8c}.btn-default:hover{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active.focus,.btn-default.active:focus,.btn-default.active:hover,.btn-default:active.focus,.btn-default:active:focus,.btn-default:active:hover,.open>.dropdown-toggle.btn-default.focus,.open>.dropdown-toggle.btn-default:focus,.open>.dropdown-toggle.btn-default:hover{color:#333;background-color:#d4d4d4;border-color:#8c8c8c}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default.disabled.active,.btn-default.disabled.focus,.btn-default.disabled:active,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled],.btn-default[disabled].active,.btn-default[disabled].focus,.btn-default[disabled]:active,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default,fieldset[disabled] .btn-default.active,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:active,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#286090;border-color:#122b40}.btn-primary:hover{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open>.dropdown-toggle.btn-primary.focus,.open>.dropdown-toggle.btn-primary:focus,.open>.dropdown-toggle.btn-primary:hover{color:#fff;background-color:#204d74;border-color:#122b40}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled.focus,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled].focus,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#449d44;border-color:#255625}.btn-success:hover{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active.focus,.btn-success.active:focus,.btn-success.active:hover,.btn-success:active.focus,.btn-success:active:focus,.btn-success:active:hover,.open>.dropdown-toggle.btn-success.focus,.open>.dropdown-toggle.btn-success:focus,.open>.dropdown-toggle.btn-success:hover{color:#fff;background-color:#398439;border-color:#255625}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success.disabled.active,.btn-success.disabled.focus,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled],.btn-success[disabled].active,.btn-success[disabled].focus,.btn-success[disabled]:active,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info.focus,.btn-info:focus{color:#fff;background-color:#31b0d5;border-color:#1b6d85}.btn-info:hover{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active.focus,.btn-info.active:focus,.btn-info.active:hover,.btn-info:active.focus,.btn-info:active:focus,.btn-info:active:hover,.open>.dropdown-toggle.btn-info.focus,.open>.dropdown-toggle.btn-info:focus,.open>.dropdown-toggle.btn-info:hover{color:#fff;background-color:#269abc;border-color:#1b6d85}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled.focus,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled].focus,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning.focus,.btn-warning:focus{color:#fff;background-color:#ec971f;border-color:#985f0d}.btn-warning:hover{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active.focus,.btn-warning.active:focus,.btn-warning.active:hover,.btn-warning:active.focus,.btn-warning:active:focus,.btn-warning:active:hover,.open>.dropdown-toggle.btn-warning.focus,.open>.dropdown-toggle.btn-warning:focus,.open>.dropdown-toggle.btn-warning:hover{color:#fff;background-color:#d58512;border-color:#985f0d}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning.disabled.active,.btn-warning.disabled.focus,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled],.btn-warning[disabled].active,.btn-warning[disabled].focus,.btn-warning[disabled]:active,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#c9302c;border-color:#761c19}.btn-danger:hover{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active.focus,.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active.focus,.btn-danger:active:focus,.btn-danger:active:hover,.open>.dropdown-toggle.btn-danger.focus,.open>.dropdown-toggle.btn-danger:focus,.open>.dropdown-toggle.btn-danger:hover{color:#fff;background-color:#ac2925;border-color:#761c19}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled.focus,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled].focus,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:400;color:#337ab7;border-radius:0}.btn-link,.btn-link.active,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#777;text-decoration:none}.btn-group-lg>.btn,.btn-lg{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.btn-group-sm>.btn,.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-xs>.btn,.btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease;-webkit-transition-duration:.35s;-o-transition-duration:.35s;transition-duration:.35s;-webkit-transition-property:height,visibility;-o-transition-property:height,visibility;transition-property:height,visibility}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid\9;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown,.dropup{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;background-color:#337ab7;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#777}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px dashed;border-bottom:4px solid\9}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:0}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn,textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn,textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:focus,.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#eee;border-color:#337ab7}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{color:#fff;background-color:#337ab7}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1)}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-right:0;padding-left:0}}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px}}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-bottom,.navbar-fixed-top{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;height:50px;padding:15px 15px;font-size:18px;line-height:20px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .form-control,.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .checkbox label,.navbar-form .radio label{padding-left:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:focus,.navbar-default .btn-link:hover{color:#333}.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{color:#fff;background-color:#080808}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:focus,.navbar-inverse .btn-link:hover{color:#fff}.navbar-inverse .btn-link[disabled]:focus,.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:focus,fieldset[disabled] .navbar-inverse .btn-link:hover{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.42857143;color:#337ab7;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{z-index:3;color:#23527c;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{z-index:2;color:#fff;cursor:default;background-color:#337ab7;border-color:#337ab7}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{color:#777;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:focus,.pager li>a:hover{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#777;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:focus,a.label:hover{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#777}.label-default[href]:focus,.label-default[href]:hover{background-color:#5e5e5e}.label-primary{background-color:#337ab7}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#286090}.label-success{background-color:#5cb85c}.label-success[href]:focus,.label-success[href]:hover{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:focus,.label-info[href]:hover{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-group-xs>.btn .badge,.btn-xs .badge{top:0;padding:1px 5px}a.badge:focus,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron .h1,.jumbotron h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-right:60px;padding-left:60px}.jumbotron .h1,.jumbotron h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail a>img,.thumbnail>img{margin-right:auto;margin-left:auto}a.thumbnail.active,a.thumbnail:focus,a.thumbnail:hover{border-color:#337ab7}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-bar-striped,.progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress-bar.active,.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{overflow:hidden;zoom:1}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-body,.media-left,.media-right{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item,button.list-group-item{color:#555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover,button.list-group-item:focus,button.list-group-item:hover{color:#555;text-decoration:none;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{color:#777;cursor:not-allowed;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#c7ddef}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:focus,a.list-group-item-success:hover,button.list-group-item-success:focus,button.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:focus,a.list-group-item-success.active:hover,button.list-group-item-success.active,button.list-group-item-success.active:focus,button.list-group-item-success.active:hover{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:focus,a.list-group-item-info:hover,button.list-group-item-info:focus,button.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:focus,a.list-group-item-info.active:hover,button.list-group-item-info.active,button.list-group-item-info.active:focus,button.list-group-item-info.active:hover{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:focus,a.list-group-item-warning:hover,button.list-group-item-warning:focus,button.list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:focus,a.list-group-item-warning.active:hover,button.list-group-item-warning.active,button.list-group-item-warning.active:focus,button.list-group-item-warning.active:hover{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:focus,a.list-group-item-danger:hover,button.list-group-item-danger:focus,button.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover,button.list-group-item-danger.active,button.list-group-item-danger.active:focus,button.list-group-item-danger.active:hover{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-left-radius:0;border-top-right-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.panel-collapse>.table,.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel>.panel-collapse>.table caption,.panel>.table caption,.panel>.table-responsive>.table caption{padding-right:15px;padding-left:15px}.panel>.table-responsive:first-child>.table:first-child,.panel>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table:first-child>thead:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table-responsive:last-child>.table:last-child,.panel>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child td,.panel>.table>tbody:first-child>tr:first-child th{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{margin-bottom:0;border:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.list-group,.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%)}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-header{min-height:16.43px;padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;filter:alpha(opacity=0);opacity:0;line-break:auto}.tooltip.in{filter:alpha(opacity=90);opacity:.9}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{right:5px;bottom:0;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);line-break:auto}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{content:"";border-width:10px}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.right>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>a>img,.carousel-inner>.item>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.active.right,.carousel-inner>.item.next{left:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.carousel-inner>.item.active.left,.carousel-inner>.item.prev{left:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.carousel-inner>.item.active,.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right{left:0;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);filter:alpha(opacity=50);opacity:.5}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);background-repeat:repeat-x}.carousel-control:focus,.carousel-control:hover{color:#fff;text-decoration:none;filter:alpha(opacity=90);outline:0;opacity:.9}.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block;margin-top:-10px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{left:50%;margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{right:50%;margin-right:-10px}.carousel-control .icon-next,.carousel-control .icon-prev{width:20px;height:20px;font-family:serif;line-height:1}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000\9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{width:30px;height:30px;margin-top:-15px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-15px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-15px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before,.btn-toolbar:after,.btn-toolbar:before,.clearfix:after,.clearfix:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.dl-horizontal dd:after,.dl-horizontal dd:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.modal-footer:after,.modal-footer:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.pager:after,.pager:before,.panel-body:after,.panel-body:before,.row:after,.row:before{display:table;content:" "}.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.dl-horizontal dd:after,.form-horizontal .form-group:after,.modal-footer:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager:after,.panel-body:after,.row:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-lg,.visible-md,.visible-sm,.visible-xs{display:none!important}.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table!important}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}}@media (max-width:767px){.visible-xs-block{display:block!important}}@media (max-width:767px){.visible-xs-inline{display:inline!important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table!important}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table!important}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table!important}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}}@media (min-width:1200px){.visible-lg-block{display:block!important}}@media (min-width:1200px){.visible-lg-inline{display:inline!important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table!important}tr.visible-print{display:table-row!important}td.visible-print,th.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}}@media print{.hidden-print{display:none!important}} \ No newline at end of file diff --git a/awx/ui/client/lib/select2-bootstrap-theme/docs/css/gh-pages.sass b/awx/ui/client/lib/select2-bootstrap-theme/docs/css/gh-pages.sass new file mode 100755 index 0000000000..04eda11729 --- /dev/null +++ b/awx/ui/client/lib/select2-bootstrap-theme/docs/css/gh-pages.sass @@ -0,0 +1,16 @@ +--- +--- +@import ../../bower_components/bootstrap-sass-official/assets/stylesheets/bootstrap/variables +@import variables +@import extends +@import mixins + +@import alert +@import anchorjs +@import buttons +@import common +@import footer +@import home +@import jumbotron +@import navbar +@import select2-result-repository diff --git a/awx/ui/client/lib/select2-bootstrap-theme/docs/css/select2-bootstrap.css b/awx/ui/client/lib/select2-bootstrap-theme/docs/css/select2-bootstrap.css new file mode 100755 index 0000000000..a2385b5440 --- /dev/null +++ b/awx/ui/client/lib/select2-bootstrap-theme/docs/css/select2-bootstrap.css @@ -0,0 +1,598 @@ +/*! Select2 Bootstrap Theme v0.1.0-beta.4 | MIT License | github.com/select2/select2-bootstrap-theme */ +.select2-container--bootstrap { + display: block; + /*------------------------------------*\ + #COMMON STYLES + \*------------------------------------*/ + /** + * Search field in the Select2 dropdown. + */ + /** + * No outline for all search fields - in the dropdown + * and inline in multi Select2s. + */ + /** + * Adjust Select2's choices hover and selected styles to match + * Bootstrap 3's default dropdown styles. + * + * @see http://getbootstrap.com/components/#dropdowns + */ + /** + * Clear the selection. + */ + /** + * Address disabled Select2 styles. + * + * @see https://select2.github.io/examples.html#disabled + * @see http://getbootstrap.com/css/#forms-control-disabled + */ + /*------------------------------------*\ + #DROPDOWN + \*------------------------------------*/ + /** + * Dropdown border color and box-shadow. + */ + /** + * Limit the dropdown height. + */ + /*------------------------------------*\ + #SINGLE SELECT2 + \*------------------------------------*/ + /*------------------------------------*\ + #MULTIPLE SELECT2 + \*------------------------------------*/ + /** + * Address Bootstrap control sizing classes + * + * 1. Reset Bootstrap defaults. + * 2. Adjust the dropdown arrow button icon position. + * + * @see http://getbootstrap.com/css/#forms-control-sizes + */ + /* 1 */ + /*------------------------------------*\ + #RTL SUPPORT + \*------------------------------------*/ +} +.select2-container--bootstrap .select2-selection { + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + background-color: #fff; + border: 1px solid #ccc; + border-radius: 4px; + color: #555555; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + outline: 0; +} +.select2-container--bootstrap .select2-search--dropdown .select2-search__field { + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + background-color: #fff; + border: 1px solid #ccc; + border-radius: 4px; + color: #555555; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; +} +.select2-container--bootstrap .select2-search__field { + outline: 0; + /* Firefox 18- */ + /** + * Firefox 19+ + * + * @see http://stackoverflow.com/questions/24236240/color-for-styled-placeholder-text-is-muted-in-firefox + */ +} +.select2-container--bootstrap .select2-search__field::-webkit-input-placeholder { + color: #999; +} +.select2-container--bootstrap .select2-search__field:-moz-placeholder { + color: #999; +} +.select2-container--bootstrap .select2-search__field::-moz-placeholder { + color: #999; + opacity: 1; +} +.select2-container--bootstrap .select2-search__field:-ms-input-placeholder { + color: #999; +} +.select2-container--bootstrap .select2-results__option { + /** + * Disabled results. + * + * @see https://select2.github.io/examples.html#disabled-results + */ + /** + * Hover state. + */ + /** + * Selected state. + */ +} +.select2-container--bootstrap .select2-results__option[role=group] { + padding: 0; +} +.select2-container--bootstrap .select2-results__option[aria-disabled=true] { + color: #777777; + cursor: not-allowed; +} +.select2-container--bootstrap .select2-results__option[aria-selected=true] { + background-color: #f5f5f5; + color: #262626; +} +.select2-container--bootstrap .select2-results__option--highlighted[aria-selected] { + background-color: #337ab7; + color: #fff; +} +.select2-container--bootstrap .select2-results__option .select2-results__option { + padding: 6px 12px; +} +.select2-container--bootstrap .select2-results__option .select2-results__option .select2-results__group { + padding-left: 0; +} +.select2-container--bootstrap .select2-results__option .select2-results__option .select2-results__option { + margin-left: -12px; + padding-left: 24px; +} +.select2-container--bootstrap .select2-results__option .select2-results__option .select2-results__option .select2-results__option { + margin-left: -24px; + padding-left: 36px; +} +.select2-container--bootstrap .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option { + margin-left: -36px; + padding-left: 48px; +} +.select2-container--bootstrap .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option { + margin-left: -48px; + padding-left: 60px; +} +.select2-container--bootstrap .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option { + margin-left: -60px; + padding-left: 72px; +} +.select2-container--bootstrap .select2-results__group { + color: #777777; + display: block; + padding: 6px 12px; + font-size: 12px; + line-height: 1.428571429; + white-space: nowrap; +} +.select2-container--bootstrap.select2-container--focus .select2-selection, .select2-container--bootstrap.select2-container--open .select2-selection { + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6); + -webkit-transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s; + -o-transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s; + transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s; + border-color: #66afe9; +} +.select2-container--bootstrap.select2-container--open { + /** + * Make the dropdown arrow point up while the dropdown is visible. + */ + /** + * Handle border radii of the container when the dropdown is showing. + */ +} +.select2-container--bootstrap.select2-container--open .select2-selection .select2-selection__arrow b { + border-color: transparent transparent #999 transparent; + border-width: 0 4px 4px 4px; +} +.select2-container--bootstrap.select2-container--open.select2-container--below .select2-selection { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; + border-bottom-color: transparent; +} +.select2-container--bootstrap.select2-container--open.select2-container--above .select2-selection { + border-top-right-radius: 0; + border-top-left-radius: 0; + border-top-color: transparent; +} +.select2-container--bootstrap .select2-selection__clear { + color: #999; + cursor: pointer; + float: right; + font-weight: bold; + margin-right: 10px; +} +.select2-container--bootstrap .select2-selection__clear:hover { + color: #333; +} +.select2-container--bootstrap.select2-container--disabled .select2-selection { + border-color: #ccc; + -webkit-box-shadow: none; + box-shadow: none; +} +.select2-container--bootstrap.select2-container--disabled .select2-selection, +.select2-container--bootstrap.select2-container--disabled .select2-search__field { + cursor: not-allowed; +} +.select2-container--bootstrap.select2-container--disabled .select2-selection, +.select2-container--bootstrap.select2-container--disabled .select2-selection--multiple .select2-selection__choice { + background-color: #eeeeee; +} +.select2-container--bootstrap.select2-container--disabled .select2-selection__clear, +.select2-container--bootstrap.select2-container--disabled .select2-selection--multiple .select2-selection__choice__remove { + display: none; +} +.select2-container--bootstrap .select2-dropdown { + -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); + box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); + border-color: #66afe9; + overflow-x: hidden; + margin-top: -1px; +} +.select2-container--bootstrap .select2-dropdown--above { + margin-top: 1px; +} +.select2-container--bootstrap .select2-results > .select2-results__options { + max-height: 200px; + overflow-y: auto; +} +.select2-container--bootstrap .select2-selection--single { + height: 34px; + line-height: 1.428571429; + padding: 6px 24px 6px 12px; + /** + * Adjust the single Select2's dropdown arrow button appearance. + */ +} +.select2-container--bootstrap .select2-selection--single .select2-selection__arrow { + position: absolute; + bottom: 0; + right: 12px; + top: 0; + width: 4px; +} +.select2-container--bootstrap .select2-selection--single .select2-selection__arrow b { + border-color: #999 transparent transparent transparent; + border-style: solid; + border-width: 4px 4px 0 4px; + height: 0; + left: 0; + margin-left: -4px; + margin-top: -2px; + position: absolute; + top: 50%; + width: 0; +} +.select2-container--bootstrap .select2-selection--single .select2-selection__rendered { + color: #555555; + padding: 0; +} +.select2-container--bootstrap .select2-selection--single .select2-selection__placeholder { + color: #999; +} +.select2-container--bootstrap .select2-selection--multiple { + min-height: 34px; + /** + * Make Multi Select2's choices match Bootstrap 3's default button styles. + */ + /** + * Minus 2px borders. + */ + /** + * Clear the selection. + */ +} +.select2-container--bootstrap .select2-selection--multiple .select2-selection__rendered { + box-sizing: border-box; + display: block; + line-height: 1.428571429; + list-style: none; + margin: 0; + overflow: hidden; + padding: 0; + width: 100%; + text-overflow: ellipsis; + white-space: nowrap; +} +.select2-container--bootstrap .select2-selection--multiple .select2-selection__placeholder { + color: #999; + float: left; + margin-top: 5px; +} +.select2-container--bootstrap .select2-selection--multiple .select2-selection__choice { + color: #555555; + background: #fff; + border: 1px solid #ccc; + border-radius: 4px; + cursor: default; + float: left; + margin: 5px 0 0 6px; + padding: 0 6px; +} +.select2-container--bootstrap .select2-selection--multiple .select2-search--inline .select2-search__field { + background: transparent; + padding: 0 12px; + height: 32px; + line-height: 1.428571429; + margin-top: 0; + min-width: 5em; +} +.select2-container--bootstrap .select2-selection--multiple .select2-selection__choice__remove { + color: #999; + cursor: pointer; + display: inline-block; + font-weight: bold; + margin-right: 3px; +} +.select2-container--bootstrap .select2-selection--multiple .select2-selection__choice__remove:hover { + color: #333; +} +.select2-container--bootstrap .select2-selection--multiple .select2-selection__clear { + margin-top: 6px; +} +.select2-container--bootstrap.input-sm, .select2-container--bootstrap.input-lg { + border-radius: 0; + font-size: 12px; + height: auto; + line-height: 1; + padding: 0; +} +.select2-container--bootstrap.input-sm .select2-selection--single, .input-group-sm .select2-container--bootstrap .select2-selection--single, .form-group-sm .select2-container--bootstrap .select2-selection--single { + border-radius: 3px; + font-size: 12px; + height: 30px; + line-height: 1.5; + padding: 5px 22px 5px 10px; + /* 2 */ +} +.select2-container--bootstrap.input-sm .select2-selection--single .select2-selection__arrow b, .input-group-sm .select2-container--bootstrap .select2-selection--single .select2-selection__arrow b, .form-group-sm .select2-container--bootstrap .select2-selection--single .select2-selection__arrow b { + margin-left: -5px; +} +.select2-container--bootstrap.input-sm .select2-selection--multiple, .input-group-sm .select2-container--bootstrap .select2-selection--multiple, .form-group-sm .select2-container--bootstrap .select2-selection--multiple { + min-height: 30px; +} +.select2-container--bootstrap.input-sm .select2-selection--multiple .select2-selection__choice, .input-group-sm .select2-container--bootstrap .select2-selection--multiple .select2-selection__choice, .form-group-sm .select2-container--bootstrap .select2-selection--multiple .select2-selection__choice { + font-size: 12px; + line-height: 1.5; + margin: 4px 0 0 5px; + padding: 0 5px; +} +.select2-container--bootstrap.input-sm .select2-selection--multiple .select2-search--inline .select2-search__field, .input-group-sm .select2-container--bootstrap .select2-selection--multiple .select2-search--inline .select2-search__field, .form-group-sm .select2-container--bootstrap .select2-selection--multiple .select2-search--inline .select2-search__field { + padding: 0 10px; + font-size: 12px; + height: 28px; + line-height: 1.5; +} +.select2-container--bootstrap.input-sm .select2-selection--multiple .select2-selection__clear, .input-group-sm .select2-container--bootstrap .select2-selection--multiple .select2-selection__clear, .form-group-sm .select2-container--bootstrap .select2-selection--multiple .select2-selection__clear { + margin-top: 5px; +} +.select2-container--bootstrap.input-lg .select2-selection--single, .input-group-lg .select2-container--bootstrap .select2-selection--single, .form-group-lg .select2-container--bootstrap .select2-selection--single { + border-radius: 6px; + font-size: 18px; + height: 46px; + line-height: 1.3333333; + padding: 10px 31px 10px 16px; + /* 1 */ +} +.select2-container--bootstrap.input-lg .select2-selection--single .select2-selection__arrow, .input-group-lg .select2-container--bootstrap .select2-selection--single .select2-selection__arrow, .form-group-lg .select2-container--bootstrap .select2-selection--single .select2-selection__arrow { + width: 5px; +} +.select2-container--bootstrap.input-lg .select2-selection--single .select2-selection__arrow b, .input-group-lg .select2-container--bootstrap .select2-selection--single .select2-selection__arrow b, .form-group-lg .select2-container--bootstrap .select2-selection--single .select2-selection__arrow b { + border-width: 5px 5px 0 5px; + margin-left: -5px; + margin-left: -10px; + margin-top: -2.5px; +} +.select2-container--bootstrap.input-lg .select2-selection--multiple, .input-group-lg .select2-container--bootstrap .select2-selection--multiple, .form-group-lg .select2-container--bootstrap .select2-selection--multiple { + min-height: 46px; +} +.select2-container--bootstrap.input-lg .select2-selection--multiple .select2-selection__choice, .input-group-lg .select2-container--bootstrap .select2-selection--multiple .select2-selection__choice, .form-group-lg .select2-container--bootstrap .select2-selection--multiple .select2-selection__choice { + font-size: 18px; + line-height: 1.3333333; + border-radius: 4px; + margin: 9px 0 0 8px; + padding: 0 10px; +} +.select2-container--bootstrap.input-lg .select2-selection--multiple .select2-search--inline .select2-search__field, .input-group-lg .select2-container--bootstrap .select2-selection--multiple .select2-search--inline .select2-search__field, .form-group-lg .select2-container--bootstrap .select2-selection--multiple .select2-search--inline .select2-search__field { + padding: 0 16px; + font-size: 18px; + height: 44px; + line-height: 1.3333333; +} +.select2-container--bootstrap.input-lg .select2-selection--multiple .select2-selection__clear, .input-group-lg .select2-container--bootstrap .select2-selection--multiple .select2-selection__clear, .form-group-lg .select2-container--bootstrap .select2-selection--multiple .select2-selection__clear { + margin-top: 10px; +} +.select2-container--bootstrap.input-lg.select2-container--open .select2-selection--single { + /** + * Make the dropdown arrow point up while the dropdown is visible. + */ +} +.select2-container--bootstrap.input-lg.select2-container--open .select2-selection--single .select2-selection__arrow b { + border-color: transparent transparent #999 transparent; + border-width: 0 5px 5px 5px; +} +.input-group-lg .select2-container--bootstrap.select2-container--open .select2-selection--single { + /** + * Make the dropdown arrow point up while the dropdown is visible. + */ +} +.input-group-lg .select2-container--bootstrap.select2-container--open .select2-selection--single .select2-selection__arrow b { + border-color: transparent transparent #999 transparent; + border-width: 0 5px 5px 5px; +} +.select2-container--bootstrap[dir="rtl"] { + /** + * Single Select2 + * + * 1. Makes sure that .select2-selection__placeholder is positioned + * correctly. + */ + /** + * Multiple Select2 + */ +} +.select2-container--bootstrap[dir="rtl"] .select2-selection--single { + padding-left: 24px; + padding-right: 12px; +} +.select2-container--bootstrap[dir="rtl"] .select2-selection--single .select2-selection__rendered { + padding-right: 0; + padding-left: 0; + text-align: right; + /* 1 */ +} +.select2-container--bootstrap[dir="rtl"] .select2-selection--single .select2-selection__clear { + float: left; +} +.select2-container--bootstrap[dir="rtl"] .select2-selection--single .select2-selection__arrow { + left: 12px; + right: auto; +} +.select2-container--bootstrap[dir="rtl"] .select2-selection--single .select2-selection__arrow b { + margin-left: 0; +} +.select2-container--bootstrap[dir="rtl"] .select2-selection--multiple .select2-selection__choice, +.select2-container--bootstrap[dir="rtl"] .select2-selection--multiple .select2-selection__placeholder { + float: right; +} +.select2-container--bootstrap[dir="rtl"] .select2-selection--multiple .select2-selection__choice { + margin-left: 0; + margin-right: 6px; +} +.select2-container--bootstrap[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove { + margin-left: 2px; + margin-right: auto; +} + +/*------------------------------------*\ + #ADDITIONAL GOODIES +\*------------------------------------*/ +/** + * Address Bootstrap's validation states + * + * If a Select2 widget parent has one of Bootstrap's validation state modifier + * classes, adjust Select2's border colors and focus states accordingly. + * You may apply said classes to the Select2 dropdown (body > .select2-container) + * via JavaScript match Bootstraps' to make its styles match. + * + * @see http://getbootstrap.com/css/#forms-control-validation + */ +.has-warning .select2-dropdown, +.has-warning .select2-selection { + border-color: #8a6d3b; +} +.has-warning .select2-container--focus .select2-selection, +.has-warning .select2-container--open .select2-selection { + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b; + border-color: #66512c; +} +.has-warning.select2-drop-active { + border-color: #66512c; +} +.has-warning.select2-drop-active.select2-drop.select2-drop-above { + border-top-color: #66512c; +} + +.has-error .select2-dropdown, +.has-error .select2-selection { + border-color: #a94442; +} +.has-error .select2-container--focus .select2-selection, +.has-error .select2-container--open .select2-selection { + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483; + border-color: #843534; +} +.has-error.select2-drop-active { + border-color: #843534; +} +.has-error.select2-drop-active.select2-drop.select2-drop-above { + border-top-color: #843534; +} + +.has-success .select2-dropdown, +.has-success .select2-selection { + border-color: #3c763d; +} +.has-success .select2-container--focus .select2-selection, +.has-success .select2-container--open .select2-selection { + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168; + border-color: #2b542c; +} +.has-success.select2-drop-active { + border-color: #2b542c; +} +.has-success.select2-drop-active.select2-drop.select2-drop-above { + border-top-color: #2b542c; +} + +/** + * Select2 widgets in Bootstrap Input Groups + * + * When Select2 widgets are combined with other elements using Bootstraps + * "Input Group" component, we don't want specific edges of the Select2 + * container to have a border-radius. + * + * Use .select2-bootstrap-prepend and .select2-bootstrap-append on + * a Bootstrap 3 .input-group to let the contained Select2 widget know which + * edges should not be rounded as they are directly followed by another element. + * + * @see http://getbootstrap.com/components/#input-groups + */ +/** + * Mimick Bootstraps .input-group .form-control styles. + * + * @see https://github.com/twbs/bootstrap/blob/master/less/input-groups.less + */ +.input-group .select2-container--bootstrap { + display: table; + table-layout: fixed; + position: relative; + z-index: 2; + float: left; + width: 100%; + margin-bottom: 0; +} + +.input-group.select2-bootstrap-prepend .select2-container--bootstrap .select2-selection { + border-bottom-left-radius: 0; + border-top-left-radius: 0; +} + +.input-group.select2-bootstrap-append .select2-container--bootstrap .select2-selection { + border-bottom-right-radius: 0; + border-top-right-radius: 0; +} + +/** + * Adjust alignment of Bootstrap buttons in Bootstrap Input Groups to address + * Multi Select2's height which - depending on how many elements have been selected - + * may grow taller than its initial size. + * + * @see http://getbootstrap.com/components/#input-groups + */ +.select2-bootstrap-append .select2-container--bootstrap, +.select2-bootstrap-append .input-group-btn, +.select2-bootstrap-append .input-group-btn .btn, +.select2-bootstrap-prepend .select2-container--bootstrap, +.select2-bootstrap-prepend .input-group-btn, +.select2-bootstrap-prepend .input-group-btn .btn { + vertical-align: top; +} + +/** + * Temporary fix for https://github.com/select2/select2-bootstrap-theme/issues/9 + * + * Provides `!important` for certain properties of the class applied to the + * original ` + + {% include select2-select.html %} + + +
+ +
+
+
+
+ + + + +
+
+
+ +

Select2 Bootstrap Theme

+ +

A Select2 v4 theme built with Bootstrap 3 variables and mixins.

+ + Demonstrations + + + +{% include footer.html %} + +{% include scripts.html %} + diff --git a/awx/ui/client/lib/select2-bootstrap-theme/docs/js/anchor.min.js b/awx/ui/client/lib/select2-bootstrap-theme/docs/js/anchor.min.js new file mode 100644 index 0000000000..68c3cb7073 --- /dev/null +++ b/awx/ui/client/lib/select2-bootstrap-theme/docs/js/anchor.min.js @@ -0,0 +1,6 @@ +/*! + * AnchorJS - v1.1.1 - 2015-05-23 + * https://github.com/bryanbraun/anchorjs + * Copyright (c) 2015 Bryan Braun; Licensed MIT + */ +function AnchorJS(A){"use strict";this.options=A||{},this._applyRemainingDefaultOptions=function(A){this.options.icon=this.options.hasOwnProperty("icon")?A.icon:"",this.options.visible=this.options.hasOwnProperty("visible")?A.visible:"hover",this.options.placement=this.options.hasOwnProperty("placement")?A.placement:"right",this.options.class=this.options.hasOwnProperty("class")?A.class:""},this._applyRemainingDefaultOptions(A),this.add=function(A){var e,t,o,n,i,s,a,l,c,r,h,g,B,Q;if(this._applyRemainingDefaultOptions(this.options),A){if("string"!=typeof A)throw new Error("The selector provided to AnchorJS was invalid.")}else A="h1, h2, h3, h4, h5, h6";if(e=document.querySelectorAll(A),0===e.length)return!1;for(this._addBaselineStyles(),t=document.querySelectorAll("[id]"),o=[].map.call(t,function(A){return A.id}),i=0;i',B=document.createElement("div"),B.innerHTML=g,Q=B.childNodes,"always"===this.options.visible&&(Q[0].style.opacity="1"),""===this.options.icon&&(Q[0].style.fontFamily="anchorjs-icons",Q[0].style.fontStyle="normal",Q[0].style.fontVariant="normal",Q[0].style.fontWeight="normal"),"left"===this.options.placement?(Q[0].style.position="absolute",Q[0].style.marginLeft="-1em",Q[0].style.paddingRight="0.5em",e[i].insertBefore(Q[0],e[i].firstChild)):(Q[0].style.paddingLeft="0.375em",e[i].appendChild(Q[0]))}return this},this.remove=function(A){for(var e,t=document.querySelectorAll(A),o=0;othis.$items.length-1||0>a?void 0:this.sliding?this.$element.one("slid.bs.carousel",function(){b.to(a)}):c==a?this.pause().cycle():this.slide(a>c?"next":"prev",this.$items.eq(a))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){return this.sliding?void 0:this.slide("next")},c.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},c.prototype.slide=function(b,d){var e=this.$element.find(".item.active"),f=d||this.getItemForDirection(b,e),g=this.interval,h="next"==b?"left":"right",i=this;if(f.hasClass("active"))return this.sliding=!1;var j=f[0],k=a.Event("slide.bs.carousel",{relatedTarget:j,direction:h});if(this.$element.trigger(k),!k.isDefaultPrevented()){if(this.sliding=!0,g&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var l=a(this.$indicators.children()[this.getItemIndex(f)]);l&&l.addClass("active")}var m=a.Event("slid.bs.carousel",{relatedTarget:j,direction:h});return a.support.transition&&this.$element.hasClass("slide")?(f.addClass(b),f[0].offsetWidth,e.addClass(h),f.addClass(h),e.one("bsTransitionEnd",function(){f.removeClass([b,h].join(" ")).addClass("active"),e.removeClass(["active",h].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger(m)},0)}).emulateTransitionEnd(c.TRANSITION_DURATION)):(e.removeClass("active"),f.addClass("active"),this.sliding=!1,this.$element.trigger(m)),g&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this};var e=function(c){var d,e=a(this),f=a(e.attr("data-target")||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""));if(f.hasClass("carousel")){var g=a.extend({},f.data(),e.data()),h=e.attr("data-slide-to");h&&(g.interval=!1),b.call(f,g),h&&f.data("bs.carousel").to(h),c.preventDefault()}};a(document).on("click.bs.carousel.data-api","[data-slide]",e).on("click.bs.carousel.data-api","[data-slide-to]",e),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){"use strict";function b(b){var c,d=b.attr("data-target")||(c=b.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"");return a(d)}function c(b){return this.each(function(){var c=a(this),e=c.data("bs.collapse"),f=a.extend({},d.DEFAULTS,c.data(),"object"==typeof b&&b);!e&&f.toggle&&/show|hide/.test(b)&&(f.toggle=!1),e||c.data("bs.collapse",e=new d(this,f)),"string"==typeof b&&e[b]()})}var d=function(b,c){this.$element=a(b),this.options=a.extend({},d.DEFAULTS,c),this.$trigger=a('[data-toggle="collapse"][href="#'+b.id+'"],[data-toggle="collapse"][data-target="#'+b.id+'"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};d.VERSION="3.3.5",d.TRANSITION_DURATION=350,d.DEFAULTS={toggle:!0},d.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},d.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b,e=this.$parent&&this.$parent.children(".panel").children(".in, .collapsing");if(!(e&&e.length&&(b=e.data("bs.collapse"),b&&b.transitioning))){var f=a.Event("show.bs.collapse");if(this.$element.trigger(f),!f.isDefaultPrevented()){e&&e.length&&(c.call(e,"hide"),b||e.data("bs.collapse",null));var g=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[g](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1;var h=function(){this.$element.removeClass("collapsing").addClass("collapse in")[g](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return h.call(this);var i=a.camelCase(["scroll",g].join("-"));this.$element.one("bsTransitionEnd",a.proxy(h,this)).emulateTransitionEnd(d.TRANSITION_DURATION)[g](this.$element[0][i])}}}},d.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded",!1),this.$trigger.addClass("collapsed").attr("aria-expanded",!1),this.transitioning=1;var e=function(){this.transitioning=0,this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")};return a.support.transition?void this.$element[c](0).one("bsTransitionEnd",a.proxy(e,this)).emulateTransitionEnd(d.TRANSITION_DURATION):e.call(this)}}},d.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},d.prototype.getParent=function(){return a(this.options.parent).find('[data-toggle="collapse"][data-parent="'+this.options.parent+'"]').each(a.proxy(function(c,d){var e=a(d);this.addAriaAndCollapsedClass(b(e),e)},this)).end()},d.prototype.addAriaAndCollapsedClass=function(a,b){var c=a.hasClass("in");a.attr("aria-expanded",c),b.toggleClass("collapsed",!c).attr("aria-expanded",c)};var e=a.fn.collapse;a.fn.collapse=c,a.fn.collapse.Constructor=d,a.fn.collapse.noConflict=function(){return a.fn.collapse=e,this},a(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(d){var e=a(this);e.attr("data-target")||d.preventDefault();var f=b(e),g=f.data("bs.collapse"),h=g?"toggle":e.data();c.call(f,h)})}(jQuery),+function(a){"use strict";function b(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}function c(c){c&&3===c.which||(a(e).remove(),a(f).each(function(){var d=a(this),e=b(d),f={relatedTarget:this};e.hasClass("open")&&(c&&"click"==c.type&&/input|textarea/i.test(c.target.tagName)&&a.contains(e[0],c.target)||(e.trigger(c=a.Event("hide.bs.dropdown",f)),c.isDefaultPrevented()||(d.attr("aria-expanded","false"),e.removeClass("open").trigger("hidden.bs.dropdown",f))))}))}function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new g(this)),"string"==typeof b&&d[b].call(c)})}var e=".dropdown-backdrop",f='[data-toggle="dropdown"]',g=function(b){a(b).on("click.bs.dropdown",this.toggle)};g.VERSION="3.3.5",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=b(e),g=f.hasClass("open");if(c(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a(document.createElement("div")).addClass("dropdown-backdrop").insertAfter(a(this)).on("click",c);var h={relatedTarget:this};if(f.trigger(d=a.Event("show.bs.dropdown",h)),d.isDefaultPrevented())return;e.trigger("focus").attr("aria-expanded","true"),f.toggleClass("open").trigger("shown.bs.dropdown",h)}return!1}},g.prototype.keydown=function(c){if(/(38|40|27|32)/.test(c.which)&&!/input|textarea/i.test(c.target.tagName)){var d=a(this);if(c.preventDefault(),c.stopPropagation(),!d.is(".disabled, :disabled")){var e=b(d),g=e.hasClass("open");if(!g&&27!=c.which||g&&27==c.which)return 27==c.which&&e.find(f).trigger("focus"),d.trigger("click");var h=" li:not(.disabled):visible a",i=e.find(".dropdown-menu"+h);if(i.length){var j=i.index(c.target);38==c.which&&j>0&&j--,40==c.which&&jdocument.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&a?this.scrollbarWidth:"",paddingRight:this.bodyIsOverflowing&&!a?this.scrollbarWidth:""})},c.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:"",paddingRight:""})},c.prototype.checkScrollbar=function(){var a=window.innerWidth;if(!a){var b=document.documentElement.getBoundingClientRect();a=b.right-Math.abs(b.left)}this.bodyIsOverflowing=document.body.clientWidth
',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0}},c.prototype.init=function(b,c,d){if(this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(a.isFunction(this.options.viewport)?this.options.viewport.call(this,this.$element):this.options.viewport.selector||this.options.viewport),this.inState={click:!1,hover:!1,focus:!1},this.$element[0]instanceof document.constructor&&!this.options.selector)throw new Error("`selector` option must be specified when initializing "+this.type+" on the window.document object!");for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focusin",i="hover"==g?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusin"==b.type?"focus":"hover"]=!0),c.tip().hasClass("in")||"in"==c.hoverState?void(c.hoverState="in"):(clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show())},c.prototype.isInStateTrue=function(){for(var a in this.inState)if(this.inState[a])return!0;return!1},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusout"==b.type?"focus":"hover"]=!1),c.isInStateTrue()?void 0:(clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide())},c.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);var d=a.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(b.isDefaultPrevented()||!d)return;var e=this,f=this.tip(),g=this.getUID(this.type);this.setContent(),f.attr("id",g),this.$element.attr("aria-describedby",g),this.options.animation&&f.addClass("fade");var h="function"==typeof this.options.placement?this.options.placement.call(this,f[0],this.$element[0]):this.options.placement,i=/\s?auto?\s?/i,j=i.test(h);j&&(h=h.replace(i,"")||"top"),f.detach().css({top:0,left:0,display:"block"}).addClass(h).data("bs."+this.type,this),this.options.container?f.appendTo(this.options.container):f.insertAfter(this.$element),this.$element.trigger("inserted.bs."+this.type);var k=this.getPosition(),l=f[0].offsetWidth,m=f[0].offsetHeight;if(j){var n=h,o=this.getPosition(this.$viewport);h="bottom"==h&&k.bottom+m>o.bottom?"top":"top"==h&&k.top-mo.width?"left":"left"==h&&k.left-lg.top+g.height&&(e.top=g.top+g.height-i)}else{var j=b.left-f,k=b.left+f+c;jg.right&&(e.left=g.left+g.width-k)}return e},c.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},c.prototype.getUID=function(a){do a+=~~(1e6*Math.random());while(document.getElementById(a));return a},c.prototype.tip=function(){if(!this.$tip&&(this.$tip=a(this.options.template),1!=this.$tip.length))throw new Error(this.type+" `template` option must consist of exactly 1 top-level element!");return this.$tip},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},c.prototype.enable=function(){this.enabled=!0},c.prototype.disable=function(){this.enabled=!1},c.prototype.toggleEnabled=function(){this.enabled=!this.enabled},c.prototype.toggle=function(b){var c=this;b&&(c=a(b.currentTarget).data("bs."+this.type),c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c))),b?(c.inState.click=!c.inState.click,c.isInStateTrue()?c.enter(c):c.leave(c)):c.tip().hasClass("in")?c.leave(c):c.enter(c)},c.prototype.destroy=function(){var a=this;clearTimeout(this.timeout),this.hide(function(){a.$element.off("."+a.type).removeData("bs."+a.type),a.$tip&&a.$tip.detach(),a.$tip=null,a.$arrow=null,a.$viewport=null})};var d=a.fn.tooltip;a.fn.tooltip=b,a.fn.tooltip.Constructor=c,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=d,this}}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof b&&b;(e||!/destroy|hide/.test(b))&&(e||d.data("bs.popover",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");c.VERSION="3.3.5",c.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:''}),c.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),c.prototype.constructor=c,c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content").children().detach().end()[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},c.prototype.hasContent=function(){return this.getTitle()||this.getContent()},c.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")};var d=a.fn.popover;a.fn.popover=b,a.fn.popover.Constructor=c,a.fn.popover.noConflict=function(){return a.fn.popover=d,this}}(jQuery),+function(a){"use strict";function b(c,d){this.$body=a(document.body),this.$scrollElement=a(a(c).is(document.body)?window:c),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",a.proxy(this.process,this)),this.refresh(),this.process()}function c(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})}b.VERSION="3.3.5",b.DEFAULTS={offset:10},b.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},b.prototype.refresh=function(){var b=this,c="offset",d=0;this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight(),a.isWindow(this.$scrollElement[0])||(c="position",d=this.$scrollElement.scrollTop()),this.$body.find(this.selector).map(function(){var b=a(this),e=b.data("target")||b.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[c]().top+d,e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){b.offsets.push(this[0]),b.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.getScrollHeight(),d=this.options.offset+c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(this.scrollHeight!=c&&this.refresh(),b>=d)return g!=(a=f[f.length-1])&&this.activate(a);if(g&&b=e[a]&&(void 0===e[a+1]||b .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!1),b.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded",!0),h?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu").length&&b.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!0),e&&e()}var g=d.find("> .active"),h=e&&a.support.transition&&(g.length&&g.hasClass("fade")||!!d.find("> .fade").length);g.length&&h?g.one("bsTransitionEnd",f).emulateTransitionEnd(c.TRANSITION_DURATION):f(),g.removeClass("in")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this};var e=function(c){c.preventDefault(),b.call(a(this),"show")};a(document).on("click.bs.tab.data-api",'[data-toggle="tab"]',e).on("click.bs.tab.data-api",'[data-toggle="pill"]',e)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof b&&b;e||d.data("bs.affix",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.options=a.extend({},c.DEFAULTS,d),this.$target=a(this.options.target).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(b),this.affixed=null,this.unpin=null,this.pinnedOffset=null,this.checkPosition()};c.VERSION="3.3.5",c.RESET="affix affix-top affix-bottom",c.DEFAULTS={offset:0,target:window},c.prototype.getState=function(a,b,c,d){var e=this.$target.scrollTop(),f=this.$element.offset(),g=this.$target.height();if(null!=c&&"top"==this.affixed)return c>e?"top":!1;if("bottom"==this.affixed)return null!=c?e+this.unpin<=f.top?!1:"bottom":a-d>=e+g?!1:"bottom";var h=null==this.affixed,i=h?e:f.top,j=h?g:b;return null!=c&&c>=e?"top":null!=d&&i+j>=a-d?"bottom":!1},c.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass("affix");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},c.prototype.checkPosition=function(){if(this.$element.is(":visible")){var b=this.$element.height(),d=this.options.offset,e=d.top,f=d.bottom,g=Math.max(a(document).height(),a(document.body).height());"object"!=typeof d&&(f=e=d),"function"==typeof e&&(e=d.top(this.$element)),"function"==typeof f&&(f=d.bottom(this.$element));var h=this.getState(g,b,e,f);if(this.affixed!=h){null!=this.unpin&&this.$element.css("top","");var i="affix"+(h?"-"+h:""),j=a.Event(i+".bs.affix");if(this.$element.trigger(j),j.isDefaultPrevented())return;this.affixed=h,this.unpin="bottom"==h?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(i).trigger(i.replace("affix","affixed")+".bs.affix")}"bottom"==h&&this.$element.offset({top:g-b-f})}};var d=a.fn.affix;a.fn.affix=b,a.fn.affix.Constructor=c,a.fn.affix.noConflict=function(){return a.fn.affix=d,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var c=a(this),d=c.data();d.offset=d.offset||{},null!=d.offsetBottom&&(d.offset.bottom=d.offsetBottom),null!=d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery); \ No newline at end of file diff --git a/awx/ui/client/lib/select2-bootstrap-theme/docs/js/respond.min.js b/awx/ui/client/lib/select2-bootstrap-theme/docs/js/respond.min.js new file mode 100755 index 0000000000..80a7b69dcc --- /dev/null +++ b/awx/ui/client/lib/select2-bootstrap-theme/docs/js/respond.min.js @@ -0,0 +1,5 @@ +/*! Respond.js v1.4.2: min/max-width media query polyfill * Copyright 2013 Scott Jehl + * Licensed under https://github.com/scottjehl/Respond/blob/master/LICENSE-MIT + * */ + +!function(a){"use strict";a.matchMedia=a.matchMedia||function(a){var b,c=a.documentElement,d=c.firstElementChild||c.firstChild,e=a.createElement("body"),f=a.createElement("div");return f.id="mq-test-1",f.style.cssText="position:absolute;top:-100em",e.style.background="none",e.appendChild(f),function(a){return f.innerHTML='­',c.insertBefore(e,d),b=42===f.offsetWidth,c.removeChild(e),{matches:b,media:a}}}(a.document)}(this),function(a){"use strict";function b(){u(!0)}var c={};a.respond=c,c.update=function(){};var d=[],e=function(){var b=!1;try{b=new a.XMLHttpRequest}catch(c){b=new a.ActiveXObject("Microsoft.XMLHTTP")}return function(){return b}}(),f=function(a,b){var c=e();c&&(c.open("GET",a,!0),c.onreadystatechange=function(){4!==c.readyState||200!==c.status&&304!==c.status||b(c.responseText)},4!==c.readyState&&c.send(null))};if(c.ajax=f,c.queue=d,c.regex={media:/@media[^\{]+\{([^\{\}]*\{[^\}\{]*\})+/gi,keyframes:/@(?:\-(?:o|moz|webkit)\-)?keyframes[^\{]+\{(?:[^\{\}]*\{[^\}\{]*\})+[^\}]*\}/gi,urls:/(url\()['"]?([^\/\)'"][^:\)'"]+)['"]?(\))/g,findStyles:/@media *([^\{]+)\{([\S\s]+?)$/,only:/(only\s+)?([a-zA-Z]+)\s?/,minw:/\([\s]*min\-width\s*:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/,maxw:/\([\s]*max\-width\s*:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/},c.mediaQueriesSupported=a.matchMedia&&null!==a.matchMedia("only all")&&a.matchMedia("only all").matches,!c.mediaQueriesSupported){var g,h,i,j=a.document,k=j.documentElement,l=[],m=[],n=[],o={},p=30,q=j.getElementsByTagName("head")[0]||k,r=j.getElementsByTagName("base")[0],s=q.getElementsByTagName("link"),t=function(){var a,b=j.createElement("div"),c=j.body,d=k.style.fontSize,e=c&&c.style.fontSize,f=!1;return b.style.cssText="position:absolute;font-size:1em;width:1em",c||(c=f=j.createElement("body"),c.style.background="none"),k.style.fontSize="100%",c.style.fontSize="100%",c.appendChild(b),f&&k.insertBefore(c,k.firstChild),a=b.offsetWidth,f?k.removeChild(c):c.removeChild(b),k.style.fontSize=d,e&&(c.style.fontSize=e),a=i=parseFloat(a)},u=function(b){var c="clientWidth",d=k[c],e="CSS1Compat"===j.compatMode&&d||j.body[c]||d,f={},o=s[s.length-1],r=(new Date).getTime();if(b&&g&&p>r-g)return a.clearTimeout(h),h=a.setTimeout(u,p),void 0;g=r;for(var v in l)if(l.hasOwnProperty(v)){var w=l[v],x=w.minw,y=w.maxw,z=null===x,A=null===y,B="em";x&&(x=parseFloat(x)*(x.indexOf(B)>-1?i||t():1)),y&&(y=parseFloat(y)*(y.indexOf(B)>-1?i||t():1)),w.hasquery&&(z&&A||!(z||e>=x)||!(A||y>=e))||(f[w.media]||(f[w.media]=[]),f[w.media].push(m[w.rules]))}for(var C in n)n.hasOwnProperty(C)&&n[C]&&n[C].parentNode===q&&q.removeChild(n[C]);n.length=0;for(var D in f)if(f.hasOwnProperty(D)){var E=j.createElement("style"),F=f[D].join("\n");E.type="text/css",E.media=D,q.insertBefore(E,o.nextSibling),E.styleSheet?E.styleSheet.cssText=F:E.appendChild(j.createTextNode(F)),n.push(E)}},v=function(a,b,d){var e=a.replace(c.regex.keyframes,"").match(c.regex.media),f=e&&e.length||0;b=b.substring(0,b.lastIndexOf("/"));var g=function(a){return a.replace(c.regex.urls,"$1"+b+"$2$3")},h=!f&&d;b.length&&(b+="/"),h&&(f=1);for(var i=0;f>i;i++){var j,k,n,o;h?(j=d,m.push(g(a))):(j=e[i].match(c.regex.findStyles)&&RegExp.$1,m.push(RegExp.$2&&g(RegExp.$2))),n=j.split(","),o=n.length;for(var p=0;o>p;p++)k=n[p],l.push({media:k.split("(")[0].match(c.regex.only)&&RegExp.$2||"all",rules:m.length-1,hasquery:k.indexOf("(")>-1,minw:k.match(c.regex.minw)&&parseFloat(RegExp.$1)+(RegExp.$2||""),maxw:k.match(c.regex.maxw)&&parseFloat(RegExp.$1)+(RegExp.$2||"")})}u()},w=function(){if(d.length){var b=d.shift();f(b.href,function(c){v(c,b.href,b.media),o[b.href]=!0,a.setTimeout(function(){w()},0)})}},x=function(){for(var b=0;b .select2-results__options { + max-height: 200px; + overflow-y: auto; + } + + + + + + /*------------------------------------*\ + #SINGLE SELECT2 + \*------------------------------------*/ + + .select2-selection--single { + height: @input-height-base; + line-height: @line-height-base; + padding: @padding-base-vertical @padding-base-horizontal + @caret-width-base*3 @padding-base-vertical @padding-base-horizontal; + + /** + * Adjust the single Select2's dropdown arrow button appearance. + */ + + .select2-selection__arrow { + position: absolute; + bottom: 0; + right: @padding-base-horizontal; + top: 0; + width: @caret-width-base; + + b { + border-color: @dropdown-arrow-color transparent transparent transparent; + border-style: solid; + border-width: @caret-width-base @caret-width-base 0 @caret-width-base; + height: 0; + left: 0; + margin-left: -@caret-width-base; + margin-top: -@caret-width-base/2; + position: absolute; + top: 50%; + width: 0; + } + } + + .select2-selection__rendered { + color: @input-color; + padding: 0; + } + + .select2-selection__placeholder { + color: @input-color-placeholder; + } + } + + + + + + /*------------------------------------*\ + #MULTIPLE SELECT2 + \*------------------------------------*/ + + .select2-selection--multiple { + min-height: @input-height-base; + + .select2-selection__rendered { + box-sizing: border-box; + display: block; + line-height: @line-height-base; + list-style: none; + margin: 0; + overflow: hidden; + padding: 0; + width: 100%; + text-overflow: ellipsis; + white-space: nowrap; + } + + .select2-selection__placeholder { + color: @input-color-placeholder; + float: left; + margin-top: 5px; + } + + /** + * Make Multi Select2's choices match Bootstrap 3's default button styles. + */ + + .select2-selection__choice { + color: @input-color; + background: @btn-default-bg; + border: 1px solid @btn-default-border; + border-radius: 4px; + cursor: default; + float: left; + margin: (@padding-base-vertical - 1) 0 0 @padding-base-horizontal/2; + padding: 0 @padding-base-vertical; + } + + /** + * Minus 2px borders. + */ + + .select2-search--inline { + .select2-search__field { + background: transparent; + padding: 0 @padding-base-horizontal; + height: @input-height-base - 2; + line-height: @line-height-base; + margin-top: 0; + min-width: 5em; + } + } + + .select2-selection__choice__remove { + color: #999; + cursor: pointer; + display: inline-block; + font-weight: bold; + margin-right: @padding-base-vertical / 2; + + &:hover { + color: #333; + } + } + + /** + * Clear the selection. + */ + + .select2-selection__clear { + margin-top: @padding-base-vertical; + } + } + + + + + + /** + * Address Bootstrap control sizing classes + * + * 1. Reset Bootstrap defaults. + * 2. Adjust the dropdown arrow button icon position. + * + * @see http://getbootstrap.com/css/#forms-control-sizes + */ + + /* 1 */ + &.input-sm, + &.input-lg { + border-radius: 0; + font-size: 12px; + height: auto; + line-height: 1; + padding: 0; + } + + &.input-sm, + .input-group-sm &, + .form-group-sm & { + .select2-selection--single { + border-radius: @border-radius-small; + font-size: @font-size-small; + height: @input-height-small; + line-height: @line-height-small; + padding: @padding-small-vertical @padding-small-horizontal + @caret-width-base*3 @padding-small-vertical @padding-small-horizontal; + + /* 2 */ + .select2-selection__arrow b { + margin-left: -@padding-small-vertical; + } + } + + .select2-selection--multiple { + min-height: @input-height-small; + + .select2-selection__choice { + font-size: @font-size-small; + line-height: @line-height-small; + margin: (@padding-small-vertical - 1) 0 0 @padding-small-horizontal/2; + padding: 0 @padding-small-vertical; + } + + .select2-search--inline .select2-search__field { + padding: 0 @padding-small-horizontal; + font-size: @font-size-small; + height: @input-height-small - 2; + line-height: @line-height-small; + } + + .select2-selection__clear { + margin-top: @padding-small-vertical; + } + } + } + + &.input-lg, + .input-group-lg &, + .form-group-lg & { + .select2-selection--single { + border-radius: @border-radius-large; + font-size: @font-size-large; + height: @input-height-large; + line-height: @line-height-large; + padding: @padding-large-vertical @padding-large-horizontal + @caret-width-large*3 @padding-large-vertical @padding-large-horizontal; + + /* 1 */ + .select2-selection__arrow { + width: @caret-width-large; + + b { + border-width: @caret-width-large @caret-width-large 0 @caret-width-large; + margin-left: -@caret-width-large; + margin-left: -@padding-large-vertical; + margin-top: -@caret-width-large/2; + } + } + } + + .select2-selection--multiple { + min-height: @input-height-large; + + .select2-selection__choice { + font-size: @font-size-large; + line-height: @line-height-large; + border-radius: 4px; + margin: (@padding-large-vertical - 1) 0 0 @padding-large-horizontal/2; + padding: 0 @padding-large-vertical; + } + + .select2-search--inline .select2-search__field { + padding: 0 @padding-large-horizontal; + font-size: @font-size-large; + height: @input-height-large - 2; + line-height: @line-height-large; + } + + .select2-selection__clear { + margin-top: @padding-large-vertical; + } + } + } + + &.input-lg.select2-container--open { + .dropdown-arrow; + } + + .input-group-lg & { + &.select2-container--open { + .dropdown-arrow; + } + } + + + + + + /*------------------------------------*\ + #RTL SUPPORT + \*------------------------------------*/ + + &[dir="rtl"] { + + /** + * Single Select2 + * + * 1. Makes sure that .select2-selection__placeholder is positioned + * correctly. + */ + + .select2-selection--single { + padding-left: @padding-base-horizontal + @caret-width-base*3; + padding-right: @padding-base-horizontal; + .select2-selection__rendered { + padding-right: 0; + padding-left: 0; + text-align: right; /* 1 */ + } + + .select2-selection__clear { + float: left; + } + + .select2-selection__arrow { + left: @padding-base-horizontal; + right: auto; + + b { + margin-left: 0; + } + } + } + + /** + * Multiple Select2 + */ + + .select2-selection--multiple { + .select2-selection__choice, + .select2-selection__placeholder { + float: right; + } + + .select2-selection__choice { + margin-left: 0; + margin-right: @padding-base-horizontal/2; + } + + .select2-selection__choice__remove { + margin-left: 2px; + margin-right: auto; + } + } + } +} + + + + + +/*------------------------------------*\ + #ADDITIONAL GOODIES +\*------------------------------------*/ + +/** + * Address Bootstrap's validation states + * + * If a Select2 widget parent has one of Bootstrap's validation state modifier + * classes, adjust Select2's border colors and focus states accordingly. + * You may apply said classes to the Select2 dropdown (body > .select2-container) + * via JavaScript match Bootstraps' to make its styles match. + * + * @see http://getbootstrap.com/css/#forms-control-validation + */ + +.has-warning { + .validation-state-focus(@state-warning-text); +} + +.has-error { + .validation-state-focus(@state-danger-text); +} + +.has-success { + .validation-state-focus(@state-success-text); +} + +/** + * Select2 widgets in Bootstrap Input Groups + * + * When Select2 widgets are combined with other elements using Bootstraps + * "Input Group" component, we don't want specific edges of the Select2 + * container to have a border-radius. + * + * Use .select2-bootstrap-prepend and .select2-bootstrap-append on + * a Bootstrap 3 .input-group to let the contained Select2 widget know which + * edges should not be rounded as they are directly followed by another element. + * + * @see http://getbootstrap.com/components/#input-groups + */ + +/** + * Mimick Bootstraps .input-group .form-control styles. + * + * @see https://github.com/twbs/bootstrap/blob/master/less/input-groups.less + */ + +.input-group .select2-container--bootstrap { + display: table; + table-layout: fixed; + position: relative; + z-index: 2; + float: left; + width: 100%; + margin-bottom: 0; +} + +.input-group.select2-bootstrap-prepend .select2-container--bootstrap { + .select2-selection { + .border-left-radius(0); + } +} + +.input-group.select2-bootstrap-append .select2-container--bootstrap { + .select2-selection { + .border-right-radius(0); + } +} + +/** + * Adjust alignment of Bootstrap buttons in Bootstrap Input Groups to address + * Multi Select2's height which - depending on how many elements have been selected - + * may grow taller than its initial size. + * + * @see http://getbootstrap.com/components/#input-groups + */ + +.select2-bootstrap-append, +.select2-bootstrap-prepend { + .select2-container--bootstrap, + .input-group-btn, + .input-group-btn .btn { + vertical-align: top; + } +} + +/** + * Temporary fix for https://github.com/select2/select2-bootstrap-theme/issues/9 + * + * Provides `!important` for certain properties of the class applied to the + * original `` element to hide it. + * + * @see https://github.com/select2/select2/pull/3301 + * @see https://github.com/fk/select2/commit/31830c7b32cb3d8e1b12d5b434dee40a6e753ada + */ + +.form-control.select2-hidden-accessible { + position: absolute !important; + width: 1px !important; +} + +/** + * Display override for inline forms +*/ + +.form-inline .select2-container--bootstrap { + display: inline-block; +} diff --git a/awx/ui/client/lib/select2-bootstrap-theme/tests/less_test.js b/awx/ui/client/lib/select2-bootstrap-theme/tests/less_test.js new file mode 100755 index 0000000000..1f9878b560 --- /dev/null +++ b/awx/ui/client/lib/select2-bootstrap-theme/tests/less_test.js @@ -0,0 +1,25 @@ +exports.compileLess = function(test){ + var grunt = require('grunt'), + fs = require('fs'), + jsdiff = require('diff'), + t = test, + filename = 'select2-bootstrap.css', + patchfile = 'tests/support/less.patch', + + child = grunt.util.spawn({ + cmd: 'lessc', + args: ['--verbose', 'src/build.less', 'tmp/'+filename] + }, function() { + var readFile = function(name) { return fs.readFileSync(name, {encoding: 'utf8'}) }, + orig = readFile('dist/'+filename), + generated = readFile('tmp/'+filename), + patch = readFile(patchfile), + diff = jsdiff.createPatch(filename, orig, generated); + + // Save the output for future tests. + // fs.writeFileSync(patchfile, diff); + + t.equal(patch, diff); + t.done(); + }); +}; diff --git a/awx/ui/client/lib/select2-bootstrap-theme/tests/scss_test.js b/awx/ui/client/lib/select2-bootstrap-theme/tests/scss_test.js new file mode 100755 index 0000000000..0fa5353f80 --- /dev/null +++ b/awx/ui/client/lib/select2-bootstrap-theme/tests/scss_test.js @@ -0,0 +1,25 @@ +exports.compileScss = function(test){ + var grunt = require('grunt'), + fs = require('fs'), + jsdiff = require('diff'), + t = test, + filename = 'select2-bootstrap.css', + patchfile = 'tests/support/scss.patch', + + child = grunt.util.spawn({ + cmd: 'grunt', + args: ['sass:test'] + }, function() { + var readFile = function(name) { return fs.readFileSync(name, {encoding: 'utf8'}) }, + orig = readFile('dist/'+filename), + generated = readFile('tmp/'+filename), + patch = readFile(patchfile), + diff = jsdiff.createPatch(filename, orig, generated); + + // Save the output for future tests. + // fs.writeFileSync(patchfile, diff); + + t.equal(patch, diff); + t.done(); + }); +}; diff --git a/awx/ui/client/lib/select2-bootstrap-theme/tests/support/less.patch b/awx/ui/client/lib/select2-bootstrap-theme/tests/support/less.patch new file mode 100755 index 0000000000..c8e69cb88b --- /dev/null +++ b/awx/ui/client/lib/select2-bootstrap-theme/tests/support/less.patch @@ -0,0 +1,610 @@ +Index: select2-bootstrap.css +=================================================================== +--- select2-bootstrap.css ++++ select2-bootstrap.css +@@ -1,65 +1,79 @@ + /*! Select2 Bootstrap Theme v0.1.0-beta.4 | MIT License | github.com/select2/select2-bootstrap-theme */ + .select2-container--bootstrap { + display: block; + /*------------------------------------*\ ++ #COMMON STYLES ++ \*------------------------------------*/ ++ +- #COMMON STYLES +- \*------------------------------------*/ + /** ++ * Search field in the Select2 dropdown. ++ */ ++ +- * Search field in the Select2 dropdown. +- */ + /** ++ * No outline for all search fields - in the dropdown ++ * and inline in multi Select2s. ++ */ ++ +- * No outline for all search fields - in the dropdown +- * and inline in multi Select2s. +- */ + /** ++ * Adjust Select2's choices hover and selected styles to match ++ * Bootstrap 3's default dropdown styles. ++ * ++ * @see http://getbootstrap.com/components/#dropdowns ++ */ ++ +- * Adjust Select2's choices hover and selected styles to match +- * Bootstrap 3's default dropdown styles. +- * +- * @see http://getbootstrap.com/components/#dropdowns +- */ + /** ++ * Clear the selection. ++ */ ++ +- * Clear the selection. +- */ + /** ++ * Address disabled Select2 styles. ++ * ++ * @see https://select2.github.io/examples.html#disabled ++ * @see http://getbootstrap.com/css/#forms-control-disabled ++ */ ++ +- * Address disabled Select2 styles. +- * +- * @see https://select2.github.io/examples.html#disabled +- * @see http://getbootstrap.com/css/#forms-control-disabled +- */ + /*------------------------------------*\ ++ #DROPDOWN ++ \*------------------------------------*/ ++ +- #DROPDOWN +- \*------------------------------------*/ + /** ++ * Dropdown border color and box-shadow. ++ */ ++ +- * Dropdown border color and box-shadow. +- */ + /** ++ * Limit the dropdown height. ++ */ ++ +- * Limit the dropdown height. +- */ + /*------------------------------------*\ ++ #SINGLE SELECT2 ++ \*------------------------------------*/ ++ +- #SINGLE SELECT2 +- \*------------------------------------*/ + /*------------------------------------*\ ++ #MULTIPLE SELECT2 ++ \*------------------------------------*/ ++ +- #MULTIPLE SELECT2 +- \*------------------------------------*/ + /** ++ * Address Bootstrap control sizing classes ++ * ++ * 1. Reset Bootstrap defaults. ++ * 2. Adjust the dropdown arrow button icon position. ++ * ++ * @see http://getbootstrap.com/css/#forms-control-sizes ++ */ ++ +- * Address Bootstrap control sizing classes +- * +- * 1. Reset Bootstrap defaults. +- * 2. Adjust the dropdown arrow button icon position. +- * +- * @see http://getbootstrap.com/css/#forms-control-sizes +- */ + /* 1 */ ++ + /*------------------------------------*\ ++ #RTL SUPPORT ++ \*------------------------------------*/ ++ +- #RTL SUPPORT +- \*------------------------------------*/ + } + .select2-container--bootstrap .select2-selection { + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); ++ background-color: #ffffff; ++ border: 1px solid #cccccc; +- background-color: #fff; +- border: 1px solid #ccc; + border-radius: 4px; + color: #555555; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; +@@ -67,49 +81,54 @@ + } + .select2-container--bootstrap .select2-search--dropdown .select2-search__field { + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); ++ background-color: #ffffff; ++ border: 1px solid #cccccc; +- background-color: #fff; +- border: 1px solid #ccc; + border-radius: 4px; + color: #555555; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + } + .select2-container--bootstrap .select2-search__field { + outline: 0; + /* Firefox 18- */ ++ + /** ++ * Firefox 19+ ++ * ++ * @see http://stackoverflow.com/questions/24236240/color-for-styled-placeholder-text-is-muted-in-firefox ++ */ ++ +- * Firefox 19+ +- * +- * @see http://stackoverflow.com/questions/24236240/color-for-styled-placeholder-text-is-muted-in-firefox +- */ + } + .select2-container--bootstrap .select2-search__field::-webkit-input-placeholder { ++ color: #999999; +- color: #999; + } + .select2-container--bootstrap .select2-search__field:-moz-placeholder { ++ color: #999999; +- color: #999; + } + .select2-container--bootstrap .select2-search__field::-moz-placeholder { ++ color: #999999; +- color: #999; + opacity: 1; + } + .select2-container--bootstrap .select2-search__field:-ms-input-placeholder { ++ color: #999999; +- color: #999; + } + .select2-container--bootstrap .select2-results__option { + /** ++ * Disabled results. ++ * ++ * @see https://select2.github.io/examples.html#disabled-results ++ */ ++ +- * Disabled results. +- * +- * @see https://select2.github.io/examples.html#disabled-results +- */ + /** ++ * Hover state. ++ */ ++ +- * Hover state. +- */ + /** ++ * Selected state. ++ */ ++ +- * Selected state. +- */ + } + .select2-container--bootstrap .select2-results__option[role=group] { + padding: 0; + } +@@ -122,9 +141,9 @@ + color: #262626; + } + .select2-container--bootstrap .select2-results__option--highlighted[aria-selected] { + background-color: #337ab7; ++ color: #ffffff; +- color: #fff; + } + .select2-container--bootstrap .select2-results__option .select2-results__option { + padding: 6px 12px; + } +@@ -158,9 +177,10 @@ + font-size: 12px; + line-height: 1.428571429; + white-space: nowrap; + } ++.select2-container--bootstrap.select2-container--focus .select2-selection, ++.select2-container--bootstrap.select2-container--open .select2-selection { +-.select2-container--bootstrap.select2-container--focus .select2-selection, .select2-container--bootstrap.select2-container--open .select2-selection { + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6); + -webkit-transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s; + -o-transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s; +@@ -168,16 +188,18 @@ + border-color: #66afe9; + } + .select2-container--bootstrap.select2-container--open { + /** ++ * Make the dropdown arrow point up while the dropdown is visible. ++ */ ++ +- * Make the dropdown arrow point up while the dropdown is visible. +- */ + /** ++ * Handle border radii of the container when the dropdown is showing. ++ */ ++ +- * Handle border radii of the container when the dropdown is showing. +- */ + } + .select2-container--bootstrap.select2-container--open .select2-selection .select2-selection__arrow b { ++ border-color: transparent transparent #999999 transparent; +- border-color: transparent transparent #999 transparent; + border-width: 0 4px 4px 4px; + } + .select2-container--bootstrap.select2-container--open.select2-container--below .select2-selection { + border-bottom-right-radius: 0; +@@ -189,9 +211,9 @@ + border-top-left-radius: 0; + border-top-color: transparent; + } + .select2-container--bootstrap .select2-selection__clear { ++ color: #999999; +- color: #999; + cursor: pointer; + float: right; + font-weight: bold; + margin-right: 10px; +@@ -199,9 +221,9 @@ + .select2-container--bootstrap .select2-selection__clear:hover { + color: #333; + } + .select2-container--bootstrap.select2-container--disabled .select2-selection { ++ border-color: #cccccc; +- border-color: #ccc; + -webkit-box-shadow: none; + box-shadow: none; + } + .select2-container--bootstrap.select2-container--disabled .select2-selection, +@@ -234,10 +256,11 @@ + height: 34px; + line-height: 1.428571429; + padding: 6px 24px 6px 12px; + /** ++ * Adjust the single Select2's dropdown arrow button appearance. ++ */ ++ +- * Adjust the single Select2's dropdown arrow button appearance. +- */ + } + .select2-container--bootstrap .select2-selection--single .select2-selection__arrow { + position: absolute; + bottom: 0; +@@ -245,9 +268,9 @@ + top: 0; + width: 4px; + } + .select2-container--bootstrap .select2-selection--single .select2-selection__arrow b { ++ border-color: #999999 transparent transparent transparent; +- border-color: #999 transparent transparent transparent; + border-style: solid; + border-width: 4px 4px 0 4px; + height: 0; + left: 0; +@@ -261,21 +284,24 @@ + color: #555555; + padding: 0; + } + .select2-container--bootstrap .select2-selection--single .select2-selection__placeholder { ++ color: #999999; +- color: #999; + } + .select2-container--bootstrap .select2-selection--multiple { + min-height: 34px; + /** ++ * Make Multi Select2's choices match Bootstrap 3's default button styles. ++ */ ++ +- * Make Multi Select2's choices match Bootstrap 3's default button styles. +- */ + /** ++ * Minus 2px borders. ++ */ ++ +- * Minus 2px borders. +- */ + /** ++ * Clear the selection. ++ */ ++ +- * Clear the selection. +- */ + } + .select2-container--bootstrap .select2-selection--multiple .select2-selection__rendered { + box-sizing: border-box; + display: block; +@@ -288,16 +314,16 @@ + text-overflow: ellipsis; + white-space: nowrap; + } + .select2-container--bootstrap .select2-selection--multiple .select2-selection__placeholder { ++ color: #999999; +- color: #999; + float: left; + margin-top: 5px; + } + .select2-container--bootstrap .select2-selection--multiple .select2-selection__choice { + color: #555555; ++ background: #ffffff; ++ border: 1px solid #cccccc; +- background: #fff; +- border: 1px solid #ccc; + border-radius: 4px; + cursor: default; + float: left; + margin: 5px 0 0 6px; +@@ -323,108 +349,141 @@ + } + .select2-container--bootstrap .select2-selection--multiple .select2-selection__clear { + margin-top: 6px; + } ++.select2-container--bootstrap.input-sm, ++.select2-container--bootstrap.input-lg { +-.select2-container--bootstrap.input-sm, .select2-container--bootstrap.input-lg { + border-radius: 0; + font-size: 12px; + height: auto; + line-height: 1; + padding: 0; + } ++.select2-container--bootstrap.input-sm .select2-selection--single, ++.input-group-sm .select2-container--bootstrap .select2-selection--single, ++.form-group-sm .select2-container--bootstrap .select2-selection--single { +-.select2-container--bootstrap.input-sm .select2-selection--single, .input-group-sm .select2-container--bootstrap .select2-selection--single, .form-group-sm .select2-container--bootstrap .select2-selection--single { + border-radius: 3px; + font-size: 12px; + height: 30px; + line-height: 1.5; + padding: 5px 22px 5px 10px; + /* 2 */ ++ + } ++.select2-container--bootstrap.input-sm .select2-selection--single .select2-selection__arrow b, ++.input-group-sm .select2-container--bootstrap .select2-selection--single .select2-selection__arrow b, ++.form-group-sm .select2-container--bootstrap .select2-selection--single .select2-selection__arrow b { +-.select2-container--bootstrap.input-sm .select2-selection--single .select2-selection__arrow b, .input-group-sm .select2-container--bootstrap .select2-selection--single .select2-selection__arrow b, .form-group-sm .select2-container--bootstrap .select2-selection--single .select2-selection__arrow b { + margin-left: -5px; + } ++.select2-container--bootstrap.input-sm .select2-selection--multiple, ++.input-group-sm .select2-container--bootstrap .select2-selection--multiple, ++.form-group-sm .select2-container--bootstrap .select2-selection--multiple { +-.select2-container--bootstrap.input-sm .select2-selection--multiple, .input-group-sm .select2-container--bootstrap .select2-selection--multiple, .form-group-sm .select2-container--bootstrap .select2-selection--multiple { + min-height: 30px; + } ++.select2-container--bootstrap.input-sm .select2-selection--multiple .select2-selection__choice, ++.input-group-sm .select2-container--bootstrap .select2-selection--multiple .select2-selection__choice, ++.form-group-sm .select2-container--bootstrap .select2-selection--multiple .select2-selection__choice { +-.select2-container--bootstrap.input-sm .select2-selection--multiple .select2-selection__choice, .input-group-sm .select2-container--bootstrap .select2-selection--multiple .select2-selection__choice, .form-group-sm .select2-container--bootstrap .select2-selection--multiple .select2-selection__choice { + font-size: 12px; + line-height: 1.5; + margin: 4px 0 0 5px; + padding: 0 5px; + } ++.select2-container--bootstrap.input-sm .select2-selection--multiple .select2-search--inline .select2-search__field, ++.input-group-sm .select2-container--bootstrap .select2-selection--multiple .select2-search--inline .select2-search__field, ++.form-group-sm .select2-container--bootstrap .select2-selection--multiple .select2-search--inline .select2-search__field { +-.select2-container--bootstrap.input-sm .select2-selection--multiple .select2-search--inline .select2-search__field, .input-group-sm .select2-container--bootstrap .select2-selection--multiple .select2-search--inline .select2-search__field, .form-group-sm .select2-container--bootstrap .select2-selection--multiple .select2-search--inline .select2-search__field { + padding: 0 10px; + font-size: 12px; + height: 28px; + line-height: 1.5; + } ++.select2-container--bootstrap.input-sm .select2-selection--multiple .select2-selection__clear, ++.input-group-sm .select2-container--bootstrap .select2-selection--multiple .select2-selection__clear, ++.form-group-sm .select2-container--bootstrap .select2-selection--multiple .select2-selection__clear { +-.select2-container--bootstrap.input-sm .select2-selection--multiple .select2-selection__clear, .input-group-sm .select2-container--bootstrap .select2-selection--multiple .select2-selection__clear, .form-group-sm .select2-container--bootstrap .select2-selection--multiple .select2-selection__clear { + margin-top: 5px; + } ++.select2-container--bootstrap.input-lg .select2-selection--single, ++.input-group-lg .select2-container--bootstrap .select2-selection--single, ++.form-group-lg .select2-container--bootstrap .select2-selection--single { +-.select2-container--bootstrap.input-lg .select2-selection--single, .input-group-lg .select2-container--bootstrap .select2-selection--single, .form-group-lg .select2-container--bootstrap .select2-selection--single { + border-radius: 6px; + font-size: 18px; + height: 46px; + line-height: 1.3333333; + padding: 10px 31px 10px 16px; + /* 1 */ ++ + } ++.select2-container--bootstrap.input-lg .select2-selection--single .select2-selection__arrow, ++.input-group-lg .select2-container--bootstrap .select2-selection--single .select2-selection__arrow, ++.form-group-lg .select2-container--bootstrap .select2-selection--single .select2-selection__arrow { +-.select2-container--bootstrap.input-lg .select2-selection--single .select2-selection__arrow, .input-group-lg .select2-container--bootstrap .select2-selection--single .select2-selection__arrow, .form-group-lg .select2-container--bootstrap .select2-selection--single .select2-selection__arrow { + width: 5px; + } ++.select2-container--bootstrap.input-lg .select2-selection--single .select2-selection__arrow b, ++.input-group-lg .select2-container--bootstrap .select2-selection--single .select2-selection__arrow b, ++.form-group-lg .select2-container--bootstrap .select2-selection--single .select2-selection__arrow b { +-.select2-container--bootstrap.input-lg .select2-selection--single .select2-selection__arrow b, .input-group-lg .select2-container--bootstrap .select2-selection--single .select2-selection__arrow b, .form-group-lg .select2-container--bootstrap .select2-selection--single .select2-selection__arrow b { + border-width: 5px 5px 0 5px; + margin-left: -5px; + margin-left: -10px; + margin-top: -2.5px; + } ++.select2-container--bootstrap.input-lg .select2-selection--multiple, ++.input-group-lg .select2-container--bootstrap .select2-selection--multiple, ++.form-group-lg .select2-container--bootstrap .select2-selection--multiple { +-.select2-container--bootstrap.input-lg .select2-selection--multiple, .input-group-lg .select2-container--bootstrap .select2-selection--multiple, .form-group-lg .select2-container--bootstrap .select2-selection--multiple { + min-height: 46px; + } ++.select2-container--bootstrap.input-lg .select2-selection--multiple .select2-selection__choice, ++.input-group-lg .select2-container--bootstrap .select2-selection--multiple .select2-selection__choice, ++.form-group-lg .select2-container--bootstrap .select2-selection--multiple .select2-selection__choice { +-.select2-container--bootstrap.input-lg .select2-selection--multiple .select2-selection__choice, .input-group-lg .select2-container--bootstrap .select2-selection--multiple .select2-selection__choice, .form-group-lg .select2-container--bootstrap .select2-selection--multiple .select2-selection__choice { + font-size: 18px; + line-height: 1.3333333; + border-radius: 4px; + margin: 9px 0 0 8px; + padding: 0 10px; + } ++.select2-container--bootstrap.input-lg .select2-selection--multiple .select2-search--inline .select2-search__field, ++.input-group-lg .select2-container--bootstrap .select2-selection--multiple .select2-search--inline .select2-search__field, ++.form-group-lg .select2-container--bootstrap .select2-selection--multiple .select2-search--inline .select2-search__field { +-.select2-container--bootstrap.input-lg .select2-selection--multiple .select2-search--inline .select2-search__field, .input-group-lg .select2-container--bootstrap .select2-selection--multiple .select2-search--inline .select2-search__field, .form-group-lg .select2-container--bootstrap .select2-selection--multiple .select2-search--inline .select2-search__field { + padding: 0 16px; + font-size: 18px; + height: 44px; + line-height: 1.3333333; + } ++.select2-container--bootstrap.input-lg .select2-selection--multiple .select2-selection__clear, ++.input-group-lg .select2-container--bootstrap .select2-selection--multiple .select2-selection__clear, ++.form-group-lg .select2-container--bootstrap .select2-selection--multiple .select2-selection__clear { +-.select2-container--bootstrap.input-lg .select2-selection--multiple .select2-selection__clear, .input-group-lg .select2-container--bootstrap .select2-selection--multiple .select2-selection__clear, .form-group-lg .select2-container--bootstrap .select2-selection--multiple .select2-selection__clear { + margin-top: 10px; + } + .select2-container--bootstrap.input-lg.select2-container--open .select2-selection--single { + /** ++ * Make the dropdown arrow point up while the dropdown is visible. ++ */ ++ +- * Make the dropdown arrow point up while the dropdown is visible. +- */ + } + .select2-container--bootstrap.input-lg.select2-container--open .select2-selection--single .select2-selection__arrow b { ++ border-color: transparent transparent #999999 transparent; +- border-color: transparent transparent #999 transparent; + border-width: 0 5px 5px 5px; + } + .input-group-lg .select2-container--bootstrap.select2-container--open .select2-selection--single { + /** ++ * Make the dropdown arrow point up while the dropdown is visible. ++ */ ++ +- * Make the dropdown arrow point up while the dropdown is visible. +- */ + } + .input-group-lg .select2-container--bootstrap.select2-container--open .select2-selection--single .select2-selection__arrow b { ++ border-color: transparent transparent #999999 transparent; +- border-color: transparent transparent #999 transparent; + border-width: 0 5px 5px 5px; + } + .select2-container--bootstrap[dir="rtl"] { + /** ++ * Single Select2 ++ * ++ * 1. Makes sure that .select2-selection__placeholder is positioned ++ * correctly. ++ */ ++ +- * Single Select2 +- * +- * 1. Makes sure that .select2-selection__placeholder is positioned +- * correctly. +- */ + /** ++ * Multiple Select2 ++ */ ++ +- * Multiple Select2 +- */ + } + .select2-container--bootstrap[dir="rtl"] .select2-selection--single { + padding-left: 24px; + padding-right: 12px; +@@ -433,8 +492,9 @@ + padding-right: 0; + padding-left: 0; + text-align: right; + /* 1 */ ++ + } + .select2-container--bootstrap[dir="rtl"] .select2-selection--single .select2-selection__clear { + float: left; + } +@@ -456,9 +516,8 @@ + .select2-container--bootstrap[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove { + margin-left: 2px; + margin-right: auto; + } +- + /*------------------------------------*\ + #ADDITIONAL GOODIES + \*------------------------------------*/ + /** +@@ -486,9 +545,8 @@ + } + .has-warning.select2-drop-active.select2-drop.select2-drop-above { + border-top-color: #66512c; + } +- + .has-error .select2-dropdown, + .has-error .select2-selection { + border-color: #a94442; + } +@@ -503,9 +561,8 @@ + } + .has-error.select2-drop-active.select2-drop.select2-drop-above { + border-top-color: #843534; + } +- + .has-success .select2-dropdown, + .has-success .select2-selection { + border-color: #3c763d; + } +@@ -520,9 +577,8 @@ + } + .has-success.select2-drop-active.select2-drop.select2-drop-above { + border-top-color: #2b542c; + } +- + /** + * Select2 widgets in Bootstrap Input Groups + * + * When Select2 widgets are combined with other elements using Bootstraps +@@ -548,35 +604,31 @@ + float: left; + width: 100%; + margin-bottom: 0; + } +- + .input-group.select2-bootstrap-prepend .select2-container--bootstrap .select2-selection { + border-bottom-left-radius: 0; + border-top-left-radius: 0; + } +- + .input-group.select2-bootstrap-append .select2-container--bootstrap .select2-selection { + border-bottom-right-radius: 0; + border-top-right-radius: 0; + } +- + /** + * Adjust alignment of Bootstrap buttons in Bootstrap Input Groups to address + * Multi Select2's height which - depending on how many elements have been selected - + * may grow taller than its initial size. + * + * @see http://getbootstrap.com/components/#input-groups + */ + .select2-bootstrap-append .select2-container--bootstrap, ++.select2-bootstrap-prepend .select2-container--bootstrap, + .select2-bootstrap-append .input-group-btn, ++.select2-bootstrap-prepend .input-group-btn, + .select2-bootstrap-append .input-group-btn .btn, +-.select2-bootstrap-prepend .select2-container--bootstrap, +-.select2-bootstrap-prepend .input-group-btn, + .select2-bootstrap-prepend .input-group-btn .btn { + vertical-align: top; + } +- + /** + * Temporary fix for https://github.com/select2/select2-bootstrap-theme/issues/9 + * + * Provides `!important` for certain properties of the class applied to the +@@ -588,9 +640,8 @@ + .form-control.select2-hidden-accessible { + position: absolute !important; + width: 1px !important; + } +- + /** + * Display override for inline forms + */ + .form-inline .select2-container--bootstrap { diff --git a/awx/ui/client/lib/select2-bootstrap-theme/tests/support/scss.patch b/awx/ui/client/lib/select2-bootstrap-theme/tests/support/scss.patch new file mode 100755 index 0000000000..4b2016d8c6 --- /dev/null +++ b/awx/ui/client/lib/select2-bootstrap-theme/tests/support/scss.patch @@ -0,0 +1,4 @@ +Index: select2-bootstrap.css +=================================================================== +--- select2-bootstrap.css ++++ select2-bootstrap.css diff --git a/awx/ui/client/lib/select2/.bower.json b/awx/ui/client/lib/select2/.bower.json index 2d047dc94a..3c88b4f0e4 100644 --- a/awx/ui/client/lib/select2/.bower.json +++ b/awx/ui/client/lib/select2/.bower.json @@ -10,12 +10,12 @@ "url": "git@github.com:select2/select2.git" }, "homepage": "https://github.com/ivaynberg/select2", - "version": "4.0.0-rc.2", - "_release": "4.0.0-rc.2", + "version": "4.0.0", + "_release": "4.0.0", "_resolution": { "type": "version", - "tag": "4.0.0-rc.2", - "commit": "69e2d73c42ae261b924a052e45d9b6f6dbc60fc6" + "tag": "4.0.0", + "commit": "80eb44bec78568b152dc5547269c164cb7b5363c" }, "_source": "git://github.com/ivaynberg/select2.git", "_target": "~4.0.0", diff --git a/awx/ui/client/lib/select2/Gruntfile.js b/awx/ui/client/lib/select2/Gruntfile.js index 840059b4d2..b14a9863c9 100644 --- a/awx/ui/client/lib/select2/Gruntfile.js +++ b/awx/ui/client/lib/select2/Gruntfile.js @@ -2,16 +2,20 @@ module.exports = function (grunt) { // Full list of files that must be included by RequireJS includes = [ 'jquery.select2', - 'almond' + 'almond', + + 'jquery.mousewheel' // shimmed for non-full builds ]; fullIncludes = [ 'jquery', - 'jquery.mousewheel', - 'select2/compat/matcher', + 'select2/compat/containerCss', + 'select2/compat/dropdownCss', + 'select2/compat/initSelection', 'select2/compat/inputData', + 'select2/compat/matcher', 'select2/compat/query', 'select2/dropdown/attachContainer', @@ -251,7 +255,8 @@ module.exports = function (grunt) { namespace: 'S2', paths: { almond: '../../vendor/almond-0.2.9', - jquery: 'jquery.shim' + jquery: 'jquery.shim', + 'jquery.mousewheel': 'jquery.mousewheel.shim' }, wrap: { startFile: 'src/js/banner.start.js', diff --git a/awx/ui/client/lib/select2/LICENSE b/awx/ui/client/lib/select2/LICENSE deleted file mode 100644 index 0247cc7627..0000000000 --- a/awx/ui/client/lib/select2/LICENSE +++ /dev/null @@ -1,18 +0,0 @@ -Copyright 2014 Igor Vaynberg - -Version: @@ver@@ Timestamp: @@timestamp@@ - -This software is licensed under the Apache License, Version 2.0 (the "Apache License") or the GNU -General Public License version 2 (the "GPL License"). You may choose either license to govern your -use of this software only upon the condition that you accept all of the terms of either the Apache -License or the GPL License. - -You may obtain a copy of the Apache License and the GPL License at: - -http://www.apache.org/licenses/LICENSE-2.0 -http://www.gnu.org/licenses/gpl-2.0.html - -Unless required by applicable law or agreed to in writing, software distributed under the Apache License -or the GPL Licesnse is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, -either express or implied. See the Apache License and the GPL License for the specific language governing -permissions and limitations under the Apache License and the GPL License. diff --git a/awx/ui/client/lib/select2/component.json b/awx/ui/client/lib/select2/component.json index a7484b0d5a..43538e914a 100644 --- a/awx/ui/client/lib/select2/component.json +++ b/awx/ui/client/lib/select2/component.json @@ -2,7 +2,7 @@ "name": "select2", "repo": "select/select2", "description": "Select2 is a jQuery based replacement for select boxes. It supports searching, remote data sets, and infinite scrolling of results.", - "version": "4.0.0-rc.2", + "version": "4.0.0", "demo": "https://select2.github.io/", "keywords": [ "jquery" diff --git a/awx/ui/client/lib/select2/dist/css/select2.css b/awx/ui/client/lib/select2/dist/css/select2.css index c69b7273bf..d365213c7b 100644 --- a/awx/ui/client/lib/select2/dist/css/select2.css +++ b/awx/ui/client/lib/select2/dist/css/select2.css @@ -112,6 +112,16 @@ background-color: #fff; filter: alpha(opacity=0); } +.select2-hidden-accessible { + border: 0; + clip: rect(0 0 0 0); + height: 1px; + margin: -1px; + overflow: hidden; + padding: 0; + position: absolute; + width: 1px; } + .select2-container--default .select2-selection--single { background-color: #fff; border: 1px solid #aaa; diff --git a/awx/ui/client/lib/select2/dist/css/select2.min.css b/awx/ui/client/lib/select2/dist/css/select2.min.css index 4d0256efeb..1c7234426a 100644 --- a/awx/ui/client/lib/select2/dist/css/select2.min.css +++ b/awx/ui/client/lib/select2/dist/css/select2.min.css @@ -1 +1 @@ -.select2-container{box-sizing:border-box;display:inline-block;margin:0;position:relative;vertical-align:middle;}.select2-container .select2-selection--single{box-sizing:border-box;cursor:pointer;display:block;height:28px;user-select:none;-webkit-user-select:none;}.select2-container .select2-selection--single .select2-selection__rendered{display:block;padding-left:8px;padding-right:20px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.select2-container[dir="rtl"] .select2-selection--single .select2-selection__rendered{padding-right:8px;padding-left:20px;}.select2-container .select2-selection--multiple{box-sizing:border-box;cursor:pointer;display:block;min-height:32px;user-select:none;-webkit-user-select:none;}.select2-container .select2-selection--multiple .select2-selection__rendered{display:inline-block;overflow:hidden;padding-left:8px;text-overflow:ellipsis;white-space:nowrap;}.select2-container .select2-search--inline{float:left;}.select2-container .select2-search--inline .select2-search__field{box-sizing:border-box;border:none;font-size:100%;margin-top:5px;}.select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none;}.select2-dropdown{background-color:white;border:1px solid #aaa;border-radius:4px;box-sizing:border-box;display:block;position:absolute;left:-100000px;width:100%;z-index:1051;}.select2-results{display:block;}.select2-results__options{list-style:none;margin:0;padding:0;}.select2-results__option{padding:6px;user-select:none;-webkit-user-select:none;}.select2-results__option[aria-selected]{cursor:pointer;}.select2-container--open .select2-dropdown{left:0;}.select2-container--open .select2-dropdown--above{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0;}.select2-container--open .select2-dropdown--below{border-top:none;border-top-left-radius:0;border-top-right-radius:0;}.select2-search--dropdown{display:block;padding:4px;}.select2-search--dropdown .select2-search__field{padding:4px;width:100%;box-sizing:border-box;}.select2-search--dropdown .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none;}.select2-search--dropdown.select2-search--hide{display:none;}.select2-close-mask{border:0;margin:0;padding:0;display:block;position:fixed;left:0;top:0;min-height:100%;min-width:100%;height:auto;width:auto;opacity:0;z-index:99;background-color:#fff;filter:alpha(opacity=0);}.select2-container--default .select2-selection--single{background-color:#fff;border:1px solid #aaa;border-radius:4px;}.select2-container--default .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px;}.select2-container--default .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:bold;}.select2-container--default .select2-selection--single .select2-selection__placeholder{color:#999;}.select2-container--default .select2-selection--single .select2-selection__arrow{height:26px;position:absolute;top:1px;right:1px;width:20px;}.select2-container--default .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0;}.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__clear{float:left;}.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__arrow{left:1px;right:auto;}.select2-container--default.select2-container--disabled .select2-selection--single{background-color:#eee;cursor:default;}.select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear{display:none;}.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px;}.select2-container--default .select2-selection--multiple{background-color:white;border:1px solid #aaa;border-radius:4px;cursor:text;}.select2-container--default .select2-selection--multiple .select2-selection__rendered{box-sizing:border-box;list-style:none;margin:0;padding:0 5px;width:100%;}.select2-container--default .select2-selection--multiple .select2-selection__placeholder{color:#999;margin-top:5px;float:left;}.select2-container--default .select2-selection--multiple .select2-selection__clear{cursor:pointer;float:right;font-weight:bold;margin-top:5px;margin-right:10px;}.select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px;}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:#999;cursor:pointer;display:inline-block;font-weight:bold;margin-right:2px;}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#333;}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice,.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__placeholder{float:right;}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice{margin-left:5px;margin-right:auto;}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto;}.select2-container--default.select2-container--focus .select2-selection--multiple{border:solid black 1px;outline:0;}.select2-container--default.select2-container--disabled .select2-selection--multiple{background-color:#eee;cursor:default;}.select2-container--default.select2-container--disabled .select2-selection__choice__remove{display:none;}.select2-container--default.select2-container--open.select2-container--above .select2-selection--single,.select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple{border-top-left-radius:0;border-top-right-radius:0;}.select2-container--default.select2-container--open.select2-container--below .select2-selection--single,.select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom-left-radius:0;border-bottom-right-radius:0;}.select2-container--default .select2-search--dropdown .select2-search__field{border:1px solid #aaa;}.select2-container--default .select2-search--inline .select2-search__field{background:transparent;border:none;outline:0;}.select2-container--default .select2-results>.select2-results__options{max-height:200px;overflow-y:auto;}.select2-container--default .select2-results__option[role=group]{padding:0;}.select2-container--default .select2-results__option[aria-disabled=true]{color:#999;}.select2-container--default .select2-results__option[aria-selected=true]{background-color:#ddd;}.select2-container--default .select2-results__option .select2-results__option{padding-left:1em;}.select2-container--default .select2-results__option .select2-results__option .select2-results__group{padding-left:0;}.select2-container--default .select2-results__option .select2-results__option .select2-results__option{margin-left:-1em;padding-left:2em;}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-2em;padding-left:3em;}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-3em;padding-left:4em;}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-4em;padding-left:5em;}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-5em;padding-left:6em;}.select2-container--default .select2-results__option--highlighted[aria-selected]{background-color:#5897fb;color:white;}.select2-container--default .select2-results__group{cursor:default;display:block;padding:6px;}.select2-container--classic .select2-selection--single{background-color:#f6f6f6;border:1px solid #aaa;border-radius:4px;outline:0;background-image:-webkit-linear-gradient(top, #ffffff 50%, #eeeeee 100%);background-image:-o-linear-gradient(top, #ffffff 50%, #eeeeee 100%);background-image:linear-gradient(to bottom, #ffffff 50%, #eeeeee 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#eeeeee', GradientType=0);}.select2-container--classic .select2-selection--single:focus{border:1px solid #5897fb;}.select2-container--classic .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px;}.select2-container--classic .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:bold;margin-right:10px;}.select2-container--classic .select2-selection--single .select2-selection__placeholder{color:#999;}.select2-container--classic .select2-selection--single .select2-selection__arrow{background-color:#ddd;border:none;border-left:1px solid #aaa;border-top-right-radius:4px;border-bottom-right-radius:4px;height:26px;position:absolute;top:1px;right:1px;width:20px;background-image:-webkit-linear-gradient(top, #eeeeee 50%, #cccccc 100%);background-image:-o-linear-gradient(top, #eeeeee 50%, #cccccc 100%);background-image:linear-gradient(to bottom, #eeeeee 50%, #cccccc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#cccccc', GradientType=0);}.select2-container--classic .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0;}.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__clear{float:left;}.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__arrow{border:none;border-right:1px solid #aaa;border-radius:0;border-top-left-radius:4px;border-bottom-left-radius:4px;left:1px;right:auto;}.select2-container--classic.select2-container--open .select2-selection--single{border:1px solid #5897fb;}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow{background:transparent;border:none;}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px;}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--single{border-top:none;border-top-left-radius:0;border-top-right-radius:0;background-image:-webkit-linear-gradient(top, #ffffff 0%, #eeeeee 50%);background-image:-o-linear-gradient(top, #ffffff 0%, #eeeeee 50%);background-image:linear-gradient(to bottom, #ffffff 0%, #eeeeee 50%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#eeeeee', GradientType=0);}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--single{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0;background-image:-webkit-linear-gradient(top, #eeeeee 50%, #ffffff 100%);background-image:-o-linear-gradient(top, #eeeeee 50%, #ffffff 100%);background-image:linear-gradient(to bottom, #eeeeee 50%, #ffffff 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#ffffff', GradientType=0);}.select2-container--classic .select2-selection--multiple{background-color:white;border:1px solid #aaa;border-radius:4px;cursor:text;outline:0;}.select2-container--classic .select2-selection--multiple:focus{border:1px solid #5897fb;}.select2-container--classic .select2-selection--multiple .select2-selection__rendered{list-style:none;margin:0;padding:0 5px;}.select2-container--classic .select2-selection--multiple .select2-selection__clear{display:none;}.select2-container--classic .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px;}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove{color:#888;cursor:pointer;display:inline-block;font-weight:bold;margin-right:2px;}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover{color:#555;}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice{float:right;}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice{margin-left:5px;margin-right:auto;}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto;}.select2-container--classic.select2-container--open .select2-selection--multiple{border:1px solid #5897fb;}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple{border-top:none;border-top-left-radius:0;border-top-right-radius:0;}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0;}.select2-container--classic .select2-search--dropdown .select2-search__field{border:1px solid #aaa;outline:0;}.select2-container--classic .select2-search--inline .select2-search__field{outline:0;}.select2-container--classic .select2-dropdown{background-color:white;border:1px solid transparent;}.select2-container--classic .select2-dropdown--above{border-bottom:none;}.select2-container--classic .select2-dropdown--below{border-top:none;}.select2-container--classic .select2-results>.select2-results__options{max-height:200px;overflow-y:auto;}.select2-container--classic .select2-results__option[role=group]{padding:0;}.select2-container--classic .select2-results__option[aria-disabled=true]{color:grey;}.select2-container--classic .select2-results__option--highlighted[aria-selected]{background-color:#3875d7;color:white;}.select2-container--classic .select2-results__group{cursor:default;display:block;padding:6px;}.select2-container--classic.select2-container--open .select2-dropdown{border-color:#5897fb;} \ No newline at end of file +.select2-container{box-sizing:border-box;display:inline-block;margin:0;position:relative;vertical-align:middle;}.select2-container .select2-selection--single{box-sizing:border-box;cursor:pointer;display:block;height:28px;user-select:none;-webkit-user-select:none;}.select2-container .select2-selection--single .select2-selection__rendered{display:block;padding-left:8px;padding-right:20px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.select2-container[dir="rtl"] .select2-selection--single .select2-selection__rendered{padding-right:8px;padding-left:20px;}.select2-container .select2-selection--multiple{box-sizing:border-box;cursor:pointer;display:block;min-height:32px;user-select:none;-webkit-user-select:none;}.select2-container .select2-selection--multiple .select2-selection__rendered{display:inline-block;overflow:hidden;padding-left:8px;text-overflow:ellipsis;white-space:nowrap;}.select2-container .select2-search--inline{float:left;}.select2-container .select2-search--inline .select2-search__field{box-sizing:border-box;border:none;font-size:100%;margin-top:5px;}.select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none;}.select2-dropdown{background-color:white;border:1px solid #aaa;border-radius:4px;box-sizing:border-box;display:block;position:absolute;left:-100000px;width:100%;z-index:1051;}.select2-results{display:block;}.select2-results__options{list-style:none;margin:0;padding:0;}.select2-results__option{padding:6px;user-select:none;-webkit-user-select:none;}.select2-results__option[aria-selected]{cursor:pointer;}.select2-container--open .select2-dropdown{left:0;}.select2-container--open .select2-dropdown--above{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0;}.select2-container--open .select2-dropdown--below{border-top:none;border-top-left-radius:0;border-top-right-radius:0;}.select2-search--dropdown{display:block;padding:4px;}.select2-search--dropdown .select2-search__field{padding:4px;width:100%;box-sizing:border-box;}.select2-search--dropdown .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none;}.select2-search--dropdown.select2-search--hide{display:none;}.select2-close-mask{border:0;margin:0;padding:0;display:block;position:fixed;left:0;top:0;min-height:100%;min-width:100%;height:auto;width:auto;opacity:0;z-index:99;background-color:#fff;filter:alpha(opacity=0);}.select2-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;}.select2-container--default .select2-selection--single{background-color:#fff;border:1px solid #aaa;border-radius:4px;}.select2-container--default .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px;}.select2-container--default .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:bold;}.select2-container--default .select2-selection--single .select2-selection__placeholder{color:#999;}.select2-container--default .select2-selection--single .select2-selection__arrow{height:26px;position:absolute;top:1px;right:1px;width:20px;}.select2-container--default .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0;}.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__clear{float:left;}.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__arrow{left:1px;right:auto;}.select2-container--default.select2-container--disabled .select2-selection--single{background-color:#eee;cursor:default;}.select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear{display:none;}.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px;}.select2-container--default .select2-selection--multiple{background-color:white;border:1px solid #aaa;border-radius:4px;cursor:text;}.select2-container--default .select2-selection--multiple .select2-selection__rendered{box-sizing:border-box;list-style:none;margin:0;padding:0 5px;width:100%;}.select2-container--default .select2-selection--multiple .select2-selection__placeholder{color:#999;margin-top:5px;float:left;}.select2-container--default .select2-selection--multiple .select2-selection__clear{cursor:pointer;float:right;font-weight:bold;margin-top:5px;margin-right:10px;}.select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px;}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:#999;cursor:pointer;display:inline-block;font-weight:bold;margin-right:2px;}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#333;}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice,.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__placeholder{float:right;}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice{margin-left:5px;margin-right:auto;}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto;}.select2-container--default.select2-container--focus .select2-selection--multiple{border:solid black 1px;outline:0;}.select2-container--default.select2-container--disabled .select2-selection--multiple{background-color:#eee;cursor:default;}.select2-container--default.select2-container--disabled .select2-selection__choice__remove{display:none;}.select2-container--default.select2-container--open.select2-container--above .select2-selection--single,.select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple{border-top-left-radius:0;border-top-right-radius:0;}.select2-container--default.select2-container--open.select2-container--below .select2-selection--single,.select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom-left-radius:0;border-bottom-right-radius:0;}.select2-container--default .select2-search--dropdown .select2-search__field{border:1px solid #aaa;}.select2-container--default .select2-search--inline .select2-search__field{background:transparent;border:none;outline:0;}.select2-container--default .select2-results>.select2-results__options{max-height:200px;overflow-y:auto;}.select2-container--default .select2-results__option[role=group]{padding:0;}.select2-container--default .select2-results__option[aria-disabled=true]{color:#999;}.select2-container--default .select2-results__option[aria-selected=true]{background-color:#ddd;}.select2-container--default .select2-results__option .select2-results__option{padding-left:1em;}.select2-container--default .select2-results__option .select2-results__option .select2-results__group{padding-left:0;}.select2-container--default .select2-results__option .select2-results__option .select2-results__option{margin-left:-1em;padding-left:2em;}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-2em;padding-left:3em;}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-3em;padding-left:4em;}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-4em;padding-left:5em;}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-5em;padding-left:6em;}.select2-container--default .select2-results__option--highlighted[aria-selected]{background-color:#5897fb;color:white;}.select2-container--default .select2-results__group{cursor:default;display:block;padding:6px;}.select2-container--classic .select2-selection--single{background-color:#f6f6f6;border:1px solid #aaa;border-radius:4px;outline:0;background-image:-webkit-linear-gradient(top, #ffffff 50%, #eeeeee 100%);background-image:-o-linear-gradient(top, #ffffff 50%, #eeeeee 100%);background-image:linear-gradient(to bottom, #ffffff 50%, #eeeeee 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#eeeeee', GradientType=0);}.select2-container--classic .select2-selection--single:focus{border:1px solid #5897fb;}.select2-container--classic .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px;}.select2-container--classic .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:bold;margin-right:10px;}.select2-container--classic .select2-selection--single .select2-selection__placeholder{color:#999;}.select2-container--classic .select2-selection--single .select2-selection__arrow{background-color:#ddd;border:none;border-left:1px solid #aaa;border-top-right-radius:4px;border-bottom-right-radius:4px;height:26px;position:absolute;top:1px;right:1px;width:20px;background-image:-webkit-linear-gradient(top, #eeeeee 50%, #cccccc 100%);background-image:-o-linear-gradient(top, #eeeeee 50%, #cccccc 100%);background-image:linear-gradient(to bottom, #eeeeee 50%, #cccccc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#cccccc', GradientType=0);}.select2-container--classic .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0;}.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__clear{float:left;}.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__arrow{border:none;border-right:1px solid #aaa;border-radius:0;border-top-left-radius:4px;border-bottom-left-radius:4px;left:1px;right:auto;}.select2-container--classic.select2-container--open .select2-selection--single{border:1px solid #5897fb;}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow{background:transparent;border:none;}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px;}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--single{border-top:none;border-top-left-radius:0;border-top-right-radius:0;background-image:-webkit-linear-gradient(top, #ffffff 0%, #eeeeee 50%);background-image:-o-linear-gradient(top, #ffffff 0%, #eeeeee 50%);background-image:linear-gradient(to bottom, #ffffff 0%, #eeeeee 50%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#eeeeee', GradientType=0);}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--single{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0;background-image:-webkit-linear-gradient(top, #eeeeee 50%, #ffffff 100%);background-image:-o-linear-gradient(top, #eeeeee 50%, #ffffff 100%);background-image:linear-gradient(to bottom, #eeeeee 50%, #ffffff 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#ffffff', GradientType=0);}.select2-container--classic .select2-selection--multiple{background-color:white;border:1px solid #aaa;border-radius:4px;cursor:text;outline:0;}.select2-container--classic .select2-selection--multiple:focus{border:1px solid #5897fb;}.select2-container--classic .select2-selection--multiple .select2-selection__rendered{list-style:none;margin:0;padding:0 5px;}.select2-container--classic .select2-selection--multiple .select2-selection__clear{display:none;}.select2-container--classic .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px;}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove{color:#888;cursor:pointer;display:inline-block;font-weight:bold;margin-right:2px;}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover{color:#555;}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice{float:right;}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice{margin-left:5px;margin-right:auto;}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto;}.select2-container--classic.select2-container--open .select2-selection--multiple{border:1px solid #5897fb;}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple{border-top:none;border-top-left-radius:0;border-top-right-radius:0;}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0;}.select2-container--classic .select2-search--dropdown .select2-search__field{border:1px solid #aaa;outline:0;}.select2-container--classic .select2-search--inline .select2-search__field{outline:0;}.select2-container--classic .select2-dropdown{background-color:white;border:1px solid transparent;}.select2-container--classic .select2-dropdown--above{border-bottom:none;}.select2-container--classic .select2-dropdown--below{border-top:none;}.select2-container--classic .select2-results>.select2-results__options{max-height:200px;overflow-y:auto;}.select2-container--classic .select2-results__option[role=group]{padding:0;}.select2-container--classic .select2-results__option[aria-disabled=true]{color:grey;}.select2-container--classic .select2-results__option--highlighted[aria-selected]{background-color:#3875d7;color:white;}.select2-container--classic .select2-results__group{cursor:default;display:block;padding:6px;}.select2-container--classic.select2-container--open .select2-dropdown{border-color:#5897fb;} \ No newline at end of file diff --git a/awx/ui/client/lib/select2/dist/js/i18n/az.js b/awx/ui/client/lib/select2/dist/js/i18n/az.js index b65d743e40..3ad855a78c 100644 --- a/awx/ui/client/lib/select2/dist/js/i18n/az.js +++ b/awx/ui/client/lib/select2/dist/js/i18n/az.js @@ -1,3 +1,3 @@ -/*! Select2 4.0.0-rc.2 | https://github.com/select2/select2/blob/master/LICENSE.md */ +/*! Select2 4.0.0 | https://github.com/select2/select2/blob/master/LICENSE.md */ (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/az",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum;return t+" simvol silin"},inputTooShort:function(e){var t=e.minimum-e.input.length;return t+" simvol daxil edin"},loadingMore:function(){return"Daha çox nəticə yüklənir…"},maximumSelected:function(e){return"Sadəcə "+e.maximum+" element seçə bilərsiniz"},noResults:function(){return"Nəticə tapılmadı"},searching:function(){return"Axtarılır…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/awx/ui/client/lib/select2/dist/js/i18n/bg.js b/awx/ui/client/lib/select2/dist/js/i18n/bg.js index 3fbee75b5b..edad761bbe 100644 --- a/awx/ui/client/lib/select2/dist/js/i18n/bg.js +++ b/awx/ui/client/lib/select2/dist/js/i18n/bg.js @@ -1,3 +1,3 @@ -/*! Select2 4.0.0-rc.2 | https://github.com/select2/select2/blob/master/LICENSE.md */ +/*! Select2 4.0.0 | https://github.com/select2/select2/blob/master/LICENSE.md */ (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/bg",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Моля въведете с "+t+" по-малко символ";return t>1&&(n+="a"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Моля въведете още "+t+" символ";return t>1&&(n+="a"),n},loadingMore:function(){return"Зареждат се още…"},maximumSelected:function(e){var t="Можете да направите до "+e.maximum+" ";return e.maximum>1?t+="избора":t+="избор",t},noResults:function(){return"Няма намерени съвпадения"},searching:function(){return"Търсене…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/awx/ui/client/lib/select2/dist/js/i18n/ca.js b/awx/ui/client/lib/select2/dist/js/i18n/ca.js index e2f505a1fd..3f5db5ea8f 100644 --- a/awx/ui/client/lib/select2/dist/js/i18n/ca.js +++ b/awx/ui/client/lib/select2/dist/js/i18n/ca.js @@ -1,3 +1,3 @@ -/*! Select2 4.0.0-rc.2 | https://github.com/select2/select2/blob/master/LICENSE.md */ +/*! Select2 4.0.0 | https://github.com/select2/select2/blob/master/LICENSE.md */ (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ca",[],function(){return{errorLoading:function(){return"La càrrega ha fallat"},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Si us plau, elimina "+t+" car";return t==1?n+="àcter":n+="àcters",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Si us plau, introdueix "+t+" car";return t==1?n+="àcter":n+="àcters",n},loadingMore:function(){return"Carregant més resultats…"},maximumSelected:function(e){var t="Només es pot seleccionar "+e.maximum+" element";return e.maximum!=1&&(t+="s"),t},noResults:function(){return"No s'han trobat resultats"},searching:function(){return"Cercant…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/awx/ui/client/lib/select2/dist/js/i18n/cs.js b/awx/ui/client/lib/select2/dist/js/i18n/cs.js index 44cc3c64d1..d5823e9696 100644 --- a/awx/ui/client/lib/select2/dist/js/i18n/cs.js +++ b/awx/ui/client/lib/select2/dist/js/i18n/cs.js @@ -1,3 +1,3 @@ -/*! Select2 4.0.0-rc.2 | https://github.com/select2/select2/blob/master/LICENSE.md */ +/*! Select2 4.0.0 | https://github.com/select2/select2/blob/master/LICENSE.md */ (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/cs",[],function(){function e(e,t){switch(e){case 2:return t?"dva":"dvě";case 3:return"tři";case 4:return"čtyři"}return""}return{errorLoading:function(){return"Výsledky nemohly být načteny."},inputTooLong:function(t){var n=t.input.length-t.maximum;return n==1?"Prosím zadejte o jeden znak méně":n<=4?"Prosím zadejte o "+e(n,!0)+" znaky méně":"Prosím zadejte o "+n+" znaků méně"},inputTooShort:function(t){var n=t.minimum-t.input.length;return n==1?"Prosím zadejte ještě jeden znak":n<=4?"Prosím zadejte ještě další "+e(n,!0)+" znaky":"Prosím zadejte ještě dalších "+n+" znaků"},loadingMore:function(){return"Načítají se další výsledky…"},maximumSelected:function(t){var n=t.maximum;return n==1?"Můžete zvolit jen jednu položku":n<=4?"Můžete zvolit maximálně "+e(n,!1)+" položky":"Můžete zvolit maximálně "+n+" položek"},noResults:function(){return"Nenalezeny žádné položky"},searching:function(){return"Vyhledávání…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/awx/ui/client/lib/select2/dist/js/i18n/da.js b/awx/ui/client/lib/select2/dist/js/i18n/da.js index 4fb80cd366..e9d25315a4 100644 --- a/awx/ui/client/lib/select2/dist/js/i18n/da.js +++ b/awx/ui/client/lib/select2/dist/js/i18n/da.js @@ -1,3 +1,3 @@ -/*! Select2 4.0.0-rc.2 | https://github.com/select2/select2/blob/master/LICENSE.md */ +/*! Select2 4.0.0 | https://github.com/select2/select2/blob/master/LICENSE.md */ (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/da",[],function(){return{errorLoading:function(){return"The results could not be loaded."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Angiv venligst "+t+" tegn mindre";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Angiv venligst "+t+" tegn mere";return n},loadingMore:function(){return"Indlæser flere resultater…"},maximumSelected:function(e){var t="Du kan kun vælge "+e.maximum+" emne";return e.maximum!=1&&(t+="r"),t},noResults:function(){return"Ingen resultater fundet"},searching:function(){return"Søger…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/awx/ui/client/lib/select2/dist/js/i18n/de.js b/awx/ui/client/lib/select2/dist/js/i18n/de.js index 96d10c9d0e..2224138e3b 100644 --- a/awx/ui/client/lib/select2/dist/js/i18n/de.js +++ b/awx/ui/client/lib/select2/dist/js/i18n/de.js @@ -1,3 +1,3 @@ -/*! Select2 4.0.0-rc.2 | https://github.com/select2/select2/blob/master/LICENSE.md */ +/*! Select2 4.0.0 | https://github.com/select2/select2/blob/master/LICENSE.md */ (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/de",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum;return"Bitte "+t+" Zeichen weniger eingeben"},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Bitte "+t+" Zeichen mehr eingeben"},loadingMore:function(){return"Lade mehr Ergebnisse…"},maximumSelected:function(e){var t="Sie können nur "+e.maximum+" Eintr";return e.maximum===1?t+="ag":t+="äge",t+=" auswählen",t},noResults:function(){return"Keine Übereinstimmungen gefunden"},searching:function(){return"Suche…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/awx/ui/client/lib/select2/dist/js/i18n/en.js b/awx/ui/client/lib/select2/dist/js/i18n/en.js index 8270f4fe2e..869dfd7b21 100644 --- a/awx/ui/client/lib/select2/dist/js/i18n/en.js +++ b/awx/ui/client/lib/select2/dist/js/i18n/en.js @@ -1,3 +1,3 @@ -/*! Select2 4.0.0-rc.2 | https://github.com/select2/select2/blob/master/LICENSE.md */ +/*! Select2 4.0.0 | https://github.com/select2/select2/blob/master/LICENSE.md */ (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/en",[],function(){return{errorLoading:function(){return"The results could not be loaded."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Please delete "+t+" character";return t!=1&&(n+="s"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Please enter "+t+" or more characters";return n},loadingMore:function(){return"Loading more results…"},maximumSelected:function(e){var t="You can only select "+e.maximum+" item";return e.maximum!=1&&(t+="s"),t},noResults:function(){return"No results found"},searching:function(){return"Searching…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/awx/ui/client/lib/select2/dist/js/i18n/es.js b/awx/ui/client/lib/select2/dist/js/i18n/es.js index 32a5e620a0..f12d3f5216 100644 --- a/awx/ui/client/lib/select2/dist/js/i18n/es.js +++ b/awx/ui/client/lib/select2/dist/js/i18n/es.js @@ -1,3 +1,3 @@ -/*! Select2 4.0.0-rc.2 | https://github.com/select2/select2/blob/master/LICENSE.md */ +/*! Select2 4.0.0 | https://github.com/select2/select2/blob/master/LICENSE.md */ (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/es",[],function(){return{errorLoading:function(){return"La carga falló"},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Por favor, elimine "+t+" car";return t==1?n+="ácter":n+="acteres",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Por favor, introduzca "+t+" car";return t==1?n+="ácter":n+="acteres",n},loadingMore:function(){return"Cargando más resultados…"},maximumSelected:function(e){var t="Sólo puede seleccionar "+e.maximum+" elemento";return e.maximum!=1&&(t+="s"),t},noResults:function(){return"No se encontraron resultados"},searching:function(){return"Buscando…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/awx/ui/client/lib/select2/dist/js/i18n/et.js b/awx/ui/client/lib/select2/dist/js/i18n/et.js index 440d99256c..b0603bdc8e 100644 --- a/awx/ui/client/lib/select2/dist/js/i18n/et.js +++ b/awx/ui/client/lib/select2/dist/js/i18n/et.js @@ -1,3 +1,3 @@ -/*! Select2 4.0.0-rc.2 | https://github.com/select2/select2/blob/master/LICENSE.md */ +/*! Select2 4.0.0 | https://github.com/select2/select2/blob/master/LICENSE.md */ (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/et",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Sisesta "+t+" täht";return t!=1&&(n+="e"),n+=" vähem",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Sisesta "+t+" täht";return t!=1&&(n+="e"),n+=" rohkem",n},loadingMore:function(){return"Laen tulemusi…"},maximumSelected:function(e){var t="Saad vaid "+e.maximum+" tulemus";return e.maximum==1?t+="e":t+="t",t+=" valida",t},noResults:function(){return"Tulemused puuduvad"},searching:function(){return"Otsin…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/awx/ui/client/lib/select2/dist/js/i18n/eu.js b/awx/ui/client/lib/select2/dist/js/i18n/eu.js index 784ac082a4..3abb677a43 100644 --- a/awx/ui/client/lib/select2/dist/js/i18n/eu.js +++ b/awx/ui/client/lib/select2/dist/js/i18n/eu.js @@ -1,3 +1,3 @@ -/*! Select2 4.0.0-rc.2 | https://github.com/select2/select2/blob/master/LICENSE.md */ +/*! Select2 4.0.0 | https://github.com/select2/select2/blob/master/LICENSE.md */ (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/eu",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Idatzi ";return t==1?n+="karaktere bat":n+=t+" karaktere",n+=" gutxiago",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Idatzi ";return t==1?n+="karaktere bat":n+=t+" karaktere",n+=" gehiago",n},loadingMore:function(){return"Emaitza gehiago kargatzen…"},maximumSelected:function(e){return e.maximum===1?"Elementu bakarra hauta dezakezu":e.maximum+" elementu hauta ditzakezu soilik"},noResults:function(){return"Ez da bat datorrenik aurkitu"},searching:function(){return"Bilatzen…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/awx/ui/client/lib/select2/dist/js/i18n/fa.js b/awx/ui/client/lib/select2/dist/js/i18n/fa.js index d2561c8480..49abc419cd 100644 --- a/awx/ui/client/lib/select2/dist/js/i18n/fa.js +++ b/awx/ui/client/lib/select2/dist/js/i18n/fa.js @@ -1,3 +1,3 @@ -/*! Select2 4.0.0-rc.2 | https://github.com/select2/select2/blob/master/LICENSE.md */ +/*! Select2 4.0.0 | https://github.com/select2/select2/blob/master/LICENSE.md */ (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/fa",[],function(){return{errorLoading:function(){return"امکان بارگذاری نتایج وجود ندارد."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="لطفاً "+t+" کاراکتر را حذف نمایید";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="لطفاً تعداد "+t+" کاراکتر یا بیشتر وارد نمایید";return n},loadingMore:function(){return"در حال بارگذاری نتایج بیشتر..."},maximumSelected:function(e){var t="شما تنها می‌توانید "+e.maximum+" آیتم را انتخاب نمایید";return t},noResults:function(){return"هیچ نتیجه‌ای یافت نشد"},searching:function(){return"در حال جستجو..."}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/awx/ui/client/lib/select2/dist/js/i18n/fi.js b/awx/ui/client/lib/select2/dist/js/i18n/fi.js index 44f902149e..fef0d8b572 100644 --- a/awx/ui/client/lib/select2/dist/js/i18n/fi.js +++ b/awx/ui/client/lib/select2/dist/js/i18n/fi.js @@ -1,3 +1,3 @@ -/*! Select2 4.0.0-rc.2 | https://github.com/select2/select2/blob/master/LICENSE.md */ +/*! Select2 4.0.0 | https://github.com/select2/select2/blob/master/LICENSE.md */ (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/fi",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum;return"Ole hyvä ja anna "+t+" merkkiä vähemmän"},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Ole hyvä ja anna "+t+" merkkiä lisää"},loadingMore:function(){return"Ladataan lisää tuloksia…"},maximumSelected:function(e){return"Voit valita ainoastaan "+e.maximum+" kpl"},noResults:function(){return"Ei tuloksia"},searching:function(){}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/awx/ui/client/lib/select2/dist/js/i18n/fr.js b/awx/ui/client/lib/select2/dist/js/i18n/fr.js index cef552ba1d..44395226dd 100644 --- a/awx/ui/client/lib/select2/dist/js/i18n/fr.js +++ b/awx/ui/client/lib/select2/dist/js/i18n/fr.js @@ -1,3 +1,3 @@ -/*! Select2 4.0.0-rc.2 | https://github.com/select2/select2/blob/master/LICENSE.md */ +/*! Select2 4.0.0 | https://github.com/select2/select2/blob/master/LICENSE.md */ (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/fr",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Supprimez "+t+" caractère";return t!==1&&(n+="s"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Saisissez "+t+" caractère";return t!==1&&(n+="s"),n},loadingMore:function(){return"Chargement de résultats supplémentaires…"},maximumSelected:function(e){var t="Vous pouvez seulement sélectionner "+e.maximum+" élément";return e.maximum!==1&&(t+="s"),t},noResults:function(){return"Aucun résultat trouvé"},searching:function(){return"Recherche en cours…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/awx/ui/client/lib/select2/dist/js/i18n/gl.js b/awx/ui/client/lib/select2/dist/js/i18n/gl.js index 74891b6442..9e593af47d 100644 --- a/awx/ui/client/lib/select2/dist/js/i18n/gl.js +++ b/awx/ui/client/lib/select2/dist/js/i18n/gl.js @@ -1,3 +1,3 @@ -/*! Select2 4.0.0-rc.2 | https://github.com/select2/select2/blob/master/LICENSE.md */ +/*! Select2 4.0.0 | https://github.com/select2/select2/blob/master/LICENSE.md */ (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/gl",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Engada ";return t===1?n+="un carácter":n+=t+" caracteres",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Elimine ";return t===1?n+="un carácter":n+=t+" caracteres",n},loadingMore:function(){return"Cargando máis resultados…"},maximumSelected:function(e){var t="Só pode ";return e.maximum===1?t+="un elemento":t+=e.maximum+" elementos",t},noResults:function(){return"Non se atoparon resultados"},searching:function(){return"Buscando…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/awx/ui/client/lib/select2/dist/js/i18n/he.js b/awx/ui/client/lib/select2/dist/js/i18n/he.js new file mode 100644 index 0000000000..c5102c3106 --- /dev/null +++ b/awx/ui/client/lib/select2/dist/js/i18n/he.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.0 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/he",[],function(){return{errorLoading:function(){return"התוצאות לא נטענו בהלכה"},inputTooLong:function(e){var t=e.input.length-e.maximum,n="נא למחוק "+t+" תווים";return t!=1&&(n+="s"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="נא להכניס "+t+" תווים או יותר";return n},loadingMore:function(){return"טען תוצאות נוספות…"},maximumSelected:function(e){var t="באפשרותך לבחור רק "+e.maximum+" פריטים";return e.maximum!=1&&(t+="s"),t},noResults:function(){return"לא נמצאו תוצאות"},searching:function(){return"מחפש…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/awx/ui/client/lib/select2/dist/js/i18n/hi.js b/awx/ui/client/lib/select2/dist/js/i18n/hi.js index 2e26b27454..f8dd58a46d 100644 --- a/awx/ui/client/lib/select2/dist/js/i18n/hi.js +++ b/awx/ui/client/lib/select2/dist/js/i18n/hi.js @@ -1,3 +1,3 @@ -/*! Select2 4.0.0-rc.2 | https://github.com/select2/select2/blob/master/LICENSE.md */ +/*! Select2 4.0.0 | https://github.com/select2/select2/blob/master/LICENSE.md */ (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/hi",[],function(){return{errorLoading:function(){return"परिणामों को लोड नहीं किया जा सका।"},inputTooLong:function(e){var t=e.input.length-e.maximum,n=t+" अक्षर को हटा दें";return t>1&&(n=t+" अक्षरों को हटा दें "),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="कृपया "+t+" या अधिक अक्षर दर्ज करें";return n},loadingMore:function(){return"अधिक परिणाम लोड हो रहे है..."},maximumSelected:function(e){var t="आप केवल "+e.maximum+" आइटम का चयन कर सकते हैं";return t},noResults:function(){return"कोई परिणाम नहीं मिला"},searching:function(){return"खोज रहा है..."}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/awx/ui/client/lib/select2/dist/js/i18n/hr.js b/awx/ui/client/lib/select2/dist/js/i18n/hr.js index c413075203..a783b3fbb4 100644 --- a/awx/ui/client/lib/select2/dist/js/i18n/hr.js +++ b/awx/ui/client/lib/select2/dist/js/i18n/hr.js @@ -1,3 +1,3 @@ -/*! Select2 4.0.0-rc.2 | https://github.com/select2/select2/blob/master/LICENSE.md */ +/*! Select2 4.0.0 | https://github.com/select2/select2/blob/master/LICENSE.md */ (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/hr",[],function(){function e(e){var t=" "+e+" znak";return e%10<5&&e%10>0&&(e%100<5||e%100>19)?e%10>1&&(t+="a"):t+="ova",t}return{inputTooLong:function(t){var n=t.input.length-t.maximum;return"Unesite "+e(n)},inputTooShort:function(t){var n=t.minimum-t.input.length;return"Unesite još "+e(n)},loadingMore:function(){return"Učitavanje rezultata…"},maximumSelected:function(e){return"Maksimalan broj odabranih stavki je "+e.maximum},noResults:function(){return"Nema rezultata"},searching:function(){return"Pretraga…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/awx/ui/client/lib/select2/dist/js/i18n/hu.js b/awx/ui/client/lib/select2/dist/js/i18n/hu.js index 203ab78b71..d13fea25f5 100644 --- a/awx/ui/client/lib/select2/dist/js/i18n/hu.js +++ b/awx/ui/client/lib/select2/dist/js/i18n/hu.js @@ -1,3 +1,3 @@ -/*! Select2 4.0.0-rc.2 | https://github.com/select2/select2/blob/master/LICENSE.md */ +/*! Select2 4.0.0 | https://github.com/select2/select2/blob/master/LICENSE.md */ (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/hu",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum;return"Túl hosszú. "+t+" karakterrel több, mint kellene."},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Túl rövid. Még "+t+" karakter hiányzik."},loadingMore:function(){return"Töltés…"},maximumSelected:function(e){return"Csak "+e.maximum+" elemet lehet kiválasztani."},noResults:function(){return"Nincs találat."},searching:function(){return"Keresés…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/awx/ui/client/lib/select2/dist/js/i18n/id.js b/awx/ui/client/lib/select2/dist/js/i18n/id.js index 52eed4bef3..7ffb8dbdb6 100644 --- a/awx/ui/client/lib/select2/dist/js/i18n/id.js +++ b/awx/ui/client/lib/select2/dist/js/i18n/id.js @@ -1,3 +1,3 @@ -/*! Select2 4.0.0-rc.2 | https://github.com/select2/select2/blob/master/LICENSE.md */ +/*! Select2 4.0.0 | https://github.com/select2/select2/blob/master/LICENSE.md */ (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/id",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum;return"Hapuskan "+t+" huruf"},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Masukkan "+t+" huruf lagi"},loadingMore:function(){return"Mengambil data…"},maximumSelected:function(e){return"Anda hanya dapat memilih "+e.maximum+" pilihan"},noResults:function(){return"Tidak ada data yang sesuai"},searching:function(){return"Mencari…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/awx/ui/client/lib/select2/dist/js/i18n/is.js b/awx/ui/client/lib/select2/dist/js/i18n/is.js index 5f69352f91..588ec1de9f 100644 --- a/awx/ui/client/lib/select2/dist/js/i18n/is.js +++ b/awx/ui/client/lib/select2/dist/js/i18n/is.js @@ -1,3 +1,3 @@ -/*! Select2 4.0.0-rc.2 | https://github.com/select2/select2/blob/master/LICENSE.md */ +/*! Select2 4.0.0 | https://github.com/select2/select2/blob/master/LICENSE.md */ (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/is",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Vinsamlegast styttið texta um "+t+" staf";return t<=1?n:n+"i"},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Vinsamlegast skrifið "+t+" staf";return t>1&&(n+="i"),n+=" í viðbót",n},loadingMore:function(){return"Sæki fleiri niðurstöður…"},maximumSelected:function(e){return"Þú getur aðeins valið "+e.maximum+" atriði"},noResults:function(){return"Ekkert fannst"},searching:function(){return"Leita…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/awx/ui/client/lib/select2/dist/js/i18n/it.js b/awx/ui/client/lib/select2/dist/js/i18n/it.js index dfb950b22e..0488d3b152 100644 --- a/awx/ui/client/lib/select2/dist/js/i18n/it.js +++ b/awx/ui/client/lib/select2/dist/js/i18n/it.js @@ -1,3 +1,3 @@ -/*! Select2 4.0.0-rc.2 | https://github.com/select2/select2/blob/master/LICENSE.md */ +/*! Select2 4.0.0 | https://github.com/select2/select2/blob/master/LICENSE.md */ (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/it",[],function(){return{errorLoading:function(){return"I risultati non possono essere caricati."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Per favore cancella "+t+" caratter";return t!==1?n+="i":n+="e",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Per favore inserisci "+t+" o più caratteri";return n},loadingMore:function(){return"Caricando più risultati…"},maximumSelected:function(e){var t="Puoi selezionare solo "+e.maximum+" element";return e.maximum!==1?t+="i":t+="o",t},noResults:function(){return"Nessun risultato trovato"},searching:function(){return"Sto cercando…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/awx/ui/client/lib/select2/dist/js/i18n/ko.js b/awx/ui/client/lib/select2/dist/js/i18n/ko.js index 367df499cc..80b5a8b20b 100644 --- a/awx/ui/client/lib/select2/dist/js/i18n/ko.js +++ b/awx/ui/client/lib/select2/dist/js/i18n/ko.js @@ -1,3 +1,3 @@ -/*! Select2 4.0.0-rc.2 | https://github.com/select2/select2/blob/master/LICENSE.md */ +/*! Select2 4.0.0 | https://github.com/select2/select2/blob/master/LICENSE.md */ (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ko",[],function(){return{errorLoading:function(){return"결과를 불러올 수 없습니다."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="너무 깁니다. "+t+" 글자 지워주세요.";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="너무 짧습니다. "+t+" 글자 더 입력해주세요.";return n},loadingMore:function(){return"불러오는 중…"},maximumSelected:function(e){var t="최대 "+e.maximum+"개까지만 선택 가능합니다.";return t},noResults:function(){return"결과가 없습니다."},searching:function(){return"검색 중…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/awx/ui/client/lib/select2/dist/js/i18n/lt.js b/awx/ui/client/lib/select2/dist/js/i18n/lt.js index aecddcedd7..27cfe36497 100644 --- a/awx/ui/client/lib/select2/dist/js/i18n/lt.js +++ b/awx/ui/client/lib/select2/dist/js/i18n/lt.js @@ -1,3 +1,3 @@ -/*! Select2 4.0.0-rc.2 | https://github.com/select2/select2/blob/master/LICENSE.md */ +/*! Select2 4.0.0 | https://github.com/select2/select2/blob/master/LICENSE.md */ (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/lt",[],function(){function e(e,t,n,r){return e%100>9&&e%100<21||e%10===0?e%10>1?n:r:t}return{inputTooLong:function(t){var n=t.input.length-t.maximum,r="Pašalinkite "+n+" simbol";return r+=e(n,"ių","ius","į"),r},inputTooShort:function(t){var n=t.minimum-t.input.length,r="Įrašykite dar "+n+" simbol";return r+=e(n,"ių","ius","į"),r},loadingMore:function(){return"Kraunama daugiau rezultatų…"},maximumSelected:function(t){var n="Jūs galite pasirinkti tik "+t.maximum+" element";return n+=e(t.maximum,"ų","us","ą"),n},noResults:function(){return"Atitikmenų nerasta"},searching:function(){return"Ieškoma…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/awx/ui/client/lib/select2/dist/js/i18n/lv.js b/awx/ui/client/lib/select2/dist/js/i18n/lv.js index 8bf40cff3b..b47bc8e2a9 100644 --- a/awx/ui/client/lib/select2/dist/js/i18n/lv.js +++ b/awx/ui/client/lib/select2/dist/js/i18n/lv.js @@ -1,3 +1,3 @@ -/*! Select2 4.0.0-rc.2 | https://github.com/select2/select2/blob/master/LICENSE.md */ +/*! Select2 4.0.0 | https://github.com/select2/select2/blob/master/LICENSE.md */ (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/lv",[],function(){function e(e,t,n,r){return e===11?t:e%10===1?n:r}return{inputTooLong:function(t){var n=t.input.length-t.maximum,r="Lūdzu ievadiet par "+n;return r+=" simbol"+e(n,"iem","u","iem"),r+" mazāk"},inputTooShort:function(t){var n=t.minimum-t.input.length,r="Lūdzu ievadiet vēl "+n;return r+=" simbol"+e(n,"us","u","us"),r},loadingMore:function(){return"Datu ielāde…"},maximumSelected:function(t){var n="Jūs varat izvēlēties ne vairāk kā "+t.maximum;return n+=" element"+e(t.maximum,"us","u","us"),n},noResults:function(){return"Sakritību nav"},searching:function(){return"Meklēšana…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/awx/ui/client/lib/select2/dist/js/i18n/mk.js b/awx/ui/client/lib/select2/dist/js/i18n/mk.js index 14784aa077..065a47a032 100644 --- a/awx/ui/client/lib/select2/dist/js/i18n/mk.js +++ b/awx/ui/client/lib/select2/dist/js/i18n/mk.js @@ -1,3 +1,3 @@ -/*! Select2 4.0.0-rc.2 | https://github.com/select2/select2/blob/master/LICENSE.md */ +/*! Select2 4.0.0 | https://github.com/select2/select2/blob/master/LICENSE.md */ (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/mk",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Ве молиме внесете "+e.maximum+" помалку карактер";return e.maximum!==1&&(n+="и"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Ве молиме внесете уште "+e.maximum+" карактер";return e.maximum!==1&&(n+="и"),n},loadingMore:function(){return"Вчитување резултати…"},maximumSelected:function(e){var t="Можете да изберете само "+e.maximum+" ставк";return e.maximum===1?t+="а":t+="и",t},noResults:function(){return"Нема пронајдено совпаѓања"},searching:function(){return"Пребарување…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/awx/ui/client/lib/select2/dist/js/i18n/nb.js b/awx/ui/client/lib/select2/dist/js/i18n/nb.js index 9ce07c9ed6..d7328a250f 100644 --- a/awx/ui/client/lib/select2/dist/js/i18n/nb.js +++ b/awx/ui/client/lib/select2/dist/js/i18n/nb.js @@ -1,3 +1,3 @@ -/*! Select2 4.0.0-rc.2 | https://github.com/select2/select2/blob/master/LICENSE.md */ +/*! Select2 4.0.0 | https://github.com/select2/select2/blob/master/LICENSE.md */ (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/nb",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum;return"Vennligst fjern "+t+" tegn"},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Vennligst skriv inn ";return t>1?n+=" flere tegn":n+=" tegn til",n},loadingMore:function(){return"Laster flere resultater…"},maximumSelected:function(e){return"Du kan velge maks "+e.maximum+" elementer"},noResults:function(){return"Ingen treff"},searching:function(){return"Søker…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/awx/ui/client/lib/select2/dist/js/i18n/nl.js b/awx/ui/client/lib/select2/dist/js/i18n/nl.js index 645cd5c055..b30c81c739 100644 --- a/awx/ui/client/lib/select2/dist/js/i18n/nl.js +++ b/awx/ui/client/lib/select2/dist/js/i18n/nl.js @@ -1,3 +1,3 @@ -/*! Select2 4.0.0-rc.2 | https://github.com/select2/select2/blob/master/LICENSE.md */ +/*! Select2 4.0.0 | https://github.com/select2/select2/blob/master/LICENSE.md */ (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/nl",[],function(){return{errorLoading:function(){return"De resultaten konden niet worden geladen."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Gelieve "+t+" karakters te verwijderen";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Gelieve "+t+" of meer karakters in te voeren";return n},loadingMore:function(){return"Meer resultaten laden…"},maximumSelected:function(e){var t="Er kunnen maar "+e.maximum+" item";return e.maximum!=1&&(t+="s"),t+=" worden geselecteerd",t},noResults:function(){return"Geen resultaten gevonden…"},searching:function(){return"Zoeken…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/awx/ui/client/lib/select2/dist/js/i18n/pl.js b/awx/ui/client/lib/select2/dist/js/i18n/pl.js index 9fa693fb3c..0c0923c28c 100644 --- a/awx/ui/client/lib/select2/dist/js/i18n/pl.js +++ b/awx/ui/client/lib/select2/dist/js/i18n/pl.js @@ -1,3 +1,3 @@ -/*! Select2 4.0.0-rc.2 | https://github.com/select2/select2/blob/master/LICENSE.md */ +/*! Select2 4.0.0 | https://github.com/select2/select2/blob/master/LICENSE.md */ (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/pl",[],function(){var e=["znak","znaki","znaków"],t=["element","elementy","elementów"],n=function(t,n){if(t===1)return n[0];if(t>1&&t<=4)return n[1];if(t>=5)return n[2]};return{errorLoading:function(){return"Nie można załadować wyników."},inputTooLong:function(t){var r=t.input.length-t.maximum;return"Usuń "+r+" "+n(r,e)},inputTooShort:function(t){var r=t.minimum-t.input.length;return"Podaj przynajmniej "+r+" "+n(r,e)},loadingMore:function(){return"Trwa ładowanie…"},maximumSelected:function(e){return"Możesz zaznaczyć tylko "+e.maximum+" "+n(e.maxiumum,t)},noResults:function(){return"Brak wyników"},searching:function(){return"Trwa wyszukiwanie…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/awx/ui/client/lib/select2/dist/js/i18n/pt-BR.js b/awx/ui/client/lib/select2/dist/js/i18n/pt-BR.js index f51cdeeacc..2535114626 100644 --- a/awx/ui/client/lib/select2/dist/js/i18n/pt-BR.js +++ b/awx/ui/client/lib/select2/dist/js/i18n/pt-BR.js @@ -1,3 +1,3 @@ -/*! Select2 4.0.0-rc.2 | https://github.com/select2/select2/blob/master/LICENSE.md */ +/*! Select2 4.0.0 | https://github.com/select2/select2/blob/master/LICENSE.md */ (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/pt-BR",[],function(){return{errorLoading:function(){return"Os resultados não puderam ser carregados."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Apague "+t+" caracter";return t!=1&&(n+="es"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Digite "+t+" ou mais caracteres";return n},loadingMore:function(){return"Carregando mais resultados…"},maximumSelected:function(e){var t="Você só pode selecionar "+e.maximum+" ite";return e.maximum==1?t+="m":t+="ns",t},noResults:function(){return"Nenhum resultado encontrado"},searching:function(){return"Buscando…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/awx/ui/client/lib/select2/dist/js/i18n/pt.js b/awx/ui/client/lib/select2/dist/js/i18n/pt.js index 2da378ec98..6dcc51f0d2 100644 --- a/awx/ui/client/lib/select2/dist/js/i18n/pt.js +++ b/awx/ui/client/lib/select2/dist/js/i18n/pt.js @@ -1,3 +1,3 @@ -/*! Select2 4.0.0-rc.2 | https://github.com/select2/select2/blob/master/LICENSE.md */ +/*! Select2 4.0.0 | https://github.com/select2/select2/blob/master/LICENSE.md */ (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/pt",[],function(){return{errorLoading:function(){return"Os resultados não puderam ser carregados."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Por favor apague "+t+" ";return n+=t!=1?"caracteres":"carácter",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Introduza "+t+" ou mais caracteres";return n},loadingMore:function(){return"A carregar mais resultados…"},maximumSelected:function(e){var t="Apenas pode seleccionar "+e.maximum+" ";return t+=e.maximum!=1?"itens":"item",t},noResults:function(){return"Sem resultados"},searching:function(){return"A procurar…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/awx/ui/client/lib/select2/dist/js/i18n/ro.js b/awx/ui/client/lib/select2/dist/js/i18n/ro.js index 4e585d5610..61e7f1239e 100644 --- a/awx/ui/client/lib/select2/dist/js/i18n/ro.js +++ b/awx/ui/client/lib/select2/dist/js/i18n/ro.js @@ -1,3 +1,3 @@ -/*! Select2 4.0.0-rc.2 | https://github.com/select2/select2/blob/master/LICENSE.md */ +/*! Select2 4.0.0 | https://github.com/select2/select2/blob/master/LICENSE.md */ (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ro",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Vă rugăm să introduceți mai puțin de "+t;return n+=" caracter",n!==1&&(n+="e"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Vă rugăm să introduceți incă "+t;return n+=" caracter",n!==1&&(n+="e"),n},loadingMore:function(){return"Se încarcă…"},maximumSelected:function(e){var t="Aveți voie să selectați cel mult "+e.maximum;return t+=" element",t!==1&&(t+="e"),t},noResults:function(){return"Nu a fost găsit nimic"},searching:function(){return"Căutare…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/awx/ui/client/lib/select2/dist/js/i18n/ru.js b/awx/ui/client/lib/select2/dist/js/i18n/ru.js index 28494412bc..e082600f4e 100644 --- a/awx/ui/client/lib/select2/dist/js/i18n/ru.js +++ b/awx/ui/client/lib/select2/dist/js/i18n/ru.js @@ -1,3 +1,3 @@ -/*! Select2 4.0.0-rc.2 | https://github.com/select2/select2/blob/master/LICENSE.md */ +/*! Select2 4.0.0 | https://github.com/select2/select2/blob/master/LICENSE.md */ -(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ru",[],function(){function e(e,t,n,r){return e%10<5&&e%10>0&&e%100<5||e%100>20?e%10>1?n:t:r}return{inputTooLong:function(t){var n=t.input.length-t.maximum,r="Пожалуйста, введите на "+n+" символ";return r+=e(n,"","a","ов"),r+=" меньше",r},inputTooShort:function(t){var n=t.minimum-t.input.length,r="Пожалуйста, введите еще хотя бы "+n+" символ";return r+=e(n,"","a","ов"),r},loadingMore:function(){return"Загрузка данных…"},maximumSelected:function(t){var n="Вы можете выбрать не более "+t.maximum+" элемент";return n+=e(t.maximum,"","a","ов"),n},noResults:function(){return"Совпадений не найдено"},searching:function(){return"Поиск…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file +(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ru",[],function(){function e(e,t,n,r){return e%10<5&&e%10>0&&e%100<5||e%100>20?e%10>1?n:t:r}return{errorLoading:function(){return"Невозможно загрузить результаты"},inputTooLong:function(t){var n=t.input.length-t.maximum,r="Пожалуйста, введите на "+n+" символ";return r+=e(n,"","a","ов"),r+=" меньше",r},inputTooShort:function(t){var n=t.minimum-t.input.length,r="Пожалуйста, введите еще хотя бы "+n+" символ";return r+=e(n,"","a","ов"),r},loadingMore:function(){return"Загрузка данных…"},maximumSelected:function(t){var n="Вы можете выбрать не более "+t.maximum+" элемент";return n+=e(t.maximum,"","a","ов"),n},noResults:function(){return"Совпадений не найдено"},searching:function(){return"Поиск…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/awx/ui/client/lib/select2/dist/js/i18n/sk.js b/awx/ui/client/lib/select2/dist/js/i18n/sk.js index cba614c82c..8f92855695 100644 --- a/awx/ui/client/lib/select2/dist/js/i18n/sk.js +++ b/awx/ui/client/lib/select2/dist/js/i18n/sk.js @@ -1,3 +1,3 @@ -/*! Select2 4.0.0-rc.2 | https://github.com/select2/select2/blob/master/LICENSE.md */ +/*! Select2 4.0.0 | https://github.com/select2/select2/blob/master/LICENSE.md */ (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/sk",[],function(){var e={2:function(e){return e?"dva":"dve"},3:function(){return"tri"},4:function(){return"štyri"}};return{inputTooLong:function(t){var n=t.input.length-t.maximum;return n==1?"Prosím, zadajte o jeden znak menej":n>=2&&n<=4?"Prosím, zadajte o "+e[n](!0)+" znaky menej":"Prosím, zadajte o "+n+" znakov menej"},inputTooShort:function(t){var n=t.minimum-t.input.length;return n==1?"Prosím, zadajte ešte jeden znak":n<=4?"Prosím, zadajte ešte ďalšie "+e[n](!0)+" znaky":"Prosím, zadajte ešte ďalších "+n+" znakov"},loadingMore:function(){return"Loading more results…"},maximumSelected:function(t){return t.maximum==1?"Môžete zvoliť len jednu položku":t.maximum>=2&&t.maximum<=4?"Môžete zvoliť najviac "+e[t.maximum](!1)+" položky":"Môžete zvoliť najviac "+t.maximum+" položiek"},noResults:function(){return"Nenašli sa žiadne položky"},searching:function(){return"Vyhľadávanie…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/awx/ui/client/lib/select2/dist/js/i18n/sr.js b/awx/ui/client/lib/select2/dist/js/i18n/sr.js index 1bde6274d7..5ed6a81788 100644 --- a/awx/ui/client/lib/select2/dist/js/i18n/sr.js +++ b/awx/ui/client/lib/select2/dist/js/i18n/sr.js @@ -1,3 +1,3 @@ -/*! Select2 4.0.0-rc.2 | https://github.com/select2/select2/blob/master/LICENSE.md */ +/*! Select2 4.0.0 | https://github.com/select2/select2/blob/master/LICENSE.md */ (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/sr",[],function(){function e(e,t,n,r){return e%10==1&&e%100!=11?t:e%10>=2&&e%10<=4&&(e%100<12||e%100>14)?n:r}return{inputTooLong:function(t){var n=t.input.length-t.maximum,r="Obrišite "+n+" simbol";return r+=e(n,"","a","a"),r},inputTooShort:function(t){var n=t.minimum-t.input.length,r="Ukucajte bar još "+n+" simbol";return r+=e(n,"","a","a"),r},loadingMore:function(){return"Preuzimanje još rezultata…"},maximumSelected:function(t){var n="Možete izabrati samo "+t.maximum+" stavk";return n+=e(t.maximum,"u","e","i"),n},noResults:function(){return"Ništa nije pronađeno"},searching:function(){return"Pretraga…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/awx/ui/client/lib/select2/dist/js/i18n/sv.js b/awx/ui/client/lib/select2/dist/js/i18n/sv.js index 8de63c9f71..1934e365ef 100644 --- a/awx/ui/client/lib/select2/dist/js/i18n/sv.js +++ b/awx/ui/client/lib/select2/dist/js/i18n/sv.js @@ -1,3 +1,3 @@ -/*! Select2 4.0.0-rc.2 | https://github.com/select2/select2/blob/master/LICENSE.md */ +/*! Select2 4.0.0 | https://github.com/select2/select2/blob/master/LICENSE.md */ (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/sv",[],function(){return{errorLoading:function(){return"Resultat kunde inte laddas."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Vänligen sudda ut "+t+" tecken";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Vänligen skriv in "+t+" eller fler tecken";return n},loadingMore:function(){return"Laddar fler resultat…"},maximumSelected:function(e){var t="Du kan max välja "+e.maximum+" element";return t},noResults:function(){return"Inga träffar"},searching:function(){return"Söker…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/awx/ui/client/lib/select2/dist/js/i18n/th.js b/awx/ui/client/lib/select2/dist/js/i18n/th.js index 403a50bbb4..91c911c46f 100644 --- a/awx/ui/client/lib/select2/dist/js/i18n/th.js +++ b/awx/ui/client/lib/select2/dist/js/i18n/th.js @@ -1,3 +1,3 @@ -/*! Select2 4.0.0-rc.2 | https://github.com/select2/select2/blob/master/LICENSE.md */ +/*! Select2 4.0.0 | https://github.com/select2/select2/blob/master/LICENSE.md */ (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/th",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="โปรดลบออก "+t+" ตัวอักษร";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="โปรดพิมพ์เพิ่มอีก "+t+" ตัวอักษร";return n},loadingMore:function(){return"กำลังค้นข้อมูลเพิ่ม…"},maximumSelected:function(e){var t="คุณสามารถเลือกได้ไม่เกิน "+e.maximum+" รายการ";return t},noResults:function(){return"ม่พบข้อมูล"},searching:function(){return"กำลังค้นข้อมูล…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/awx/ui/client/lib/select2/dist/js/i18n/tr.js b/awx/ui/client/lib/select2/dist/js/i18n/tr.js index 97f27f6fb1..2d616c80c5 100644 --- a/awx/ui/client/lib/select2/dist/js/i18n/tr.js +++ b/awx/ui/client/lib/select2/dist/js/i18n/tr.js @@ -1,3 +1,3 @@ -/*! Select2 4.0.0-rc.2 | https://github.com/select2/select2/blob/master/LICENSE.md */ +/*! Select2 4.0.0 | https://github.com/select2/select2/blob/master/LICENSE.md */ (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/tr",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n=t+" karakter daha girmelisiniz";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="En az "+t+" karakter daha girmelisiniz";return n},loadingMore:function(){return"Daha fazla…"},maximumSelected:function(e){var t="Sadece "+e.maximum+" seçim yapabilirsiniz";return t},noResults:function(){return"Sonuç bulunamadı"},searching:function(){return"Aranıyor…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/awx/ui/client/lib/select2/dist/js/i18n/uk.js b/awx/ui/client/lib/select2/dist/js/i18n/uk.js index 26ad1d4c21..ea34a4a150 100644 --- a/awx/ui/client/lib/select2/dist/js/i18n/uk.js +++ b/awx/ui/client/lib/select2/dist/js/i18n/uk.js @@ -1,3 +1,3 @@ -/*! Select2 4.0.0-rc.2 | https://github.com/select2/select2/blob/master/LICENSE.md */ +/*! Select2 4.0.0 | https://github.com/select2/select2/blob/master/LICENSE.md */ (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/uk",[],function(){function e(e,t,n,r){return e%100>10&&e%100<15?r:e%10===1?t:e%10>1&&e%10<5?n:r}return{errorLoading:function(){return"Неможливо завантажити результати"},inputTooLong:function(t){var n=t.input.length-t.maximum;return"Будь ласка, видаліть "+n+" "+e(t.maximum,"літеру","літери","літер")},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Будь ласка, введіть "+t+" або більше літер"},loadingMore:function(){return"Завантаження інших результатів…"},maximumSelected:function(t){return"Ви можете вибрати лише "+t.maximum+" "+e(t.maximum,"пункт","пункти","пунктів")},noResults:function(){return"Нічого не знайдено"},searching:function(){return"Пошук…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/awx/ui/client/lib/select2/dist/js/i18n/vi.js b/awx/ui/client/lib/select2/dist/js/i18n/vi.js index e056594960..5c22a14b35 100644 --- a/awx/ui/client/lib/select2/dist/js/i18n/vi.js +++ b/awx/ui/client/lib/select2/dist/js/i18n/vi.js @@ -1,3 +1,3 @@ -/*! Select2 4.0.0-rc.2 | https://github.com/select2/select2/blob/master/LICENSE.md */ +/*! Select2 4.0.0 | https://github.com/select2/select2/blob/master/LICENSE.md */ (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/vi",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Vui lòng nhập ít hơn "+t+" ký tự";return t!=1&&(n+="s"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Vui lòng nhập nhiều hơn "+t+' ký tự"';return n},loadingMore:function(){return"Đang lấy thêm kết quả…"},maximumSelected:function(e){var t="Chỉ có thể chọn được "+e.maximum+" lựa chọn";return t},noResults:function(){return"Không tìm thấy kết quả"},searching:function(){return"Đang tìm…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/awx/ui/client/lib/select2/dist/js/i18n/zh-CN.js b/awx/ui/client/lib/select2/dist/js/i18n/zh-CN.js index 7b70b7dc36..df0ea4103d 100644 --- a/awx/ui/client/lib/select2/dist/js/i18n/zh-CN.js +++ b/awx/ui/client/lib/select2/dist/js/i18n/zh-CN.js @@ -1,3 +1,3 @@ -/*! Select2 4.0.0-rc.2 | https://github.com/select2/select2/blob/master/LICENSE.md */ +/*! Select2 4.0.0 | https://github.com/select2/select2/blob/master/LICENSE.md */ (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/zh-CN",[],function(){return{errorLoading:function(){return"无法载入结果。"},inputTooLong:function(e){var t=e.input.length-e.maximum,n="请删除"+t+"个字符";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="请再输入至少"+t+"个字符";return n},loadingMore:function(){return"载入更多结果…"},maximumSelected:function(e){var t="最多只能选择"+e.maximum+"个项目";return t},noResults:function(){return"未找到结果"},searching:function(){return"搜索中…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/awx/ui/client/lib/select2/dist/js/i18n/zh-TW.js b/awx/ui/client/lib/select2/dist/js/i18n/zh-TW.js index a1394393d7..017483be14 100644 --- a/awx/ui/client/lib/select2/dist/js/i18n/zh-TW.js +++ b/awx/ui/client/lib/select2/dist/js/i18n/zh-TW.js @@ -1,3 +1,3 @@ -/*! Select2 4.0.0-rc.2 | https://github.com/select2/select2/blob/master/LICENSE.md */ +/*! Select2 4.0.0 | https://github.com/select2/select2/blob/master/LICENSE.md */ (function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/zh-TW",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="請刪掉"+t+"個字元";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="請再輸入"+t+"個字元";return n},loadingMore:function(){return"載入中…"},maximumSelected:function(e){var t="你只能選擇最多"+e.maximum+"項";return t},noResults:function(){return"沒有找到相符的項目"},searching:function(){return"搜尋中…"}}}),{define:e.define,require:e.require}})(); \ No newline at end of file diff --git a/awx/ui/client/lib/select2/dist/js/select2.full.js b/awx/ui/client/lib/select2/dist/js/select2.full.js index 366bac9606..dd0e8bc74d 100644 --- a/awx/ui/client/lib/select2/dist/js/select2.full.js +++ b/awx/ui/client/lib/select2/dist/js/select2.full.js @@ -1,5 +1,5 @@ /*! - * Select2 4.0.0-rc.2 + * Select2 4.0.0 * https://select2.github.io * * Released under the MIT license @@ -714,6 +714,23 @@ S2.define('select2/utils',[ }); }; + // Append an array of jQuery nodes to a given element. + Utils.appendMany = function ($element, $nodes) { + // jQuery 1.7.x does not support $.fn.append() with an array + // Fall back to a jQuery object collection using $.fn.add() + if ($.fn.jquery.substr(0, 3) === '1.7') { + var $jqNodes = $(); + + $.map($nodes, function (node) { + $jqNodes = $jqNodes.add(node); + }); + + $nodes = $jqNodes; + } + + $element.append($nodes); + }; + return Utils; }); @@ -828,7 +845,8 @@ S2.define('select2/results',[ // id needs to be converted to a string when comparing var id = '' + item.id; - if ($.inArray(id, selectedIds) > -1) { + if ((item.element != null && item.element.selected) || + (item.element == null && $.inArray(id, selectedIds) > -1)) { $option.attr('aria-selected', 'true'); } else { $option.attr('aria-selected', 'false'); @@ -1564,7 +1582,7 @@ S2.define('select2/selection/multiple',[ return; } - var $selections = $(); + var $selections = []; for (var d = 0; d < data.length; d++) { var selection = data[d]; @@ -1577,10 +1595,12 @@ S2.define('select2/selection/multiple',[ $selection.data('data', selection); - $selections = $selections.add($selection); + $selections.push($selection); } - this.$selection.find('.select2-selection__rendered').append($selections); + var $rendered = this.$selection.find('.select2-selection__rendered'); + + Utils.appendMany($rendered, $selections); }; return MultipleSelection; @@ -1637,8 +1657,9 @@ S2.define('select2/selection/placeholder',[ }); S2.define('select2/selection/allowClear',[ - 'jquery' -], function ($) { + 'jquery', + '../keys' +], function ($, KEYS) { function AllowClear () { } AllowClear.prototype.bind = function (decorated, container, $container) { @@ -1646,8 +1667,8 @@ S2.define('select2/selection/allowClear',[ decorated.call(this, container, $container); - if (self.placeholder == null) { - if (self.options.get('debug') && window.console && console.error) { + if (this.placeholder == null) { + if (this.options.get('debug') && window.console && console.error) { console.error( 'Select2: The `allowClear` option should be used in combination ' + 'with the `placeholder` option.' @@ -1657,34 +1678,59 @@ S2.define('select2/selection/allowClear',[ this.$selection.on('mousedown', '.select2-selection__clear', function (evt) { - // Ignore the event if it is disabled - if (self.options.get('disabled')) { - return; - } - - evt.stopPropagation(); - - var data = $(this).data('data'); - - for (var d = 0; d < data.length; d++) { - var unselectData = { - data: data[d] - }; - - // Trigger the `unselect` event, so people can prevent it from being - // cleared. - self.trigger('unselect', unselectData); - - // If the event was prevented, don't clear it out. - if (unselectData.prevented) { - return; - } - } - - self.$element.val(self.placeholder.id).trigger('change'); - - self.trigger('toggle'); + self._handleClear(evt); }); + + container.on('keypress', function (evt) { + self._handleKeyboardClear(evt, container); + }); + }; + + AllowClear.prototype._handleClear = function (_, evt) { + // Ignore the event if it is disabled + if (this.options.get('disabled')) { + return; + } + + var $clear = this.$selection.find('.select2-selection__clear'); + + // Ignore the event if nothing has been selected + if ($clear.length === 0) { + return; + } + + evt.stopPropagation(); + + var data = $clear.data('data'); + + for (var d = 0; d < data.length; d++) { + var unselectData = { + data: data[d] + }; + + // Trigger the `unselect` event, so people can prevent it from being + // cleared. + this.trigger('unselect', unselectData); + + // If the event was prevented, don't clear it out. + if (unselectData.prevented) { + return; + } + } + + this.$element.val(this.placeholder.id).trigger('change'); + + this.trigger('toggle'); + }; + + AllowClear.prototype._handleKeyboardClear = function (_, evt, container) { + if (container.isOpen()) { + return; + } + + if (evt.which == KEYS.DELETE || evt.which == KEYS.BACKSPACE) { + this._handleClear(evt); + } }; AllowClear.prototype.update = function (decorated, data) { @@ -1785,6 +1831,8 @@ S2.define('select2/selection/search',[ var item = $previousChoice.data('data'); self.searchRemoveChoice(item); + + evt.preventDefault(); } } }); @@ -2865,7 +2913,9 @@ S2.define('select2/data/select',[ SelectAdapter.prototype.select = function (data) { var self = this; - // If data.element is a DOM nose, use it instead + data.selected = true; + + // If data.element is a DOM node, use it instead if ($(data.element).is('option')) { data.element.selected = true; @@ -2907,6 +2957,8 @@ S2.define('select2/data/select',[ return; } + data.selected = false; + if ($(data.element).is('option')) { data.element.selected = false; @@ -2982,7 +3034,7 @@ S2.define('select2/data/select',[ }; SelectAdapter.prototype.addOptions = function ($options) { - this.$element.append($options); + Utils.appendMany(this.$element, $options); }; SelectAdapter.prototype.option = function (data) { @@ -3131,7 +3183,9 @@ S2.define('select2/data/array',[ Utils.Extend(ArrayAdapter, SelectAdapter); ArrayAdapter.prototype.select = function (data) { - var $option = this.$element.find('option[value="' + data.id + '"]'); + var $option = this.$element.find('option').filter(function (i, elm) { + return elm.value == data.id.toString(); + }); if ($option.length === 0) { $option = this.option(data); @@ -3150,7 +3204,7 @@ S2.define('select2/data/array',[ return self.item($(this)).id; }).get(); - var $options = $(); + var $options = []; // Filter out all items except for the one passed in the argument function onlyItem (item) { @@ -3181,10 +3235,10 @@ S2.define('select2/data/array',[ if (item.children) { var $children = this.convertToOptions(item.children); - $option.append($children); + Utils.appendMany($option, $children); } - $options = $options.add($option); + $options.push($option); } return $options; @@ -3238,8 +3292,12 @@ S2.define('select2/data/ajax',[ var matches = []; var self = this; - if (this._request) { - this._request.abort(); + if (this._request != null) { + // JSONP requests cannot always be aborted + if ($.isFunction(this._request.abort)) { + this._request.abort(); + } + this._request = null; } @@ -3364,7 +3422,7 @@ S2.define('select2/data/tags',[ var $option = self.option(tag); $option.attr('data-select2-tag', true); - self.addOptions($option); + self.addOptions([$option]); self.insertTag(data, tag); } @@ -4040,9 +4098,16 @@ S2.define('select2/dropdown/attachBody',[ AttachBody.prototype._resizeDropdown = function () { this.$dropdownContainer.width(); - this.$dropdown.css({ + var css = { width: this.$container.outerWidth(false) + 'px' - }); + }; + + if (this.options.get('dropdownAutoWidth')) { + css.minWidth = css.width; + css.width = 'auto'; + } + + this.$dropdown.css(css); }; AttachBody.prototype._showDropdown = function (decorated) { @@ -4117,7 +4182,9 @@ S2.define('select2/dropdown/selectOnClose',[ return; } - $highlightedResults.trigger('mouseup'); + this.trigger('select', { + data: $highlightedResults.data('data') + }); }; return SelectOnClose; @@ -4368,6 +4435,19 @@ S2.define('select2/defaults',[ ); } + if ( + options.dropdownCssClass != null || + options.dropdownCss != null || + options.adaptDropdownCssClass != null + ) { + var DropdownCSS = require(options.amdBase + 'compat/dropdownCss'); + + options.dropdownAdapter = Utils.Decorate( + options.dropdownAdapter, + DropdownCSS + ); + } + options.dropdownAdapter = Utils.Decorate( options.dropdownAdapter, AttachBody @@ -4403,6 +4483,19 @@ S2.define('select2/defaults',[ ); } + if ( + options.containerCssClass != null || + options.containerCss != null || + options.adaptContainerCssClass != null + ) { + var ContainerCSS = require(options.amdBase + 'compat/containerCss'); + + options.selectionAdapter = Utils.Decorate( + options.selectionAdapter, + ContainerCSS + ); + } + options.selectionAdapter = Utils.Decorate( options.selectionAdapter, EventRelay @@ -4460,7 +4553,14 @@ S2.define('select2/defaults',[ options.translations = languages; } else { - options.translations = new Translation(options.language); + var baseTranslation = Translation.loadPath( + this.defaults.amdLanguageBase + 'en' + ); + var customTranslation = new Translation(options.language); + + customTranslation.extend(baseTranslation); + + options.translations = customTranslation; } return options; @@ -4526,6 +4626,7 @@ S2.define('select2/defaults',[ amdLanguageBase: './i18n/', closeOnSelect: true, debug: false, + dropdownAutoWidth: false, escapeMarkup: Utils.escapeMarkup, language: EnglishTranslation, matcher: matcher, @@ -4565,10 +4666,11 @@ S2.define('select2/defaults',[ }); S2.define('select2/options',[ + 'require', 'jquery', './defaults', './utils' -], function ($, Defaults, Utils) { +], function (require, $, Defaults, Utils) { function Options (options, $element) { this.options = options; @@ -4765,8 +4867,9 @@ S2.define('select2/core',[ }); // Hide the original select - $element.hide(); - + $element.addClass('select2-hidden-accessible'); + $element.attr('aria-hidden', 'true'); + // Synchronize any monitored attributes this._syncAttributes(); @@ -5177,7 +5280,8 @@ S2.define('select2/core',[ this.$element.off('.select2'); this.$element.attr('tabindex', this.$element.data('old-tabindex')); - this.$element.show(); + this.$element.removeClass('select2-hidden-accessible'); + this.$element.attr('aria-hidden', 'false'); this.$element.removeData('select2'); this.dataAdapter.destroy(); @@ -5213,6 +5317,560 @@ S2.define('select2/core',[ return Select2; }); +S2.define('select2/compat/utils',[ + 'jquery' +], function ($) { + function syncCssClasses ($dest, $src, adapter) { + var classes, replacements = [], adapted; + + classes = $.trim($dest.attr('class')); + + if (classes) { + classes = '' + classes; // for IE which returns object + + $(classes.split(/\s+/)).each(function () { + // Save all Select2 classes + if (this.indexOf('select2-') === 0) { + replacements.push(this); + } + }); + } + + classes = $.trim($src.attr('class')); + + if (classes) { + classes = '' + classes; // for IE which returns object + + $(classes.split(/\s+/)).each(function () { + // Only adapt non-Select2 classes + if (this.indexOf('select2-') !== 0) { + adapted = adapter(this); + + if (adapted != null) { + replacements.push(adapted); + } + } + }); + } + + $dest.attr('class', replacements.join(' ')); + } + + return { + syncCssClasses: syncCssClasses + }; +}); + +S2.define('select2/compat/containerCss',[ + 'jquery', + './utils' +], function ($, CompatUtils) { + // No-op CSS adapter that discards all classes by default + function _containerAdapter (clazz) { + return null; + } + + function ContainerCSS () { } + + ContainerCSS.prototype.render = function (decorated) { + var $container = decorated.call(this); + + var containerCssClass = this.options.get('containerCssClass') || ''; + + if ($.isFunction(containerCssClass)) { + containerCssClass = containerCssClass(this.$element); + } + + var containerCssAdapter = this.options.get('adaptContainerCssClass'); + containerCssAdapter = containerCssAdapter || _containerAdapter; + + if (containerCssClass.indexOf(':all:') !== -1) { + containerCssClass = containerCssClass.replace(':all', ''); + + var _cssAdapter = containerCssAdapter; + + containerCssAdapter = function (clazz) { + var adapted = _cssAdapter(clazz); + + if (adapted != null) { + // Append the old one along with the adapted one + return adapted + ' ' + clazz; + } + + return clazz; + }; + } + + var containerCss = this.options.get('containerCss') || {}; + + if ($.isFunction(containerCss)) { + containerCss = containerCss(this.$element); + } + + CompatUtils.syncCssClasses($container, this.$element, containerCssAdapter); + + $container.css(containerCss); + $container.addClass(containerCssClass); + + return $container; + }; + + return ContainerCSS; +}); + +S2.define('select2/compat/dropdownCss',[ + 'jquery', + './utils' +], function ($, CompatUtils) { + // No-op CSS adapter that discards all classes by default + function _dropdownAdapter (clazz) { + return null; + } + + function DropdownCSS () { } + + DropdownCSS.prototype.render = function (decorated) { + var $dropdown = decorated.call(this); + + var dropdownCssClass = this.options.get('dropdownCssClass') || ''; + + if ($.isFunction(dropdownCssClass)) { + dropdownCssClass = dropdownCssClass(this.$element); + } + + var dropdownCssAdapter = this.options.get('adaptDropdownCssClass'); + dropdownCssAdapter = dropdownCssAdapter || _dropdownAdapter; + + if (dropdownCssClass.indexOf(':all:') !== -1) { + dropdownCssClass = dropdownCssClass.replace(':all', ''); + + var _cssAdapter = dropdownCssAdapter; + + dropdownCssAdapter = function (clazz) { + var adapted = _cssAdapter(clazz); + + if (adapted != null) { + // Append the old one along with the adapted one + return adapted + ' ' + clazz; + } + + return clazz; + }; + } + + var dropdownCss = this.options.get('dropdownCss') || {}; + + if ($.isFunction(dropdownCss)) { + dropdownCss = dropdownCss(this.$element); + } + + CompatUtils.syncCssClasses($dropdown, this.$element, dropdownCssAdapter); + + $dropdown.css(dropdownCss); + $dropdown.addClass(dropdownCssClass); + + return $dropdown; + }; + + return DropdownCSS; +}); + +S2.define('select2/compat/initSelection',[ + 'jquery' +], function ($) { + function InitSelection (decorated, $element, options) { + if (options.get('debug') && window.console && console.warn) { + console.warn( + 'Select2: The `initSelection` option has been deprecated in favor' + + ' of a custom data adapter that overrides the `current` method. ' + + 'This method is now called multiple times instead of a single ' + + 'time when the instance is initialized. Support will be removed ' + + 'for the `initSelection` option in future versions of Select2' + ); + } + + this.initSelection = options.get('initSelection'); + this._isInitialized = false; + + decorated.call(this, $element, options); + } + + InitSelection.prototype.current = function (decorated, callback) { + var self = this; + + if (this._isInitialized) { + decorated.call(this, callback); + + return; + } + + this.initSelection.call(null, this.$element, function (data) { + self._isInitialized = true; + + if (!$.isArray(data)) { + data = [data]; + } + + callback(data); + }); + }; + + return InitSelection; +}); + +S2.define('select2/compat/inputData',[ + 'jquery' +], function ($) { + function InputData (decorated, $element, options) { + this._currentData = []; + this._valueSeparator = options.get('valueSeparator') || ','; + + if ($element.prop('type') === 'hidden') { + if (options.get('debug') && console && console.warn) { + console.warn( + 'Select2: Using a hidden input with Select2 is no longer ' + + 'supported and may stop working in the future. It is recommended ' + + 'to use a `` element instead.' - ); - } - } - - decorated.call(this, $element, options); - } - - InputData.prototype.current = function (_, callback) { - function getSelected (data, selectedIds) { - var selected = []; - - if (data.selected || $.inArray(data.id, selectedIds) !== -1) { - data.selected = true; - selected.push(data); - } else { - data.selected = false; - } - - if (data.children) { - selected.push.apply(selected, getSelected(data.children, selectedIds)); - } - - return selected; - } - - var selected = []; - - for (var d = 0; d < this._currentData.length; d++) { - var data = this._currentData[d]; - - selected.push.apply( - selected, - getSelected( - data, - this.$element.val().split( - this._valueSeparator - ) - ) - ); - } - - callback(selected); - }; - - InputData.prototype.select = function (_, data) { - if (!this.options.get('multiple')) { - this.current(function (allData) { - $.map(allData, function (data) { - data.selected = false; - }); - }); - - this.$element.val(data.id); - this.$element.trigger('change'); - } else { - var value = this.$element.val(); - value += this._valueSeparator + data.id; - - this.$element.val(value); - this.$element.trigger('change'); - } - }; - - InputData.prototype.unselect = function (_, data) { - var self = this; - - data.selected = false; - - this.current(function (allData) { - var values = []; - - for (var d = 0; d < allData.length; d++) { - var item = allData[d]; - - if (data.id == item.id) { - continue; - } - - values.push(item.id); - } - - self.$element.val(values.join(self._valueSeparator)); - self.$element.trigger('change'); - }); - }; - - InputData.prototype.query = function (_, params, callback) { - var results = []; - - for (var d = 0; d < this._currentData.length; d++) { - var data = this._currentData[d]; - - var matches = this.matches(params, data); - - if (matches !== null) { - results.push(matches); - } - } - - callback({ - results: results - }); - }; - - InputData.prototype.addOptions = function (_, $options) { - var options = $.map($options, function (option) { - return $.data(option, 'data'); - }); - - this._currentData.push.apply(this._currentData, options); - }; - - return InputData; -}); - -S2.define('select2/compat/query',[ - -], function () { - function Query (decorated, $element, options) { - if (options.get('debug') && window.console && console.warn) { - console.warn( - 'Select2: The `query` option has been deprecated in favor of a ' + - 'custom data adapter that overrides the `query` method. Support ' + - 'will be removed for the `query` option in future versions of ' + - 'Select2.' - ); - } - - decorated.call(this, $element, options); - } - - Query.prototype.query = function (_, params, callback) { - params.callback = callback; - - var query = this.options.get('query'); - - query.call(null, params); - }; - - return Query; -}); - -S2.define('select2/dropdown/attachContainer',[ - -], function () { - function AttachContainer (decorated, $element, options) { - decorated.call(this, $element, options); - } - - AttachContainer.prototype.position = - function (decorated, $dropdown, $container) { - var $dropdownContainer = $container.find('.dropdown-wrapper'); - $dropdownContainer.append($dropdown); - - $dropdown.addClass('select2-dropdown--below'); - $container.addClass('select2-container--below'); - }; - - return AttachContainer; -}); - -S2.define('select2/dropdown/stopPropagation',[ - -], function () { - function StopPropagation () { } - - StopPropagation.prototype.bind = function (decorated, container, $container) { - decorated.call(this, container, $container); - - var stoppedEvents = [ - 'blur', - 'change', - 'click', - 'dblclick', - 'focus', - 'focusin', - 'focusout', - 'input', - 'keydown', - 'keyup', - 'keypress', - 'mousedown', - 'mouseenter', - 'mouseleave', - 'mousemove', - 'mouseover', - 'mouseup', - 'search', - 'touchend', - 'touchstart' - ]; - - this.$dropdown.on(stoppedEvents.join(' '), function (evt) { - evt.stopPropagation(); - }); - }; - - return StopPropagation; -}); - -S2.define('select2/selection/stopPropagation',[ - -], function () { - function StopPropagation () { } - - StopPropagation.prototype.bind = function (decorated, container, $container) { - decorated.call(this, container, $container); - - var stoppedEvents = [ - 'blur', - 'change', - 'click', - 'dblclick', - 'focus', - 'focusin', - 'focusout', - 'input', - 'keydown', - 'keyup', - 'keypress', - 'mousedown', - 'mouseenter', - 'mouseleave', - 'mousemove', - 'mouseover', - 'mouseup', - 'search', - 'touchend', - 'touchstart' - ]; - - this.$selection.on(stoppedEvents.join(' '), function (evt) { - evt.stopPropagation(); - }); - }; - - return StopPropagation; -}); - -S2.define('jquery.select2',[ - 'jquery', - './select2/core', - './select2/defaults' -], function ($, Select2, Defaults) { - // Force jQuery.mousewheel to be loaded if it hasn't already - try { - require('jquery.mousewheel'); - } catch (Exception) { } - - if ($.fn.select2 == null) { - $.fn.select2 = function (options) { - options = options || {}; - - if (typeof options === 'object') { - this.each(function () { - var instanceOptions = $.extend({}, options, true); - - var instance = new Select2($(this), instanceOptions); - }); - - return this; - } else if (typeof options === 'string') { - var instance = this.data('select2'); - var args = Array.prototype.slice.call(arguments, 1); - - return instance[options](args); - } else { - throw new Error('Invalid arguments for Select2: ' + options); - } - }; - } - - if ($.fn.select2.defaults == null) { - $.fn.select2.defaults = Defaults; - } - - return Select2; -}); - // Return the AMD loader configuration so it can be used outside of this file return { define: S2.define, @@ -5827,7 +6107,7 @@ S2.define('jquery.select2',[ // Hold the AMD module references on the jQuery function that was just loaded // This allows Select2 to use the internal loader outside of this file, such // as in the language files. - $.fn.select2.amd = S2; + jQuery.fn.select2.amd = S2; // Return the Select2 instance for anyone who is importing it. return select2; diff --git a/awx/ui/client/lib/select2/dist/js/select2.full.min.js b/awx/ui/client/lib/select2/dist/js/select2.full.min.js index abe338a496..59d8c1aaa6 100644 --- a/awx/ui/client/lib/select2/dist/js/select2.full.min.js +++ b/awx/ui/client/lib/select2/dist/js/select2.full.min.js @@ -1,3 +1,3 @@ -/*! Select2 4.0.0-rc.2 | https://github.com/select2/select2/blob/master/LICENSE.md */!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):a("object"==typeof exports?require("jquery"):jQuery)}(function(a){var b=function(){if(a&&a.fn&&a.fn.select2&&a.fn.select2.amd)var b=a.fn.select2.amd;var b;return function(){if(!b||!b.requirejs){b?c=b:b={};var a,c,d;!function(b){function e(a,b){return u.call(a,b)}function f(a,b){var c,d,e,f,g,h,i,j,k,l,m,n=b&&b.split("/"),o=s.map,p=o&&o["*"]||{};if(a&&"."===a.charAt(0))if(b){for(n=n.slice(0,n.length-1),a=a.split("/"),g=a.length-1,s.nodeIdCompat&&w.test(a[g])&&(a[g]=a[g].replace(w,"")),a=n.concat(a),k=0;k0&&(a.splice(k-1,2),k-=2)}a=a.join("/")}else 0===a.indexOf("./")&&(a=a.substring(2));if((n||p)&&o){for(c=a.split("/"),k=c.length;k>0;k-=1){if(d=c.slice(0,k).join("/"),n)for(l=n.length;l>0;l-=1)if(e=o[n.slice(0,l).join("/")],e&&(e=e[d])){f=e,h=k;break}if(f)break;!i&&p&&p[d]&&(i=p[d],j=k)}!f&&i&&(f=i,h=j),f&&(c.splice(0,h,f),a=c.join("/"))}return a}function g(a,c){return function(){return n.apply(b,v.call(arguments,0).concat([a,c]))}}function h(a){return function(b){return f(b,a)}}function i(a){return function(b){q[a]=b}}function j(a){if(e(r,a)){var c=r[a];delete r[a],t[a]=!0,m.apply(b,c)}if(!e(q,a)&&!e(t,a))throw new Error("No "+a);return q[a]}function k(a){var b,c=a?a.indexOf("!"):-1;return c>-1&&(b=a.substring(0,c),a=a.substring(c+1,a.length)),[b,a]}function l(a){return function(){return s&&s.config&&s.config[a]||{}}}var m,n,o,p,q={},r={},s={},t={},u=Object.prototype.hasOwnProperty,v=[].slice,w=/\.js$/;o=function(a,b){var c,d=k(a),e=d[0];return a=d[1],e&&(e=f(e,b),c=j(e)),e?a=c&&c.normalize?c.normalize(a,h(b)):f(a,b):(a=f(a,b),d=k(a),e=d[0],a=d[1],e&&(c=j(e))),{f:e?e+"!"+a:a,n:a,pr:e,p:c}},p={require:function(a){return g(a)},exports:function(a){var b=q[a];return"undefined"!=typeof b?b:q[a]={}},module:function(a){return{id:a,uri:"",exports:q[a],config:l(a)}}},m=function(a,c,d,f){var h,k,l,m,n,s,u=[],v=typeof d;if(f=f||a,"undefined"===v||"function"===v){for(c=!c.length&&d.length?["require","exports","module"]:c,n=0;n0&&(b.call(arguments,a.prototype.constructor),e=c.prototype.constructor),e.apply(this,arguments)}function e(){this.constructor=d}var f=b(c),g=b(a);c.displayName=a.displayName,d.prototype=new e;for(var h=0;hc;c++)a[c].apply(this,b)},c.Observable=d,c.generateChars=function(a){for(var b="",c=0;a>c;c++){var d=Math.floor(36*Math.random());b+=d.toString(36)}return b},c.bind=function(a,b){return function(){a.apply(b,arguments)}},c._convertData=function(a){for(var b in a){var c=b.split("-"),d=a;if(1!==c.length){for(var e=0;e":">",'"':""","'":"'","/":"/"};return"string"!=typeof a?a:String(a).replace(/[&<>"'\/\\]/g,function(a){return b[a]})},c}),b.define("select2/results",["jquery","./utils"],function(a,b){function c(a,b,d){this.$element=a,this.data=d,this.options=b,c.__super__.constructor.call(this)}return b.Extend(c,b.Observable),c.prototype.render=function(){var b=a('
    ');return this.options.get("multiple")&&b.attr("aria-multiselectable","true"),this.$results=b,b},c.prototype.clear=function(){this.$results.empty()},c.prototype.displayMessage=function(b){var c=this.options.get("escapeMarkup");this.clear(),this.hideLoading();var d=a('
  • '),e=this.options.get("translations").get(b.message);d.append(c(e(b.args))),this.$results.append(d)},c.prototype.append=function(a){this.hideLoading();var b=[];if(null==a.results||0===a.results.length)return void(0===this.$results.children().length&&this.trigger("results:message",{message:"noResults"}));a.results=this.sort(a.results);for(var c=0;c-1?b.attr("aria-selected","true"):b.attr("aria-selected","false")});var f=e.filter("[aria-selected=true]");f.length>0?f.first().trigger("mouseenter"):e.first().trigger("mouseenter")})},c.prototype.showLoading=function(a){this.hideLoading();var b=this.options.get("translations").get("searching"),c={disabled:!0,loading:!0,text:b(a)},d=this.option(c);d.className+=" loading-results",this.$results.prepend(d)},c.prototype.hideLoading=function(){this.$results.find(".loading-results").remove()},c.prototype.option=function(b){var c=document.createElement("li");c.className="select2-results__option";var d={role:"treeitem","aria-selected":"false"};b.disabled&&(delete d["aria-selected"],d["aria-disabled"]="true"),null==b.id&&delete d["aria-selected"],null!=b._resultId&&(c.id=b._resultId),b.title&&(c.title=b.title),b.children&&(d.role="group",d["aria-label"]=b.text,delete d["aria-selected"]);for(var e in d){var f=d[e];c.setAttribute(e,f)}if(b.children){var g=a(c),h=document.createElement("strong");h.className="select2-results__group";{a(h)}this.template(b,h);for(var i=[],j=0;j",{"class":"select2-results__options select2-results__options--nested"});m.append(i),g.append(h),g.append(m)}else this.template(b,c);return a.data(c,"data",b),c},c.prototype.bind=function(b){var c=this,d=b.id+"-results";this.$results.attr("id",d),b.on("results:all",function(a){c.clear(),c.append(a.data),b.isOpen()&&c.setClasses()}),b.on("results:append",function(a){c.append(a.data),b.isOpen()&&c.setClasses()}),b.on("query",function(a){c.showLoading(a)}),b.on("select",function(){b.isOpen()&&c.setClasses()}),b.on("unselect",function(){b.isOpen()&&c.setClasses()}),b.on("open",function(){c.$results.attr("aria-expanded","true"),c.$results.attr("aria-hidden","false"),c.setClasses(),c.ensureHighlightVisible()}),b.on("close",function(){c.$results.attr("aria-expanded","false"),c.$results.attr("aria-hidden","true"),c.$results.removeAttr("aria-activedescendant")}),b.on("results:toggle",function(){var a=c.getHighlightedResults();0!==a.length&&a.trigger("mouseup")}),b.on("results:select",function(){var a=c.getHighlightedResults();if(0!==a.length){var b=a.data("data");"true"==a.attr("aria-selected")?c.trigger("close"):c.trigger("select",{data:b})}}),b.on("results:previous",function(){var a=c.getHighlightedResults(),b=c.$results.find("[aria-selected]"),d=b.index(a);if(0!==d){var e=d-1;0===a.length&&(e=0);var f=b.eq(e);f.trigger("mouseenter");var g=c.$results.offset().top,h=f.offset().top,i=c.$results.scrollTop()+(h-g);0===e?c.$results.scrollTop(0):0>h-g&&c.$results.scrollTop(i)}}),b.on("results:next",function(){var a=c.getHighlightedResults(),b=c.$results.find("[aria-selected]"),d=b.index(a),e=d+1;if(!(e>=b.length)){var f=b.eq(e);f.trigger("mouseenter");var g=c.$results.offset().top+c.$results.outerHeight(!1),h=f.offset().top+f.outerHeight(!1),i=c.$results.scrollTop()+h-g;0===e?c.$results.scrollTop(0):h>g&&c.$results.scrollTop(i)}}),b.on("results:focus",function(a){a.element.addClass("select2-results__option--highlighted")}),b.on("results:message",function(a){c.displayMessage(a)}),a.fn.mousewheel&&this.$results.on("mousewheel",function(a){var b=c.$results.scrollTop(),d=c.$results.get(0).scrollHeight-c.$results.scrollTop()+a.deltaY,e=a.deltaY>0&&b-a.deltaY<=0,f=a.deltaY<0&&d<=c.$results.height();e?(c.$results.scrollTop(0),a.preventDefault(),a.stopPropagation()):f&&(c.$results.scrollTop(c.$results.get(0).scrollHeight-c.$results.height()),a.preventDefault(),a.stopPropagation())}),this.$results.on("mouseup",".select2-results__option[aria-selected]",function(b){var d=a(this),e=d.data("data");return"true"===d.attr("aria-selected")?void(c.options.get("multiple")?c.trigger("unselect",{originalEvent:b,data:e}):c.trigger("close")):void c.trigger("select",{originalEvent:b,data:e})}),this.$results.on("mouseenter",".select2-results__option[aria-selected]",function(){var b=a(this).data("data");c.getHighlightedResults().removeClass("select2-results__option--highlighted"),c.trigger("results:focus",{data:b,element:a(this)})})},c.prototype.getHighlightedResults=function(){var a=this.$results.find(".select2-results__option--highlighted");return a},c.prototype.destroy=function(){this.$results.remove()},c.prototype.ensureHighlightVisible=function(){var a=this.getHighlightedResults();if(0!==a.length){var b=this.$results.find("[aria-selected]"),c=b.index(a),d=this.$results.offset().top,e=a.offset().top,f=this.$results.scrollTop()+(e-d),g=e-d;f-=2*a.outerHeight(!1),2>=c?this.$results.scrollTop(0):(g>this.$results.outerHeight()||0>g)&&this.$results.scrollTop(f)}},c.prototype.template=function(b,c){var d=this.options.get("templateResult"),e=this.options.get("escapeMarkup"),f=d(b);null==f?c.style.display="none":"string"==typeof f?c.innerHTML=e(f):a(c).append(f)},c}),b.define("select2/keys",[],function(){var a={BACKSPACE:8,TAB:9,ENTER:13,SHIFT:16,CTRL:17,ALT:18,ESC:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,DELETE:46};return a}),b.define("select2/selection/base",["jquery","../utils","../keys"],function(a,b,c){function d(a,b){this.$element=a,this.options=b,d.__super__.constructor.call(this)}return b.Extend(d,b.Observable),d.prototype.render=function(){var b=a('');return this._tabindex=0,null!=this.$element.data("old-tabindex")?this._tabindex=this.$element.data("old-tabindex"):null!=this.$element.attr("tabindex")&&(this._tabindex=this.$element.attr("tabindex")),b.attr("title",this.$element.attr("title")),b.attr("tabindex",this._tabindex),this.$selection=b,b},d.prototype.bind=function(a){var b=this,d=(a.id+"-container",a.id+"-results");this.container=a,this.$selection.on("focus",function(a){b.trigger("focus",a)}),this.$selection.on("blur",function(a){b.trigger("blur",a)}),this.$selection.on("keydown",function(a){b.trigger("keypress",a),a.which===c.SPACE&&a.preventDefault()}),a.on("results:focus",function(a){b.$selection.attr("aria-activedescendant",a.data._resultId)}),a.on("selection:update",function(a){b.update(a.data)}),a.on("open",function(){b.$selection.attr("aria-expanded","true"),b.$selection.attr("aria-owns",d),b._attachCloseHandler(a)}),a.on("close",function(){b.$selection.attr("aria-expanded","false"),b.$selection.removeAttr("aria-activedescendant"),b.$selection.removeAttr("aria-owns"),b.$selection.focus(),b._detachCloseHandler(a)}),a.on("enable",function(){b.$selection.attr("tabindex",b._tabindex)}),a.on("disable",function(){b.$selection.attr("tabindex","-1")})},d.prototype._attachCloseHandler=function(b){a(document.body).on("mousedown.select2."+b.id,function(b){var c=a(b.target),d=c.closest(".select2"),e=a(".select2.select2-container--open");e.each(function(){var b=a(this);if(this!=d[0]){var c=b.data("element");c.select2("close")}})})},d.prototype._detachCloseHandler=function(b){a(document.body).off("mousedown.select2."+b.id)},d.prototype.position=function(a,b){var c=b.find(".selection");c.append(a)},d.prototype.destroy=function(){this._detachCloseHandler(this.container)},d.prototype.update=function(){throw new Error("The `update` method must be defined in child classes.")},d}),b.define("select2/selection/single",["jquery","./base","../utils","../keys"],function(a,b,c){function d(){d.__super__.constructor.apply(this,arguments)}return c.Extend(d,b),d.prototype.render=function(){var a=d.__super__.render.call(this);return a.addClass("select2-selection--single"),a.html(''),a},d.prototype.bind=function(a){var b=this;d.__super__.bind.apply(this,arguments);var c=a.id+"-container";this.$selection.find(".select2-selection__rendered").attr("id",c),this.$selection.attr("aria-labelledby",c),this.$selection.on("mousedown",function(a){1===a.which&&b.trigger("toggle",{originalEvent:a})}),this.$selection.on("focus",function(){}),this.$selection.on("blur",function(){}),a.on("selection:update",function(a){b.update(a.data)})},d.prototype.clear=function(){this.$selection.find(".select2-selection__rendered").empty()},d.prototype.display=function(a){var b=this.options.get("templateSelection"),c=this.options.get("escapeMarkup");return c(b(a))},d.prototype.selectionContainer=function(){return a("")},d.prototype.update=function(a){if(0===a.length)return void this.clear();var b=a[0],c=this.display(b),d=this.$selection.find(".select2-selection__rendered");d.empty().append(c),d.prop("title",b.title||b.text)},d}),b.define("select2/selection/multiple",["jquery","./base","../utils"],function(a,b,c){function d(){d.__super__.constructor.apply(this,arguments)}return c.Extend(d,b),d.prototype.render=function(){var a=d.__super__.render.call(this);return a.addClass("select2-selection--multiple"),a.html('
      '),a},d.prototype.bind=function(){var b=this;d.__super__.bind.apply(this,arguments),this.$selection.on("click",function(a){b.trigger("toggle",{originalEvent:a})}),this.$selection.on("click",".select2-selection__choice__remove",function(c){var d=a(this),e=d.parent(),f=e.data("data");b.trigger("unselect",{originalEvent:c,data:f})})},d.prototype.clear=function(){this.$selection.find(".select2-selection__rendered").empty()},d.prototype.display=function(a){var b=this.options.get("templateSelection"),c=this.options.get("escapeMarkup");return c(b(a))},d.prototype.selectionContainer=function(){var b=a('
    • ×
    • ');return b},d.prototype.update=function(b){if(this.clear(),0!==b.length){for(var c=a(),d=0;d1;if(d||c)return a.call(this,b);this.clear();var e=this.createPlaceholder(this.placeholder);this.$selection.find(".select2-selection__rendered").append(e)},a}),b.define("select2/selection/allowClear",["jquery"],function(a){function b(){}return b.prototype.bind=function(b,c,d){var e=this;b.call(this,c,d),null==e.placeholder&&e.options.get("debug")&&window.console&&console.error&&console.error("Select2: The `allowClear` option should be used in combination with the `placeholder` option."),this.$selection.on("mousedown",".select2-selection__clear",function(b){if(!e.options.get("disabled")){b.stopPropagation();for(var c=a(this).data("data"),d=0;d0||0===c.length)){var d=a('×');d.data("data",c),this.$selection.find(".select2-selection__rendered").prepend(d)}},b}),b.define("select2/selection/search",["jquery","../utils","../keys"],function(a,b,c){function d(a,b,c){a.call(this,b,c)}return d.prototype.render=function(b){var c=a('');this.$searchContainer=c,this.$search=c.find("input");var d=b.call(this);return d},d.prototype.bind=function(a,b,d){var e=this;a.call(this,b,d),b.on("open",function(){e.$search.attr("tabindex",0),e.$search.focus()}),b.on("close",function(){e.$search.attr("tabindex",-1),e.$search.val(""),e.$search.focus()}),b.on("enable",function(){e.$search.prop("disabled",!1)}),b.on("disable",function(){e.$search.prop("disabled",!0)}),this.$selection.on("focusin",".select2-search--inline",function(a){e.trigger("focus",a)}),this.$selection.on("focusout",".select2-search--inline",function(a){e.trigger("blur",a)}),this.$selection.on("keydown",".select2-search--inline",function(a){a.stopPropagation(),e.trigger("keypress",a),e._keyUpPrevented=a.isDefaultPrevented();var b=a.which;if(b===c.BACKSPACE&&""===e.$search.val()){var d=e.$searchContainer.prev(".select2-selection__choice");if(d.length>0){var f=d.data("data");e.searchRemoveChoice(f)}}}),this.$selection.on("input",".select2-search--inline",function(){e.$selection.off("keyup.search")}),this.$selection.on("keyup.search input",".select2-search--inline",function(a){e.handleSearch(a)})},d.prototype.createPlaceholder=function(a,b){this.$search.attr("placeholder",b.text)},d.prototype.update=function(a,b){this.$search.attr("placeholder",""),a.call(this,b),this.$selection.find(".select2-selection__rendered").append(this.$searchContainer),this.resizeSearch()},d.prototype.handleSearch=function(){if(this.resizeSearch(),!this._keyUpPrevented){var a=this.$search.val();this.trigger("query",{term:a})}this._keyUpPrevented=!1},d.prototype.searchRemoveChoice=function(a,b){this.trigger("unselect",{data:b}),this.trigger("open"),this.$search.val(b.text+" ")},d.prototype.resizeSearch=function(){this.$search.css("width","25px");var a="";if(""!==this.$search.attr("placeholder"))a=this.$selection.find(".select2-selection__rendered").innerWidth();else{var b=this.$search.val().length+1;a=.75*b+"em"}this.$search.css("width",a)},d}),b.define("select2/selection/eventRelay",["jquery"],function(a){function b(){}return b.prototype.bind=function(b,c,d){var e=this,f=["open","opening","close","closing","select","selecting","unselect","unselecting"],g=["opening","closing","selecting","unselecting"];b.call(this,c,d),c.on("*",function(b,c){if(-1!==a.inArray(b,f)){c=c||{};var d=a.Event("select2:"+b,{params:c});e.$element.trigger(d),-1!==a.inArray(b,g)&&(c.prevented=d.isDefaultPrevented())}})},b}),b.define("select2/translation",["jquery","require"],function(a,b){function c(a){this.dict=a||{}}return c.prototype.all=function(){return this.dict},c.prototype.get=function(a){return this.dict[a]},c.prototype.extend=function(b){this.dict=a.extend({},b.all(),this.dict)},c._cache={},c.loadPath=function(a){if(!(a in c._cache)){var d=b(a);c._cache[a]=d}return new c(c._cache[a])},c}),b.define("select2/diacritics",[],function(){var a={"Ⓐ":"A","A":"A","À":"A","Á":"A","Â":"A","Ầ":"A","Ấ":"A","Ẫ":"A","Ẩ":"A","Ã":"A","Ā":"A","Ă":"A","Ằ":"A","Ắ":"A","Ẵ":"A","Ẳ":"A","Ȧ":"A","Ǡ":"A","Ä":"A","Ǟ":"A","Ả":"A","Å":"A","Ǻ":"A","Ǎ":"A","Ȁ":"A","Ȃ":"A","Ạ":"A","Ậ":"A","Ặ":"A","Ḁ":"A","Ą":"A","Ⱥ":"A","Ɐ":"A","Ꜳ":"AA","Æ":"AE","Ǽ":"AE","Ǣ":"AE","Ꜵ":"AO","Ꜷ":"AU","Ꜹ":"AV","Ꜻ":"AV","Ꜽ":"AY","Ⓑ":"B","B":"B","Ḃ":"B","Ḅ":"B","Ḇ":"B","Ƀ":"B","Ƃ":"B","Ɓ":"B","Ⓒ":"C","C":"C","Ć":"C","Ĉ":"C","Ċ":"C","Č":"C","Ç":"C","Ḉ":"C","Ƈ":"C","Ȼ":"C","Ꜿ":"C","Ⓓ":"D","D":"D","Ḋ":"D","Ď":"D","Ḍ":"D","Ḑ":"D","Ḓ":"D","Ḏ":"D","Đ":"D","Ƌ":"D","Ɗ":"D","Ɖ":"D","Ꝺ":"D","DZ":"DZ","DŽ":"DZ","Dz":"Dz","Dž":"Dz","Ⓔ":"E","E":"E","È":"E","É":"E","Ê":"E","Ề":"E","Ế":"E","Ễ":"E","Ể":"E","Ẽ":"E","Ē":"E","Ḕ":"E","Ḗ":"E","Ĕ":"E","Ė":"E","Ë":"E","Ẻ":"E","Ě":"E","Ȅ":"E","Ȇ":"E","Ẹ":"E","Ệ":"E","Ȩ":"E","Ḝ":"E","Ę":"E","Ḙ":"E","Ḛ":"E","Ɛ":"E","Ǝ":"E","Ⓕ":"F","F":"F","Ḟ":"F","Ƒ":"F","Ꝼ":"F","Ⓖ":"G","G":"G","Ǵ":"G","Ĝ":"G","Ḡ":"G","Ğ":"G","Ġ":"G","Ǧ":"G","Ģ":"G","Ǥ":"G","Ɠ":"G","Ꞡ":"G","Ᵹ":"G","Ꝿ":"G","Ⓗ":"H","H":"H","Ĥ":"H","Ḣ":"H","Ḧ":"H","Ȟ":"H","Ḥ":"H","Ḩ":"H","Ḫ":"H","Ħ":"H","Ⱨ":"H","Ⱶ":"H","Ɥ":"H","Ⓘ":"I","I":"I","Ì":"I","Í":"I","Î":"I","Ĩ":"I","Ī":"I","Ĭ":"I","İ":"I","Ï":"I","Ḯ":"I","Ỉ":"I","Ǐ":"I","Ȉ":"I","Ȋ":"I","Ị":"I","Į":"I","Ḭ":"I","Ɨ":"I","Ⓙ":"J","J":"J","Ĵ":"J","Ɉ":"J","Ⓚ":"K","K":"K","Ḱ":"K","Ǩ":"K","Ḳ":"K","Ķ":"K","Ḵ":"K","Ƙ":"K","Ⱪ":"K","Ꝁ":"K","Ꝃ":"K","Ꝅ":"K","Ꞣ":"K","Ⓛ":"L","L":"L","Ŀ":"L","Ĺ":"L","Ľ":"L","Ḷ":"L","Ḹ":"L","Ļ":"L","Ḽ":"L","Ḻ":"L","Ł":"L","Ƚ":"L","Ɫ":"L","Ⱡ":"L","Ꝉ":"L","Ꝇ":"L","Ꞁ":"L","LJ":"LJ","Lj":"Lj","Ⓜ":"M","M":"M","Ḿ":"M","Ṁ":"M","Ṃ":"M","Ɱ":"M","Ɯ":"M","Ⓝ":"N","N":"N","Ǹ":"N","Ń":"N","Ñ":"N","Ṅ":"N","Ň":"N","Ṇ":"N","Ņ":"N","Ṋ":"N","Ṉ":"N","Ƞ":"N","Ɲ":"N","Ꞑ":"N","Ꞥ":"N","NJ":"NJ","Nj":"Nj","Ⓞ":"O","O":"O","Ò":"O","Ó":"O","Ô":"O","Ồ":"O","Ố":"O","Ỗ":"O","Ổ":"O","Õ":"O","Ṍ":"O","Ȭ":"O","Ṏ":"O","Ō":"O","Ṑ":"O","Ṓ":"O","Ŏ":"O","Ȯ":"O","Ȱ":"O","Ö":"O","Ȫ":"O","Ỏ":"O","Ő":"O","Ǒ":"O","Ȍ":"O","Ȏ":"O","Ơ":"O","Ờ":"O","Ớ":"O","Ỡ":"O","Ở":"O","Ợ":"O","Ọ":"O","Ộ":"O","Ǫ":"O","Ǭ":"O","Ø":"O","Ǿ":"O","Ɔ":"O","Ɵ":"O","Ꝋ":"O","Ꝍ":"O","Ƣ":"OI","Ꝏ":"OO","Ȣ":"OU","Ⓟ":"P","P":"P","Ṕ":"P","Ṗ":"P","Ƥ":"P","Ᵽ":"P","Ꝑ":"P","Ꝓ":"P","Ꝕ":"P","Ⓠ":"Q","Q":"Q","Ꝗ":"Q","Ꝙ":"Q","Ɋ":"Q","Ⓡ":"R","R":"R","Ŕ":"R","Ṙ":"R","Ř":"R","Ȑ":"R","Ȓ":"R","Ṛ":"R","Ṝ":"R","Ŗ":"R","Ṟ":"R","Ɍ":"R","Ɽ":"R","Ꝛ":"R","Ꞧ":"R","Ꞃ":"R","Ⓢ":"S","S":"S","ẞ":"S","Ś":"S","Ṥ":"S","Ŝ":"S","Ṡ":"S","Š":"S","Ṧ":"S","Ṣ":"S","Ṩ":"S","Ș":"S","Ş":"S","Ȿ":"S","Ꞩ":"S","Ꞅ":"S","Ⓣ":"T","T":"T","Ṫ":"T","Ť":"T","Ṭ":"T","Ț":"T","Ţ":"T","Ṱ":"T","Ṯ":"T","Ŧ":"T","Ƭ":"T","Ʈ":"T","Ⱦ":"T","Ꞇ":"T","Ꜩ":"TZ","Ⓤ":"U","U":"U","Ù":"U","Ú":"U","Û":"U","Ũ":"U","Ṹ":"U","Ū":"U","Ṻ":"U","Ŭ":"U","Ü":"U","Ǜ":"U","Ǘ":"U","Ǖ":"U","Ǚ":"U","Ủ":"U","Ů":"U","Ű":"U","Ǔ":"U","Ȕ":"U","Ȗ":"U","Ư":"U","Ừ":"U","Ứ":"U","Ữ":"U","Ử":"U","Ự":"U","Ụ":"U","Ṳ":"U","Ų":"U","Ṷ":"U","Ṵ":"U","Ʉ":"U","Ⓥ":"V","V":"V","Ṽ":"V","Ṿ":"V","Ʋ":"V","Ꝟ":"V","Ʌ":"V","Ꝡ":"VY","Ⓦ":"W","W":"W","Ẁ":"W","Ẃ":"W","Ŵ":"W","Ẇ":"W","Ẅ":"W","Ẉ":"W","Ⱳ":"W","Ⓧ":"X","X":"X","Ẋ":"X","Ẍ":"X","Ⓨ":"Y","Y":"Y","Ỳ":"Y","Ý":"Y","Ŷ":"Y","Ỹ":"Y","Ȳ":"Y","Ẏ":"Y","Ÿ":"Y","Ỷ":"Y","Ỵ":"Y","Ƴ":"Y","Ɏ":"Y","Ỿ":"Y","Ⓩ":"Z","Z":"Z","Ź":"Z","Ẑ":"Z","Ż":"Z","Ž":"Z","Ẓ":"Z","Ẕ":"Z","Ƶ":"Z","Ȥ":"Z","Ɀ":"Z","Ⱬ":"Z","Ꝣ":"Z","ⓐ":"a","a":"a","ẚ":"a","à":"a","á":"a","â":"a","ầ":"a","ấ":"a","ẫ":"a","ẩ":"a","ã":"a","ā":"a","ă":"a","ằ":"a","ắ":"a","ẵ":"a","ẳ":"a","ȧ":"a","ǡ":"a","ä":"a","ǟ":"a","ả":"a","å":"a","ǻ":"a","ǎ":"a","ȁ":"a","ȃ":"a","ạ":"a","ậ":"a","ặ":"a","ḁ":"a","ą":"a","ⱥ":"a","ɐ":"a","ꜳ":"aa","æ":"ae","ǽ":"ae","ǣ":"ae","ꜵ":"ao","ꜷ":"au","ꜹ":"av","ꜻ":"av","ꜽ":"ay","ⓑ":"b","b":"b","ḃ":"b","ḅ":"b","ḇ":"b","ƀ":"b","ƃ":"b","ɓ":"b","ⓒ":"c","c":"c","ć":"c","ĉ":"c","ċ":"c","č":"c","ç":"c","ḉ":"c","ƈ":"c","ȼ":"c","ꜿ":"c","ↄ":"c","ⓓ":"d","d":"d","ḋ":"d","ď":"d","ḍ":"d","ḑ":"d","ḓ":"d","ḏ":"d","đ":"d","ƌ":"d","ɖ":"d","ɗ":"d","ꝺ":"d","dz":"dz","dž":"dz","ⓔ":"e","e":"e","è":"e","é":"e","ê":"e","ề":"e","ế":"e","ễ":"e","ể":"e","ẽ":"e","ē":"e","ḕ":"e","ḗ":"e","ĕ":"e","ė":"e","ë":"e","ẻ":"e","ě":"e","ȅ":"e","ȇ":"e","ẹ":"e","ệ":"e","ȩ":"e","ḝ":"e","ę":"e","ḙ":"e","ḛ":"e","ɇ":"e","ɛ":"e","ǝ":"e","ⓕ":"f","f":"f","ḟ":"f","ƒ":"f","ꝼ":"f","ⓖ":"g","g":"g","ǵ":"g","ĝ":"g","ḡ":"g","ğ":"g","ġ":"g","ǧ":"g","ģ":"g","ǥ":"g","ɠ":"g","ꞡ":"g","ᵹ":"g","ꝿ":"g","ⓗ":"h","h":"h","ĥ":"h","ḣ":"h","ḧ":"h","ȟ":"h","ḥ":"h","ḩ":"h","ḫ":"h","ẖ":"h","ħ":"h","ⱨ":"h","ⱶ":"h","ɥ":"h","ƕ":"hv","ⓘ":"i","i":"i","ì":"i","í":"i","î":"i","ĩ":"i","ī":"i","ĭ":"i","ï":"i","ḯ":"i","ỉ":"i","ǐ":"i","ȉ":"i","ȋ":"i","ị":"i","į":"i","ḭ":"i","ɨ":"i","ı":"i","ⓙ":"j","j":"j","ĵ":"j","ǰ":"j","ɉ":"j","ⓚ":"k","k":"k","ḱ":"k","ǩ":"k","ḳ":"k","ķ":"k","ḵ":"k","ƙ":"k","ⱪ":"k","ꝁ":"k","ꝃ":"k","ꝅ":"k","ꞣ":"k","ⓛ":"l","l":"l","ŀ":"l","ĺ":"l","ľ":"l","ḷ":"l","ḹ":"l","ļ":"l","ḽ":"l","ḻ":"l","ſ":"l","ł":"l","ƚ":"l","ɫ":"l","ⱡ":"l","ꝉ":"l","ꞁ":"l","ꝇ":"l","lj":"lj","ⓜ":"m","m":"m","ḿ":"m","ṁ":"m","ṃ":"m","ɱ":"m","ɯ":"m","ⓝ":"n","n":"n","ǹ":"n","ń":"n","ñ":"n","ṅ":"n","ň":"n","ṇ":"n","ņ":"n","ṋ":"n","ṉ":"n","ƞ":"n","ɲ":"n","ʼn":"n","ꞑ":"n","ꞥ":"n","nj":"nj","ⓞ":"o","o":"o","ò":"o","ó":"o","ô":"o","ồ":"o","ố":"o","ỗ":"o","ổ":"o","õ":"o","ṍ":"o","ȭ":"o","ṏ":"o","ō":"o","ṑ":"o","ṓ":"o","ŏ":"o","ȯ":"o","ȱ":"o","ö":"o","ȫ":"o","ỏ":"o","ő":"o","ǒ":"o","ȍ":"o","ȏ":"o","ơ":"o","ờ":"o","ớ":"o","ỡ":"o","ở":"o","ợ":"o","ọ":"o","ộ":"o","ǫ":"o","ǭ":"o","ø":"o","ǿ":"o","ɔ":"o","ꝋ":"o","ꝍ":"o","ɵ":"o","ƣ":"oi","ȣ":"ou","ꝏ":"oo","ⓟ":"p","p":"p","ṕ":"p","ṗ":"p","ƥ":"p","ᵽ":"p","ꝑ":"p","ꝓ":"p","ꝕ":"p","ⓠ":"q","q":"q","ɋ":"q","ꝗ":"q","ꝙ":"q","ⓡ":"r","r":"r","ŕ":"r","ṙ":"r","ř":"r","ȑ":"r","ȓ":"r","ṛ":"r","ṝ":"r","ŗ":"r","ṟ":"r","ɍ":"r","ɽ":"r","ꝛ":"r","ꞧ":"r","ꞃ":"r","ⓢ":"s","s":"s","ß":"s","ś":"s","ṥ":"s","ŝ":"s","ṡ":"s","š":"s","ṧ":"s","ṣ":"s","ṩ":"s","ș":"s","ş":"s","ȿ":"s","ꞩ":"s","ꞅ":"s","ẛ":"s","ⓣ":"t","t":"t","ṫ":"t","ẗ":"t","ť":"t","ṭ":"t","ț":"t","ţ":"t","ṱ":"t","ṯ":"t","ŧ":"t","ƭ":"t","ʈ":"t","ⱦ":"t","ꞇ":"t","ꜩ":"tz","ⓤ":"u","u":"u","ù":"u","ú":"u","û":"u","ũ":"u","ṹ":"u","ū":"u","ṻ":"u","ŭ":"u","ü":"u","ǜ":"u","ǘ":"u","ǖ":"u","ǚ":"u","ủ":"u","ů":"u","ű":"u","ǔ":"u","ȕ":"u","ȗ":"u","ư":"u","ừ":"u","ứ":"u","ữ":"u","ử":"u","ự":"u","ụ":"u","ṳ":"u","ų":"u","ṷ":"u","ṵ":"u","ʉ":"u","ⓥ":"v","v":"v","ṽ":"v","ṿ":"v","ʋ":"v","ꝟ":"v","ʌ":"v","ꝡ":"vy","ⓦ":"w","w":"w","ẁ":"w","ẃ":"w","ŵ":"w","ẇ":"w","ẅ":"w","ẘ":"w","ẉ":"w","ⱳ":"w","ⓧ":"x","x":"x","ẋ":"x","ẍ":"x","ⓨ":"y","y":"y","ỳ":"y","ý":"y","ŷ":"y","ỹ":"y","ȳ":"y","ẏ":"y","ÿ":"y","ỷ":"y","ẙ":"y","ỵ":"y","ƴ":"y","ɏ":"y","ỿ":"y","ⓩ":"z","z":"z","ź":"z","ẑ":"z","ż":"z","ž":"z","ẓ":"z","ẕ":"z","ƶ":"z","ȥ":"z","ɀ":"z","ⱬ":"z","ꝣ":"z","Ά":"Α","Έ":"Ε","Ή":"Η","Ί":"Ι","Ϊ":"Ι","Ό":"Ο","Ύ":"Υ","Ϋ":"Υ","Ώ":"Ω","ά":"α","έ":"ε","ή":"η","ί":"ι","ϊ":"ι","ΐ":"ι","ό":"ο","ύ":"υ","ϋ":"υ","ΰ":"υ","ω":"ω","ς":"σ"};return a}),b.define("select2/data/base",["../utils"],function(a){function b(){b.__super__.constructor.call(this)}return a.Extend(b,a.Observable),b.prototype.current=function(){throw new Error("The `current` method must be defined in child classes.")},b.prototype.query=function(){throw new Error("The `query` method must be defined in child classes.")},b.prototype.bind=function(){},b.prototype.destroy=function(){},b.prototype.generateResultId=function(b,c){var d=b.id+"-result-";return d+=a.generateChars(4),d+=null!=c.id?"-"+c.id.toString():"-"+a.generateChars(4)},b}),b.define("select2/data/select",["./base","../utils","jquery"],function(a,b,c){function d(a,b){this.$element=a,this.options=b,d.__super__.constructor.call(this)}return b.Extend(d,a),d.prototype.current=function(a){var b=[],d=this;this.$element.find(":selected").each(function(){var a=c(this),e=d.item(a);b.push(e)}),a(b)},d.prototype.select=function(a){var b=this;if(c(a.element).is("option"))return a.element.selected=!0,void this.$element.trigger("change");if(this.$element.prop("multiple"))this.current(function(d){var e=[];a=[a],a.push.apply(a,d);for(var f=0;f=0){var j=e.filter(b(i)),k=this.item(j),l=(c.extend(!0,{},k,i),this.option(k));j.replaceWith(l)}else{var m=this.option(i);if(i.children){var n=this.convertToOptions(i.children);m.append(n)}g=g.add(m)}}return g},d}),b.define("select2/data/ajax",["./array","../utils","jquery"],function(a,b,c){function d(b,c){this.ajaxOptions=this._applyDefaults(c.get("ajax")),null!=this.ajaxOptions.processResults&&(this.processResults=this.ajaxOptions.processResults),a.__super__.constructor.call(this,b,c)}return b.Extend(d,a),d.prototype._applyDefaults=function(a){var b={data:function(a){return{q:a.term}},transport:function(a,b,d){var e=c.ajax(a);return e.then(b),e.fail(d),e}};return c.extend({},b,a,!0)},d.prototype.processResults=function(a){return a},d.prototype.query=function(a,b){function d(){var d=f.transport(f,function(d){var f=e.processResults(d,a);e.options.get("debug")&&window.console&&console.error&&(f&&f.results&&c.isArray(f.results)||console.error("Select2: The AJAX results did not return an array in the `results` key of the response.")),b(f)},function(){});e._request=d}var e=this;this._request&&(this._request.abort(),this._request=null);var f=c.extend({type:"GET"},this.ajaxOptions);"function"==typeof f.url&&(f.url=f.url(a)),"function"==typeof f.data&&(f.data=f.data(a)),this.ajaxOptions.delay&&""!==a.term?(this._queryTimeout&&window.clearTimeout(this._queryTimeout),this._queryTimeout=window.setTimeout(d,this.ajaxOptions.delay)):d()},d}),b.define("select2/data/tags",["jquery"],function(a){function b(b,c,d){var e=d.get("tags"),f=d.get("createTag");if(void 0!==f&&(this.createTag=f),b.call(this,c,d),a.isArray(e))for(var g=0;g0&&b.term.length>this.maximumInputLength?void this.trigger("results:message",{message:"inputTooLong",args:{maximum:this.maximumInputLength,input:b.term,params:b}}):void a.call(this,b,c)},a}),b.define("select2/data/maximumSelectionLength",[],function(){function a(a,b,c){this.maximumSelectionLength=c.get("maximumSelectionLength"),a.call(this,b,c)}return a.prototype.query=function(a,b,c){var d=this;this.current(function(e){var f=null!=e?e.length:0;return d.maximumSelectionLength>0&&f>=d.maximumSelectionLength?void d.trigger("results:message",{message:"maximumSelected",args:{maximum:d.maximumSelectionLength}}):void a.call(d,b,c)})},a}),b.define("select2/dropdown",["jquery","./utils"],function(a,b){function c(a,b){this.$element=a,this.options=b,c.__super__.constructor.call(this)}return b.Extend(c,b.Observable),c.prototype.render=function(){var b=a('');return b.attr("dir",this.options.get("dir")),this.$dropdown=b,b},c.prototype.position=function(){},c.prototype.destroy=function(){this.$dropdown.remove()},c}),b.define("select2/dropdown/search",["jquery","../utils"],function(a){function b(){}return b.prototype.render=function(b){var c=b.call(this),d=a('');return this.$searchContainer=d,this.$search=d.find("input"),c.prepend(d),c},b.prototype.bind=function(b,c,d){var e=this;b.call(this,c,d),this.$search.on("keydown",function(a){e.trigger("keypress",a),e._keyUpPrevented=a.isDefaultPrevented()}),this.$search.on("input",function(){a(this).off("keyup")}),this.$search.on("keyup input",function(a){e.handleSearch(a)}),c.on("open",function(){e.$search.attr("tabindex",0),e.$search.focus(),window.setTimeout(function(){e.$search.focus()},0)}),c.on("close",function(){e.$search.attr("tabindex",-1),e.$search.val("")}),c.on("results:all",function(a){if(null==a.query.term||""===a.query.term){var b=e.showSearch(a);b?e.$searchContainer.removeClass("select2-search--hide"):e.$searchContainer.addClass("select2-search--hide")}})},b.prototype.handleSearch=function(){if(!this._keyUpPrevented){var a=this.$search.val();this.trigger("query",{term:a})}this._keyUpPrevented=!1},b.prototype.showSearch=function(){return!0},b}),b.define("select2/dropdown/hidePlaceholder",[],function(){function a(a,b,c,d){this.placeholder=this.normalizePlaceholder(c.get("placeholder")),a.call(this,b,c,d)}return a.prototype.append=function(a,b){b.results=this.removePlaceholder(b.results),a.call(this,b)},a.prototype.normalizePlaceholder=function(a,b){return"string"==typeof b&&(b={id:"",text:b}),b},a.prototype.removePlaceholder=function(a,b){for(var c=b.slice(0),d=b.length-1;d>=0;d--){var e=b[d];this.placeholder.id===e.id&&c.splice(d,1)}return c},a}),b.define("select2/dropdown/infiniteScroll",["jquery"],function(a){function b(a,b,c,d){this.lastParams={},a.call(this,b,c,d),this.$loadingMore=this.createLoadingMore(),this.loading=!1}return b.prototype.append=function(a,b){this.$loadingMore.remove(),this.loading=!1,a.call(this,b),this.showLoadingMore(b)&&this.$results.append(this.$loadingMore)},b.prototype.bind=function(b,c,d){var e=this;b.call(this,c,d),c.on("query",function(a){e.lastParams=a,e.loading=!0}),c.on("query:append",function(a){e.lastParams=a,e.loading=!0}),this.$results.on("scroll",function(){var b=a.contains(document.documentElement,e.$loadingMore[0]);if(!e.loading&&b){var c=e.$results.offset().top+e.$results.outerHeight(!1),d=e.$loadingMore.offset().top+e.$loadingMore.outerHeight(!1);c+50>=d&&e.loadMore()}})},b.prototype.loadMore=function(){this.loading=!0;var b=a.extend({},{page:1},this.lastParams);b.page++,this.trigger("query:append",b)},b.prototype.showLoadingMore=function(a,b){return b.pagination&&b.pagination.more},b.prototype.createLoadingMore=function(){var b=a('
    • '),c=this.options.get("translations").get("loadingMore");return b.html(c(this.lastParams)),b},b}),b.define("select2/dropdown/attachBody",["jquery","../utils"],function(a,b){function c(a,b,c){this.$dropdownParent=c.get("dropdownParent")||document.body,a.call(this,b,c)}return c.prototype.bind=function(a,b,c){var d=this,e=!1;a.call(this,b,c),b.on("open",function(){d._showDropdown(),d._attachPositioningHandler(b),e||(e=!0,b.on("results:all",function(){d._positionDropdown(),d._resizeDropdown()}),b.on("results:append",function(){d._positionDropdown(),d._resizeDropdown()}))}),b.on("close",function(){d._hideDropdown(),d._detachPositioningHandler(b)}),this.$dropdownContainer.on("mousedown",function(a){a.stopPropagation()})},c.prototype.position=function(a,b,c){b.attr("class",c.attr("class")),b.removeClass("select2"),b.addClass("select2-container--open"),b.css({position:"absolute",top:-999999}),this.$container=c},c.prototype.render=function(b){var c=a(""),d=b.call(this);return c.append(d),this.$dropdownContainer=c,c},c.prototype._hideDropdown=function(){this.$dropdownContainer.detach()},c.prototype._attachPositioningHandler=function(c){var d=this,e="scroll.select2."+c.id,f="resize.select2."+c.id,g="orientationchange.select2."+c.id,h=this.$container.parents().filter(b.hasScroll);h.each(function(){a(this).data("select2-scroll-position",{x:a(this).scrollLeft(),y:a(this).scrollTop()})}),h.on(e,function(){var b=a(this).data("select2-scroll-position");a(this).scrollTop(b.y)}),a(window).on(e+" "+f+" "+g,function(){d._positionDropdown(),d._resizeDropdown()})},c.prototype._detachPositioningHandler=function(c){var d="scroll.select2."+c.id,e="resize.select2."+c.id,f="orientationchange.select2."+c.id,g=this.$container.parents().filter(b.hasScroll);g.off(d),a(window).off(d+" "+e+" "+f)},c.prototype._positionDropdown=function(){var b=a(window),c=this.$dropdown.hasClass("select2-dropdown--above"),d=this.$dropdown.hasClass("select2-dropdown--below"),e=null,f=(this.$container.position(),this.$container.offset());f.bottom=f.top+this.$container.outerHeight(!1);var g={height:this.$container.outerHeight(!1)};g.top=f.top,g.bottom=f.top+g.height;var h={height:this.$dropdown.outerHeight(!1)},i={top:b.scrollTop(),bottom:b.scrollTop()+b.height()},j=i.topf.bottom+h.height,l={left:f.left,top:g.bottom};c||d||(e="below"),k||!j||c?!j&&k&&c&&(e="below"):e="above",("above"==e||c&&"below"!==e)&&(l.top=g.top-h.height),null!=e&&(this.$dropdown.removeClass("select2-dropdown--below select2-dropdown--above").addClass("select2-dropdown--"+e),this.$container.removeClass("select2-container--below select2-container--above").addClass("select2-container--"+e)),this.$dropdownContainer.css(l)},c.prototype._resizeDropdown=function(){this.$dropdownContainer.width(),this.$dropdown.css({width:this.$container.outerWidth(!1)+"px"})},c.prototype._showDropdown=function(){this.$dropdownContainer.appendTo(this.$dropdownParent),this._positionDropdown(),this._resizeDropdown()},c}),b.define("select2/dropdown/minimumResultsForSearch",[],function(){function a(b){for(var c=0,d=0;d0&&(l.dataAdapter=j.Decorate(l.dataAdapter,r)),l.maximumInputLength>0&&(l.dataAdapter=j.Decorate(l.dataAdapter,s)),l.maximumSelectionLength>0&&(l.dataAdapter=j.Decorate(l.dataAdapter,t)),l.tags&&(l.dataAdapter=j.Decorate(l.dataAdapter,p)),(null!=l.tokenSeparators||null!=l.tokenizer)&&(l.dataAdapter=j.Decorate(l.dataAdapter,q)),null!=l.query){var C=b(l.amdBase+"compat/query");l.dataAdapter=j.Decorate(l.dataAdapter,C)}if(null!=l.initSelection){var D=b(l.amdBase+"compat/initSelection");l.dataAdapter=j.Decorate(l.dataAdapter,D)}}if(null==l.resultsAdapter&&(l.resultsAdapter=c,null!=l.ajax&&(l.resultsAdapter=j.Decorate(l.resultsAdapter,x)),null!=l.placeholder&&(l.resultsAdapter=j.Decorate(l.resultsAdapter,w)),l.selectOnClose&&(l.resultsAdapter=j.Decorate(l.resultsAdapter,A))),null==l.dropdownAdapter){if(l.multiple)l.dropdownAdapter=u;else{var E=j.Decorate(u,v);l.dropdownAdapter=E}0!==l.minimumResultsForSearch&&(l.dropdownAdapter=j.Decorate(l.dropdownAdapter,z)),l.closeOnSelect&&(l.dropdownAdapter=j.Decorate(l.dropdownAdapter,B)),l.dropdownAdapter=j.Decorate(l.dropdownAdapter,y)}if(null==l.selectionAdapter&&(l.selectionAdapter=l.multiple?e:d,null!=l.placeholder&&(l.selectionAdapter=j.Decorate(l.selectionAdapter,f)),l.allowClear&&(l.selectionAdapter=j.Decorate(l.selectionAdapter,g)),l.multiple&&(l.selectionAdapter=j.Decorate(l.selectionAdapter,h)),l.selectionAdapter=j.Decorate(l.selectionAdapter,i)),"string"==typeof l.language)if(l.language.indexOf("-")>0){var F=l.language.split("-"),G=F[0];l.language=[l.language,G]}else l.language=[l.language];if(a.isArray(l.language)){var H=new k;l.language.push("en");for(var I=l.language,J=0;J0){for(var f=a.extend(!0,{},e),g=e.children.length-1;g>=0;g--){var h=e.children[g],i=c(d,h);null==i&&f.children.splice(g,1)}return f.children.length>0?f:c(d,f)}var j=b(e.text).toUpperCase(),k=b(d.term).toUpperCase();return j.indexOf(k)>-1?e:null}this.defaults={amdBase:"./",amdLanguageBase:"./i18n/",closeOnSelect:!0,debug:!1,escapeMarkup:j.escapeMarkup,language:C,matcher:c,minimumInputLength:0,maximumInputLength:0,maximumSelectionLength:0,minimumResultsForSearch:0,selectOnClose:!1,sorter:function(a){return a},templateResult:function(a){return a.text},templateSelection:function(a){return a.text},theme:"default",width:"resolve"}},D.prototype.set=function(b,c){var d=a.camelCase(b),e={};e[d]=c;var f=j._convertData(e);a.extend(this.defaults,f)};var E=new D;return E}),b.define("select2/options",["jquery","./defaults","./utils"],function(a,b,c){function d(a,d){if(this.options=a,null!=d&&this.fromElement(d),this.options=b.apply(this.options),d&&d.is("input")){var e=require(this.get("amdBase")+"compat/inputData");this.options.dataAdapter=c.Decorate(this.options.dataAdapter,e)}}return d.prototype.fromElement=function(b){var d=["select2"];null==this.options.multiple&&(this.options.multiple=b.prop("multiple")),null==this.options.disabled&&(this.options.disabled=b.prop("disabled")),null==this.options.language&&(b.prop("lang")?this.options.language=b.prop("lang").toLowerCase():b.closest("[lang]").prop("lang")&&(this.options.language=b.closest("[lang]").prop("lang"))),null==this.options.dir&&(this.options.dir=b.prop("dir")?b.prop("dir"):b.closest("[dir]").prop("dir")?b.closest("[dir]").prop("dir"):"ltr"),b.prop("disabled",this.options.disabled),b.prop("multiple",this.options.multiple),b.data("select2Tags")&&(this.options.debug&&window.console&&console.warn&&console.warn('Select2: The `data-select2-tags` attribute has been changed to use the `data-data` and `data-tags="true"` attributes and will be removed in future versions of Select2.'),b.data("data",b.data("select2Tags")),b.data("tags",!0)),b.data("ajaxUrl")&&(this.options.debug&&window.console&&console.warn&&console.warn("Select2: The `data-ajax-url` attribute has been changed to `data-ajax--url` and support for the old attribute will be removed in future versions of Select2."),b.attr("ajax--url",b.data("ajaxUrl")),b.data("ajax--url",b.data("ajaxUrl")));var e={};e=a.fn.jquery&&"1."==a.fn.jquery.substr(0,2)&&b[0].dataset?a.extend(!0,{},b[0].dataset,b.data()):b.data();var f=a.extend(!0,{},e);f=c._convertData(f);for(var g in f)a.inArray(g,d)>-1||(a.isPlainObject(this.options[g])?a.extend(this.options[g],f[g]):this.options[g]=f[g]);return this},d.prototype.get=function(a){return this.options[a]},d.prototype.set=function(a,b){this.options[a]=b},d}),b.define("select2/core",["jquery","./options","./utils","./keys"],function(a,b,c,d){var e=function(a,c){null!=a.data("select2")&&a.data("select2").destroy(),this.$element=a,this.id=this._generateId(a),c=c||{},this.options=new b(c,a),e.__super__.constructor.call(this);var d=a.attr("tabindex")||0;a.data("old-tabindex",d),a.attr("tabindex","-1");var f=this.options.get("dataAdapter");this.dataAdapter=new f(a,this.options);var g=this.render();this._placeContainer(g);var h=this.options.get("selectionAdapter");this.selection=new h(a,this.options),this.$selection=this.selection.render(),this.selection.position(this.$selection,g);var i=this.options.get("dropdownAdapter");this.dropdown=new i(a,this.options),this.$dropdown=this.dropdown.render(),this.dropdown.position(this.$dropdown,g);var j=this.options.get("resultsAdapter");this.results=new j(a,this.options,this.dataAdapter),this.$results=this.results.render(),this.results.position(this.$results,this.$dropdown);var k=this;this._bindAdapters(),this._registerDomEvents(),this._registerDataEvents(),this._registerSelectionEvents(),this._registerDropdownEvents(),this._registerResultsEvents(),this._registerEvents(),this.dataAdapter.current(function(a){k.trigger("selection:update",{data:a})}),a.hide(),this._syncAttributes(),a.data("select2",this)};return c.Extend(e,c.Observable),e.prototype._generateId=function(a){var b="";return b=null!=a.attr("id")?a.attr("id"):null!=a.attr("name")?a.attr("name")+"-"+c.generateChars(2):c.generateChars(4),b="select2-"+b},e.prototype._placeContainer=function(a){a.insertAfter(this.$element);var b=this._resolveWidth(this.$element,this.options.get("width"));null!=b&&a.css("width",b)},e.prototype._resolveWidth=function(a,b){var c=/^width:(([-+]?([0-9]*\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i;if("resolve"==b){var d=this._resolveWidth(a,"style");return null!=d?d:this._resolveWidth(a,"element")}if("element"==b){var e=a.outerWidth(!1);return 0>=e?"auto":e+"px"}if("style"==b){var f=a.attr("style");if("string"!=typeof f)return null;for(var g=f.split(";"),h=0,i=g.length;i>h;h+=1){var j=g[h].replace(/\s/g,""),k=j.match(c);if(null!==k&&k.length>=1)return k[1]}return null}return b},e.prototype._bindAdapters=function(){this.dataAdapter.bind(this,this.$container),this.selection.bind(this,this.$container),this.dropdown.bind(this,this.$container),this.results.bind(this,this.$container)},e.prototype._registerDomEvents=function(){var b=this;this.$element.on("change.select2",function(){b.dataAdapter.current(function(a){b.trigger("selection:update",{data:a})})}),this._sync=c.bind(this._syncAttributes,this),this.$element[0].attachEvent&&this.$element[0].attachEvent("onpropertychange",this._sync);var d=window.MutationObserver||window.WebKitMutationObserver||window.MozMutationObserver;null!=d?(this._observer=new d(function(c){a.each(c,b._sync)}),this._observer.observe(this.$element[0],{attributes:!0,subtree:!1})):this.$element[0].addEventListener&&this.$element[0].addEventListener("DOMAttrModified",b._sync,!1)},e.prototype._registerDataEvents=function(){var a=this;this.dataAdapter.on("*",function(b,c){a.trigger(b,c)})},e.prototype._registerSelectionEvents=function(){var b=this,c=["toggle"];this.selection.on("toggle",function(){b.toggleDropdown()}),this.selection.on("*",function(d,e){-1===a.inArray(d,c)&&b.trigger(d,e)})},e.prototype._registerDropdownEvents=function(){var a=this;this.dropdown.on("*",function(b,c){a.trigger(b,c)})},e.prototype._registerResultsEvents=function(){var a=this;this.results.on("*",function(b,c){a.trigger(b,c)})},e.prototype._registerEvents=function(){var a=this;this.on("open",function(){a.$container.addClass("select2-container--open")}),this.on("close",function(){a.$container.removeClass("select2-container--open")}),this.on("enable",function(){a.$container.removeClass("select2-container--disabled")}),this.on("disable",function(){a.$container.addClass("select2-container--disabled")}),this.on("focus",function(){a.$container.addClass("select2-container--focus")}),this.on("blur",function(){a.$container.removeClass("select2-container--focus")}),this.on("query",function(b){a.isOpen()||a.trigger("open"),this.dataAdapter.query(b,function(c){a.trigger("results:all",{data:c,query:b})})}),this.on("query:append",function(b){this.dataAdapter.query(b,function(c){a.trigger("results:append",{data:c,query:b})})}),this.on("keypress",function(b){var c=b.which;a.isOpen()?c===d.ENTER?(a.trigger("results:select"),b.preventDefault()):c===d.SPACE&&b.ctrlKey?(a.trigger("results:toggle"),b.preventDefault()):c===d.UP?(a.trigger("results:previous"),b.preventDefault()):c===d.DOWN?(a.trigger("results:next"),b.preventDefault()):(c===d.ESC||c===d.TAB)&&(a.close(),b.preventDefault()):(c===d.ENTER||c===d.SPACE||(c===d.DOWN||c===d.UP)&&b.altKey)&&(a.open(),b.preventDefault())})},e.prototype._syncAttributes=function(){this.options.set("disabled",this.$element.prop("disabled")),this.options.get("disabled")?(this.isOpen()&&this.close(),this.trigger("disable")):this.trigger("enable")},e.prototype.trigger=function(a,b){var c=e.__super__.trigger,d={open:"opening",close:"closing",select:"selecting",unselect:"unselecting"};if(a in d){var f=d[a],g={prevented:!1,name:a,args:b};if(c.call(this,f,g),g.prevented)return void(b.prevented=!0)}c.call(this,a,b)},e.prototype.toggleDropdown=function(){this.options.get("disabled")||(this.isOpen()?this.close():this.open())},e.prototype.open=function(){this.isOpen()||(this.trigger("query",{}),this.trigger("open"))},e.prototype.close=function(){this.isOpen()&&this.trigger("close")},e.prototype.isOpen=function(){return this.$container.hasClass("select2-container--open")},e.prototype.enable=function(a){this.options.get("debug")&&window.console&&console.warn&&console.warn('Select2: The `select2("enable")` method has been deprecated and will be removed in later Select2 versions. Use $element.prop("disabled") instead.'),(null==a||0===a.length)&&(a=[!0]);var b=!a[0];this.$element.prop("disabled",b)},e.prototype.data=function(){this.options.get("debug")&&arguments.length>0&&window.console&&console.warn&&console.warn('Select2: Data can no longer be set using `select2("data")`. You should consider setting the value instead using `$element.val()`.');var a=[];return this.dataAdapter.current(function(b){a=b}),a},e.prototype.val=function(b){if(this.options.get("debug")&&window.console&&console.warn&&console.warn('Select2: The `select2("val")` method has been deprecated and will be removed in later Select2 versions. Use $element.val() instead.'),null==b||0===b.length)return this.$element.val();var c=b[0];a.isArray(c)&&(c=a.map(c,function(a){return a.toString()})),this.$element.val(c).trigger("change")},e.prototype.destroy=function(){this.$container.remove(),this.$element[0].detachEvent&&this.$element[0].detachEvent("onpropertychange",this._sync),null!=this._observer?(this._observer.disconnect(),this._observer=null):this.$element[0].removeEventListener&&this.$element[0].removeEventListener("DOMAttrModified",this._sync,!1),this._sync=null,this.$element.off(".select2"),this.$element.attr("tabindex",this.$element.data("old-tabindex")),this.$element.show(),this.$element.removeData("select2"),this.dataAdapter.destroy(),this.selection.destroy(),this.dropdown.destroy(),this.results.destroy(),this.dataAdapter=null,this.selection=null,this.dropdown=null,this.results=null},e.prototype.render=function(){var b=a('');return b.attr("dir",this.options.get("dir")),this.$container=b,this.$container.addClass("select2-container--"+this.options.get("theme")),b.data("element",this.$element),b},e}),function(c){"function"==typeof b.define&&b.define.amd?b.define("jquery.mousewheel",["jquery"],c):"object"==typeof exports?module.exports=c:c(a)}(function(a){function b(b){var g=b||window.event,h=i.call(arguments,1),j=0,l=0,m=0,n=0,o=0,p=0;if(b=a.event.fix(g),b.type="mousewheel","detail"in g&&(m=-1*g.detail),"wheelDelta"in g&&(m=g.wheelDelta),"wheelDeltaY"in g&&(m=g.wheelDeltaY),"wheelDeltaX"in g&&(l=-1*g.wheelDeltaX),"axis"in g&&g.axis===g.HORIZONTAL_AXIS&&(l=-1*m,m=0),j=0===m?l:m,"deltaY"in g&&(m=-1*g.deltaY,j=m),"deltaX"in g&&(l=g.deltaX,0===m&&(j=-1*l)),0!==m||0!==l){if(1===g.deltaMode){var q=a.data(this,"mousewheel-line-height");j*=q,m*=q,l*=q}else if(2===g.deltaMode){var r=a.data(this,"mousewheel-page-height");j*=r,m*=r,l*=r}if(n=Math.max(Math.abs(m),Math.abs(l)),(!f||f>n)&&(f=n,d(g,n)&&(f/=40)),d(g,n)&&(j/=40,l/=40,m/=40),j=Math[j>=1?"floor":"ceil"](j/f),l=Math[l>=1?"floor":"ceil"](l/f),m=Math[m>=1?"floor":"ceil"](m/f),k.settings.normalizeOffset&&this.getBoundingClientRect){var s=this.getBoundingClientRect();o=b.clientX-s.left,p=b.clientY-s.top}return b.deltaX=l,b.deltaY=m,b.deltaFactor=f,b.offsetX=o,b.offsetY=p,b.deltaMode=0,h.unshift(b,j,l,m),e&&clearTimeout(e),e=setTimeout(c,200),(a.event.dispatch||a.event.handle).apply(this,h)}}function c(){f=null}function d(a,b){return k.settings.adjustOldDeltas&&"mousewheel"===a.type&&b%120===0}var e,f,g=["wheel","mousewheel","DOMMouseScroll","MozMousePixelScroll"],h="onwheel"in document||document.documentMode>=9?["wheel"]:["mousewheel","DomMouseScroll","MozMousePixelScroll"],i=Array.prototype.slice;if(a.event.fixHooks)for(var j=g.length;j;)a.event.fixHooks[g[--j]]=a.event.mouseHooks;var k=a.event.special.mousewheel={version:"3.1.12",setup:function(){if(this.addEventListener)for(var c=h.length;c;)this.addEventListener(h[--c],b,!1);else this.onmousewheel=b;a.data(this,"mousewheel-line-height",k.getLineHeight(this)),a.data(this,"mousewheel-page-height",k.getPageHeight(this))},teardown:function(){if(this.removeEventListener)for(var c=h.length;c;)this.removeEventListener(h[--c],b,!1);else this.onmousewheel=null;a.removeData(this,"mousewheel-line-height"),a.removeData(this,"mousewheel-page-height")},getLineHeight:function(b){var c=a(b),d=c["offsetParent"in a.fn?"offsetParent":"parent"]();return d.length||(d=a("body")),parseInt(d.css("fontSize"),10)||parseInt(c.css("fontSize"),10)||16},getPageHeight:function(b){return a(b).height()},settings:{adjustOldDeltas:!0,normalizeOffset:!0}};a.fn.extend({mousewheel:function(a){return a?this.bind("mousewheel",a):this.trigger("mousewheel")},unmousewheel:function(a){return this.unbind("mousewheel",a)}})}),b.define("select2/compat/matcher",["jquery"],function(a){function b(b){function c(c,d){var e=a.extend(!0,{},d);if(null==c.term||""===a.trim(c.term))return e;if(d.children){for(var f=d.children.length-1;f>=0;f--){var g=d.children[f],h=b(c.term,g.text,g);h||e.children.splice(f,1)}if(e.children.length>0)return e}return b(c.term,d.text,d)?e:null}return c}return b}),b.define("select2/compat/initSelection",["jquery"],function(a){function b(a,b,c){c.get("debug")&&window.console&&console.warn&&console.warn("Select2: The `initSelection` option has been deprecated in favor of a custom data adapter that overrides the `current` method. This method is now called multiple times instead of a single time when the instance is initialized. Support will be removed for the `initSelection` option in future versions of Select2"),this.initSelection=c.get("initSelection"),this._isInitialized=!1,a.call(this,b,c)}return b.prototype.current=function(b,c){var d=this;return this._isInitialized?void b.call(this,c):void this.initSelection.call(null,this.$element,function(b){d._isInitialized=!0,a.isArray(b)||(b=[b]),c(b)})},b}),b.define("select2/compat/inputData",["jquery"],function(a){function b(a,b,c){this._currentData=[],this._valueSeparator=c.get("valueSeparator")||",","hidden"===b.prop("type")&&c.get("debug")&&console&&console.warn&&console.warn("Select2: Using a hidden input with Select2 is no longer supported and may stop working in the future. It is recommended to use a `');this.$searchContainer=c,this.$search=c.find("input");var d=b.call(this);return d},d.prototype.bind=function(a,b,d){var e=this;a.call(this,b,d),b.on("open",function(){e.$search.attr("tabindex",0),e.$search.focus()}),b.on("close",function(){e.$search.attr("tabindex",-1),e.$search.val(""),e.$search.focus()}),b.on("enable",function(){e.$search.prop("disabled",!1)}),b.on("disable",function(){e.$search.prop("disabled",!0)}),this.$selection.on("focusin",".select2-search--inline",function(a){e.trigger("focus",a)}),this.$selection.on("focusout",".select2-search--inline",function(a){e.trigger("blur",a)}),this.$selection.on("keydown",".select2-search--inline",function(a){a.stopPropagation(),e.trigger("keypress",a),e._keyUpPrevented=a.isDefaultPrevented();var b=a.which;if(b===c.BACKSPACE&&""===e.$search.val()){var d=e.$searchContainer.prev(".select2-selection__choice");if(d.length>0){var f=d.data("data");e.searchRemoveChoice(f),a.preventDefault()}}}),this.$selection.on("input",".select2-search--inline",function(){e.$selection.off("keyup.search")}),this.$selection.on("keyup.search input",".select2-search--inline",function(a){e.handleSearch(a)})},d.prototype.createPlaceholder=function(a,b){this.$search.attr("placeholder",b.text)},d.prototype.update=function(a,b){this.$search.attr("placeholder",""),a.call(this,b),this.$selection.find(".select2-selection__rendered").append(this.$searchContainer),this.resizeSearch()},d.prototype.handleSearch=function(){if(this.resizeSearch(),!this._keyUpPrevented){var a=this.$search.val();this.trigger("query",{term:a})}this._keyUpPrevented=!1},d.prototype.searchRemoveChoice=function(a,b){this.trigger("unselect",{data:b}),this.trigger("open"),this.$search.val(b.text+" ")},d.prototype.resizeSearch=function(){this.$search.css("width","25px");var a="";if(""!==this.$search.attr("placeholder"))a=this.$selection.find(".select2-selection__rendered").innerWidth();else{var b=this.$search.val().length+1;a=.75*b+"em"}this.$search.css("width",a)},d}),b.define("select2/selection/eventRelay",["jquery"],function(a){function b(){}return b.prototype.bind=function(b,c,d){var e=this,f=["open","opening","close","closing","select","selecting","unselect","unselecting"],g=["opening","closing","selecting","unselecting"];b.call(this,c,d),c.on("*",function(b,c){if(-1!==a.inArray(b,f)){c=c||{};var d=a.Event("select2:"+b,{params:c});e.$element.trigger(d),-1!==a.inArray(b,g)&&(c.prevented=d.isDefaultPrevented())}})},b}),b.define("select2/translation",["jquery","require"],function(a,b){function c(a){this.dict=a||{}}return c.prototype.all=function(){return this.dict},c.prototype.get=function(a){return this.dict[a]},c.prototype.extend=function(b){this.dict=a.extend({},b.all(),this.dict)},c._cache={},c.loadPath=function(a){if(!(a in c._cache)){var d=b(a);c._cache[a]=d}return new c(c._cache[a])},c}),b.define("select2/diacritics",[],function(){var a={"Ⓐ":"A","A":"A","À":"A","Á":"A","Â":"A","Ầ":"A","Ấ":"A","Ẫ":"A","Ẩ":"A","Ã":"A","Ā":"A","Ă":"A","Ằ":"A","Ắ":"A","Ẵ":"A","Ẳ":"A","Ȧ":"A","Ǡ":"A","Ä":"A","Ǟ":"A","Ả":"A","Å":"A","Ǻ":"A","Ǎ":"A","Ȁ":"A","Ȃ":"A","Ạ":"A","Ậ":"A","Ặ":"A","Ḁ":"A","Ą":"A","Ⱥ":"A","Ɐ":"A","Ꜳ":"AA","Æ":"AE","Ǽ":"AE","Ǣ":"AE","Ꜵ":"AO","Ꜷ":"AU","Ꜹ":"AV","Ꜻ":"AV","Ꜽ":"AY","Ⓑ":"B","B":"B","Ḃ":"B","Ḅ":"B","Ḇ":"B","Ƀ":"B","Ƃ":"B","Ɓ":"B","Ⓒ":"C","C":"C","Ć":"C","Ĉ":"C","Ċ":"C","Č":"C","Ç":"C","Ḉ":"C","Ƈ":"C","Ȼ":"C","Ꜿ":"C","Ⓓ":"D","D":"D","Ḋ":"D","Ď":"D","Ḍ":"D","Ḑ":"D","Ḓ":"D","Ḏ":"D","Đ":"D","Ƌ":"D","Ɗ":"D","Ɖ":"D","Ꝺ":"D","DZ":"DZ","DŽ":"DZ","Dz":"Dz","Dž":"Dz","Ⓔ":"E","E":"E","È":"E","É":"E","Ê":"E","Ề":"E","Ế":"E","Ễ":"E","Ể":"E","Ẽ":"E","Ē":"E","Ḕ":"E","Ḗ":"E","Ĕ":"E","Ė":"E","Ë":"E","Ẻ":"E","Ě":"E","Ȅ":"E","Ȇ":"E","Ẹ":"E","Ệ":"E","Ȩ":"E","Ḝ":"E","Ę":"E","Ḙ":"E","Ḛ":"E","Ɛ":"E","Ǝ":"E","Ⓕ":"F","F":"F","Ḟ":"F","Ƒ":"F","Ꝼ":"F","Ⓖ":"G","G":"G","Ǵ":"G","Ĝ":"G","Ḡ":"G","Ğ":"G","Ġ":"G","Ǧ":"G","Ģ":"G","Ǥ":"G","Ɠ":"G","Ꞡ":"G","Ᵹ":"G","Ꝿ":"G","Ⓗ":"H","H":"H","Ĥ":"H","Ḣ":"H","Ḧ":"H","Ȟ":"H","Ḥ":"H","Ḩ":"H","Ḫ":"H","Ħ":"H","Ⱨ":"H","Ⱶ":"H","Ɥ":"H","Ⓘ":"I","I":"I","Ì":"I","Í":"I","Î":"I","Ĩ":"I","Ī":"I","Ĭ":"I","İ":"I","Ï":"I","Ḯ":"I","Ỉ":"I","Ǐ":"I","Ȉ":"I","Ȋ":"I","Ị":"I","Į":"I","Ḭ":"I","Ɨ":"I","Ⓙ":"J","J":"J","Ĵ":"J","Ɉ":"J","Ⓚ":"K","K":"K","Ḱ":"K","Ǩ":"K","Ḳ":"K","Ķ":"K","Ḵ":"K","Ƙ":"K","Ⱪ":"K","Ꝁ":"K","Ꝃ":"K","Ꝅ":"K","Ꞣ":"K","Ⓛ":"L","L":"L","Ŀ":"L","Ĺ":"L","Ľ":"L","Ḷ":"L","Ḹ":"L","Ļ":"L","Ḽ":"L","Ḻ":"L","Ł":"L","Ƚ":"L","Ɫ":"L","Ⱡ":"L","Ꝉ":"L","Ꝇ":"L","Ꞁ":"L","LJ":"LJ","Lj":"Lj","Ⓜ":"M","M":"M","Ḿ":"M","Ṁ":"M","Ṃ":"M","Ɱ":"M","Ɯ":"M","Ⓝ":"N","N":"N","Ǹ":"N","Ń":"N","Ñ":"N","Ṅ":"N","Ň":"N","Ṇ":"N","Ņ":"N","Ṋ":"N","Ṉ":"N","Ƞ":"N","Ɲ":"N","Ꞑ":"N","Ꞥ":"N","NJ":"NJ","Nj":"Nj","Ⓞ":"O","O":"O","Ò":"O","Ó":"O","Ô":"O","Ồ":"O","Ố":"O","Ỗ":"O","Ổ":"O","Õ":"O","Ṍ":"O","Ȭ":"O","Ṏ":"O","Ō":"O","Ṑ":"O","Ṓ":"O","Ŏ":"O","Ȯ":"O","Ȱ":"O","Ö":"O","Ȫ":"O","Ỏ":"O","Ő":"O","Ǒ":"O","Ȍ":"O","Ȏ":"O","Ơ":"O","Ờ":"O","Ớ":"O","Ỡ":"O","Ở":"O","Ợ":"O","Ọ":"O","Ộ":"O","Ǫ":"O","Ǭ":"O","Ø":"O","Ǿ":"O","Ɔ":"O","Ɵ":"O","Ꝋ":"O","Ꝍ":"O","Ƣ":"OI","Ꝏ":"OO","Ȣ":"OU","Ⓟ":"P","P":"P","Ṕ":"P","Ṗ":"P","Ƥ":"P","Ᵽ":"P","Ꝑ":"P","Ꝓ":"P","Ꝕ":"P","Ⓠ":"Q","Q":"Q","Ꝗ":"Q","Ꝙ":"Q","Ɋ":"Q","Ⓡ":"R","R":"R","Ŕ":"R","Ṙ":"R","Ř":"R","Ȑ":"R","Ȓ":"R","Ṛ":"R","Ṝ":"R","Ŗ":"R","Ṟ":"R","Ɍ":"R","Ɽ":"R","Ꝛ":"R","Ꞧ":"R","Ꞃ":"R","Ⓢ":"S","S":"S","ẞ":"S","Ś":"S","Ṥ":"S","Ŝ":"S","Ṡ":"S","Š":"S","Ṧ":"S","Ṣ":"S","Ṩ":"S","Ș":"S","Ş":"S","Ȿ":"S","Ꞩ":"S","Ꞅ":"S","Ⓣ":"T","T":"T","Ṫ":"T","Ť":"T","Ṭ":"T","Ț":"T","Ţ":"T","Ṱ":"T","Ṯ":"T","Ŧ":"T","Ƭ":"T","Ʈ":"T","Ⱦ":"T","Ꞇ":"T","Ꜩ":"TZ","Ⓤ":"U","U":"U","Ù":"U","Ú":"U","Û":"U","Ũ":"U","Ṹ":"U","Ū":"U","Ṻ":"U","Ŭ":"U","Ü":"U","Ǜ":"U","Ǘ":"U","Ǖ":"U","Ǚ":"U","Ủ":"U","Ů":"U","Ű":"U","Ǔ":"U","Ȕ":"U","Ȗ":"U","Ư":"U","Ừ":"U","Ứ":"U","Ữ":"U","Ử":"U","Ự":"U","Ụ":"U","Ṳ":"U","Ų":"U","Ṷ":"U","Ṵ":"U","Ʉ":"U","Ⓥ":"V","V":"V","Ṽ":"V","Ṿ":"V","Ʋ":"V","Ꝟ":"V","Ʌ":"V","Ꝡ":"VY","Ⓦ":"W","W":"W","Ẁ":"W","Ẃ":"W","Ŵ":"W","Ẇ":"W","Ẅ":"W","Ẉ":"W","Ⱳ":"W","Ⓧ":"X","X":"X","Ẋ":"X","Ẍ":"X","Ⓨ":"Y","Y":"Y","Ỳ":"Y","Ý":"Y","Ŷ":"Y","Ỹ":"Y","Ȳ":"Y","Ẏ":"Y","Ÿ":"Y","Ỷ":"Y","Ỵ":"Y","Ƴ":"Y","Ɏ":"Y","Ỿ":"Y","Ⓩ":"Z","Z":"Z","Ź":"Z","Ẑ":"Z","Ż":"Z","Ž":"Z","Ẓ":"Z","Ẕ":"Z","Ƶ":"Z","Ȥ":"Z","Ɀ":"Z","Ⱬ":"Z","Ꝣ":"Z","ⓐ":"a","a":"a","ẚ":"a","à":"a","á":"a","â":"a","ầ":"a","ấ":"a","ẫ":"a","ẩ":"a","ã":"a","ā":"a","ă":"a","ằ":"a","ắ":"a","ẵ":"a","ẳ":"a","ȧ":"a","ǡ":"a","ä":"a","ǟ":"a","ả":"a","å":"a","ǻ":"a","ǎ":"a","ȁ":"a","ȃ":"a","ạ":"a","ậ":"a","ặ":"a","ḁ":"a","ą":"a","ⱥ":"a","ɐ":"a","ꜳ":"aa","æ":"ae","ǽ":"ae","ǣ":"ae","ꜵ":"ao","ꜷ":"au","ꜹ":"av","ꜻ":"av","ꜽ":"ay","ⓑ":"b","b":"b","ḃ":"b","ḅ":"b","ḇ":"b","ƀ":"b","ƃ":"b","ɓ":"b","ⓒ":"c","c":"c","ć":"c","ĉ":"c","ċ":"c","č":"c","ç":"c","ḉ":"c","ƈ":"c","ȼ":"c","ꜿ":"c","ↄ":"c","ⓓ":"d","d":"d","ḋ":"d","ď":"d","ḍ":"d","ḑ":"d","ḓ":"d","ḏ":"d","đ":"d","ƌ":"d","ɖ":"d","ɗ":"d","ꝺ":"d","dz":"dz","dž":"dz","ⓔ":"e","e":"e","è":"e","é":"e","ê":"e","ề":"e","ế":"e","ễ":"e","ể":"e","ẽ":"e","ē":"e","ḕ":"e","ḗ":"e","ĕ":"e","ė":"e","ë":"e","ẻ":"e","ě":"e","ȅ":"e","ȇ":"e","ẹ":"e","ệ":"e","ȩ":"e","ḝ":"e","ę":"e","ḙ":"e","ḛ":"e","ɇ":"e","ɛ":"e","ǝ":"e","ⓕ":"f","f":"f","ḟ":"f","ƒ":"f","ꝼ":"f","ⓖ":"g","g":"g","ǵ":"g","ĝ":"g","ḡ":"g","ğ":"g","ġ":"g","ǧ":"g","ģ":"g","ǥ":"g","ɠ":"g","ꞡ":"g","ᵹ":"g","ꝿ":"g","ⓗ":"h","h":"h","ĥ":"h","ḣ":"h","ḧ":"h","ȟ":"h","ḥ":"h","ḩ":"h","ḫ":"h","ẖ":"h","ħ":"h","ⱨ":"h","ⱶ":"h","ɥ":"h","ƕ":"hv","ⓘ":"i","i":"i","ì":"i","í":"i","î":"i","ĩ":"i","ī":"i","ĭ":"i","ï":"i","ḯ":"i","ỉ":"i","ǐ":"i","ȉ":"i","ȋ":"i","ị":"i","į":"i","ḭ":"i","ɨ":"i","ı":"i","ⓙ":"j","j":"j","ĵ":"j","ǰ":"j","ɉ":"j","ⓚ":"k","k":"k","ḱ":"k","ǩ":"k","ḳ":"k","ķ":"k","ḵ":"k","ƙ":"k","ⱪ":"k","ꝁ":"k","ꝃ":"k","ꝅ":"k","ꞣ":"k","ⓛ":"l","l":"l","ŀ":"l","ĺ":"l","ľ":"l","ḷ":"l","ḹ":"l","ļ":"l","ḽ":"l","ḻ":"l","ſ":"l","ł":"l","ƚ":"l","ɫ":"l","ⱡ":"l","ꝉ":"l","ꞁ":"l","ꝇ":"l","lj":"lj","ⓜ":"m","m":"m","ḿ":"m","ṁ":"m","ṃ":"m","ɱ":"m","ɯ":"m","ⓝ":"n","n":"n","ǹ":"n","ń":"n","ñ":"n","ṅ":"n","ň":"n","ṇ":"n","ņ":"n","ṋ":"n","ṉ":"n","ƞ":"n","ɲ":"n","ʼn":"n","ꞑ":"n","ꞥ":"n","nj":"nj","ⓞ":"o","o":"o","ò":"o","ó":"o","ô":"o","ồ":"o","ố":"o","ỗ":"o","ổ":"o","õ":"o","ṍ":"o","ȭ":"o","ṏ":"o","ō":"o","ṑ":"o","ṓ":"o","ŏ":"o","ȯ":"o","ȱ":"o","ö":"o","ȫ":"o","ỏ":"o","ő":"o","ǒ":"o","ȍ":"o","ȏ":"o","ơ":"o","ờ":"o","ớ":"o","ỡ":"o","ở":"o","ợ":"o","ọ":"o","ộ":"o","ǫ":"o","ǭ":"o","ø":"o","ǿ":"o","ɔ":"o","ꝋ":"o","ꝍ":"o","ɵ":"o","ƣ":"oi","ȣ":"ou","ꝏ":"oo","ⓟ":"p","p":"p","ṕ":"p","ṗ":"p","ƥ":"p","ᵽ":"p","ꝑ":"p","ꝓ":"p","ꝕ":"p","ⓠ":"q","q":"q","ɋ":"q","ꝗ":"q","ꝙ":"q","ⓡ":"r","r":"r","ŕ":"r","ṙ":"r","ř":"r","ȑ":"r","ȓ":"r","ṛ":"r","ṝ":"r","ŗ":"r","ṟ":"r","ɍ":"r","ɽ":"r","ꝛ":"r","ꞧ":"r","ꞃ":"r","ⓢ":"s","s":"s","ß":"s","ś":"s","ṥ":"s","ŝ":"s","ṡ":"s","š":"s","ṧ":"s","ṣ":"s","ṩ":"s","ș":"s","ş":"s","ȿ":"s","ꞩ":"s","ꞅ":"s","ẛ":"s","ⓣ":"t","t":"t","ṫ":"t","ẗ":"t","ť":"t","ṭ":"t","ț":"t","ţ":"t","ṱ":"t","ṯ":"t","ŧ":"t","ƭ":"t","ʈ":"t","ⱦ":"t","ꞇ":"t","ꜩ":"tz","ⓤ":"u","u":"u","ù":"u","ú":"u","û":"u","ũ":"u","ṹ":"u","ū":"u","ṻ":"u","ŭ":"u","ü":"u","ǜ":"u","ǘ":"u","ǖ":"u","ǚ":"u","ủ":"u","ů":"u","ű":"u","ǔ":"u","ȕ":"u","ȗ":"u","ư":"u","ừ":"u","ứ":"u","ữ":"u","ử":"u","ự":"u","ụ":"u","ṳ":"u","ų":"u","ṷ":"u","ṵ":"u","ʉ":"u","ⓥ":"v","v":"v","ṽ":"v","ṿ":"v","ʋ":"v","ꝟ":"v","ʌ":"v","ꝡ":"vy","ⓦ":"w","w":"w","ẁ":"w","ẃ":"w","ŵ":"w","ẇ":"w","ẅ":"w","ẘ":"w","ẉ":"w","ⱳ":"w","ⓧ":"x","x":"x","ẋ":"x","ẍ":"x","ⓨ":"y","y":"y","ỳ":"y","ý":"y","ŷ":"y","ỹ":"y","ȳ":"y","ẏ":"y","ÿ":"y","ỷ":"y","ẙ":"y","ỵ":"y","ƴ":"y","ɏ":"y","ỿ":"y","ⓩ":"z","z":"z","ź":"z","ẑ":"z","ż":"z","ž":"z","ẓ":"z","ẕ":"z","ƶ":"z","ȥ":"z","ɀ":"z","ⱬ":"z","ꝣ":"z","Ά":"Α","Έ":"Ε","Ή":"Η","Ί":"Ι","Ϊ":"Ι","Ό":"Ο","Ύ":"Υ","Ϋ":"Υ","Ώ":"Ω","ά":"α","έ":"ε","ή":"η","ί":"ι","ϊ":"ι","ΐ":"ι","ό":"ο","ύ":"υ","ϋ":"υ","ΰ":"υ","ω":"ω","ς":"σ"};return a}),b.define("select2/data/base",["../utils"],function(a){function b(){b.__super__.constructor.call(this)}return a.Extend(b,a.Observable),b.prototype.current=function(){throw new Error("The `current` method must be defined in child classes.")},b.prototype.query=function(){throw new Error("The `query` method must be defined in child classes.")},b.prototype.bind=function(){},b.prototype.destroy=function(){},b.prototype.generateResultId=function(b,c){var d=b.id+"-result-";return d+=a.generateChars(4),d+=null!=c.id?"-"+c.id.toString():"-"+a.generateChars(4)},b}),b.define("select2/data/select",["./base","../utils","jquery"],function(a,b,c){function d(a,b){this.$element=a,this.options=b,d.__super__.constructor.call(this)}return b.Extend(d,a),d.prototype.current=function(a){var b=[],d=this;this.$element.find(":selected").each(function(){var a=c(this),e=d.item(a);b.push(e)}),a(b)},d.prototype.select=function(a){var b=this;if(a.selected=!0,c(a.element).is("option"))return a.element.selected=!0,void this.$element.trigger("change");if(this.$element.prop("multiple"))this.current(function(d){var e=[];a=[a],a.push.apply(a,d);for(var f=0;f=0){var k=f.filter(d(j)),l=this.item(k),m=(c.extend(!0,{},l,j),this.option(l));k.replaceWith(m)}else{var n=this.option(j);if(j.children){var o=this.convertToOptions(j.children);b.appendMany(n,o)}h.push(n)}}return h},d}),b.define("select2/data/ajax",["./array","../utils","jquery"],function(a,b,c){function d(b,c){this.ajaxOptions=this._applyDefaults(c.get("ajax")),null!=this.ajaxOptions.processResults&&(this.processResults=this.ajaxOptions.processResults),a.__super__.constructor.call(this,b,c)}return b.Extend(d,a),d.prototype._applyDefaults=function(a){var b={data:function(a){return{q:a.term}},transport:function(a,b,d){var e=c.ajax(a);return e.then(b),e.fail(d),e}};return c.extend({},b,a,!0)},d.prototype.processResults=function(a){return a},d.prototype.query=function(a,b){function d(){var d=f.transport(f,function(d){var f=e.processResults(d,a);e.options.get("debug")&&window.console&&console.error&&(f&&f.results&&c.isArray(f.results)||console.error("Select2: The AJAX results did not return an array in the `results` key of the response.")),b(f)},function(){});e._request=d}var e=this;null!=this._request&&(c.isFunction(this._request.abort)&&this._request.abort(),this._request=null);var f=c.extend({type:"GET"},this.ajaxOptions);"function"==typeof f.url&&(f.url=f.url(a)),"function"==typeof f.data&&(f.data=f.data(a)),this.ajaxOptions.delay&&""!==a.term?(this._queryTimeout&&window.clearTimeout(this._queryTimeout),this._queryTimeout=window.setTimeout(d,this.ajaxOptions.delay)):d()},d}),b.define("select2/data/tags",["jquery"],function(a){function b(b,c,d){var e=d.get("tags"),f=d.get("createTag");if(void 0!==f&&(this.createTag=f),b.call(this,c,d),a.isArray(e))for(var g=0;g0&&b.term.length>this.maximumInputLength?void this.trigger("results:message",{message:"inputTooLong",args:{maximum:this.maximumInputLength,input:b.term,params:b}}):void a.call(this,b,c)},a}),b.define("select2/data/maximumSelectionLength",[],function(){function a(a,b,c){this.maximumSelectionLength=c.get("maximumSelectionLength"),a.call(this,b,c)}return a.prototype.query=function(a,b,c){var d=this;this.current(function(e){var f=null!=e?e.length:0;return d.maximumSelectionLength>0&&f>=d.maximumSelectionLength?void d.trigger("results:message",{message:"maximumSelected",args:{maximum:d.maximumSelectionLength}}):void a.call(d,b,c)})},a}),b.define("select2/dropdown",["jquery","./utils"],function(a,b){function c(a,b){this.$element=a,this.options=b,c.__super__.constructor.call(this)}return b.Extend(c,b.Observable),c.prototype.render=function(){var b=a('');return b.attr("dir",this.options.get("dir")),this.$dropdown=b,b},c.prototype.position=function(){},c.prototype.destroy=function(){this.$dropdown.remove()},c}),b.define("select2/dropdown/search",["jquery","../utils"],function(a){function b(){}return b.prototype.render=function(b){var c=b.call(this),d=a('');return this.$searchContainer=d,this.$search=d.find("input"),c.prepend(d),c},b.prototype.bind=function(b,c,d){var e=this;b.call(this,c,d),this.$search.on("keydown",function(a){e.trigger("keypress",a),e._keyUpPrevented=a.isDefaultPrevented()}),this.$search.on("input",function(){a(this).off("keyup")}),this.$search.on("keyup input",function(a){e.handleSearch(a)}),c.on("open",function(){e.$search.attr("tabindex",0),e.$search.focus(),window.setTimeout(function(){e.$search.focus()},0)}),c.on("close",function(){e.$search.attr("tabindex",-1),e.$search.val("")}),c.on("results:all",function(a){if(null==a.query.term||""===a.query.term){var b=e.showSearch(a);b?e.$searchContainer.removeClass("select2-search--hide"):e.$searchContainer.addClass("select2-search--hide")}})},b.prototype.handleSearch=function(){if(!this._keyUpPrevented){var a=this.$search.val();this.trigger("query",{term:a})}this._keyUpPrevented=!1},b.prototype.showSearch=function(){return!0},b}),b.define("select2/dropdown/hidePlaceholder",[],function(){function a(a,b,c,d){this.placeholder=this.normalizePlaceholder(c.get("placeholder")),a.call(this,b,c,d)}return a.prototype.append=function(a,b){b.results=this.removePlaceholder(b.results),a.call(this,b)},a.prototype.normalizePlaceholder=function(a,b){return"string"==typeof b&&(b={id:"",text:b}),b},a.prototype.removePlaceholder=function(a,b){for(var c=b.slice(0),d=b.length-1;d>=0;d--){var e=b[d];this.placeholder.id===e.id&&c.splice(d,1)}return c},a}),b.define("select2/dropdown/infiniteScroll",["jquery"],function(a){function b(a,b,c,d){this.lastParams={},a.call(this,b,c,d),this.$loadingMore=this.createLoadingMore(),this.loading=!1}return b.prototype.append=function(a,b){this.$loadingMore.remove(),this.loading=!1,a.call(this,b),this.showLoadingMore(b)&&this.$results.append(this.$loadingMore)},b.prototype.bind=function(b,c,d){var e=this;b.call(this,c,d),c.on("query",function(a){e.lastParams=a,e.loading=!0}),c.on("query:append",function(a){e.lastParams=a,e.loading=!0}),this.$results.on("scroll",function(){var b=a.contains(document.documentElement,e.$loadingMore[0]);if(!e.loading&&b){var c=e.$results.offset().top+e.$results.outerHeight(!1),d=e.$loadingMore.offset().top+e.$loadingMore.outerHeight(!1);c+50>=d&&e.loadMore()}})},b.prototype.loadMore=function(){this.loading=!0;var b=a.extend({},{page:1},this.lastParams);b.page++,this.trigger("query:append",b)},b.prototype.showLoadingMore=function(a,b){return b.pagination&&b.pagination.more},b.prototype.createLoadingMore=function(){var b=a('
    • '),c=this.options.get("translations").get("loadingMore");return b.html(c(this.lastParams)),b},b}),b.define("select2/dropdown/attachBody",["jquery","../utils"],function(a,b){function c(a,b,c){this.$dropdownParent=c.get("dropdownParent")||document.body,a.call(this,b,c)}return c.prototype.bind=function(a,b,c){var d=this,e=!1;a.call(this,b,c),b.on("open",function(){d._showDropdown(),d._attachPositioningHandler(b),e||(e=!0,b.on("results:all",function(){d._positionDropdown(),d._resizeDropdown()}),b.on("results:append",function(){d._positionDropdown(),d._resizeDropdown()}))}),b.on("close",function(){d._hideDropdown(),d._detachPositioningHandler(b)}),this.$dropdownContainer.on("mousedown",function(a){a.stopPropagation()})},c.prototype.position=function(a,b,c){b.attr("class",c.attr("class")),b.removeClass("select2"),b.addClass("select2-container--open"),b.css({position:"absolute",top:-999999}),this.$container=c},c.prototype.render=function(b){var c=a(""),d=b.call(this);return c.append(d),this.$dropdownContainer=c,c},c.prototype._hideDropdown=function(){this.$dropdownContainer.detach()},c.prototype._attachPositioningHandler=function(c){var d=this,e="scroll.select2."+c.id,f="resize.select2."+c.id,g="orientationchange.select2."+c.id,h=this.$container.parents().filter(b.hasScroll);h.each(function(){a(this).data("select2-scroll-position",{x:a(this).scrollLeft(),y:a(this).scrollTop()})}),h.on(e,function(){var b=a(this).data("select2-scroll-position");a(this).scrollTop(b.y)}),a(window).on(e+" "+f+" "+g,function(){d._positionDropdown(),d._resizeDropdown()})},c.prototype._detachPositioningHandler=function(c){var d="scroll.select2."+c.id,e="resize.select2."+c.id,f="orientationchange.select2."+c.id,g=this.$container.parents().filter(b.hasScroll);g.off(d),a(window).off(d+" "+e+" "+f)},c.prototype._positionDropdown=function(){var b=a(window),c=this.$dropdown.hasClass("select2-dropdown--above"),d=this.$dropdown.hasClass("select2-dropdown--below"),e=null,f=(this.$container.position(),this.$container.offset());f.bottom=f.top+this.$container.outerHeight(!1);var g={height:this.$container.outerHeight(!1)};g.top=f.top,g.bottom=f.top+g.height;var h={height:this.$dropdown.outerHeight(!1)},i={top:b.scrollTop(),bottom:b.scrollTop()+b.height()},j=i.topf.bottom+h.height,l={left:f.left,top:g.bottom};c||d||(e="below"),k||!j||c?!j&&k&&c&&(e="below"):e="above",("above"==e||c&&"below"!==e)&&(l.top=g.top-h.height),null!=e&&(this.$dropdown.removeClass("select2-dropdown--below select2-dropdown--above").addClass("select2-dropdown--"+e),this.$container.removeClass("select2-container--below select2-container--above").addClass("select2-container--"+e)),this.$dropdownContainer.css(l)},c.prototype._resizeDropdown=function(){this.$dropdownContainer.width();var a={width:this.$container.outerWidth(!1)+"px"};this.options.get("dropdownAutoWidth")&&(a.minWidth=a.width,a.width="auto"),this.$dropdown.css(a)},c.prototype._showDropdown=function(){this.$dropdownContainer.appendTo(this.$dropdownParent),this._positionDropdown(),this._resizeDropdown()},c}),b.define("select2/dropdown/minimumResultsForSearch",[],function(){function a(b){for(var c=0,d=0;d0&&(l.dataAdapter=j.Decorate(l.dataAdapter,r)),l.maximumInputLength>0&&(l.dataAdapter=j.Decorate(l.dataAdapter,s)),l.maximumSelectionLength>0&&(l.dataAdapter=j.Decorate(l.dataAdapter,t)),l.tags&&(l.dataAdapter=j.Decorate(l.dataAdapter,p)),(null!=l.tokenSeparators||null!=l.tokenizer)&&(l.dataAdapter=j.Decorate(l.dataAdapter,q)),null!=l.query){var C=b(l.amdBase+"compat/query");l.dataAdapter=j.Decorate(l.dataAdapter,C)}if(null!=l.initSelection){var D=b(l.amdBase+"compat/initSelection");l.dataAdapter=j.Decorate(l.dataAdapter,D)}}if(null==l.resultsAdapter&&(l.resultsAdapter=c,null!=l.ajax&&(l.resultsAdapter=j.Decorate(l.resultsAdapter,x)),null!=l.placeholder&&(l.resultsAdapter=j.Decorate(l.resultsAdapter,w)),l.selectOnClose&&(l.resultsAdapter=j.Decorate(l.resultsAdapter,A))),null==l.dropdownAdapter){if(l.multiple)l.dropdownAdapter=u;else{var E=j.Decorate(u,v);l.dropdownAdapter=E}if(0!==l.minimumResultsForSearch&&(l.dropdownAdapter=j.Decorate(l.dropdownAdapter,z)),l.closeOnSelect&&(l.dropdownAdapter=j.Decorate(l.dropdownAdapter,B)),null!=l.dropdownCssClass||null!=l.dropdownCss||null!=l.adaptDropdownCssClass){var F=b(l.amdBase+"compat/dropdownCss");l.dropdownAdapter=j.Decorate(l.dropdownAdapter,F)}l.dropdownAdapter=j.Decorate(l.dropdownAdapter,y)}if(null==l.selectionAdapter){if(l.selectionAdapter=l.multiple?e:d,null!=l.placeholder&&(l.selectionAdapter=j.Decorate(l.selectionAdapter,f)),l.allowClear&&(l.selectionAdapter=j.Decorate(l.selectionAdapter,g)),l.multiple&&(l.selectionAdapter=j.Decorate(l.selectionAdapter,h)),null!=l.containerCssClass||null!=l.containerCss||null!=l.adaptContainerCssClass){var G=b(l.amdBase+"compat/containerCss");l.selectionAdapter=j.Decorate(l.selectionAdapter,G)}l.selectionAdapter=j.Decorate(l.selectionAdapter,i)}if("string"==typeof l.language)if(l.language.indexOf("-")>0){var H=l.language.split("-"),I=H[0];l.language=[l.language,I]}else l.language=[l.language];if(a.isArray(l.language)){var J=new k;l.language.push("en");for(var K=l.language,L=0;L0){for(var f=a.extend(!0,{},e),g=e.children.length-1;g>=0;g--){var h=e.children[g],i=c(d,h);null==i&&f.children.splice(g,1)}return f.children.length>0?f:c(d,f)}var j=b(e.text).toUpperCase(),k=b(d.term).toUpperCase();return j.indexOf(k)>-1?e:null}this.defaults={amdBase:"./",amdLanguageBase:"./i18n/",closeOnSelect:!0,debug:!1,dropdownAutoWidth:!1,escapeMarkup:j.escapeMarkup,language:C,matcher:c,minimumInputLength:0,maximumInputLength:0,maximumSelectionLength:0,minimumResultsForSearch:0,selectOnClose:!1,sorter:function(a){return a},templateResult:function(a){return a.text},templateSelection:function(a){return a.text},theme:"default",width:"resolve"}},D.prototype.set=function(b,c){var d=a.camelCase(b),e={};e[d]=c;var f=j._convertData(e);a.extend(this.defaults,f)};var E=new D;return E}),b.define("select2/options",["require","jquery","./defaults","./utils"],function(a,b,c,d){function e(b,e){if(this.options=b,null!=e&&this.fromElement(e),this.options=c.apply(this.options),e&&e.is("input")){var f=a(this.get("amdBase")+"compat/inputData");this.options.dataAdapter=d.Decorate(this.options.dataAdapter,f)}}return e.prototype.fromElement=function(a){var c=["select2"];null==this.options.multiple&&(this.options.multiple=a.prop("multiple")),null==this.options.disabled&&(this.options.disabled=a.prop("disabled")),null==this.options.language&&(a.prop("lang")?this.options.language=a.prop("lang").toLowerCase():a.closest("[lang]").prop("lang")&&(this.options.language=a.closest("[lang]").prop("lang"))),null==this.options.dir&&(this.options.dir=a.prop("dir")?a.prop("dir"):a.closest("[dir]").prop("dir")?a.closest("[dir]").prop("dir"):"ltr"),a.prop("disabled",this.options.disabled),a.prop("multiple",this.options.multiple),a.data("select2Tags")&&(this.options.debug&&window.console&&console.warn&&console.warn('Select2: The `data-select2-tags` attribute has been changed to use the `data-data` and `data-tags="true"` attributes and will be removed in future versions of Select2.'),a.data("data",a.data("select2Tags")),a.data("tags",!0)),a.data("ajaxUrl")&&(this.options.debug&&window.console&&console.warn&&console.warn("Select2: The `data-ajax-url` attribute has been changed to `data-ajax--url` and support for the old attribute will be removed in future versions of Select2."),a.attr("ajax--url",a.data("ajaxUrl")),a.data("ajax--url",a.data("ajaxUrl")));var e={};e=b.fn.jquery&&"1."==b.fn.jquery.substr(0,2)&&a[0].dataset?b.extend(!0,{},a[0].dataset,a.data()):a.data();var f=b.extend(!0,{},e);f=d._convertData(f);for(var g in f)b.inArray(g,c)>-1||(b.isPlainObject(this.options[g])?b.extend(this.options[g],f[g]):this.options[g]=f[g]);return this},e.prototype.get=function(a){return this.options[a]},e.prototype.set=function(a,b){this.options[a]=b},e}),b.define("select2/core",["jquery","./options","./utils","./keys"],function(a,b,c,d){var e=function(a,c){null!=a.data("select2")&&a.data("select2").destroy(),this.$element=a,this.id=this._generateId(a),c=c||{},this.options=new b(c,a),e.__super__.constructor.call(this);var d=a.attr("tabindex")||0;a.data("old-tabindex",d),a.attr("tabindex","-1");var f=this.options.get("dataAdapter");this.dataAdapter=new f(a,this.options);var g=this.render();this._placeContainer(g);var h=this.options.get("selectionAdapter");this.selection=new h(a,this.options),this.$selection=this.selection.render(),this.selection.position(this.$selection,g);var i=this.options.get("dropdownAdapter");this.dropdown=new i(a,this.options),this.$dropdown=this.dropdown.render(),this.dropdown.position(this.$dropdown,g);var j=this.options.get("resultsAdapter");this.results=new j(a,this.options,this.dataAdapter),this.$results=this.results.render(),this.results.position(this.$results,this.$dropdown);var k=this;this._bindAdapters(),this._registerDomEvents(),this._registerDataEvents(),this._registerSelectionEvents(),this._registerDropdownEvents(),this._registerResultsEvents(),this._registerEvents(),this.dataAdapter.current(function(a){k.trigger("selection:update",{data:a})}),a.addClass("select2-hidden-accessible"),a.attr("aria-hidden","true"),this._syncAttributes(),a.data("select2",this)};return c.Extend(e,c.Observable),e.prototype._generateId=function(a){var b="";return b=null!=a.attr("id")?a.attr("id"):null!=a.attr("name")?a.attr("name")+"-"+c.generateChars(2):c.generateChars(4),b="select2-"+b},e.prototype._placeContainer=function(a){a.insertAfter(this.$element);var b=this._resolveWidth(this.$element,this.options.get("width"));null!=b&&a.css("width",b)},e.prototype._resolveWidth=function(a,b){var c=/^width:(([-+]?([0-9]*\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i;if("resolve"==b){var d=this._resolveWidth(a,"style");return null!=d?d:this._resolveWidth(a,"element")}if("element"==b){var e=a.outerWidth(!1);return 0>=e?"auto":e+"px"}if("style"==b){var f=a.attr("style");if("string"!=typeof f)return null;for(var g=f.split(";"),h=0,i=g.length;i>h;h+=1){var j=g[h].replace(/\s/g,""),k=j.match(c);if(null!==k&&k.length>=1)return k[1]}return null}return b},e.prototype._bindAdapters=function(){this.dataAdapter.bind(this,this.$container),this.selection.bind(this,this.$container),this.dropdown.bind(this,this.$container),this.results.bind(this,this.$container)},e.prototype._registerDomEvents=function(){var b=this;this.$element.on("change.select2",function(){b.dataAdapter.current(function(a){b.trigger("selection:update",{data:a})})}),this._sync=c.bind(this._syncAttributes,this),this.$element[0].attachEvent&&this.$element[0].attachEvent("onpropertychange",this._sync);var d=window.MutationObserver||window.WebKitMutationObserver||window.MozMutationObserver;null!=d?(this._observer=new d(function(c){a.each(c,b._sync)}),this._observer.observe(this.$element[0],{attributes:!0,subtree:!1})):this.$element[0].addEventListener&&this.$element[0].addEventListener("DOMAttrModified",b._sync,!1)},e.prototype._registerDataEvents=function(){var a=this;this.dataAdapter.on("*",function(b,c){a.trigger(b,c)})},e.prototype._registerSelectionEvents=function(){var b=this,c=["toggle"];this.selection.on("toggle",function(){b.toggleDropdown()}),this.selection.on("*",function(d,e){-1===a.inArray(d,c)&&b.trigger(d,e)})},e.prototype._registerDropdownEvents=function(){var a=this;this.dropdown.on("*",function(b,c){a.trigger(b,c)})},e.prototype._registerResultsEvents=function(){var a=this;this.results.on("*",function(b,c){a.trigger(b,c)})},e.prototype._registerEvents=function(){var a=this;this.on("open",function(){a.$container.addClass("select2-container--open")}),this.on("close",function(){a.$container.removeClass("select2-container--open")}),this.on("enable",function(){a.$container.removeClass("select2-container--disabled")}),this.on("disable",function(){a.$container.addClass("select2-container--disabled")}),this.on("focus",function(){a.$container.addClass("select2-container--focus")}),this.on("blur",function(){a.$container.removeClass("select2-container--focus")}),this.on("query",function(b){a.isOpen()||a.trigger("open"),this.dataAdapter.query(b,function(c){a.trigger("results:all",{data:c,query:b})})}),this.on("query:append",function(b){this.dataAdapter.query(b,function(c){a.trigger("results:append",{data:c,query:b})})}),this.on("keypress",function(b){var c=b.which;a.isOpen()?c===d.ENTER?(a.trigger("results:select"),b.preventDefault()):c===d.SPACE&&b.ctrlKey?(a.trigger("results:toggle"),b.preventDefault()):c===d.UP?(a.trigger("results:previous"),b.preventDefault()):c===d.DOWN?(a.trigger("results:next"),b.preventDefault()):(c===d.ESC||c===d.TAB)&&(a.close(),b.preventDefault()):(c===d.ENTER||c===d.SPACE||(c===d.DOWN||c===d.UP)&&b.altKey)&&(a.open(),b.preventDefault())})},e.prototype._syncAttributes=function(){this.options.set("disabled",this.$element.prop("disabled")),this.options.get("disabled")?(this.isOpen()&&this.close(),this.trigger("disable")):this.trigger("enable")},e.prototype.trigger=function(a,b){var c=e.__super__.trigger,d={open:"opening",close:"closing",select:"selecting",unselect:"unselecting"};if(a in d){var f=d[a],g={prevented:!1,name:a,args:b};if(c.call(this,f,g),g.prevented)return void(b.prevented=!0)}c.call(this,a,b)},e.prototype.toggleDropdown=function(){this.options.get("disabled")||(this.isOpen()?this.close():this.open())},e.prototype.open=function(){this.isOpen()||(this.trigger("query",{}),this.trigger("open"))},e.prototype.close=function(){this.isOpen()&&this.trigger("close")},e.prototype.isOpen=function(){return this.$container.hasClass("select2-container--open")},e.prototype.enable=function(a){this.options.get("debug")&&window.console&&console.warn&&console.warn('Select2: The `select2("enable")` method has been deprecated and will be removed in later Select2 versions. Use $element.prop("disabled") instead.'),(null==a||0===a.length)&&(a=[!0]);var b=!a[0];this.$element.prop("disabled",b)},e.prototype.data=function(){this.options.get("debug")&&arguments.length>0&&window.console&&console.warn&&console.warn('Select2: Data can no longer be set using `select2("data")`. You should consider setting the value instead using `$element.val()`.');var a=[];return this.dataAdapter.current(function(b){a=b}),a},e.prototype.val=function(b){if(this.options.get("debug")&&window.console&&console.warn&&console.warn('Select2: The `select2("val")` method has been deprecated and will be removed in later Select2 versions. Use $element.val() instead.'),null==b||0===b.length)return this.$element.val();var c=b[0];a.isArray(c)&&(c=a.map(c,function(a){return a.toString()})),this.$element.val(c).trigger("change")},e.prototype.destroy=function(){this.$container.remove(),this.$element[0].detachEvent&&this.$element[0].detachEvent("onpropertychange",this._sync),null!=this._observer?(this._observer.disconnect(),this._observer=null):this.$element[0].removeEventListener&&this.$element[0].removeEventListener("DOMAttrModified",this._sync,!1),this._sync=null,this.$element.off(".select2"),this.$element.attr("tabindex",this.$element.data("old-tabindex")),this.$element.removeClass("select2-hidden-accessible"),this.$element.attr("aria-hidden","false"),this.$element.removeData("select2"),this.dataAdapter.destroy(),this.selection.destroy(),this.dropdown.destroy(),this.results.destroy(),this.dataAdapter=null,this.selection=null,this.dropdown=null,this.results=null},e.prototype.render=function(){var b=a('');return b.attr("dir",this.options.get("dir")),this.$container=b,this.$container.addClass("select2-container--"+this.options.get("theme")),b.data("element",this.$element),b},e}),b.define("select2/compat/utils",["jquery"],function(a){function b(b,c,d){var e,f,g=[];e=a.trim(b.attr("class")),e&&(e=""+e,a(e.split(/\s+/)).each(function(){0===this.indexOf("select2-")&&g.push(this)})),e=a.trim(c.attr("class")),e&&(e=""+e,a(e.split(/\s+/)).each(function(){0!==this.indexOf("select2-")&&(f=d(this),null!=f&&g.push(f))})),b.attr("class",g.join(" "))}return{syncCssClasses:b}}),b.define("select2/compat/containerCss",["jquery","./utils"],function(a,b){function c(){return null}function d(){}return d.prototype.render=function(d){var e=d.call(this),f=this.options.get("containerCssClass")||"";a.isFunction(f)&&(f=f(this.$element));var g=this.options.get("adaptContainerCssClass");if(g=g||c,-1!==f.indexOf(":all:")){f=f.replace(":all","");var h=g;g=function(a){var b=h(a);return null!=b?b+" "+a:a}}var i=this.options.get("containerCss")||{};return a.isFunction(i)&&(i=i(this.$element)),b.syncCssClasses(e,this.$element,g),e.css(i),e.addClass(f),e},d}),b.define("select2/compat/dropdownCss",["jquery","./utils"],function(a,b){function c(){return null}function d(){}return d.prototype.render=function(d){var e=d.call(this),f=this.options.get("dropdownCssClass")||"";a.isFunction(f)&&(f=f(this.$element));var g=this.options.get("adaptDropdownCssClass");if(g=g||c,-1!==f.indexOf(":all:")){f=f.replace(":all","");var h=g;g=function(a){var b=h(a);return null!=b?b+" "+a:a}}var i=this.options.get("dropdownCss")||{};return a.isFunction(i)&&(i=i(this.$element)),b.syncCssClasses(e,this.$element,g),e.css(i),e.addClass(f),e},d}),b.define("select2/compat/initSelection",["jquery"],function(a){function b(a,b,c){c.get("debug")&&window.console&&console.warn&&console.warn("Select2: The `initSelection` option has been deprecated in favor of a custom data adapter that overrides the `current` method. This method is now called multiple times instead of a single time when the instance is initialized. Support will be removed for the `initSelection` option in future versions of Select2"),this.initSelection=c.get("initSelection"),this._isInitialized=!1,a.call(this,b,c)}return b.prototype.current=function(b,c){var d=this;return this._isInitialized?void b.call(this,c):void this.initSelection.call(null,this.$element,function(b){d._isInitialized=!0,a.isArray(b)||(b=[b]),c(b)})},b}),b.define("select2/compat/inputData",["jquery"],function(a){function b(a,b,c){this._currentData=[],this._valueSeparator=c.get("valueSeparator")||",","hidden"===b.prop("type")&&c.get("debug")&&console&&console.warn&&console.warn("Select2: Using a hidden input with Select2 is no longer supported and may stop working in the future. It is recommended to use a `');this.$searchContainer=c,this.$search=c.find("input");var d=b.call(this);return d},d.prototype.bind=function(a,b,d){var e=this;a.call(this,b,d),b.on("open",function(){e.$search.attr("tabindex",0),e.$search.focus()}),b.on("close",function(){e.$search.attr("tabindex",-1),e.$search.val(""),e.$search.focus()}),b.on("enable",function(){e.$search.prop("disabled",!1)}),b.on("disable",function(){e.$search.prop("disabled",!0)}),this.$selection.on("focusin",".select2-search--inline",function(a){e.trigger("focus",a)}),this.$selection.on("focusout",".select2-search--inline",function(a){e.trigger("blur",a)}),this.$selection.on("keydown",".select2-search--inline",function(a){a.stopPropagation(),e.trigger("keypress",a),e._keyUpPrevented=a.isDefaultPrevented();var b=a.which;if(b===c.BACKSPACE&&""===e.$search.val()){var d=e.$searchContainer.prev(".select2-selection__choice");if(d.length>0){var f=d.data("data");e.searchRemoveChoice(f)}}}),this.$selection.on("input",".select2-search--inline",function(){e.$selection.off("keyup.search")}),this.$selection.on("keyup.search input",".select2-search--inline",function(a){e.handleSearch(a)})},d.prototype.createPlaceholder=function(a,b){this.$search.attr("placeholder",b.text)},d.prototype.update=function(a,b){this.$search.attr("placeholder",""),a.call(this,b),this.$selection.find(".select2-selection__rendered").append(this.$searchContainer),this.resizeSearch()},d.prototype.handleSearch=function(){if(this.resizeSearch(),!this._keyUpPrevented){var a=this.$search.val();this.trigger("query",{term:a})}this._keyUpPrevented=!1},d.prototype.searchRemoveChoice=function(a,b){this.trigger("unselect",{data:b}),this.trigger("open"),this.$search.val(b.text+" ")},d.prototype.resizeSearch=function(){this.$search.css("width","25px");var a="";if(""!==this.$search.attr("placeholder"))a=this.$selection.find(".select2-selection__rendered").innerWidth();else{var b=this.$search.val().length+1;a=.75*b+"em"}this.$search.css("width",a)},d}),b.define("select2/selection/eventRelay",["jquery"],function(a){function b(){}return b.prototype.bind=function(b,c,d){var e=this,f=["open","opening","close","closing","select","selecting","unselect","unselecting"],g=["opening","closing","selecting","unselecting"];b.call(this,c,d),c.on("*",function(b,c){if(-1!==a.inArray(b,f)){c=c||{};var d=a.Event("select2:"+b,{params:c});e.$element.trigger(d),-1!==a.inArray(b,g)&&(c.prevented=d.isDefaultPrevented())}})},b}),b.define("select2/translation",["jquery","require"],function(a,b){function c(a){this.dict=a||{}}return c.prototype.all=function(){return this.dict},c.prototype.get=function(a){return this.dict[a]},c.prototype.extend=function(b){this.dict=a.extend({},b.all(),this.dict)},c._cache={},c.loadPath=function(a){if(!(a in c._cache)){var d=b(a);c._cache[a]=d}return new c(c._cache[a])},c}),b.define("select2/diacritics",[],function(){var a={"Ⓐ":"A","A":"A","À":"A","Á":"A","Â":"A","Ầ":"A","Ấ":"A","Ẫ":"A","Ẩ":"A","Ã":"A","Ā":"A","Ă":"A","Ằ":"A","Ắ":"A","Ẵ":"A","Ẳ":"A","Ȧ":"A","Ǡ":"A","Ä":"A","Ǟ":"A","Ả":"A","Å":"A","Ǻ":"A","Ǎ":"A","Ȁ":"A","Ȃ":"A","Ạ":"A","Ậ":"A","Ặ":"A","Ḁ":"A","Ą":"A","Ⱥ":"A","Ɐ":"A","Ꜳ":"AA","Æ":"AE","Ǽ":"AE","Ǣ":"AE","Ꜵ":"AO","Ꜷ":"AU","Ꜹ":"AV","Ꜻ":"AV","Ꜽ":"AY","Ⓑ":"B","B":"B","Ḃ":"B","Ḅ":"B","Ḇ":"B","Ƀ":"B","Ƃ":"B","Ɓ":"B","Ⓒ":"C","C":"C","Ć":"C","Ĉ":"C","Ċ":"C","Č":"C","Ç":"C","Ḉ":"C","Ƈ":"C","Ȼ":"C","Ꜿ":"C","Ⓓ":"D","D":"D","Ḋ":"D","Ď":"D","Ḍ":"D","Ḑ":"D","Ḓ":"D","Ḏ":"D","Đ":"D","Ƌ":"D","Ɗ":"D","Ɖ":"D","Ꝺ":"D","DZ":"DZ","DŽ":"DZ","Dz":"Dz","Dž":"Dz","Ⓔ":"E","E":"E","È":"E","É":"E","Ê":"E","Ề":"E","Ế":"E","Ễ":"E","Ể":"E","Ẽ":"E","Ē":"E","Ḕ":"E","Ḗ":"E","Ĕ":"E","Ė":"E","Ë":"E","Ẻ":"E","Ě":"E","Ȅ":"E","Ȇ":"E","Ẹ":"E","Ệ":"E","Ȩ":"E","Ḝ":"E","Ę":"E","Ḙ":"E","Ḛ":"E","Ɛ":"E","Ǝ":"E","Ⓕ":"F","F":"F","Ḟ":"F","Ƒ":"F","Ꝼ":"F","Ⓖ":"G","G":"G","Ǵ":"G","Ĝ":"G","Ḡ":"G","Ğ":"G","Ġ":"G","Ǧ":"G","Ģ":"G","Ǥ":"G","Ɠ":"G","Ꞡ":"G","Ᵹ":"G","Ꝿ":"G","Ⓗ":"H","H":"H","Ĥ":"H","Ḣ":"H","Ḧ":"H","Ȟ":"H","Ḥ":"H","Ḩ":"H","Ḫ":"H","Ħ":"H","Ⱨ":"H","Ⱶ":"H","Ɥ":"H","Ⓘ":"I","I":"I","Ì":"I","Í":"I","Î":"I","Ĩ":"I","Ī":"I","Ĭ":"I","İ":"I","Ï":"I","Ḯ":"I","Ỉ":"I","Ǐ":"I","Ȉ":"I","Ȋ":"I","Ị":"I","Į":"I","Ḭ":"I","Ɨ":"I","Ⓙ":"J","J":"J","Ĵ":"J","Ɉ":"J","Ⓚ":"K","K":"K","Ḱ":"K","Ǩ":"K","Ḳ":"K","Ķ":"K","Ḵ":"K","Ƙ":"K","Ⱪ":"K","Ꝁ":"K","Ꝃ":"K","Ꝅ":"K","Ꞣ":"K","Ⓛ":"L","L":"L","Ŀ":"L","Ĺ":"L","Ľ":"L","Ḷ":"L","Ḹ":"L","Ļ":"L","Ḽ":"L","Ḻ":"L","Ł":"L","Ƚ":"L","Ɫ":"L","Ⱡ":"L","Ꝉ":"L","Ꝇ":"L","Ꞁ":"L","LJ":"LJ","Lj":"Lj","Ⓜ":"M","M":"M","Ḿ":"M","Ṁ":"M","Ṃ":"M","Ɱ":"M","Ɯ":"M","Ⓝ":"N","N":"N","Ǹ":"N","Ń":"N","Ñ":"N","Ṅ":"N","Ň":"N","Ṇ":"N","Ņ":"N","Ṋ":"N","Ṉ":"N","Ƞ":"N","Ɲ":"N","Ꞑ":"N","Ꞥ":"N","NJ":"NJ","Nj":"Nj","Ⓞ":"O","O":"O","Ò":"O","Ó":"O","Ô":"O","Ồ":"O","Ố":"O","Ỗ":"O","Ổ":"O","Õ":"O","Ṍ":"O","Ȭ":"O","Ṏ":"O","Ō":"O","Ṑ":"O","Ṓ":"O","Ŏ":"O","Ȯ":"O","Ȱ":"O","Ö":"O","Ȫ":"O","Ỏ":"O","Ő":"O","Ǒ":"O","Ȍ":"O","Ȏ":"O","Ơ":"O","Ờ":"O","Ớ":"O","Ỡ":"O","Ở":"O","Ợ":"O","Ọ":"O","Ộ":"O","Ǫ":"O","Ǭ":"O","Ø":"O","Ǿ":"O","Ɔ":"O","Ɵ":"O","Ꝋ":"O","Ꝍ":"O","Ƣ":"OI","Ꝏ":"OO","Ȣ":"OU","Ⓟ":"P","P":"P","Ṕ":"P","Ṗ":"P","Ƥ":"P","Ᵽ":"P","Ꝑ":"P","Ꝓ":"P","Ꝕ":"P","Ⓠ":"Q","Q":"Q","Ꝗ":"Q","Ꝙ":"Q","Ɋ":"Q","Ⓡ":"R","R":"R","Ŕ":"R","Ṙ":"R","Ř":"R","Ȑ":"R","Ȓ":"R","Ṛ":"R","Ṝ":"R","Ŗ":"R","Ṟ":"R","Ɍ":"R","Ɽ":"R","Ꝛ":"R","Ꞧ":"R","Ꞃ":"R","Ⓢ":"S","S":"S","ẞ":"S","Ś":"S","Ṥ":"S","Ŝ":"S","Ṡ":"S","Š":"S","Ṧ":"S","Ṣ":"S","Ṩ":"S","Ș":"S","Ş":"S","Ȿ":"S","Ꞩ":"S","Ꞅ":"S","Ⓣ":"T","T":"T","Ṫ":"T","Ť":"T","Ṭ":"T","Ț":"T","Ţ":"T","Ṱ":"T","Ṯ":"T","Ŧ":"T","Ƭ":"T","Ʈ":"T","Ⱦ":"T","Ꞇ":"T","Ꜩ":"TZ","Ⓤ":"U","U":"U","Ù":"U","Ú":"U","Û":"U","Ũ":"U","Ṹ":"U","Ū":"U","Ṻ":"U","Ŭ":"U","Ü":"U","Ǜ":"U","Ǘ":"U","Ǖ":"U","Ǚ":"U","Ủ":"U","Ů":"U","Ű":"U","Ǔ":"U","Ȕ":"U","Ȗ":"U","Ư":"U","Ừ":"U","Ứ":"U","Ữ":"U","Ử":"U","Ự":"U","Ụ":"U","Ṳ":"U","Ų":"U","Ṷ":"U","Ṵ":"U","Ʉ":"U","Ⓥ":"V","V":"V","Ṽ":"V","Ṿ":"V","Ʋ":"V","Ꝟ":"V","Ʌ":"V","Ꝡ":"VY","Ⓦ":"W","W":"W","Ẁ":"W","Ẃ":"W","Ŵ":"W","Ẇ":"W","Ẅ":"W","Ẉ":"W","Ⱳ":"W","Ⓧ":"X","X":"X","Ẋ":"X","Ẍ":"X","Ⓨ":"Y","Y":"Y","Ỳ":"Y","Ý":"Y","Ŷ":"Y","Ỹ":"Y","Ȳ":"Y","Ẏ":"Y","Ÿ":"Y","Ỷ":"Y","Ỵ":"Y","Ƴ":"Y","Ɏ":"Y","Ỿ":"Y","Ⓩ":"Z","Z":"Z","Ź":"Z","Ẑ":"Z","Ż":"Z","Ž":"Z","Ẓ":"Z","Ẕ":"Z","Ƶ":"Z","Ȥ":"Z","Ɀ":"Z","Ⱬ":"Z","Ꝣ":"Z","ⓐ":"a","a":"a","ẚ":"a","à":"a","á":"a","â":"a","ầ":"a","ấ":"a","ẫ":"a","ẩ":"a","ã":"a","ā":"a","ă":"a","ằ":"a","ắ":"a","ẵ":"a","ẳ":"a","ȧ":"a","ǡ":"a","ä":"a","ǟ":"a","ả":"a","å":"a","ǻ":"a","ǎ":"a","ȁ":"a","ȃ":"a","ạ":"a","ậ":"a","ặ":"a","ḁ":"a","ą":"a","ⱥ":"a","ɐ":"a","ꜳ":"aa","æ":"ae","ǽ":"ae","ǣ":"ae","ꜵ":"ao","ꜷ":"au","ꜹ":"av","ꜻ":"av","ꜽ":"ay","ⓑ":"b","b":"b","ḃ":"b","ḅ":"b","ḇ":"b","ƀ":"b","ƃ":"b","ɓ":"b","ⓒ":"c","c":"c","ć":"c","ĉ":"c","ċ":"c","č":"c","ç":"c","ḉ":"c","ƈ":"c","ȼ":"c","ꜿ":"c","ↄ":"c","ⓓ":"d","d":"d","ḋ":"d","ď":"d","ḍ":"d","ḑ":"d","ḓ":"d","ḏ":"d","đ":"d","ƌ":"d","ɖ":"d","ɗ":"d","ꝺ":"d","dz":"dz","dž":"dz","ⓔ":"e","e":"e","è":"e","é":"e","ê":"e","ề":"e","ế":"e","ễ":"e","ể":"e","ẽ":"e","ē":"e","ḕ":"e","ḗ":"e","ĕ":"e","ė":"e","ë":"e","ẻ":"e","ě":"e","ȅ":"e","ȇ":"e","ẹ":"e","ệ":"e","ȩ":"e","ḝ":"e","ę":"e","ḙ":"e","ḛ":"e","ɇ":"e","ɛ":"e","ǝ":"e","ⓕ":"f","f":"f","ḟ":"f","ƒ":"f","ꝼ":"f","ⓖ":"g","g":"g","ǵ":"g","ĝ":"g","ḡ":"g","ğ":"g","ġ":"g","ǧ":"g","ģ":"g","ǥ":"g","ɠ":"g","ꞡ":"g","ᵹ":"g","ꝿ":"g","ⓗ":"h","h":"h","ĥ":"h","ḣ":"h","ḧ":"h","ȟ":"h","ḥ":"h","ḩ":"h","ḫ":"h","ẖ":"h","ħ":"h","ⱨ":"h","ⱶ":"h","ɥ":"h","ƕ":"hv","ⓘ":"i","i":"i","ì":"i","í":"i","î":"i","ĩ":"i","ī":"i","ĭ":"i","ï":"i","ḯ":"i","ỉ":"i","ǐ":"i","ȉ":"i","ȋ":"i","ị":"i","į":"i","ḭ":"i","ɨ":"i","ı":"i","ⓙ":"j","j":"j","ĵ":"j","ǰ":"j","ɉ":"j","ⓚ":"k","k":"k","ḱ":"k","ǩ":"k","ḳ":"k","ķ":"k","ḵ":"k","ƙ":"k","ⱪ":"k","ꝁ":"k","ꝃ":"k","ꝅ":"k","ꞣ":"k","ⓛ":"l","l":"l","ŀ":"l","ĺ":"l","ľ":"l","ḷ":"l","ḹ":"l","ļ":"l","ḽ":"l","ḻ":"l","ſ":"l","ł":"l","ƚ":"l","ɫ":"l","ⱡ":"l","ꝉ":"l","ꞁ":"l","ꝇ":"l","lj":"lj","ⓜ":"m","m":"m","ḿ":"m","ṁ":"m","ṃ":"m","ɱ":"m","ɯ":"m","ⓝ":"n","n":"n","ǹ":"n","ń":"n","ñ":"n","ṅ":"n","ň":"n","ṇ":"n","ņ":"n","ṋ":"n","ṉ":"n","ƞ":"n","ɲ":"n","ʼn":"n","ꞑ":"n","ꞥ":"n","nj":"nj","ⓞ":"o","o":"o","ò":"o","ó":"o","ô":"o","ồ":"o","ố":"o","ỗ":"o","ổ":"o","õ":"o","ṍ":"o","ȭ":"o","ṏ":"o","ō":"o","ṑ":"o","ṓ":"o","ŏ":"o","ȯ":"o","ȱ":"o","ö":"o","ȫ":"o","ỏ":"o","ő":"o","ǒ":"o","ȍ":"o","ȏ":"o","ơ":"o","ờ":"o","ớ":"o","ỡ":"o","ở":"o","ợ":"o","ọ":"o","ộ":"o","ǫ":"o","ǭ":"o","ø":"o","ǿ":"o","ɔ":"o","ꝋ":"o","ꝍ":"o","ɵ":"o","ƣ":"oi","ȣ":"ou","ꝏ":"oo","ⓟ":"p","p":"p","ṕ":"p","ṗ":"p","ƥ":"p","ᵽ":"p","ꝑ":"p","ꝓ":"p","ꝕ":"p","ⓠ":"q","q":"q","ɋ":"q","ꝗ":"q","ꝙ":"q","ⓡ":"r","r":"r","ŕ":"r","ṙ":"r","ř":"r","ȑ":"r","ȓ":"r","ṛ":"r","ṝ":"r","ŗ":"r","ṟ":"r","ɍ":"r","ɽ":"r","ꝛ":"r","ꞧ":"r","ꞃ":"r","ⓢ":"s","s":"s","ß":"s","ś":"s","ṥ":"s","ŝ":"s","ṡ":"s","š":"s","ṧ":"s","ṣ":"s","ṩ":"s","ș":"s","ş":"s","ȿ":"s","ꞩ":"s","ꞅ":"s","ẛ":"s","ⓣ":"t","t":"t","ṫ":"t","ẗ":"t","ť":"t","ṭ":"t","ț":"t","ţ":"t","ṱ":"t","ṯ":"t","ŧ":"t","ƭ":"t","ʈ":"t","ⱦ":"t","ꞇ":"t","ꜩ":"tz","ⓤ":"u","u":"u","ù":"u","ú":"u","û":"u","ũ":"u","ṹ":"u","ū":"u","ṻ":"u","ŭ":"u","ü":"u","ǜ":"u","ǘ":"u","ǖ":"u","ǚ":"u","ủ":"u","ů":"u","ű":"u","ǔ":"u","ȕ":"u","ȗ":"u","ư":"u","ừ":"u","ứ":"u","ữ":"u","ử":"u","ự":"u","ụ":"u","ṳ":"u","ų":"u","ṷ":"u","ṵ":"u","ʉ":"u","ⓥ":"v","v":"v","ṽ":"v","ṿ":"v","ʋ":"v","ꝟ":"v","ʌ":"v","ꝡ":"vy","ⓦ":"w","w":"w","ẁ":"w","ẃ":"w","ŵ":"w","ẇ":"w","ẅ":"w","ẘ":"w","ẉ":"w","ⱳ":"w","ⓧ":"x","x":"x","ẋ":"x","ẍ":"x","ⓨ":"y","y":"y","ỳ":"y","ý":"y","ŷ":"y","ỹ":"y","ȳ":"y","ẏ":"y","ÿ":"y","ỷ":"y","ẙ":"y","ỵ":"y","ƴ":"y","ɏ":"y","ỿ":"y","ⓩ":"z","z":"z","ź":"z","ẑ":"z","ż":"z","ž":"z","ẓ":"z","ẕ":"z","ƶ":"z","ȥ":"z","ɀ":"z","ⱬ":"z","ꝣ":"z","Ά":"Α","Έ":"Ε","Ή":"Η","Ί":"Ι","Ϊ":"Ι","Ό":"Ο","Ύ":"Υ","Ϋ":"Υ","Ώ":"Ω","ά":"α","έ":"ε","ή":"η","ί":"ι","ϊ":"ι","ΐ":"ι","ό":"ο","ύ":"υ","ϋ":"υ","ΰ":"υ","ω":"ω","ς":"σ"};return a}),b.define("select2/data/base",["../utils"],function(a){function b(){b.__super__.constructor.call(this)}return a.Extend(b,a.Observable),b.prototype.current=function(){throw new Error("The `current` method must be defined in child classes.")},b.prototype.query=function(){throw new Error("The `query` method must be defined in child classes.")},b.prototype.bind=function(){},b.prototype.destroy=function(){},b.prototype.generateResultId=function(b,c){var d=b.id+"-result-";return d+=a.generateChars(4),d+=null!=c.id?"-"+c.id.toString():"-"+a.generateChars(4)},b}),b.define("select2/data/select",["./base","../utils","jquery"],function(a,b,c){function d(a,b){this.$element=a,this.options=b,d.__super__.constructor.call(this)}return b.Extend(d,a),d.prototype.current=function(a){var b=[],d=this;this.$element.find(":selected").each(function(){var a=c(this),e=d.item(a);b.push(e)}),a(b)},d.prototype.select=function(a){var b=this;if(c(a.element).is("option"))return a.element.selected=!0,void this.$element.trigger("change");if(this.$element.prop("multiple"))this.current(function(d){var e=[];a=[a],a.push.apply(a,d);for(var f=0;f=0){var j=e.filter(b(i)),k=this.item(j),l=(c.extend(!0,{},k,i),this.option(k));j.replaceWith(l)}else{var m=this.option(i);if(i.children){var n=this.convertToOptions(i.children);m.append(n)}g=g.add(m)}}return g},d}),b.define("select2/data/ajax",["./array","../utils","jquery"],function(a,b,c){function d(b,c){this.ajaxOptions=this._applyDefaults(c.get("ajax")),null!=this.ajaxOptions.processResults&&(this.processResults=this.ajaxOptions.processResults),a.__super__.constructor.call(this,b,c)}return b.Extend(d,a),d.prototype._applyDefaults=function(a){var b={data:function(a){return{q:a.term}},transport:function(a,b,d){var e=c.ajax(a);return e.then(b),e.fail(d),e}};return c.extend({},b,a,!0)},d.prototype.processResults=function(a){return a},d.prototype.query=function(a,b){function d(){var d=f.transport(f,function(d){var f=e.processResults(d,a);e.options.get("debug")&&window.console&&console.error&&(f&&f.results&&c.isArray(f.results)||console.error("Select2: The AJAX results did not return an array in the `results` key of the response.")),b(f)},function(){});e._request=d}var e=this;this._request&&(this._request.abort(),this._request=null);var f=c.extend({type:"GET"},this.ajaxOptions);"function"==typeof f.url&&(f.url=f.url(a)),"function"==typeof f.data&&(f.data=f.data(a)),this.ajaxOptions.delay&&""!==a.term?(this._queryTimeout&&window.clearTimeout(this._queryTimeout),this._queryTimeout=window.setTimeout(d,this.ajaxOptions.delay)):d()},d}),b.define("select2/data/tags",["jquery"],function(a){function b(b,c,d){var e=d.get("tags"),f=d.get("createTag");if(void 0!==f&&(this.createTag=f),b.call(this,c,d),a.isArray(e))for(var g=0;g0&&b.term.length>this.maximumInputLength?void this.trigger("results:message",{message:"inputTooLong",args:{maximum:this.maximumInputLength,input:b.term,params:b}}):void a.call(this,b,c)},a}),b.define("select2/data/maximumSelectionLength",[],function(){function a(a,b,c){this.maximumSelectionLength=c.get("maximumSelectionLength"),a.call(this,b,c)}return a.prototype.query=function(a,b,c){var d=this;this.current(function(e){var f=null!=e?e.length:0;return d.maximumSelectionLength>0&&f>=d.maximumSelectionLength?void d.trigger("results:message",{message:"maximumSelected",args:{maximum:d.maximumSelectionLength}}):void a.call(d,b,c)})},a}),b.define("select2/dropdown",["jquery","./utils"],function(a,b){function c(a,b){this.$element=a,this.options=b,c.__super__.constructor.call(this)}return b.Extend(c,b.Observable),c.prototype.render=function(){var b=a('');return b.attr("dir",this.options.get("dir")),this.$dropdown=b,b},c.prototype.position=function(){},c.prototype.destroy=function(){this.$dropdown.remove()},c}),b.define("select2/dropdown/search",["jquery","../utils"],function(a){function b(){}return b.prototype.render=function(b){var c=b.call(this),d=a('');return this.$searchContainer=d,this.$search=d.find("input"),c.prepend(d),c},b.prototype.bind=function(b,c,d){var e=this;b.call(this,c,d),this.$search.on("keydown",function(a){e.trigger("keypress",a),e._keyUpPrevented=a.isDefaultPrevented()}),this.$search.on("input",function(){a(this).off("keyup")}),this.$search.on("keyup input",function(a){e.handleSearch(a)}),c.on("open",function(){e.$search.attr("tabindex",0),e.$search.focus(),window.setTimeout(function(){e.$search.focus()},0)}),c.on("close",function(){e.$search.attr("tabindex",-1),e.$search.val("")}),c.on("results:all",function(a){if(null==a.query.term||""===a.query.term){var b=e.showSearch(a);b?e.$searchContainer.removeClass("select2-search--hide"):e.$searchContainer.addClass("select2-search--hide")}})},b.prototype.handleSearch=function(){if(!this._keyUpPrevented){var a=this.$search.val();this.trigger("query",{term:a})}this._keyUpPrevented=!1},b.prototype.showSearch=function(){return!0},b}),b.define("select2/dropdown/hidePlaceholder",[],function(){function a(a,b,c,d){this.placeholder=this.normalizePlaceholder(c.get("placeholder")),a.call(this,b,c,d)}return a.prototype.append=function(a,b){b.results=this.removePlaceholder(b.results),a.call(this,b)},a.prototype.normalizePlaceholder=function(a,b){return"string"==typeof b&&(b={id:"",text:b}),b},a.prototype.removePlaceholder=function(a,b){for(var c=b.slice(0),d=b.length-1;d>=0;d--){var e=b[d];this.placeholder.id===e.id&&c.splice(d,1)}return c},a}),b.define("select2/dropdown/infiniteScroll",["jquery"],function(a){function b(a,b,c,d){this.lastParams={},a.call(this,b,c,d),this.$loadingMore=this.createLoadingMore(),this.loading=!1}return b.prototype.append=function(a,b){this.$loadingMore.remove(),this.loading=!1,a.call(this,b),this.showLoadingMore(b)&&this.$results.append(this.$loadingMore)},b.prototype.bind=function(b,c,d){var e=this;b.call(this,c,d),c.on("query",function(a){e.lastParams=a,e.loading=!0}),c.on("query:append",function(a){e.lastParams=a,e.loading=!0}),this.$results.on("scroll",function(){var b=a.contains(document.documentElement,e.$loadingMore[0]);if(!e.loading&&b){var c=e.$results.offset().top+e.$results.outerHeight(!1),d=e.$loadingMore.offset().top+e.$loadingMore.outerHeight(!1);c+50>=d&&e.loadMore()}})},b.prototype.loadMore=function(){this.loading=!0;var b=a.extend({},{page:1},this.lastParams);b.page++,this.trigger("query:append",b)},b.prototype.showLoadingMore=function(a,b){return b.pagination&&b.pagination.more},b.prototype.createLoadingMore=function(){var b=a('
    • '),c=this.options.get("translations").get("loadingMore");return b.html(c(this.lastParams)),b},b}),b.define("select2/dropdown/attachBody",["jquery","../utils"],function(a,b){function c(a,b,c){this.$dropdownParent=c.get("dropdownParent")||document.body,a.call(this,b,c)}return c.prototype.bind=function(a,b,c){var d=this,e=!1;a.call(this,b,c),b.on("open",function(){d._showDropdown(),d._attachPositioningHandler(b),e||(e=!0,b.on("results:all",function(){d._positionDropdown(),d._resizeDropdown()}),b.on("results:append",function(){d._positionDropdown(),d._resizeDropdown()}))}),b.on("close",function(){d._hideDropdown(),d._detachPositioningHandler(b)}),this.$dropdownContainer.on("mousedown",function(a){a.stopPropagation()})},c.prototype.position=function(a,b,c){b.attr("class",c.attr("class")),b.removeClass("select2"),b.addClass("select2-container--open"),b.css({position:"absolute",top:-999999}),this.$container=c},c.prototype.render=function(b){var c=a(""),d=b.call(this);return c.append(d),this.$dropdownContainer=c,c},c.prototype._hideDropdown=function(){this.$dropdownContainer.detach()},c.prototype._attachPositioningHandler=function(c){var d=this,e="scroll.select2."+c.id,f="resize.select2."+c.id,g="orientationchange.select2."+c.id,h=this.$container.parents().filter(b.hasScroll);h.each(function(){a(this).data("select2-scroll-position",{x:a(this).scrollLeft(),y:a(this).scrollTop()})}),h.on(e,function(){var b=a(this).data("select2-scroll-position");a(this).scrollTop(b.y)}),a(window).on(e+" "+f+" "+g,function(){d._positionDropdown(),d._resizeDropdown()})},c.prototype._detachPositioningHandler=function(c){var d="scroll.select2."+c.id,e="resize.select2."+c.id,f="orientationchange.select2."+c.id,g=this.$container.parents().filter(b.hasScroll);g.off(d),a(window).off(d+" "+e+" "+f)},c.prototype._positionDropdown=function(){var b=a(window),c=this.$dropdown.hasClass("select2-dropdown--above"),d=this.$dropdown.hasClass("select2-dropdown--below"),e=null,f=(this.$container.position(),this.$container.offset());f.bottom=f.top+this.$container.outerHeight(!1);var g={height:this.$container.outerHeight(!1)};g.top=f.top,g.bottom=f.top+g.height;var h={height:this.$dropdown.outerHeight(!1)},i={top:b.scrollTop(),bottom:b.scrollTop()+b.height()},j=i.topf.bottom+h.height,l={left:f.left,top:g.bottom};c||d||(e="below"),k||!j||c?!j&&k&&c&&(e="below"):e="above",("above"==e||c&&"below"!==e)&&(l.top=g.top-h.height),null!=e&&(this.$dropdown.removeClass("select2-dropdown--below select2-dropdown--above").addClass("select2-dropdown--"+e),this.$container.removeClass("select2-container--below select2-container--above").addClass("select2-container--"+e)),this.$dropdownContainer.css(l)},c.prototype._resizeDropdown=function(){this.$dropdownContainer.width(),this.$dropdown.css({width:this.$container.outerWidth(!1)+"px"})},c.prototype._showDropdown=function(){this.$dropdownContainer.appendTo(this.$dropdownParent),this._positionDropdown(),this._resizeDropdown()},c}),b.define("select2/dropdown/minimumResultsForSearch",[],function(){function a(b){for(var c=0,d=0;d0&&(l.dataAdapter=j.Decorate(l.dataAdapter,r)),l.maximumInputLength>0&&(l.dataAdapter=j.Decorate(l.dataAdapter,s)),l.maximumSelectionLength>0&&(l.dataAdapter=j.Decorate(l.dataAdapter,t)),l.tags&&(l.dataAdapter=j.Decorate(l.dataAdapter,p)),(null!=l.tokenSeparators||null!=l.tokenizer)&&(l.dataAdapter=j.Decorate(l.dataAdapter,q)),null!=l.query){var C=b(l.amdBase+"compat/query");l.dataAdapter=j.Decorate(l.dataAdapter,C)}if(null!=l.initSelection){var D=b(l.amdBase+"compat/initSelection");l.dataAdapter=j.Decorate(l.dataAdapter,D)}}if(null==l.resultsAdapter&&(l.resultsAdapter=c,null!=l.ajax&&(l.resultsAdapter=j.Decorate(l.resultsAdapter,x)),null!=l.placeholder&&(l.resultsAdapter=j.Decorate(l.resultsAdapter,w)),l.selectOnClose&&(l.resultsAdapter=j.Decorate(l.resultsAdapter,A))),null==l.dropdownAdapter){if(l.multiple)l.dropdownAdapter=u;else{var E=j.Decorate(u,v);l.dropdownAdapter=E}0!==l.minimumResultsForSearch&&(l.dropdownAdapter=j.Decorate(l.dropdownAdapter,z)),l.closeOnSelect&&(l.dropdownAdapter=j.Decorate(l.dropdownAdapter,B)),l.dropdownAdapter=j.Decorate(l.dropdownAdapter,y)}if(null==l.selectionAdapter&&(l.selectionAdapter=l.multiple?e:d,null!=l.placeholder&&(l.selectionAdapter=j.Decorate(l.selectionAdapter,f)),l.allowClear&&(l.selectionAdapter=j.Decorate(l.selectionAdapter,g)),l.multiple&&(l.selectionAdapter=j.Decorate(l.selectionAdapter,h)),l.selectionAdapter=j.Decorate(l.selectionAdapter,i)),"string"==typeof l.language)if(l.language.indexOf("-")>0){var F=l.language.split("-"),G=F[0];l.language=[l.language,G]}else l.language=[l.language];if(a.isArray(l.language)){var H=new k;l.language.push("en");for(var I=l.language,J=0;J0){for(var f=a.extend(!0,{},e),g=e.children.length-1;g>=0;g--){var h=e.children[g],i=c(d,h);null==i&&f.children.splice(g,1)}return f.children.length>0?f:c(d,f)}var j=b(e.text).toUpperCase(),k=b(d.term).toUpperCase();return j.indexOf(k)>-1?e:null}this.defaults={amdBase:"./",amdLanguageBase:"./i18n/",closeOnSelect:!0,debug:!1,escapeMarkup:j.escapeMarkup,language:C,matcher:c,minimumInputLength:0,maximumInputLength:0,maximumSelectionLength:0,minimumResultsForSearch:0,selectOnClose:!1,sorter:function(a){return a},templateResult:function(a){return a.text},templateSelection:function(a){return a.text},theme:"default",width:"resolve"}},D.prototype.set=function(b,c){var d=a.camelCase(b),e={};e[d]=c;var f=j._convertData(e);a.extend(this.defaults,f)};var E=new D;return E}),b.define("select2/options",["jquery","./defaults","./utils"],function(a,b,c){function d(a,d){if(this.options=a,null!=d&&this.fromElement(d),this.options=b.apply(this.options),d&&d.is("input")){var e=require(this.get("amdBase")+"compat/inputData");this.options.dataAdapter=c.Decorate(this.options.dataAdapter,e)}}return d.prototype.fromElement=function(b){var d=["select2"];null==this.options.multiple&&(this.options.multiple=b.prop("multiple")),null==this.options.disabled&&(this.options.disabled=b.prop("disabled")),null==this.options.language&&(b.prop("lang")?this.options.language=b.prop("lang").toLowerCase():b.closest("[lang]").prop("lang")&&(this.options.language=b.closest("[lang]").prop("lang"))),null==this.options.dir&&(this.options.dir=b.prop("dir")?b.prop("dir"):b.closest("[dir]").prop("dir")?b.closest("[dir]").prop("dir"):"ltr"),b.prop("disabled",this.options.disabled),b.prop("multiple",this.options.multiple),b.data("select2Tags")&&(this.options.debug&&window.console&&console.warn&&console.warn('Select2: The `data-select2-tags` attribute has been changed to use the `data-data` and `data-tags="true"` attributes and will be removed in future versions of Select2.'),b.data("data",b.data("select2Tags")),b.data("tags",!0)),b.data("ajaxUrl")&&(this.options.debug&&window.console&&console.warn&&console.warn("Select2: The `data-ajax-url` attribute has been changed to `data-ajax--url` and support for the old attribute will be removed in future versions of Select2."),b.attr("ajax--url",b.data("ajaxUrl")),b.data("ajax--url",b.data("ajaxUrl")));var e={};e=a.fn.jquery&&"1."==a.fn.jquery.substr(0,2)&&b[0].dataset?a.extend(!0,{},b[0].dataset,b.data()):b.data();var f=a.extend(!0,{},e);f=c._convertData(f);for(var g in f)a.inArray(g,d)>-1||(a.isPlainObject(this.options[g])?a.extend(this.options[g],f[g]):this.options[g]=f[g]);return this},d.prototype.get=function(a){return this.options[a]},d.prototype.set=function(a,b){this.options[a]=b},d}),b.define("select2/core",["jquery","./options","./utils","./keys"],function(a,b,c,d){var e=function(a,c){null!=a.data("select2")&&a.data("select2").destroy(),this.$element=a,this.id=this._generateId(a),c=c||{},this.options=new b(c,a),e.__super__.constructor.call(this);var d=a.attr("tabindex")||0;a.data("old-tabindex",d),a.attr("tabindex","-1");var f=this.options.get("dataAdapter");this.dataAdapter=new f(a,this.options);var g=this.render();this._placeContainer(g);var h=this.options.get("selectionAdapter");this.selection=new h(a,this.options),this.$selection=this.selection.render(),this.selection.position(this.$selection,g);var i=this.options.get("dropdownAdapter");this.dropdown=new i(a,this.options),this.$dropdown=this.dropdown.render(),this.dropdown.position(this.$dropdown,g);var j=this.options.get("resultsAdapter");this.results=new j(a,this.options,this.dataAdapter),this.$results=this.results.render(),this.results.position(this.$results,this.$dropdown);var k=this;this._bindAdapters(),this._registerDomEvents(),this._registerDataEvents(),this._registerSelectionEvents(),this._registerDropdownEvents(),this._registerResultsEvents(),this._registerEvents(),this.dataAdapter.current(function(a){k.trigger("selection:update",{data:a})}),a.hide(),this._syncAttributes(),a.data("select2",this)};return c.Extend(e,c.Observable),e.prototype._generateId=function(a){var b="";return b=null!=a.attr("id")?a.attr("id"):null!=a.attr("name")?a.attr("name")+"-"+c.generateChars(2):c.generateChars(4),b="select2-"+b},e.prototype._placeContainer=function(a){a.insertAfter(this.$element);var b=this._resolveWidth(this.$element,this.options.get("width"));null!=b&&a.css("width",b)},e.prototype._resolveWidth=function(a,b){var c=/^width:(([-+]?([0-9]*\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i;if("resolve"==b){var d=this._resolveWidth(a,"style");return null!=d?d:this._resolveWidth(a,"element")}if("element"==b){var e=a.outerWidth(!1);return 0>=e?"auto":e+"px"}if("style"==b){var f=a.attr("style");if("string"!=typeof f)return null;for(var g=f.split(";"),h=0,i=g.length;i>h;h+=1){var j=g[h].replace(/\s/g,""),k=j.match(c);if(null!==k&&k.length>=1)return k[1]}return null}return b},e.prototype._bindAdapters=function(){this.dataAdapter.bind(this,this.$container),this.selection.bind(this,this.$container),this.dropdown.bind(this,this.$container),this.results.bind(this,this.$container)},e.prototype._registerDomEvents=function(){var b=this;this.$element.on("change.select2",function(){b.dataAdapter.current(function(a){b.trigger("selection:update",{data:a})})}),this._sync=c.bind(this._syncAttributes,this),this.$element[0].attachEvent&&this.$element[0].attachEvent("onpropertychange",this._sync);var d=window.MutationObserver||window.WebKitMutationObserver||window.MozMutationObserver;null!=d?(this._observer=new d(function(c){a.each(c,b._sync)}),this._observer.observe(this.$element[0],{attributes:!0,subtree:!1})):this.$element[0].addEventListener&&this.$element[0].addEventListener("DOMAttrModified",b._sync,!1)},e.prototype._registerDataEvents=function(){var a=this;this.dataAdapter.on("*",function(b,c){a.trigger(b,c)})},e.prototype._registerSelectionEvents=function(){var b=this,c=["toggle"];this.selection.on("toggle",function(){b.toggleDropdown()}),this.selection.on("*",function(d,e){-1===a.inArray(d,c)&&b.trigger(d,e)})},e.prototype._registerDropdownEvents=function(){var a=this;this.dropdown.on("*",function(b,c){a.trigger(b,c)})},e.prototype._registerResultsEvents=function(){var a=this;this.results.on("*",function(b,c){a.trigger(b,c)})},e.prototype._registerEvents=function(){var a=this;this.on("open",function(){a.$container.addClass("select2-container--open")}),this.on("close",function(){a.$container.removeClass("select2-container--open")}),this.on("enable",function(){a.$container.removeClass("select2-container--disabled")}),this.on("disable",function(){a.$container.addClass("select2-container--disabled")}),this.on("focus",function(){a.$container.addClass("select2-container--focus")}),this.on("blur",function(){a.$container.removeClass("select2-container--focus")}),this.on("query",function(b){a.isOpen()||a.trigger("open"),this.dataAdapter.query(b,function(c){a.trigger("results:all",{data:c,query:b})})}),this.on("query:append",function(b){this.dataAdapter.query(b,function(c){a.trigger("results:append",{data:c,query:b})})}),this.on("keypress",function(b){var c=b.which;a.isOpen()?c===d.ENTER?(a.trigger("results:select"),b.preventDefault()):c===d.SPACE&&b.ctrlKey?(a.trigger("results:toggle"),b.preventDefault()):c===d.UP?(a.trigger("results:previous"),b.preventDefault()):c===d.DOWN?(a.trigger("results:next"),b.preventDefault()):(c===d.ESC||c===d.TAB)&&(a.close(),b.preventDefault()):(c===d.ENTER||c===d.SPACE||(c===d.DOWN||c===d.UP)&&b.altKey)&&(a.open(),b.preventDefault())})},e.prototype._syncAttributes=function(){this.options.set("disabled",this.$element.prop("disabled")),this.options.get("disabled")?(this.isOpen()&&this.close(),this.trigger("disable")):this.trigger("enable")},e.prototype.trigger=function(a,b){var c=e.__super__.trigger,d={open:"opening",close:"closing",select:"selecting",unselect:"unselecting"};if(a in d){var f=d[a],g={prevented:!1,name:a,args:b};if(c.call(this,f,g),g.prevented)return void(b.prevented=!0)}c.call(this,a,b)},e.prototype.toggleDropdown=function(){this.options.get("disabled")||(this.isOpen()?this.close():this.open())},e.prototype.open=function(){this.isOpen()||(this.trigger("query",{}),this.trigger("open"))},e.prototype.close=function(){this.isOpen()&&this.trigger("close")},e.prototype.isOpen=function(){return this.$container.hasClass("select2-container--open")},e.prototype.enable=function(a){this.options.get("debug")&&window.console&&console.warn&&console.warn('Select2: The `select2("enable")` method has been deprecated and will be removed in later Select2 versions. Use $element.prop("disabled") instead.'),(null==a||0===a.length)&&(a=[!0]);var b=!a[0];this.$element.prop("disabled",b)},e.prototype.data=function(){this.options.get("debug")&&arguments.length>0&&window.console&&console.warn&&console.warn('Select2: Data can no longer be set using `select2("data")`. You should consider setting the value instead using `$element.val()`.');var a=[];return this.dataAdapter.current(function(b){a=b}),a},e.prototype.val=function(b){if(this.options.get("debug")&&window.console&&console.warn&&console.warn('Select2: The `select2("val")` method has been deprecated and will be removed in later Select2 versions. Use $element.val() instead.'),null==b||0===b.length)return this.$element.val();var c=b[0];a.isArray(c)&&(c=a.map(c,function(a){return a.toString()})),this.$element.val(c).trigger("change")},e.prototype.destroy=function(){this.$container.remove(),this.$element[0].detachEvent&&this.$element[0].detachEvent("onpropertychange",this._sync),null!=this._observer?(this._observer.disconnect(),this._observer=null):this.$element[0].removeEventListener&&this.$element[0].removeEventListener("DOMAttrModified",this._sync,!1),this._sync=null,this.$element.off(".select2"),this.$element.attr("tabindex",this.$element.data("old-tabindex")),this.$element.show(),this.$element.removeData("select2"),this.dataAdapter.destroy(),this.selection.destroy(),this.dropdown.destroy(),this.results.destroy(),this.dataAdapter=null,this.selection=null,this.dropdown=null,this.results=null},e.prototype.render=function(){var b=a('');return b.attr("dir",this.options.get("dir")),this.$container=b,this.$container.addClass("select2-container--"+this.options.get("theme")),b.data("element",this.$element),b},e}),b.define("jquery.select2",["jquery","./select2/core","./select2/defaults"],function(a,b,c){try{require("jquery.mousewheel")}catch(d){}return null==a.fn.select2&&(a.fn.select2=function(c){if(c=c||{},"object"==typeof c)return this.each(function(){{var d=a.extend({},c,!0);new b(a(this),d)}}),this;if("string"==typeof c){var d=this.data("select2"),e=Array.prototype.slice.call(arguments,1);return d[c](e)}throw new Error("Invalid arguments for Select2: "+c)}),null==a.fn.select2.defaults&&(a.fn.select2.defaults=c),b}),{define:b.define,require:b.require}}(),c=b.require("jquery.select2");return $.fn.select2.amd=b,c}); \ No newline at end of file +/*! Select2 4.0.0 | https://github.com/select2/select2/blob/master/LICENSE.md */!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):a("object"==typeof exports?require("jquery"):jQuery)}(function(a){var b=function(){if(a&&a.fn&&a.fn.select2&&a.fn.select2.amd)var b=a.fn.select2.amd;var b;return function(){if(!b||!b.requirejs){b?c=b:b={};var a,c,d;!function(b){function e(a,b){return u.call(a,b)}function f(a,b){var c,d,e,f,g,h,i,j,k,l,m,n=b&&b.split("/"),o=s.map,p=o&&o["*"]||{};if(a&&"."===a.charAt(0))if(b){for(n=n.slice(0,n.length-1),a=a.split("/"),g=a.length-1,s.nodeIdCompat&&w.test(a[g])&&(a[g]=a[g].replace(w,"")),a=n.concat(a),k=0;k0&&(a.splice(k-1,2),k-=2)}a=a.join("/")}else 0===a.indexOf("./")&&(a=a.substring(2));if((n||p)&&o){for(c=a.split("/"),k=c.length;k>0;k-=1){if(d=c.slice(0,k).join("/"),n)for(l=n.length;l>0;l-=1)if(e=o[n.slice(0,l).join("/")],e&&(e=e[d])){f=e,h=k;break}if(f)break;!i&&p&&p[d]&&(i=p[d],j=k)}!f&&i&&(f=i,h=j),f&&(c.splice(0,h,f),a=c.join("/"))}return a}function g(a,c){return function(){return n.apply(b,v.call(arguments,0).concat([a,c]))}}function h(a){return function(b){return f(b,a)}}function i(a){return function(b){q[a]=b}}function j(a){if(e(r,a)){var c=r[a];delete r[a],t[a]=!0,m.apply(b,c)}if(!e(q,a)&&!e(t,a))throw new Error("No "+a);return q[a]}function k(a){var b,c=a?a.indexOf("!"):-1;return c>-1&&(b=a.substring(0,c),a=a.substring(c+1,a.length)),[b,a]}function l(a){return function(){return s&&s.config&&s.config[a]||{}}}var m,n,o,p,q={},r={},s={},t={},u=Object.prototype.hasOwnProperty,v=[].slice,w=/\.js$/;o=function(a,b){var c,d=k(a),e=d[0];return a=d[1],e&&(e=f(e,b),c=j(e)),e?a=c&&c.normalize?c.normalize(a,h(b)):f(a,b):(a=f(a,b),d=k(a),e=d[0],a=d[1],e&&(c=j(e))),{f:e?e+"!"+a:a,n:a,pr:e,p:c}},p={require:function(a){return g(a)},exports:function(a){var b=q[a];return"undefined"!=typeof b?b:q[a]={}},module:function(a){return{id:a,uri:"",exports:q[a],config:l(a)}}},m=function(a,c,d,f){var h,k,l,m,n,s,u=[],v=typeof d;if(f=f||a,"undefined"===v||"function"===v){for(c=!c.length&&d.length?["require","exports","module"]:c,n=0;n0&&(b.call(arguments,a.prototype.constructor),e=c.prototype.constructor),e.apply(this,arguments)}function e(){this.constructor=d}var f=b(c),g=b(a);c.displayName=a.displayName,d.prototype=new e;for(var h=0;hc;c++)a[c].apply(this,b)},c.Observable=d,c.generateChars=function(a){for(var b="",c=0;a>c;c++){var d=Math.floor(36*Math.random());b+=d.toString(36)}return b},c.bind=function(a,b){return function(){a.apply(b,arguments)}},c._convertData=function(a){for(var b in a){var c=b.split("-"),d=a;if(1!==c.length){for(var e=0;e":">",'"':""","'":"'","/":"/"};return"string"!=typeof a?a:String(a).replace(/[&<>"'\/\\]/g,function(a){return b[a]})},c.appendMany=function(b,c){if("1.7"===a.fn.jquery.substr(0,3)){var d=a();a.map(c,function(a){d=d.add(a)}),c=d}b.append(c)},c}),b.define("select2/results",["jquery","./utils"],function(a,b){function c(a,b,d){this.$element=a,this.data=d,this.options=b,c.__super__.constructor.call(this)}return b.Extend(c,b.Observable),c.prototype.render=function(){var b=a('
        ');return this.options.get("multiple")&&b.attr("aria-multiselectable","true"),this.$results=b,b},c.prototype.clear=function(){this.$results.empty()},c.prototype.displayMessage=function(b){var c=this.options.get("escapeMarkup");this.clear(),this.hideLoading();var d=a('
      • '),e=this.options.get("translations").get(b.message);d.append(c(e(b.args))),this.$results.append(d)},c.prototype.append=function(a){this.hideLoading();var b=[];if(null==a.results||0===a.results.length)return void(0===this.$results.children().length&&this.trigger("results:message",{message:"noResults"}));a.results=this.sort(a.results);for(var c=0;c-1?b.attr("aria-selected","true"):b.attr("aria-selected","false")});var f=e.filter("[aria-selected=true]");f.length>0?f.first().trigger("mouseenter"):e.first().trigger("mouseenter")})},c.prototype.showLoading=function(a){this.hideLoading();var b=this.options.get("translations").get("searching"),c={disabled:!0,loading:!0,text:b(a)},d=this.option(c);d.className+=" loading-results",this.$results.prepend(d)},c.prototype.hideLoading=function(){this.$results.find(".loading-results").remove()},c.prototype.option=function(b){var c=document.createElement("li");c.className="select2-results__option";var d={role:"treeitem","aria-selected":"false"};b.disabled&&(delete d["aria-selected"],d["aria-disabled"]="true"),null==b.id&&delete d["aria-selected"],null!=b._resultId&&(c.id=b._resultId),b.title&&(c.title=b.title),b.children&&(d.role="group",d["aria-label"]=b.text,delete d["aria-selected"]);for(var e in d){var f=d[e];c.setAttribute(e,f)}if(b.children){var g=a(c),h=document.createElement("strong");h.className="select2-results__group";{a(h)}this.template(b,h);for(var i=[],j=0;j",{"class":"select2-results__options select2-results__options--nested"});m.append(i),g.append(h),g.append(m)}else this.template(b,c);return a.data(c,"data",b),c},c.prototype.bind=function(b){var c=this,d=b.id+"-results";this.$results.attr("id",d),b.on("results:all",function(a){c.clear(),c.append(a.data),b.isOpen()&&c.setClasses()}),b.on("results:append",function(a){c.append(a.data),b.isOpen()&&c.setClasses()}),b.on("query",function(a){c.showLoading(a)}),b.on("select",function(){b.isOpen()&&c.setClasses()}),b.on("unselect",function(){b.isOpen()&&c.setClasses()}),b.on("open",function(){c.$results.attr("aria-expanded","true"),c.$results.attr("aria-hidden","false"),c.setClasses(),c.ensureHighlightVisible()}),b.on("close",function(){c.$results.attr("aria-expanded","false"),c.$results.attr("aria-hidden","true"),c.$results.removeAttr("aria-activedescendant")}),b.on("results:toggle",function(){var a=c.getHighlightedResults();0!==a.length&&a.trigger("mouseup")}),b.on("results:select",function(){var a=c.getHighlightedResults();if(0!==a.length){var b=a.data("data");"true"==a.attr("aria-selected")?c.trigger("close"):c.trigger("select",{data:b})}}),b.on("results:previous",function(){var a=c.getHighlightedResults(),b=c.$results.find("[aria-selected]"),d=b.index(a);if(0!==d){var e=d-1;0===a.length&&(e=0);var f=b.eq(e);f.trigger("mouseenter");var g=c.$results.offset().top,h=f.offset().top,i=c.$results.scrollTop()+(h-g);0===e?c.$results.scrollTop(0):0>h-g&&c.$results.scrollTop(i)}}),b.on("results:next",function(){var a=c.getHighlightedResults(),b=c.$results.find("[aria-selected]"),d=b.index(a),e=d+1;if(!(e>=b.length)){var f=b.eq(e);f.trigger("mouseenter");var g=c.$results.offset().top+c.$results.outerHeight(!1),h=f.offset().top+f.outerHeight(!1),i=c.$results.scrollTop()+h-g;0===e?c.$results.scrollTop(0):h>g&&c.$results.scrollTop(i)}}),b.on("results:focus",function(a){a.element.addClass("select2-results__option--highlighted")}),b.on("results:message",function(a){c.displayMessage(a)}),a.fn.mousewheel&&this.$results.on("mousewheel",function(a){var b=c.$results.scrollTop(),d=c.$results.get(0).scrollHeight-c.$results.scrollTop()+a.deltaY,e=a.deltaY>0&&b-a.deltaY<=0,f=a.deltaY<0&&d<=c.$results.height();e?(c.$results.scrollTop(0),a.preventDefault(),a.stopPropagation()):f&&(c.$results.scrollTop(c.$results.get(0).scrollHeight-c.$results.height()),a.preventDefault(),a.stopPropagation())}),this.$results.on("mouseup",".select2-results__option[aria-selected]",function(b){var d=a(this),e=d.data("data");return"true"===d.attr("aria-selected")?void(c.options.get("multiple")?c.trigger("unselect",{originalEvent:b,data:e}):c.trigger("close")):void c.trigger("select",{originalEvent:b,data:e})}),this.$results.on("mouseenter",".select2-results__option[aria-selected]",function(){var b=a(this).data("data");c.getHighlightedResults().removeClass("select2-results__option--highlighted"),c.trigger("results:focus",{data:b,element:a(this)})})},c.prototype.getHighlightedResults=function(){var a=this.$results.find(".select2-results__option--highlighted");return a},c.prototype.destroy=function(){this.$results.remove()},c.prototype.ensureHighlightVisible=function(){var a=this.getHighlightedResults();if(0!==a.length){var b=this.$results.find("[aria-selected]"),c=b.index(a),d=this.$results.offset().top,e=a.offset().top,f=this.$results.scrollTop()+(e-d),g=e-d;f-=2*a.outerHeight(!1),2>=c?this.$results.scrollTop(0):(g>this.$results.outerHeight()||0>g)&&this.$results.scrollTop(f)}},c.prototype.template=function(b,c){var d=this.options.get("templateResult"),e=this.options.get("escapeMarkup"),f=d(b);null==f?c.style.display="none":"string"==typeof f?c.innerHTML=e(f):a(c).append(f)},c}),b.define("select2/keys",[],function(){var a={BACKSPACE:8,TAB:9,ENTER:13,SHIFT:16,CTRL:17,ALT:18,ESC:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,DELETE:46};return a}),b.define("select2/selection/base",["jquery","../utils","../keys"],function(a,b,c){function d(a,b){this.$element=a,this.options=b,d.__super__.constructor.call(this)}return b.Extend(d,b.Observable),d.prototype.render=function(){var b=a('');return this._tabindex=0,null!=this.$element.data("old-tabindex")?this._tabindex=this.$element.data("old-tabindex"):null!=this.$element.attr("tabindex")&&(this._tabindex=this.$element.attr("tabindex")),b.attr("title",this.$element.attr("title")),b.attr("tabindex",this._tabindex),this.$selection=b,b},d.prototype.bind=function(a){var b=this,d=(a.id+"-container",a.id+"-results");this.container=a,this.$selection.on("focus",function(a){b.trigger("focus",a)}),this.$selection.on("blur",function(a){b.trigger("blur",a)}),this.$selection.on("keydown",function(a){b.trigger("keypress",a),a.which===c.SPACE&&a.preventDefault()}),a.on("results:focus",function(a){b.$selection.attr("aria-activedescendant",a.data._resultId)}),a.on("selection:update",function(a){b.update(a.data)}),a.on("open",function(){b.$selection.attr("aria-expanded","true"),b.$selection.attr("aria-owns",d),b._attachCloseHandler(a)}),a.on("close",function(){b.$selection.attr("aria-expanded","false"),b.$selection.removeAttr("aria-activedescendant"),b.$selection.removeAttr("aria-owns"),b.$selection.focus(),b._detachCloseHandler(a)}),a.on("enable",function(){b.$selection.attr("tabindex",b._tabindex)}),a.on("disable",function(){b.$selection.attr("tabindex","-1")})},d.prototype._attachCloseHandler=function(b){a(document.body).on("mousedown.select2."+b.id,function(b){var c=a(b.target),d=c.closest(".select2"),e=a(".select2.select2-container--open");e.each(function(){var b=a(this);if(this!=d[0]){var c=b.data("element");c.select2("close")}})})},d.prototype._detachCloseHandler=function(b){a(document.body).off("mousedown.select2."+b.id)},d.prototype.position=function(a,b){var c=b.find(".selection");c.append(a)},d.prototype.destroy=function(){this._detachCloseHandler(this.container)},d.prototype.update=function(){throw new Error("The `update` method must be defined in child classes.")},d}),b.define("select2/selection/single",["jquery","./base","../utils","../keys"],function(a,b,c){function d(){d.__super__.constructor.apply(this,arguments)}return c.Extend(d,b),d.prototype.render=function(){var a=d.__super__.render.call(this);return a.addClass("select2-selection--single"),a.html(''),a},d.prototype.bind=function(a){var b=this;d.__super__.bind.apply(this,arguments);var c=a.id+"-container";this.$selection.find(".select2-selection__rendered").attr("id",c),this.$selection.attr("aria-labelledby",c),this.$selection.on("mousedown",function(a){1===a.which&&b.trigger("toggle",{originalEvent:a})}),this.$selection.on("focus",function(){}),this.$selection.on("blur",function(){}),a.on("selection:update",function(a){b.update(a.data)})},d.prototype.clear=function(){this.$selection.find(".select2-selection__rendered").empty()},d.prototype.display=function(a){var b=this.options.get("templateSelection"),c=this.options.get("escapeMarkup");return c(b(a))},d.prototype.selectionContainer=function(){return a("")},d.prototype.update=function(a){if(0===a.length)return void this.clear();var b=a[0],c=this.display(b),d=this.$selection.find(".select2-selection__rendered");d.empty().append(c),d.prop("title",b.title||b.text)},d}),b.define("select2/selection/multiple",["jquery","./base","../utils"],function(a,b,c){function d(){d.__super__.constructor.apply(this,arguments)}return c.Extend(d,b),d.prototype.render=function(){var a=d.__super__.render.call(this);return a.addClass("select2-selection--multiple"),a.html('
          '),a},d.prototype.bind=function(){var b=this;d.__super__.bind.apply(this,arguments),this.$selection.on("click",function(a){b.trigger("toggle",{originalEvent:a})}),this.$selection.on("click",".select2-selection__choice__remove",function(c){var d=a(this),e=d.parent(),f=e.data("data");b.trigger("unselect",{originalEvent:c,data:f})})},d.prototype.clear=function(){this.$selection.find(".select2-selection__rendered").empty()},d.prototype.display=function(a){var b=this.options.get("templateSelection"),c=this.options.get("escapeMarkup");return c(b(a))},d.prototype.selectionContainer=function(){var b=a('
        • ×
        • ');return b},d.prototype.update=function(a){if(this.clear(),0!==a.length){for(var b=[],d=0;d1;if(d||c)return a.call(this,b);this.clear();var e=this.createPlaceholder(this.placeholder);this.$selection.find(".select2-selection__rendered").append(e)},a}),b.define("select2/selection/allowClear",["jquery","../keys"],function(a,b){function c(){}return c.prototype.bind=function(a,b,c){var d=this;a.call(this,b,c),null==this.placeholder&&this.options.get("debug")&&window.console&&console.error&&console.error("Select2: The `allowClear` option should be used in combination with the `placeholder` option."),this.$selection.on("mousedown",".select2-selection__clear",function(a){d._handleClear(a)}),b.on("keypress",function(a){d._handleKeyboardClear(a,b)})},c.prototype._handleClear=function(a,b){if(!this.options.get("disabled")){var c=this.$selection.find(".select2-selection__clear");if(0!==c.length){b.stopPropagation();for(var d=c.data("data"),e=0;e0||0===c.length)){var d=a('×');d.data("data",c),this.$selection.find(".select2-selection__rendered").prepend(d)}},c}),b.define("select2/selection/search",["jquery","../utils","../keys"],function(a,b,c){function d(a,b,c){a.call(this,b,c)}return d.prototype.render=function(b){var c=a('');this.$searchContainer=c,this.$search=c.find("input");var d=b.call(this);return d},d.prototype.bind=function(a,b,d){var e=this;a.call(this,b,d),b.on("open",function(){e.$search.attr("tabindex",0),e.$search.focus()}),b.on("close",function(){e.$search.attr("tabindex",-1),e.$search.val(""),e.$search.focus()}),b.on("enable",function(){e.$search.prop("disabled",!1)}),b.on("disable",function(){e.$search.prop("disabled",!0)}),this.$selection.on("focusin",".select2-search--inline",function(a){e.trigger("focus",a)}),this.$selection.on("focusout",".select2-search--inline",function(a){e.trigger("blur",a)}),this.$selection.on("keydown",".select2-search--inline",function(a){a.stopPropagation(),e.trigger("keypress",a),e._keyUpPrevented=a.isDefaultPrevented();var b=a.which;if(b===c.BACKSPACE&&""===e.$search.val()){var d=e.$searchContainer.prev(".select2-selection__choice");if(d.length>0){var f=d.data("data");e.searchRemoveChoice(f),a.preventDefault()}}}),this.$selection.on("input",".select2-search--inline",function(){e.$selection.off("keyup.search")}),this.$selection.on("keyup.search input",".select2-search--inline",function(a){e.handleSearch(a)})},d.prototype.createPlaceholder=function(a,b){this.$search.attr("placeholder",b.text)},d.prototype.update=function(a,b){this.$search.attr("placeholder",""),a.call(this,b),this.$selection.find(".select2-selection__rendered").append(this.$searchContainer),this.resizeSearch()},d.prototype.handleSearch=function(){if(this.resizeSearch(),!this._keyUpPrevented){var a=this.$search.val();this.trigger("query",{term:a})}this._keyUpPrevented=!1},d.prototype.searchRemoveChoice=function(a,b){this.trigger("unselect",{data:b}),this.trigger("open"),this.$search.val(b.text+" ")},d.prototype.resizeSearch=function(){this.$search.css("width","25px");var a="";if(""!==this.$search.attr("placeholder"))a=this.$selection.find(".select2-selection__rendered").innerWidth();else{var b=this.$search.val().length+1;a=.75*b+"em"}this.$search.css("width",a)},d}),b.define("select2/selection/eventRelay",["jquery"],function(a){function b(){}return b.prototype.bind=function(b,c,d){var e=this,f=["open","opening","close","closing","select","selecting","unselect","unselecting"],g=["opening","closing","selecting","unselecting"];b.call(this,c,d),c.on("*",function(b,c){if(-1!==a.inArray(b,f)){c=c||{};var d=a.Event("select2:"+b,{params:c});e.$element.trigger(d),-1!==a.inArray(b,g)&&(c.prevented=d.isDefaultPrevented())}})},b}),b.define("select2/translation",["jquery","require"],function(a,b){function c(a){this.dict=a||{}}return c.prototype.all=function(){return this.dict},c.prototype.get=function(a){return this.dict[a]},c.prototype.extend=function(b){this.dict=a.extend({},b.all(),this.dict)},c._cache={},c.loadPath=function(a){if(!(a in c._cache)){var d=b(a);c._cache[a]=d}return new c(c._cache[a])},c}),b.define("select2/diacritics",[],function(){var a={"Ⓐ":"A","A":"A","À":"A","Á":"A","Â":"A","Ầ":"A","Ấ":"A","Ẫ":"A","Ẩ":"A","Ã":"A","Ā":"A","Ă":"A","Ằ":"A","Ắ":"A","Ẵ":"A","Ẳ":"A","Ȧ":"A","Ǡ":"A","Ä":"A","Ǟ":"A","Ả":"A","Å":"A","Ǻ":"A","Ǎ":"A","Ȁ":"A","Ȃ":"A","Ạ":"A","Ậ":"A","Ặ":"A","Ḁ":"A","Ą":"A","Ⱥ":"A","Ɐ":"A","Ꜳ":"AA","Æ":"AE","Ǽ":"AE","Ǣ":"AE","Ꜵ":"AO","Ꜷ":"AU","Ꜹ":"AV","Ꜻ":"AV","Ꜽ":"AY","Ⓑ":"B","B":"B","Ḃ":"B","Ḅ":"B","Ḇ":"B","Ƀ":"B","Ƃ":"B","Ɓ":"B","Ⓒ":"C","C":"C","Ć":"C","Ĉ":"C","Ċ":"C","Č":"C","Ç":"C","Ḉ":"C","Ƈ":"C","Ȼ":"C","Ꜿ":"C","Ⓓ":"D","D":"D","Ḋ":"D","Ď":"D","Ḍ":"D","Ḑ":"D","Ḓ":"D","Ḏ":"D","Đ":"D","Ƌ":"D","Ɗ":"D","Ɖ":"D","Ꝺ":"D","DZ":"DZ","DŽ":"DZ","Dz":"Dz","Dž":"Dz","Ⓔ":"E","E":"E","È":"E","É":"E","Ê":"E","Ề":"E","Ế":"E","Ễ":"E","Ể":"E","Ẽ":"E","Ē":"E","Ḕ":"E","Ḗ":"E","Ĕ":"E","Ė":"E","Ë":"E","Ẻ":"E","Ě":"E","Ȅ":"E","Ȇ":"E","Ẹ":"E","Ệ":"E","Ȩ":"E","Ḝ":"E","Ę":"E","Ḙ":"E","Ḛ":"E","Ɛ":"E","Ǝ":"E","Ⓕ":"F","F":"F","Ḟ":"F","Ƒ":"F","Ꝼ":"F","Ⓖ":"G","G":"G","Ǵ":"G","Ĝ":"G","Ḡ":"G","Ğ":"G","Ġ":"G","Ǧ":"G","Ģ":"G","Ǥ":"G","Ɠ":"G","Ꞡ":"G","Ᵹ":"G","Ꝿ":"G","Ⓗ":"H","H":"H","Ĥ":"H","Ḣ":"H","Ḧ":"H","Ȟ":"H","Ḥ":"H","Ḩ":"H","Ḫ":"H","Ħ":"H","Ⱨ":"H","Ⱶ":"H","Ɥ":"H","Ⓘ":"I","I":"I","Ì":"I","Í":"I","Î":"I","Ĩ":"I","Ī":"I","Ĭ":"I","İ":"I","Ï":"I","Ḯ":"I","Ỉ":"I","Ǐ":"I","Ȉ":"I","Ȋ":"I","Ị":"I","Į":"I","Ḭ":"I","Ɨ":"I","Ⓙ":"J","J":"J","Ĵ":"J","Ɉ":"J","Ⓚ":"K","K":"K","Ḱ":"K","Ǩ":"K","Ḳ":"K","Ķ":"K","Ḵ":"K","Ƙ":"K","Ⱪ":"K","Ꝁ":"K","Ꝃ":"K","Ꝅ":"K","Ꞣ":"K","Ⓛ":"L","L":"L","Ŀ":"L","Ĺ":"L","Ľ":"L","Ḷ":"L","Ḹ":"L","Ļ":"L","Ḽ":"L","Ḻ":"L","Ł":"L","Ƚ":"L","Ɫ":"L","Ⱡ":"L","Ꝉ":"L","Ꝇ":"L","Ꞁ":"L","LJ":"LJ","Lj":"Lj","Ⓜ":"M","M":"M","Ḿ":"M","Ṁ":"M","Ṃ":"M","Ɱ":"M","Ɯ":"M","Ⓝ":"N","N":"N","Ǹ":"N","Ń":"N","Ñ":"N","Ṅ":"N","Ň":"N","Ṇ":"N","Ņ":"N","Ṋ":"N","Ṉ":"N","Ƞ":"N","Ɲ":"N","Ꞑ":"N","Ꞥ":"N","NJ":"NJ","Nj":"Nj","Ⓞ":"O","O":"O","Ò":"O","Ó":"O","Ô":"O","Ồ":"O","Ố":"O","Ỗ":"O","Ổ":"O","Õ":"O","Ṍ":"O","Ȭ":"O","Ṏ":"O","Ō":"O","Ṑ":"O","Ṓ":"O","Ŏ":"O","Ȯ":"O","Ȱ":"O","Ö":"O","Ȫ":"O","Ỏ":"O","Ő":"O","Ǒ":"O","Ȍ":"O","Ȏ":"O","Ơ":"O","Ờ":"O","Ớ":"O","Ỡ":"O","Ở":"O","Ợ":"O","Ọ":"O","Ộ":"O","Ǫ":"O","Ǭ":"O","Ø":"O","Ǿ":"O","Ɔ":"O","Ɵ":"O","Ꝋ":"O","Ꝍ":"O","Ƣ":"OI","Ꝏ":"OO","Ȣ":"OU","Ⓟ":"P","P":"P","Ṕ":"P","Ṗ":"P","Ƥ":"P","Ᵽ":"P","Ꝑ":"P","Ꝓ":"P","Ꝕ":"P","Ⓠ":"Q","Q":"Q","Ꝗ":"Q","Ꝙ":"Q","Ɋ":"Q","Ⓡ":"R","R":"R","Ŕ":"R","Ṙ":"R","Ř":"R","Ȑ":"R","Ȓ":"R","Ṛ":"R","Ṝ":"R","Ŗ":"R","Ṟ":"R","Ɍ":"R","Ɽ":"R","Ꝛ":"R","Ꞧ":"R","Ꞃ":"R","Ⓢ":"S","S":"S","ẞ":"S","Ś":"S","Ṥ":"S","Ŝ":"S","Ṡ":"S","Š":"S","Ṧ":"S","Ṣ":"S","Ṩ":"S","Ș":"S","Ş":"S","Ȿ":"S","Ꞩ":"S","Ꞅ":"S","Ⓣ":"T","T":"T","Ṫ":"T","Ť":"T","Ṭ":"T","Ț":"T","Ţ":"T","Ṱ":"T","Ṯ":"T","Ŧ":"T","Ƭ":"T","Ʈ":"T","Ⱦ":"T","Ꞇ":"T","Ꜩ":"TZ","Ⓤ":"U","U":"U","Ù":"U","Ú":"U","Û":"U","Ũ":"U","Ṹ":"U","Ū":"U","Ṻ":"U","Ŭ":"U","Ü":"U","Ǜ":"U","Ǘ":"U","Ǖ":"U","Ǚ":"U","Ủ":"U","Ů":"U","Ű":"U","Ǔ":"U","Ȕ":"U","Ȗ":"U","Ư":"U","Ừ":"U","Ứ":"U","Ữ":"U","Ử":"U","Ự":"U","Ụ":"U","Ṳ":"U","Ų":"U","Ṷ":"U","Ṵ":"U","Ʉ":"U","Ⓥ":"V","V":"V","Ṽ":"V","Ṿ":"V","Ʋ":"V","Ꝟ":"V","Ʌ":"V","Ꝡ":"VY","Ⓦ":"W","W":"W","Ẁ":"W","Ẃ":"W","Ŵ":"W","Ẇ":"W","Ẅ":"W","Ẉ":"W","Ⱳ":"W","Ⓧ":"X","X":"X","Ẋ":"X","Ẍ":"X","Ⓨ":"Y","Y":"Y","Ỳ":"Y","Ý":"Y","Ŷ":"Y","Ỹ":"Y","Ȳ":"Y","Ẏ":"Y","Ÿ":"Y","Ỷ":"Y","Ỵ":"Y","Ƴ":"Y","Ɏ":"Y","Ỿ":"Y","Ⓩ":"Z","Z":"Z","Ź":"Z","Ẑ":"Z","Ż":"Z","Ž":"Z","Ẓ":"Z","Ẕ":"Z","Ƶ":"Z","Ȥ":"Z","Ɀ":"Z","Ⱬ":"Z","Ꝣ":"Z","ⓐ":"a","a":"a","ẚ":"a","à":"a","á":"a","â":"a","ầ":"a","ấ":"a","ẫ":"a","ẩ":"a","ã":"a","ā":"a","ă":"a","ằ":"a","ắ":"a","ẵ":"a","ẳ":"a","ȧ":"a","ǡ":"a","ä":"a","ǟ":"a","ả":"a","å":"a","ǻ":"a","ǎ":"a","ȁ":"a","ȃ":"a","ạ":"a","ậ":"a","ặ":"a","ḁ":"a","ą":"a","ⱥ":"a","ɐ":"a","ꜳ":"aa","æ":"ae","ǽ":"ae","ǣ":"ae","ꜵ":"ao","ꜷ":"au","ꜹ":"av","ꜻ":"av","ꜽ":"ay","ⓑ":"b","b":"b","ḃ":"b","ḅ":"b","ḇ":"b","ƀ":"b","ƃ":"b","ɓ":"b","ⓒ":"c","c":"c","ć":"c","ĉ":"c","ċ":"c","č":"c","ç":"c","ḉ":"c","ƈ":"c","ȼ":"c","ꜿ":"c","ↄ":"c","ⓓ":"d","d":"d","ḋ":"d","ď":"d","ḍ":"d","ḑ":"d","ḓ":"d","ḏ":"d","đ":"d","ƌ":"d","ɖ":"d","ɗ":"d","ꝺ":"d","dz":"dz","dž":"dz","ⓔ":"e","e":"e","è":"e","é":"e","ê":"e","ề":"e","ế":"e","ễ":"e","ể":"e","ẽ":"e","ē":"e","ḕ":"e","ḗ":"e","ĕ":"e","ė":"e","ë":"e","ẻ":"e","ě":"e","ȅ":"e","ȇ":"e","ẹ":"e","ệ":"e","ȩ":"e","ḝ":"e","ę":"e","ḙ":"e","ḛ":"e","ɇ":"e","ɛ":"e","ǝ":"e","ⓕ":"f","f":"f","ḟ":"f","ƒ":"f","ꝼ":"f","ⓖ":"g","g":"g","ǵ":"g","ĝ":"g","ḡ":"g","ğ":"g","ġ":"g","ǧ":"g","ģ":"g","ǥ":"g","ɠ":"g","ꞡ":"g","ᵹ":"g","ꝿ":"g","ⓗ":"h","h":"h","ĥ":"h","ḣ":"h","ḧ":"h","ȟ":"h","ḥ":"h","ḩ":"h","ḫ":"h","ẖ":"h","ħ":"h","ⱨ":"h","ⱶ":"h","ɥ":"h","ƕ":"hv","ⓘ":"i","i":"i","ì":"i","í":"i","î":"i","ĩ":"i","ī":"i","ĭ":"i","ï":"i","ḯ":"i","ỉ":"i","ǐ":"i","ȉ":"i","ȋ":"i","ị":"i","į":"i","ḭ":"i","ɨ":"i","ı":"i","ⓙ":"j","j":"j","ĵ":"j","ǰ":"j","ɉ":"j","ⓚ":"k","k":"k","ḱ":"k","ǩ":"k","ḳ":"k","ķ":"k","ḵ":"k","ƙ":"k","ⱪ":"k","ꝁ":"k","ꝃ":"k","ꝅ":"k","ꞣ":"k","ⓛ":"l","l":"l","ŀ":"l","ĺ":"l","ľ":"l","ḷ":"l","ḹ":"l","ļ":"l","ḽ":"l","ḻ":"l","ſ":"l","ł":"l","ƚ":"l","ɫ":"l","ⱡ":"l","ꝉ":"l","ꞁ":"l","ꝇ":"l","lj":"lj","ⓜ":"m","m":"m","ḿ":"m","ṁ":"m","ṃ":"m","ɱ":"m","ɯ":"m","ⓝ":"n","n":"n","ǹ":"n","ń":"n","ñ":"n","ṅ":"n","ň":"n","ṇ":"n","ņ":"n","ṋ":"n","ṉ":"n","ƞ":"n","ɲ":"n","ʼn":"n","ꞑ":"n","ꞥ":"n","nj":"nj","ⓞ":"o","o":"o","ò":"o","ó":"o","ô":"o","ồ":"o","ố":"o","ỗ":"o","ổ":"o","õ":"o","ṍ":"o","ȭ":"o","ṏ":"o","ō":"o","ṑ":"o","ṓ":"o","ŏ":"o","ȯ":"o","ȱ":"o","ö":"o","ȫ":"o","ỏ":"o","ő":"o","ǒ":"o","ȍ":"o","ȏ":"o","ơ":"o","ờ":"o","ớ":"o","ỡ":"o","ở":"o","ợ":"o","ọ":"o","ộ":"o","ǫ":"o","ǭ":"o","ø":"o","ǿ":"o","ɔ":"o","ꝋ":"o","ꝍ":"o","ɵ":"o","ƣ":"oi","ȣ":"ou","ꝏ":"oo","ⓟ":"p","p":"p","ṕ":"p","ṗ":"p","ƥ":"p","ᵽ":"p","ꝑ":"p","ꝓ":"p","ꝕ":"p","ⓠ":"q","q":"q","ɋ":"q","ꝗ":"q","ꝙ":"q","ⓡ":"r","r":"r","ŕ":"r","ṙ":"r","ř":"r","ȑ":"r","ȓ":"r","ṛ":"r","ṝ":"r","ŗ":"r","ṟ":"r","ɍ":"r","ɽ":"r","ꝛ":"r","ꞧ":"r","ꞃ":"r","ⓢ":"s","s":"s","ß":"s","ś":"s","ṥ":"s","ŝ":"s","ṡ":"s","š":"s","ṧ":"s","ṣ":"s","ṩ":"s","ș":"s","ş":"s","ȿ":"s","ꞩ":"s","ꞅ":"s","ẛ":"s","ⓣ":"t","t":"t","ṫ":"t","ẗ":"t","ť":"t","ṭ":"t","ț":"t","ţ":"t","ṱ":"t","ṯ":"t","ŧ":"t","ƭ":"t","ʈ":"t","ⱦ":"t","ꞇ":"t","ꜩ":"tz","ⓤ":"u","u":"u","ù":"u","ú":"u","û":"u","ũ":"u","ṹ":"u","ū":"u","ṻ":"u","ŭ":"u","ü":"u","ǜ":"u","ǘ":"u","ǖ":"u","ǚ":"u","ủ":"u","ů":"u","ű":"u","ǔ":"u","ȕ":"u","ȗ":"u","ư":"u","ừ":"u","ứ":"u","ữ":"u","ử":"u","ự":"u","ụ":"u","ṳ":"u","ų":"u","ṷ":"u","ṵ":"u","ʉ":"u","ⓥ":"v","v":"v","ṽ":"v","ṿ":"v","ʋ":"v","ꝟ":"v","ʌ":"v","ꝡ":"vy","ⓦ":"w","w":"w","ẁ":"w","ẃ":"w","ŵ":"w","ẇ":"w","ẅ":"w","ẘ":"w","ẉ":"w","ⱳ":"w","ⓧ":"x","x":"x","ẋ":"x","ẍ":"x","ⓨ":"y","y":"y","ỳ":"y","ý":"y","ŷ":"y","ỹ":"y","ȳ":"y","ẏ":"y","ÿ":"y","ỷ":"y","ẙ":"y","ỵ":"y","ƴ":"y","ɏ":"y","ỿ":"y","ⓩ":"z","z":"z","ź":"z","ẑ":"z","ż":"z","ž":"z","ẓ":"z","ẕ":"z","ƶ":"z","ȥ":"z","ɀ":"z","ⱬ":"z","ꝣ":"z","Ά":"Α","Έ":"Ε","Ή":"Η","Ί":"Ι","Ϊ":"Ι","Ό":"Ο","Ύ":"Υ","Ϋ":"Υ","Ώ":"Ω","ά":"α","έ":"ε","ή":"η","ί":"ι","ϊ":"ι","ΐ":"ι","ό":"ο","ύ":"υ","ϋ":"υ","ΰ":"υ","ω":"ω","ς":"σ"};return a}),b.define("select2/data/base",["../utils"],function(a){function b(){b.__super__.constructor.call(this)}return a.Extend(b,a.Observable),b.prototype.current=function(){throw new Error("The `current` method must be defined in child classes.")},b.prototype.query=function(){throw new Error("The `query` method must be defined in child classes.")},b.prototype.bind=function(){},b.prototype.destroy=function(){},b.prototype.generateResultId=function(b,c){var d=b.id+"-result-";return d+=a.generateChars(4),d+=null!=c.id?"-"+c.id.toString():"-"+a.generateChars(4)},b}),b.define("select2/data/select",["./base","../utils","jquery"],function(a,b,c){function d(a,b){this.$element=a,this.options=b,d.__super__.constructor.call(this)}return b.Extend(d,a),d.prototype.current=function(a){var b=[],d=this;this.$element.find(":selected").each(function(){var a=c(this),e=d.item(a);b.push(e)}),a(b)},d.prototype.select=function(a){var b=this;if(a.selected=!0,c(a.element).is("option"))return a.element.selected=!0,void this.$element.trigger("change");if(this.$element.prop("multiple"))this.current(function(d){var e=[];a=[a],a.push.apply(a,d);for(var f=0;f=0){var k=f.filter(d(j)),l=this.item(k),m=(c.extend(!0,{},l,j),this.option(l));k.replaceWith(m)}else{var n=this.option(j);if(j.children){var o=this.convertToOptions(j.children);b.appendMany(n,o)}h.push(n)}}return h},d}),b.define("select2/data/ajax",["./array","../utils","jquery"],function(a,b,c){function d(b,c){this.ajaxOptions=this._applyDefaults(c.get("ajax")),null!=this.ajaxOptions.processResults&&(this.processResults=this.ajaxOptions.processResults),a.__super__.constructor.call(this,b,c)}return b.Extend(d,a),d.prototype._applyDefaults=function(a){var b={data:function(a){return{q:a.term}},transport:function(a,b,d){var e=c.ajax(a);return e.then(b),e.fail(d),e}};return c.extend({},b,a,!0)},d.prototype.processResults=function(a){return a},d.prototype.query=function(a,b){function d(){var d=f.transport(f,function(d){var f=e.processResults(d,a);e.options.get("debug")&&window.console&&console.error&&(f&&f.results&&c.isArray(f.results)||console.error("Select2: The AJAX results did not return an array in the `results` key of the response.")),b(f)},function(){});e._request=d}var e=this;null!=this._request&&(c.isFunction(this._request.abort)&&this._request.abort(),this._request=null);var f=c.extend({type:"GET"},this.ajaxOptions);"function"==typeof f.url&&(f.url=f.url(a)),"function"==typeof f.data&&(f.data=f.data(a)),this.ajaxOptions.delay&&""!==a.term?(this._queryTimeout&&window.clearTimeout(this._queryTimeout),this._queryTimeout=window.setTimeout(d,this.ajaxOptions.delay)):d()},d}),b.define("select2/data/tags",["jquery"],function(a){function b(b,c,d){var e=d.get("tags"),f=d.get("createTag");if(void 0!==f&&(this.createTag=f),b.call(this,c,d),a.isArray(e))for(var g=0;g0&&b.term.length>this.maximumInputLength?void this.trigger("results:message",{message:"inputTooLong",args:{maximum:this.maximumInputLength,input:b.term,params:b}}):void a.call(this,b,c)},a}),b.define("select2/data/maximumSelectionLength",[],function(){function a(a,b,c){this.maximumSelectionLength=c.get("maximumSelectionLength"),a.call(this,b,c)}return a.prototype.query=function(a,b,c){var d=this;this.current(function(e){var f=null!=e?e.length:0;return d.maximumSelectionLength>0&&f>=d.maximumSelectionLength?void d.trigger("results:message",{message:"maximumSelected",args:{maximum:d.maximumSelectionLength}}):void a.call(d,b,c)})},a}),b.define("select2/dropdown",["jquery","./utils"],function(a,b){function c(a,b){this.$element=a,this.options=b,c.__super__.constructor.call(this)}return b.Extend(c,b.Observable),c.prototype.render=function(){var b=a('');return b.attr("dir",this.options.get("dir")),this.$dropdown=b,b},c.prototype.position=function(){},c.prototype.destroy=function(){this.$dropdown.remove()},c}),b.define("select2/dropdown/search",["jquery","../utils"],function(a){function b(){}return b.prototype.render=function(b){var c=b.call(this),d=a('');return this.$searchContainer=d,this.$search=d.find("input"),c.prepend(d),c},b.prototype.bind=function(b,c,d){var e=this;b.call(this,c,d),this.$search.on("keydown",function(a){e.trigger("keypress",a),e._keyUpPrevented=a.isDefaultPrevented()}),this.$search.on("input",function(){a(this).off("keyup")}),this.$search.on("keyup input",function(a){e.handleSearch(a)}),c.on("open",function(){e.$search.attr("tabindex",0),e.$search.focus(),window.setTimeout(function(){e.$search.focus()},0)}),c.on("close",function(){e.$search.attr("tabindex",-1),e.$search.val("")}),c.on("results:all",function(a){if(null==a.query.term||""===a.query.term){var b=e.showSearch(a);b?e.$searchContainer.removeClass("select2-search--hide"):e.$searchContainer.addClass("select2-search--hide")}})},b.prototype.handleSearch=function(){if(!this._keyUpPrevented){var a=this.$search.val();this.trigger("query",{term:a})}this._keyUpPrevented=!1},b.prototype.showSearch=function(){return!0},b}),b.define("select2/dropdown/hidePlaceholder",[],function(){function a(a,b,c,d){this.placeholder=this.normalizePlaceholder(c.get("placeholder")),a.call(this,b,c,d)}return a.prototype.append=function(a,b){b.results=this.removePlaceholder(b.results),a.call(this,b)},a.prototype.normalizePlaceholder=function(a,b){return"string"==typeof b&&(b={id:"",text:b}),b},a.prototype.removePlaceholder=function(a,b){for(var c=b.slice(0),d=b.length-1;d>=0;d--){var e=b[d];this.placeholder.id===e.id&&c.splice(d,1)}return c},a}),b.define("select2/dropdown/infiniteScroll",["jquery"],function(a){function b(a,b,c,d){this.lastParams={},a.call(this,b,c,d),this.$loadingMore=this.createLoadingMore(),this.loading=!1}return b.prototype.append=function(a,b){this.$loadingMore.remove(),this.loading=!1,a.call(this,b),this.showLoadingMore(b)&&this.$results.append(this.$loadingMore)},b.prototype.bind=function(b,c,d){var e=this;b.call(this,c,d),c.on("query",function(a){e.lastParams=a,e.loading=!0}),c.on("query:append",function(a){e.lastParams=a,e.loading=!0}),this.$results.on("scroll",function(){var b=a.contains(document.documentElement,e.$loadingMore[0]);if(!e.loading&&b){var c=e.$results.offset().top+e.$results.outerHeight(!1),d=e.$loadingMore.offset().top+e.$loadingMore.outerHeight(!1);c+50>=d&&e.loadMore()}})},b.prototype.loadMore=function(){this.loading=!0;var b=a.extend({},{page:1},this.lastParams);b.page++,this.trigger("query:append",b)},b.prototype.showLoadingMore=function(a,b){return b.pagination&&b.pagination.more},b.prototype.createLoadingMore=function(){var b=a('
        • '),c=this.options.get("translations").get("loadingMore");return b.html(c(this.lastParams)),b},b}),b.define("select2/dropdown/attachBody",["jquery","../utils"],function(a,b){function c(a,b,c){this.$dropdownParent=c.get("dropdownParent")||document.body,a.call(this,b,c)}return c.prototype.bind=function(a,b,c){var d=this,e=!1;a.call(this,b,c),b.on("open",function(){d._showDropdown(),d._attachPositioningHandler(b),e||(e=!0,b.on("results:all",function(){d._positionDropdown(),d._resizeDropdown()}),b.on("results:append",function(){d._positionDropdown(),d._resizeDropdown()}))}),b.on("close",function(){d._hideDropdown(),d._detachPositioningHandler(b)}),this.$dropdownContainer.on("mousedown",function(a){a.stopPropagation()})},c.prototype.position=function(a,b,c){b.attr("class",c.attr("class")),b.removeClass("select2"),b.addClass("select2-container--open"),b.css({position:"absolute",top:-999999}),this.$container=c},c.prototype.render=function(b){var c=a(""),d=b.call(this);return c.append(d),this.$dropdownContainer=c,c},c.prototype._hideDropdown=function(){this.$dropdownContainer.detach()},c.prototype._attachPositioningHandler=function(c){var d=this,e="scroll.select2."+c.id,f="resize.select2."+c.id,g="orientationchange.select2."+c.id,h=this.$container.parents().filter(b.hasScroll);h.each(function(){a(this).data("select2-scroll-position",{x:a(this).scrollLeft(),y:a(this).scrollTop()})}),h.on(e,function(){var b=a(this).data("select2-scroll-position");a(this).scrollTop(b.y)}),a(window).on(e+" "+f+" "+g,function(){d._positionDropdown(),d._resizeDropdown()})},c.prototype._detachPositioningHandler=function(c){var d="scroll.select2."+c.id,e="resize.select2."+c.id,f="orientationchange.select2."+c.id,g=this.$container.parents().filter(b.hasScroll);g.off(d),a(window).off(d+" "+e+" "+f)},c.prototype._positionDropdown=function(){var b=a(window),c=this.$dropdown.hasClass("select2-dropdown--above"),d=this.$dropdown.hasClass("select2-dropdown--below"),e=null,f=(this.$container.position(),this.$container.offset());f.bottom=f.top+this.$container.outerHeight(!1);var g={height:this.$container.outerHeight(!1)};g.top=f.top,g.bottom=f.top+g.height;var h={height:this.$dropdown.outerHeight(!1)},i={top:b.scrollTop(),bottom:b.scrollTop()+b.height()},j=i.topf.bottom+h.height,l={left:f.left,top:g.bottom};c||d||(e="below"),k||!j||c?!j&&k&&c&&(e="below"):e="above",("above"==e||c&&"below"!==e)&&(l.top=g.top-h.height),null!=e&&(this.$dropdown.removeClass("select2-dropdown--below select2-dropdown--above").addClass("select2-dropdown--"+e),this.$container.removeClass("select2-container--below select2-container--above").addClass("select2-container--"+e)),this.$dropdownContainer.css(l)},c.prototype._resizeDropdown=function(){this.$dropdownContainer.width();var a={width:this.$container.outerWidth(!1)+"px"};this.options.get("dropdownAutoWidth")&&(a.minWidth=a.width,a.width="auto"),this.$dropdown.css(a)},c.prototype._showDropdown=function(){this.$dropdownContainer.appendTo(this.$dropdownParent),this._positionDropdown(),this._resizeDropdown()},c}),b.define("select2/dropdown/minimumResultsForSearch",[],function(){function a(b){for(var c=0,d=0;d0&&(l.dataAdapter=j.Decorate(l.dataAdapter,r)),l.maximumInputLength>0&&(l.dataAdapter=j.Decorate(l.dataAdapter,s)),l.maximumSelectionLength>0&&(l.dataAdapter=j.Decorate(l.dataAdapter,t)),l.tags&&(l.dataAdapter=j.Decorate(l.dataAdapter,p)),(null!=l.tokenSeparators||null!=l.tokenizer)&&(l.dataAdapter=j.Decorate(l.dataAdapter,q)),null!=l.query){var C=b(l.amdBase+"compat/query");l.dataAdapter=j.Decorate(l.dataAdapter,C)}if(null!=l.initSelection){var D=b(l.amdBase+"compat/initSelection");l.dataAdapter=j.Decorate(l.dataAdapter,D)}}if(null==l.resultsAdapter&&(l.resultsAdapter=c,null!=l.ajax&&(l.resultsAdapter=j.Decorate(l.resultsAdapter,x)),null!=l.placeholder&&(l.resultsAdapter=j.Decorate(l.resultsAdapter,w)),l.selectOnClose&&(l.resultsAdapter=j.Decorate(l.resultsAdapter,A))),null==l.dropdownAdapter){if(l.multiple)l.dropdownAdapter=u;else{var E=j.Decorate(u,v);l.dropdownAdapter=E}if(0!==l.minimumResultsForSearch&&(l.dropdownAdapter=j.Decorate(l.dropdownAdapter,z)),l.closeOnSelect&&(l.dropdownAdapter=j.Decorate(l.dropdownAdapter,B)),null!=l.dropdownCssClass||null!=l.dropdownCss||null!=l.adaptDropdownCssClass){var F=b(l.amdBase+"compat/dropdownCss");l.dropdownAdapter=j.Decorate(l.dropdownAdapter,F)}l.dropdownAdapter=j.Decorate(l.dropdownAdapter,y)}if(null==l.selectionAdapter){if(l.selectionAdapter=l.multiple?e:d,null!=l.placeholder&&(l.selectionAdapter=j.Decorate(l.selectionAdapter,f)),l.allowClear&&(l.selectionAdapter=j.Decorate(l.selectionAdapter,g)),l.multiple&&(l.selectionAdapter=j.Decorate(l.selectionAdapter,h)),null!=l.containerCssClass||null!=l.containerCss||null!=l.adaptContainerCssClass){var G=b(l.amdBase+"compat/containerCss");l.selectionAdapter=j.Decorate(l.selectionAdapter,G)}l.selectionAdapter=j.Decorate(l.selectionAdapter,i)}if("string"==typeof l.language)if(l.language.indexOf("-")>0){var H=l.language.split("-"),I=H[0];l.language=[l.language,I]}else l.language=[l.language];if(a.isArray(l.language)){var J=new k;l.language.push("en");for(var K=l.language,L=0;L0){for(var f=a.extend(!0,{},e),g=e.children.length-1;g>=0;g--){var h=e.children[g],i=c(d,h);null==i&&f.children.splice(g,1)}return f.children.length>0?f:c(d,f)}var j=b(e.text).toUpperCase(),k=b(d.term).toUpperCase();return j.indexOf(k)>-1?e:null}this.defaults={amdBase:"./",amdLanguageBase:"./i18n/",closeOnSelect:!0,debug:!1,dropdownAutoWidth:!1,escapeMarkup:j.escapeMarkup,language:C,matcher:c,minimumInputLength:0,maximumInputLength:0,maximumSelectionLength:0,minimumResultsForSearch:0,selectOnClose:!1,sorter:function(a){return a},templateResult:function(a){return a.text},templateSelection:function(a){return a.text},theme:"default",width:"resolve"}},D.prototype.set=function(b,c){var d=a.camelCase(b),e={};e[d]=c;var f=j._convertData(e);a.extend(this.defaults,f)};var E=new D;return E}),b.define("select2/options",["require","jquery","./defaults","./utils"],function(a,b,c,d){function e(b,e){if(this.options=b,null!=e&&this.fromElement(e),this.options=c.apply(this.options),e&&e.is("input")){var f=a(this.get("amdBase")+"compat/inputData");this.options.dataAdapter=d.Decorate(this.options.dataAdapter,f)}}return e.prototype.fromElement=function(a){var c=["select2"];null==this.options.multiple&&(this.options.multiple=a.prop("multiple")),null==this.options.disabled&&(this.options.disabled=a.prop("disabled")),null==this.options.language&&(a.prop("lang")?this.options.language=a.prop("lang").toLowerCase():a.closest("[lang]").prop("lang")&&(this.options.language=a.closest("[lang]").prop("lang"))),null==this.options.dir&&(this.options.dir=a.prop("dir")?a.prop("dir"):a.closest("[dir]").prop("dir")?a.closest("[dir]").prop("dir"):"ltr"),a.prop("disabled",this.options.disabled),a.prop("multiple",this.options.multiple),a.data("select2Tags")&&(this.options.debug&&window.console&&console.warn&&console.warn('Select2: The `data-select2-tags` attribute has been changed to use the `data-data` and `data-tags="true"` attributes and will be removed in future versions of Select2.'),a.data("data",a.data("select2Tags")),a.data("tags",!0)),a.data("ajaxUrl")&&(this.options.debug&&window.console&&console.warn&&console.warn("Select2: The `data-ajax-url` attribute has been changed to `data-ajax--url` and support for the old attribute will be removed in future versions of Select2."),a.attr("ajax--url",a.data("ajaxUrl")),a.data("ajax--url",a.data("ajaxUrl")));var e={};e=b.fn.jquery&&"1."==b.fn.jquery.substr(0,2)&&a[0].dataset?b.extend(!0,{},a[0].dataset,a.data()):a.data();var f=b.extend(!0,{},e);f=d._convertData(f);for(var g in f)b.inArray(g,c)>-1||(b.isPlainObject(this.options[g])?b.extend(this.options[g],f[g]):this.options[g]=f[g]);return this},e.prototype.get=function(a){return this.options[a]},e.prototype.set=function(a,b){this.options[a]=b},e}),b.define("select2/core",["jquery","./options","./utils","./keys"],function(a,b,c,d){var e=function(a,c){null!=a.data("select2")&&a.data("select2").destroy(),this.$element=a,this.id=this._generateId(a),c=c||{},this.options=new b(c,a),e.__super__.constructor.call(this);var d=a.attr("tabindex")||0;a.data("old-tabindex",d),a.attr("tabindex","-1");var f=this.options.get("dataAdapter");this.dataAdapter=new f(a,this.options);var g=this.render();this._placeContainer(g);var h=this.options.get("selectionAdapter");this.selection=new h(a,this.options),this.$selection=this.selection.render(),this.selection.position(this.$selection,g);var i=this.options.get("dropdownAdapter");this.dropdown=new i(a,this.options),this.$dropdown=this.dropdown.render(),this.dropdown.position(this.$dropdown,g);var j=this.options.get("resultsAdapter");this.results=new j(a,this.options,this.dataAdapter),this.$results=this.results.render(),this.results.position(this.$results,this.$dropdown);var k=this;this._bindAdapters(),this._registerDomEvents(),this._registerDataEvents(),this._registerSelectionEvents(),this._registerDropdownEvents(),this._registerResultsEvents(),this._registerEvents(),this.dataAdapter.current(function(a){k.trigger("selection:update",{data:a})}),a.addClass("select2-hidden-accessible"),a.attr("aria-hidden","true"),this._syncAttributes(),a.data("select2",this)};return c.Extend(e,c.Observable),e.prototype._generateId=function(a){var b="";return b=null!=a.attr("id")?a.attr("id"):null!=a.attr("name")?a.attr("name")+"-"+c.generateChars(2):c.generateChars(4),b="select2-"+b},e.prototype._placeContainer=function(a){a.insertAfter(this.$element);var b=this._resolveWidth(this.$element,this.options.get("width"));null!=b&&a.css("width",b)},e.prototype._resolveWidth=function(a,b){var c=/^width:(([-+]?([0-9]*\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i;if("resolve"==b){var d=this._resolveWidth(a,"style");return null!=d?d:this._resolveWidth(a,"element")}if("element"==b){var e=a.outerWidth(!1);return 0>=e?"auto":e+"px"}if("style"==b){var f=a.attr("style");if("string"!=typeof f)return null;for(var g=f.split(";"),h=0,i=g.length;i>h;h+=1){var j=g[h].replace(/\s/g,""),k=j.match(c);if(null!==k&&k.length>=1)return k[1]}return null}return b},e.prototype._bindAdapters=function(){this.dataAdapter.bind(this,this.$container),this.selection.bind(this,this.$container),this.dropdown.bind(this,this.$container),this.results.bind(this,this.$container)},e.prototype._registerDomEvents=function(){var b=this;this.$element.on("change.select2",function(){b.dataAdapter.current(function(a){b.trigger("selection:update",{data:a})})}),this._sync=c.bind(this._syncAttributes,this),this.$element[0].attachEvent&&this.$element[0].attachEvent("onpropertychange",this._sync);var d=window.MutationObserver||window.WebKitMutationObserver||window.MozMutationObserver;null!=d?(this._observer=new d(function(c){a.each(c,b._sync)}),this._observer.observe(this.$element[0],{attributes:!0,subtree:!1})):this.$element[0].addEventListener&&this.$element[0].addEventListener("DOMAttrModified",b._sync,!1)},e.prototype._registerDataEvents=function(){var a=this;this.dataAdapter.on("*",function(b,c){a.trigger(b,c)})},e.prototype._registerSelectionEvents=function(){var b=this,c=["toggle"];this.selection.on("toggle",function(){b.toggleDropdown()}),this.selection.on("*",function(d,e){-1===a.inArray(d,c)&&b.trigger(d,e)})},e.prototype._registerDropdownEvents=function(){var a=this;this.dropdown.on("*",function(b,c){a.trigger(b,c)})},e.prototype._registerResultsEvents=function(){var a=this;this.results.on("*",function(b,c){a.trigger(b,c)})},e.prototype._registerEvents=function(){var a=this;this.on("open",function(){a.$container.addClass("select2-container--open")}),this.on("close",function(){a.$container.removeClass("select2-container--open")}),this.on("enable",function(){a.$container.removeClass("select2-container--disabled")}),this.on("disable",function(){a.$container.addClass("select2-container--disabled")}),this.on("focus",function(){a.$container.addClass("select2-container--focus")}),this.on("blur",function(){a.$container.removeClass("select2-container--focus")}),this.on("query",function(b){a.isOpen()||a.trigger("open"),this.dataAdapter.query(b,function(c){a.trigger("results:all",{data:c,query:b})})}),this.on("query:append",function(b){this.dataAdapter.query(b,function(c){a.trigger("results:append",{data:c,query:b})})}),this.on("keypress",function(b){var c=b.which;a.isOpen()?c===d.ENTER?(a.trigger("results:select"),b.preventDefault()):c===d.SPACE&&b.ctrlKey?(a.trigger("results:toggle"),b.preventDefault()):c===d.UP?(a.trigger("results:previous"),b.preventDefault()):c===d.DOWN?(a.trigger("results:next"),b.preventDefault()):(c===d.ESC||c===d.TAB)&&(a.close(),b.preventDefault()):(c===d.ENTER||c===d.SPACE||(c===d.DOWN||c===d.UP)&&b.altKey)&&(a.open(),b.preventDefault())})},e.prototype._syncAttributes=function(){this.options.set("disabled",this.$element.prop("disabled")),this.options.get("disabled")?(this.isOpen()&&this.close(),this.trigger("disable")):this.trigger("enable")},e.prototype.trigger=function(a,b){var c=e.__super__.trigger,d={open:"opening",close:"closing",select:"selecting",unselect:"unselecting"};if(a in d){var f=d[a],g={prevented:!1,name:a,args:b};if(c.call(this,f,g),g.prevented)return void(b.prevented=!0)}c.call(this,a,b)},e.prototype.toggleDropdown=function(){this.options.get("disabled")||(this.isOpen()?this.close():this.open())},e.prototype.open=function(){this.isOpen()||(this.trigger("query",{}),this.trigger("open"))},e.prototype.close=function(){this.isOpen()&&this.trigger("close")},e.prototype.isOpen=function(){return this.$container.hasClass("select2-container--open")},e.prototype.enable=function(a){this.options.get("debug")&&window.console&&console.warn&&console.warn('Select2: The `select2("enable")` method has been deprecated and will be removed in later Select2 versions. Use $element.prop("disabled") instead.'),(null==a||0===a.length)&&(a=[!0]);var b=!a[0];this.$element.prop("disabled",b)},e.prototype.data=function(){this.options.get("debug")&&arguments.length>0&&window.console&&console.warn&&console.warn('Select2: Data can no longer be set using `select2("data")`. You should consider setting the value instead using `$element.val()`.');var a=[];return this.dataAdapter.current(function(b){a=b}),a},e.prototype.val=function(b){if(this.options.get("debug")&&window.console&&console.warn&&console.warn('Select2: The `select2("val")` method has been deprecated and will be removed in later Select2 versions. Use $element.val() instead.'),null==b||0===b.length)return this.$element.val();var c=b[0];a.isArray(c)&&(c=a.map(c,function(a){return a.toString()})),this.$element.val(c).trigger("change")},e.prototype.destroy=function(){this.$container.remove(),this.$element[0].detachEvent&&this.$element[0].detachEvent("onpropertychange",this._sync),null!=this._observer?(this._observer.disconnect(),this._observer=null):this.$element[0].removeEventListener&&this.$element[0].removeEventListener("DOMAttrModified",this._sync,!1),this._sync=null,this.$element.off(".select2"),this.$element.attr("tabindex",this.$element.data("old-tabindex")),this.$element.removeClass("select2-hidden-accessible"),this.$element.attr("aria-hidden","false"),this.$element.removeData("select2"),this.dataAdapter.destroy(),this.selection.destroy(),this.dropdown.destroy(),this.results.destroy(),this.dataAdapter=null,this.selection=null,this.dropdown=null,this.results=null},e.prototype.render=function(){var b=a('');return b.attr("dir",this.options.get("dir")),this.$container=b,this.$container.addClass("select2-container--"+this.options.get("theme")),b.data("element",this.$element),b},e}),b.define("jquery.select2",["jquery","require","./select2/core","./select2/defaults"],function(a,b,c,d){if(b("jquery.mousewheel"),null==a.fn.select2){var e=["open","close","destroy"];a.fn.select2=function(b){if(b=b||{},"object"==typeof b)return this.each(function(){{var d=a.extend({},b,!0);new c(a(this),d)}}),this;if("string"==typeof b){var d=this.data("select2");null==d&&window.console&&console.error&&console.error("The select2('"+b+"') method was called on an element that is not using Select2.");var f=Array.prototype.slice.call(arguments,1),g=d[b](f);return a.inArray(b,e)>-1?this:g}throw new Error("Invalid arguments for Select2: "+b)}}return null==a.fn.select2.defaults&&(a.fn.select2.defaults=d),c}),b.define("jquery.mousewheel",["jquery"],function(a){return a}),{define:b.define,require:b.require}}(),c=b.require("jquery.select2");return a.fn.select2.amd=b,c}); \ No newline at end of file diff --git a/awx/ui/client/lib/select2/docs/announcements-4.0.html b/awx/ui/client/lib/select2/docs/announcements-4.0.html index 5e107c57b9..8076ae7bfc 100644 --- a/awx/ui/client/lib/select2/docs/announcements-4.0.html +++ b/awx/ui/client/lib/select2/docs/announcements-4.0.html @@ -5,24 +5,6 @@ slug: announcements-4.0 ---
          -
          -

          Pre-release notes

          - -
          - -

          - The 4.0 release is ready for early adopters interested in testing it out. - You can use the development version, available on GitHub, by getting the - source code available in the select2-ng branch. The source - code can be - - downloaded as a zip archive - as well. -

          -
          - -
          -

          Select2 4.0.0

          @@ -157,7 +139,7 @@ slug: announcements-4.0

          In Select2 4.0, the <select> element supports all core options, and support for the old - <input type="hidden" /> has been removed. This means + <input type="hidden" /> has been deprecated. This means that if you previously declared an AJAX field with some pre-selected options that looked like...

          @@ -167,7 +149,7 @@ slug: announcements-4.0

          - Will need to be recreated as a <select> element with + It will need to be recreated as a <select> element with some <option> tags that have value attributes that match the old value.

          @@ -215,6 +197,57 @@ slug: announcements-4.0 matcher function.

          +

          + So if your old code used a matcher that only displayed options if they + started with the term that was entered, it would look something like... +

          + +
          +function matchStart (term, text) {
          +  if (text.toUpperCase().indexOf(term.toUpperCase()) == 0) {
          +    return true;
          +  }
          +
          +  return false;
          +}
          +
          +$("select").select2({
          +  matcher: matchStart
          +})
          +
          + +

          + Then in Select2 4.0, you would need to wrap the matchStart + method (or the name of the matcher you created) with a + oldMatcher method that we have created. +

          + +
          +function matchStart (term, text) {
          +  if (text.toUpperCase().indexOf(term.toUpperCase()) == 0) {
          +    return true;
          +  }
          +
          +  return false;
          +}
          +
          +$.fn.select2.amd.require(['select2/compat/matcher'], function (oldMatcher) {
          +  $("select").select2({
          +    matcher: oldMatcher(matchStart)
          +  })
          +});
          +
          + +

          + This will work for any matchers that only took in the search term and the + text of the option as parameters. If your matcher relied on the third + parameter containing the jQuery element representing the original + <option> tag, then you may need to slightly change + your matcher to expect the full JavaScript data object being passed in + instead. You can still retrieve the jQuery element from the data object + using the data.element property. +

          +

          More flexible placeholders

          @@ -263,9 +296,9 @@ $("select").select2({

          And Select2 will automatically display the placeholder when the value of - the select is -1, which it is by default. This does not break - the old functionality of Select2 where the placeholder option was blank by - default. + the select is -1, which it will be by default. This does not + break the old functionality of Select2 where the placeholder option was + blank by default.

          Display reflects the actual order of the values

          diff --git a/awx/ui/client/lib/select2/docs/examples.html b/awx/ui/client/lib/select2/docs/examples.html index 00415b5cc6..ccb751d2a4 100644 --- a/awx/ui/client/lib/select2/docs/examples.html +++ b/awx/ui/client/lib/select2/docs/examples.html @@ -211,7 +211,7 @@ $(".js-example-data-array-selected").select2({ data: data }) - + element."); - } - }); - } - - opts = $.extend({}, { - populateResults: function(container, results, query) { - var populate, id=this.opts.id, liveRegion=this.liveRegion; - - populate=function(results, container, depth) { - - var i, l, result, selectable, disabled, compound, node, label, innerContainer, formatted; - - results = opts.sortResults(results, container, query); - - // collect the created nodes for bulk append - var nodes = []; - for (i = 0, l = results.length; i < l; i = i + 1) { - - result=results[i]; - - disabled = (result.disabled === true); - selectable = (!disabled) && (id(result) !== undefined); - - compound=result.children && result.children.length > 0; - - node=$("
        • "); - node.addClass("select2-results-dept-"+depth); - node.addClass("select2-result"); - node.addClass(selectable ? "select2-result-selectable" : "select2-result-unselectable"); - if (disabled) { node.addClass("select2-disabled"); } - if (compound) { node.addClass("select2-result-with-children"); } - node.addClass(self.opts.formatResultCssClass(result)); - node.attr("role", "presentation"); - - label=$(document.createElement("div")); - label.addClass("select2-result-label"); - label.attr("id", "select2-result-label-" + nextUid()); - label.attr("role", "option"); - - formatted=opts.formatResult(result, label, query, self.opts.escapeMarkup); - if (formatted!==undefined) { - label.html(formatted); - node.append(label); - } - - - if (compound) { - - innerContainer=$("
            "); - innerContainer.addClass("select2-result-sub"); - populate(result.children, innerContainer, depth+1); - node.append(innerContainer); - } - - node.data("select2-data", result); - nodes.push(node[0]); - } - - // bulk append the created nodes - container.append(nodes); - liveRegion.text(opts.formatMatches(results.length)); - }; - - populate(results, container, 0); - } - }, $.fn.select2.defaults, opts); - - if (typeof(opts.id) !== "function") { - idKey = opts.id; - opts.id = function (e) { return e[idKey]; }; - } - - if ($.isArray(opts.element.data("select2Tags"))) { - if ("tags" in opts) { - throw "tags specified as both an attribute 'data-select2-tags' and in options of Select2 " + opts.element.attr("id"); - } - opts.tags=opts.element.data("select2Tags"); - } - - if (select) { - opts.query = this.bind(function (query) { - var data = { results: [], more: false }, - term = query.term, - children, placeholderOption, process; - - process=function(element, collection) { - var group; - if (element.is("option")) { - if (query.matcher(term, element.text(), element)) { - collection.push(self.optionToData(element)); - } - } else if (element.is("optgroup")) { - group=self.optionToData(element); - element.children().each2(function(i, elm) { process(elm, group.children); }); - if (group.children.length>0) { - collection.push(group); - } - } - }; - - children=element.children(); - - // ignore the placeholder option if there is one - if (this.getPlaceholder() !== undefined && children.length > 0) { - placeholderOption = this.getPlaceholderOption(); - if (placeholderOption) { - children=children.not(placeholderOption); - } - } - - children.each2(function(i, elm) { process(elm, data.results); }); - - query.callback(data); - }); - // this is needed because inside val() we construct choices from options and their id is hardcoded - opts.id=function(e) { return e.id; }; - } else { - if (!("query" in opts)) { - - if ("ajax" in opts) { - ajaxUrl = opts.element.data("ajax-url"); - if (ajaxUrl && ajaxUrl.length > 0) { - opts.ajax.url = ajaxUrl; - } - opts.query = ajax.call(opts.element, opts.ajax); - } else if ("data" in opts) { - opts.query = local(opts.data); - } else if ("tags" in opts) { - opts.query = tags(opts.tags); - if (opts.createSearchChoice === undefined) { - opts.createSearchChoice = function (term) { return {id: $.trim(term), text: $.trim(term)}; }; - } - if (opts.initSelection === undefined) { - opts.initSelection = function (element, callback) { - var data = []; - $(splitVal(element.val(), opts.separator)).each(function () { - var obj = { id: this, text: this }, - tags = opts.tags; - if ($.isFunction(tags)) tags=tags(); - $(tags).each(function() { if (equal(this.id, obj.id)) { obj = this; return false; } }); - data.push(obj); - }); - - callback(data); - }; - } - } - } - } - if (typeof(opts.query) !== "function") { - throw "query function not defined for Select2 " + opts.element.attr("id"); - } - - if (opts.createSearchChoicePosition === 'top') { - opts.createSearchChoicePosition = function(list, item) { list.unshift(item); }; - } - else if (opts.createSearchChoicePosition === 'bottom') { - opts.createSearchChoicePosition = function(list, item) { list.push(item); }; - } - else if (typeof(opts.createSearchChoicePosition) !== "function") { - throw "invalid createSearchChoicePosition option must be 'top', 'bottom' or a custom function"; - } - - return opts; - }, - - /** - * Monitor the original element for changes and update select2 accordingly - */ - // abstract - monitorSource: function () { - var el = this.opts.element, observer, self = this; - - el.on("change.select2", this.bind(function (e) { - if (this.opts.element.data("select2-change-triggered") !== true) { - this.initSelection(); - } - })); - - this._sync = this.bind(function () { - - // sync enabled state - var disabled = el.prop("disabled"); - if (disabled === undefined) disabled = false; - this.enable(!disabled); - - var readonly = el.prop("readonly"); - if (readonly === undefined) readonly = false; - this.readonly(readonly); - - syncCssClasses(this.container, this.opts.element, this.opts.adaptContainerCssClass); - this.container.addClass(evaluate(this.opts.containerCssClass, this.opts.element)); - - syncCssClasses(this.dropdown, this.opts.element, this.opts.adaptDropdownCssClass); - this.dropdown.addClass(evaluate(this.opts.dropdownCssClass, this.opts.element)); - - }); - - // IE8-10 (IE9/10 won't fire propertyChange via attachEventListener) - if (el.length && el[0].attachEvent) { - el.each(function() { - this.attachEvent("onpropertychange", self._sync); - }); - } - - // safari, chrome, firefox, IE11 - observer = window.MutationObserver || window.WebKitMutationObserver|| window.MozMutationObserver; - if (observer !== undefined) { - if (this.propertyObserver) { delete this.propertyObserver; this.propertyObserver = null; } - this.propertyObserver = new observer(function (mutations) { - $.each(mutations, self._sync); - }); - this.propertyObserver.observe(el.get(0), { attributes:true, subtree:false }); - } - }, - - // abstract - triggerSelect: function(data) { - var evt = $.Event("select2-selecting", { val: this.id(data), object: data, choice: data }); - this.opts.element.trigger(evt); - return !evt.isDefaultPrevented(); - }, - - /** - * Triggers the change event on the source element - */ - // abstract - triggerChange: function (details) { - - details = details || {}; - details= $.extend({}, details, { type: "change", val: this.val() }); - // prevents recursive triggering - this.opts.element.data("select2-change-triggered", true); - this.opts.element.trigger(details); - this.opts.element.data("select2-change-triggered", false); - - // some validation frameworks ignore the change event and listen instead to keyup, click for selects - // so here we trigger the click event manually - this.opts.element.click(); - - // ValidationEngine ignores the change event and listens instead to blur - // so here we trigger the blur event manually if so desired - if (this.opts.blurOnChange) - this.opts.element.blur(); - }, - - //abstract - isInterfaceEnabled: function() - { - return this.enabledInterface === true; - }, - - // abstract - enableInterface: function() { - var enabled = this._enabled && !this._readonly, - disabled = !enabled; - - if (enabled === this.enabledInterface) return false; - - this.container.toggleClass("select2-container-disabled", disabled); - this.close(); - this.enabledInterface = enabled; - - return true; - }, - - // abstract - enable: function(enabled) { - if (enabled === undefined) enabled = true; - if (this._enabled === enabled) return; - this._enabled = enabled; - - this.opts.element.prop("disabled", !enabled); - this.enableInterface(); - }, - - // abstract - disable: function() { - this.enable(false); - }, - - // abstract - readonly: function(enabled) { - if (enabled === undefined) enabled = false; - if (this._readonly === enabled) return; - this._readonly = enabled; - - this.opts.element.prop("readonly", enabled); - this.enableInterface(); - }, - - // abstract - opened: function () { - return (this.container) ? this.container.hasClass("select2-dropdown-open") : false; - }, - - // abstract - positionDropdown: function() { - var $dropdown = this.dropdown, - offset = this.container.offset(), - height = this.container.outerHeight(false), - width = this.container.outerWidth(false), - dropHeight = $dropdown.outerHeight(false), - $window = $(window), - windowWidth = $window.width(), - windowHeight = $window.height(), - viewPortRight = $window.scrollLeft() + windowWidth, - viewportBottom = $window.scrollTop() + windowHeight, - dropTop = offset.top + height, - dropLeft = offset.left, - enoughRoomBelow = dropTop + dropHeight <= viewportBottom, - enoughRoomAbove = (offset.top - dropHeight) >= $window.scrollTop(), - dropWidth = $dropdown.outerWidth(false), - enoughRoomOnRight = dropLeft + dropWidth <= viewPortRight, - aboveNow = $dropdown.hasClass("select2-drop-above"), - bodyOffset, - above, - changeDirection, - css, - resultsListNode; - - // always prefer the current above/below alignment, unless there is not enough room - if (aboveNow) { - above = true; - if (!enoughRoomAbove && enoughRoomBelow) { - changeDirection = true; - above = false; - } - } else { - above = false; - if (!enoughRoomBelow && enoughRoomAbove) { - changeDirection = true; - above = true; - } - } - - //if we are changing direction we need to get positions when dropdown is hidden; - if (changeDirection) { - $dropdown.hide(); - offset = this.container.offset(); - height = this.container.outerHeight(false); - width = this.container.outerWidth(false); - dropHeight = $dropdown.outerHeight(false); - viewPortRight = $window.scrollLeft() + windowWidth; - viewportBottom = $window.scrollTop() + windowHeight; - dropTop = offset.top + height; - dropLeft = offset.left; - dropWidth = $dropdown.outerWidth(false); - enoughRoomOnRight = dropLeft + dropWidth <= viewPortRight; - $dropdown.show(); - - // fix so the cursor does not move to the left within the search-textbox in IE - this.focusSearch(); - } - - if (this.opts.dropdownAutoWidth) { - resultsListNode = $('.select2-results', $dropdown)[0]; - $dropdown.addClass('select2-drop-auto-width'); - $dropdown.css('width', ''); - // Add scrollbar width to dropdown if vertical scrollbar is present - dropWidth = $dropdown.outerWidth(false) + (resultsListNode.scrollHeight === resultsListNode.clientHeight ? 0 : scrollBarDimensions.width); - dropWidth > width ? width = dropWidth : dropWidth = width; - dropHeight = $dropdown.outerHeight(false); - enoughRoomOnRight = dropLeft + dropWidth <= viewPortRight; - } - else { - this.container.removeClass('select2-drop-auto-width'); - } - - //console.log("below/ droptop:", dropTop, "dropHeight", dropHeight, "sum", (dropTop+dropHeight)+" viewport bottom", viewportBottom, "enough?", enoughRoomBelow); - //console.log("above/ offset.top", offset.top, "dropHeight", dropHeight, "top", (offset.top-dropHeight), "scrollTop", this.body.scrollTop(), "enough?", enoughRoomAbove); - - // fix positioning when body has an offset and is not position: static - if (this.body.css('position') !== 'static') { - bodyOffset = this.body.offset(); - dropTop -= bodyOffset.top; - dropLeft -= bodyOffset.left; - } - - if (!enoughRoomOnRight) { - dropLeft = offset.left + this.container.outerWidth(false) - dropWidth; - } - - css = { - left: dropLeft, - width: width - }; - - if (above) { - css.top = offset.top - dropHeight; - css.bottom = 'auto'; - this.container.addClass("select2-drop-above"); - $dropdown.addClass("select2-drop-above"); - } - else { - css.top = dropTop; - css.bottom = 'auto'; - this.container.removeClass("select2-drop-above"); - $dropdown.removeClass("select2-drop-above"); - } - css = $.extend(css, evaluate(this.opts.dropdownCss, this.opts.element)); - - $dropdown.css(css); - }, - - // abstract - shouldOpen: function() { - var event; - - if (this.opened()) return false; - - if (this._enabled === false || this._readonly === true) return false; - - event = $.Event("select2-opening"); - this.opts.element.trigger(event); - return !event.isDefaultPrevented(); - }, - - // abstract - clearDropdownAlignmentPreference: function() { - // clear the classes used to figure out the preference of where the dropdown should be opened - this.container.removeClass("select2-drop-above"); - this.dropdown.removeClass("select2-drop-above"); - }, - - /** - * Opens the dropdown - * - * @return {Boolean} whether or not dropdown was opened. This method will return false if, for example, - * the dropdown is already open, or if the 'open' event listener on the element called preventDefault(). - */ - // abstract - open: function () { - - if (!this.shouldOpen()) return false; - - this.opening(); - - // Only bind the document mousemove when the dropdown is visible - $document.on("mousemove.select2Event", function (e) { - lastMousePosition.x = e.pageX; - lastMousePosition.y = e.pageY; - }); - - return true; - }, - - /** - * Performs the opening of the dropdown - */ - // abstract - opening: function() { - var cid = this.containerEventName, - scroll = "scroll." + cid, - resize = "resize."+cid, - orient = "orientationchange."+cid, - mask; - - this.container.addClass("select2-dropdown-open").addClass("select2-container-active"); - - this.clearDropdownAlignmentPreference(); - - if(this.dropdown[0] !== this.body.children().last()[0]) { - this.dropdown.detach().appendTo(this.body); - } - - // create the dropdown mask if doesn't already exist - mask = $("#select2-drop-mask"); - if (mask.length == 0) { - mask = $(document.createElement("div")); - mask.attr("id","select2-drop-mask").attr("class","select2-drop-mask"); - mask.hide(); - mask.appendTo(this.body); - mask.on("mousedown touchstart click", function (e) { - // Prevent IE from generating a click event on the body - reinsertElement(mask); - - var dropdown = $("#select2-drop"), self; - if (dropdown.length > 0) { - self=dropdown.data("select2"); - if (self.opts.selectOnBlur) { - self.selectHighlighted({noFocus: true}); - } - self.close(); - e.preventDefault(); - e.stopPropagation(); - } - }); - } - - // ensure the mask is always right before the dropdown - if (this.dropdown.prev()[0] !== mask[0]) { - this.dropdown.before(mask); - } - - // move the global id to the correct dropdown - $("#select2-drop").removeAttr("id"); - this.dropdown.attr("id", "select2-drop"); - - // show the elements - mask.show(); - - this.positionDropdown(); - this.dropdown.show(); - this.positionDropdown(); - - this.dropdown.addClass("select2-drop-active"); - - // attach listeners to events that can change the position of the container and thus require - // the position of the dropdown to be updated as well so it does not come unglued from the container - var that = this; - this.container.parents().add(window).each(function () { - $(this).on(resize+" "+scroll+" "+orient, function (e) { - if (that.opened()) that.positionDropdown(); - }); - }); - - - }, - - // abstract - close: function () { - if (!this.opened()) return; - - var cid = this.containerEventName, - scroll = "scroll." + cid, - resize = "resize."+cid, - orient = "orientationchange."+cid; - - // unbind event listeners - this.container.parents().add(window).each(function () { $(this).off(scroll).off(resize).off(orient); }); - - this.clearDropdownAlignmentPreference(); - - $("#select2-drop-mask").hide(); - this.dropdown.removeAttr("id"); // only the active dropdown has the select2-drop id - this.dropdown.hide(); - this.container.removeClass("select2-dropdown-open").removeClass("select2-container-active"); - this.results.empty(); - - // Now that the dropdown is closed, unbind the global document mousemove event - $document.off("mousemove.select2Event"); - - this.clearSearch(); - this.search.removeClass("select2-active"); - this.opts.element.trigger($.Event("select2-close")); - }, - - /** - * Opens control, sets input value, and updates results. - */ - // abstract - externalSearch: function (term) { - this.open(); - this.search.val(term); - this.updateResults(false); - }, - - // abstract - clearSearch: function () { - - }, - - //abstract - getMaximumSelectionSize: function() { - return evaluate(this.opts.maximumSelectionSize, this.opts.element); - }, - - // abstract - ensureHighlightVisible: function () { - var results = this.results, children, index, child, hb, rb, y, more, topOffset; - - index = this.highlight(); - - if (index < 0) return; - - if (index == 0) { - - // if the first element is highlighted scroll all the way to the top, - // that way any unselectable headers above it will also be scrolled - // into view - - results.scrollTop(0); - return; - } - - children = this.findHighlightableChoices().find('.select2-result-label'); - - child = $(children[index]); - - topOffset = (child.offset() || {}).top || 0; - - hb = topOffset + child.outerHeight(true); - - // if this is the last child lets also make sure select2-more-results is visible - if (index === children.length - 1) { - more = results.find("li.select2-more-results"); - if (more.length > 0) { - hb = more.offset().top + more.outerHeight(true); - } - } - - rb = results.offset().top + results.outerHeight(true); - if (hb > rb) { - results.scrollTop(results.scrollTop() + (hb - rb)); - } - y = topOffset - results.offset().top; - - // make sure the top of the element is visible - if (y < 0 && child.css('display') != 'none' ) { - results.scrollTop(results.scrollTop() + y); // y is negative - } - }, - - // abstract - findHighlightableChoices: function() { - return this.results.find(".select2-result-selectable:not(.select2-disabled):not(.select2-selected)"); - }, - - // abstract - moveHighlight: function (delta) { - var choices = this.findHighlightableChoices(), - index = this.highlight(); - - while (index > -1 && index < choices.length) { - index += delta; - var choice = $(choices[index]); - if (choice.hasClass("select2-result-selectable") && !choice.hasClass("select2-disabled") && !choice.hasClass("select2-selected")) { - this.highlight(index); - break; - } - } - }, - - // abstract - highlight: function (index) { - var choices = this.findHighlightableChoices(), - choice, - data; - - if (arguments.length === 0) { - return indexOf(choices.filter(".select2-highlighted")[0], choices.get()); - } - - if (index >= choices.length) index = choices.length - 1; - if (index < 0) index = 0; - - this.removeHighlight(); - - choice = $(choices[index]); - choice.addClass("select2-highlighted"); - - // ensure assistive technology can determine the active choice - this.search.attr("aria-activedescendant", choice.find(".select2-result-label").attr("id")); - - this.ensureHighlightVisible(); - - this.liveRegion.text(choice.text()); - - data = choice.data("select2-data"); - if (data) { - this.opts.element.trigger({ type: "select2-highlight", val: this.id(data), choice: data }); - } - }, - - removeHighlight: function() { - this.results.find(".select2-highlighted").removeClass("select2-highlighted"); - }, - - touchMoved: function() { - this._touchMoved = true; - }, - - clearTouchMoved: function() { - this._touchMoved = false; - }, - - // abstract - countSelectableResults: function() { - return this.findHighlightableChoices().length; - }, - - // abstract - highlightUnderEvent: function (event) { - var el = $(event.target).closest(".select2-result-selectable"); - if (el.length > 0 && !el.is(".select2-highlighted")) { - var choices = this.findHighlightableChoices(); - this.highlight(choices.index(el)); - } else if (el.length == 0) { - // if we are over an unselectable item remove all highlights - this.removeHighlight(); - } - }, - - // abstract - loadMoreIfNeeded: function () { - var results = this.results, - more = results.find("li.select2-more-results"), - below, // pixels the element is below the scroll fold, below==0 is when the element is starting to be visible - page = this.resultsPage + 1, - self=this, - term=this.search.val(), - context=this.context; - - if (more.length === 0) return; - below = more.offset().top - results.offset().top - results.height(); - - if (below <= this.opts.loadMorePadding) { - more.addClass("select2-active"); - this.opts.query({ - element: this.opts.element, - term: term, - page: page, - context: context, - matcher: this.opts.matcher, - callback: this.bind(function (data) { - - // ignore a response if the select2 has been closed before it was received - if (!self.opened()) return; - - - self.opts.populateResults.call(this, results, data.results, {term: term, page: page, context:context}); - self.postprocessResults(data, false, false); - - if (data.more===true) { - more.detach().appendTo(results).text(evaluate(self.opts.formatLoadMore, self.opts.element, page+1)); - window.setTimeout(function() { self.loadMoreIfNeeded(); }, 10); - } else { - more.remove(); - } - self.positionDropdown(); - self.resultsPage = page; - self.context = data.context; - this.opts.element.trigger({ type: "select2-loaded", items: data }); - })}); - } - }, - - /** - * Default tokenizer function which does nothing - */ - tokenize: function() { - - }, - - /** - * @param initial whether or not this is the call to this method right after the dropdown has been opened - */ - // abstract - updateResults: function (initial) { - var search = this.search, - results = this.results, - opts = this.opts, - data, - self = this, - input, - term = search.val(), - lastTerm = $.data(this.container, "select2-last-term"), - // sequence number used to drop out-of-order responses - queryNumber; - - // prevent duplicate queries against the same term - if (initial !== true && lastTerm && equal(term, lastTerm)) return; - - $.data(this.container, "select2-last-term", term); - - // if the search is currently hidden we do not alter the results - if (initial !== true && (this.showSearchInput === false || !this.opened())) { - return; - } - - function postRender() { - search.removeClass("select2-active"); - self.positionDropdown(); - if (results.find('.select2-no-results,.select2-selection-limit,.select2-searching').length) { - self.liveRegion.text(results.text()); - } - else { - self.liveRegion.text(self.opts.formatMatches(results.find('.select2-result-selectable').length)); - } - } - - function render(html) { - results.html(html); - postRender(); - } - - queryNumber = ++this.queryCount; - - var maxSelSize = this.getMaximumSelectionSize(); - if (maxSelSize >=1) { - data = this.data(); - if ($.isArray(data) && data.length >= maxSelSize && checkFormatter(opts.formatSelectionTooBig, "formatSelectionTooBig")) { - render("
          • " + evaluate(opts.formatSelectionTooBig, opts.element, maxSelSize) + "
          • "); - return; - } - } - - if (search.val().length < opts.minimumInputLength) { - if (checkFormatter(opts.formatInputTooShort, "formatInputTooShort")) { - render("
          • " + evaluate(opts.formatInputTooShort, opts.element, search.val(), opts.minimumInputLength) + "
          • "); - } else { - render(""); - } - if (initial && this.showSearch) this.showSearch(true); - return; - } - - if (opts.maximumInputLength && search.val().length > opts.maximumInputLength) { - if (checkFormatter(opts.formatInputTooLong, "formatInputTooLong")) { - render("
          • " + evaluate(opts.formatInputTooLong, opts.element, search.val(), opts.maximumInputLength) + "
          • "); - } else { - render(""); - } - return; - } - - if (opts.formatSearching && this.findHighlightableChoices().length === 0) { - render("
          • " + evaluate(opts.formatSearching, opts.element) + "
          • "); - } - - search.addClass("select2-active"); - - this.removeHighlight(); - - // give the tokenizer a chance to pre-process the input - input = this.tokenize(); - if (input != undefined && input != null) { - search.val(input); - } - - this.resultsPage = 1; - - opts.query({ - element: opts.element, - term: search.val(), - page: this.resultsPage, - context: null, - matcher: opts.matcher, - callback: this.bind(function (data) { - var def; // default choice - - // ignore old responses - if (queryNumber != this.queryCount) { - return; - } - - // ignore a response if the select2 has been closed before it was received - if (!this.opened()) { - this.search.removeClass("select2-active"); - return; - } - - // handle ajax error - if(data.hasError !== undefined && checkFormatter(opts.formatAjaxError, "formatAjaxError")) { - render("
          • " + evaluate(opts.formatAjaxError, opts.element, data.jqXHR, data.textStatus, data.errorThrown) + "
          • "); - return; - } - - // save context, if any - this.context = (data.context===undefined) ? null : data.context; - // create a default choice and prepend it to the list - if (this.opts.createSearchChoice && search.val() !== "") { - def = this.opts.createSearchChoice.call(self, search.val(), data.results); - if (def !== undefined && def !== null && self.id(def) !== undefined && self.id(def) !== null) { - if ($(data.results).filter( - function () { - return equal(self.id(this), self.id(def)); - }).length === 0) { - this.opts.createSearchChoicePosition(data.results, def); - } - } - } - - if (data.results.length === 0 && checkFormatter(opts.formatNoMatches, "formatNoMatches")) { - render("
          • " + evaluate(opts.formatNoMatches, opts.element, search.val()) + "
          • "); - return; - } - - results.empty(); - self.opts.populateResults.call(this, results, data.results, {term: search.val(), page: this.resultsPage, context:null}); - - if (data.more === true && checkFormatter(opts.formatLoadMore, "formatLoadMore")) { - results.append("
          • " + opts.escapeMarkup(evaluate(opts.formatLoadMore, opts.element, this.resultsPage)) + "
          • "); - window.setTimeout(function() { self.loadMoreIfNeeded(); }, 10); - } - - this.postprocessResults(data, initial); - - postRender(); - - this.opts.element.trigger({ type: "select2-loaded", items: data }); - })}); - }, - - // abstract - cancel: function () { - this.close(); - }, - - // abstract - blur: function () { - // if selectOnBlur == true, select the currently highlighted option - if (this.opts.selectOnBlur) - this.selectHighlighted({noFocus: true}); - - this.close(); - this.container.removeClass("select2-container-active"); - // synonymous to .is(':focus'), which is available in jquery >= 1.6 - if (this.search[0] === document.activeElement) { this.search.blur(); } - this.clearSearch(); - this.selection.find(".select2-search-choice-focus").removeClass("select2-search-choice-focus"); - }, - - // abstract - focusSearch: function () { - focus(this.search); - }, - - // abstract - selectHighlighted: function (options) { - if (this._touchMoved) { - this.clearTouchMoved(); - return; - } - var index=this.highlight(), - highlighted=this.results.find(".select2-highlighted"), - data = highlighted.closest('.select2-result').data("select2-data"); - - if (data) { - this.highlight(index); - this.onSelect(data, options); - } else if (options && options.noFocus) { - this.close(); - } - }, - - // abstract - getPlaceholder: function () { - var placeholderOption; - return this.opts.element.attr("placeholder") || - this.opts.element.attr("data-placeholder") || // jquery 1.4 compat - this.opts.element.data("placeholder") || - this.opts.placeholder || - ((placeholderOption = this.getPlaceholderOption()) !== undefined ? placeholderOption.text() : undefined); - }, - - // abstract - getPlaceholderOption: function() { - if (this.select) { - var firstOption = this.select.children('option').first(); - if (this.opts.placeholderOption !== undefined ) { - //Determine the placeholder option based on the specified placeholderOption setting - return (this.opts.placeholderOption === "first" && firstOption) || - (typeof this.opts.placeholderOption === "function" && this.opts.placeholderOption(this.select)); - } else if ($.trim(firstOption.text()) === "" && firstOption.val() === "") { - //No explicit placeholder option specified, use the first if it's blank - return firstOption; - } - } - }, - - /** - * Get the desired width for the container element. This is - * derived first from option `width` passed to select2, then - * the inline 'style' on the original element, and finally - * falls back to the jQuery calculated element width. - */ - // abstract - initContainerWidth: function () { - function resolveContainerWidth() { - var style, attrs, matches, i, l, attr; - - if (this.opts.width === "off") { - return null; - } else if (this.opts.width === "element"){ - return this.opts.element.outerWidth(false) === 0 ? 'auto' : this.opts.element.outerWidth(false) + 'px'; - } else if (this.opts.width === "copy" || this.opts.width === "resolve") { - // check if there is inline style on the element that contains width - style = this.opts.element.attr('style'); - if (style !== undefined) { - attrs = style.split(';'); - for (i = 0, l = attrs.length; i < l; i = i + 1) { - attr = attrs[i].replace(/\s/g, ''); - matches = attr.match(/^width:(([-+]?([0-9]*\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i); - if (matches !== null && matches.length >= 1) - return matches[1]; - } - } - - if (this.opts.width === "resolve") { - // next check if css('width') can resolve a width that is percent based, this is sometimes possible - // when attached to input type=hidden or elements hidden via css - style = this.opts.element.css('width'); - if (style.indexOf("%") > 0) return style; - - // finally, fallback on the calculated width of the element - return (this.opts.element.outerWidth(false) === 0 ? 'auto' : this.opts.element.outerWidth(false) + 'px'); - } - - return null; - } else if ($.isFunction(this.opts.width)) { - return this.opts.width(); - } else { - return this.opts.width; - } - }; - - var width = resolveContainerWidth.call(this); - if (width !== null) { - this.container.css("width", width); - } - } - }); - - SingleSelect2 = clazz(AbstractSelect2, { - - // single - - createContainer: function () { - var container = $(document.createElement("div")).attr({ - "class": "select2-container" - }).html([ - "", - "  ", - " ", - "", - "", - "", - "
            ", - " ", - "
              ", - "
            ", - "
            "].join("")); - return container; - }, - - // single - enableInterface: function() { - if (this.parent.enableInterface.apply(this, arguments)) { - this.focusser.prop("disabled", !this.isInterfaceEnabled()); - } - }, - - // single - opening: function () { - var el, range, len; - - if (this.opts.minimumResultsForSearch >= 0) { - this.showSearch(true); - } - - this.parent.opening.apply(this, arguments); - - if (this.showSearchInput !== false) { - // IE appends focusser.val() at the end of field :/ so we manually insert it at the beginning using a range - // all other browsers handle this just fine - - this.search.val(this.focusser.val()); - } - if (this.opts.shouldFocusInput(this)) { - this.search.focus(); - // move the cursor to the end after focussing, otherwise it will be at the beginning and - // new text will appear *before* focusser.val() - el = this.search.get(0); - if (el.createTextRange) { - range = el.createTextRange(); - range.collapse(false); - range.select(); - } else if (el.setSelectionRange) { - len = this.search.val().length; - el.setSelectionRange(len, len); - } - } - - // initializes search's value with nextSearchTerm (if defined by user) - // ignore nextSearchTerm if the dropdown is opened by the user pressing a letter - if(this.search.val() === "") { - if(this.nextSearchTerm != undefined){ - this.search.val(this.nextSearchTerm); - this.search.select(); - } - } - - this.focusser.prop("disabled", true).val(""); - this.updateResults(true); - this.opts.element.trigger($.Event("select2-open")); - }, - - // single - close: function () { - if (!this.opened()) return; - this.parent.close.apply(this, arguments); - - this.focusser.prop("disabled", false); - - if (this.opts.shouldFocusInput(this)) { - this.focusser.focus(); - } - }, - - // single - focus: function () { - if (this.opened()) { - this.close(); - } else { - this.focusser.prop("disabled", false); - if (this.opts.shouldFocusInput(this)) { - this.focusser.focus(); - } - } - }, - - // single - isFocused: function () { - return this.container.hasClass("select2-container-active"); - }, - - // single - cancel: function () { - this.parent.cancel.apply(this, arguments); - this.focusser.prop("disabled", false); - - if (this.opts.shouldFocusInput(this)) { - this.focusser.focus(); - } - }, - - // single - destroy: function() { - $("label[for='" + this.focusser.attr('id') + "']") - .attr('for', this.opts.element.attr("id")); - this.parent.destroy.apply(this, arguments); - - cleanupJQueryElements.call(this, - "selection", - "focusser" - ); - }, - - // single - initContainer: function () { - - var selection, - container = this.container, - dropdown = this.dropdown, - idSuffix = nextUid(), - elementLabel; - - if (this.opts.minimumResultsForSearch < 0) { - this.showSearch(false); - } else { - this.showSearch(true); - } - - this.selection = selection = container.find(".select2-choice"); - - this.focusser = container.find(".select2-focusser"); - - // add aria associations - selection.find(".select2-chosen").attr("id", "select2-chosen-"+idSuffix); - this.focusser.attr("aria-labelledby", "select2-chosen-"+idSuffix); - this.results.attr("id", "select2-results-"+idSuffix); - this.search.attr("aria-owns", "select2-results-"+idSuffix); - - // rewrite labels from original element to focusser - this.focusser.attr("id", "s2id_autogen"+idSuffix); - - elementLabel = $("label[for='" + this.opts.element.attr("id") + "']"); - - this.focusser.prev() - .text(elementLabel.text()) - .attr('for', this.focusser.attr('id')); - - // Ensure the original element retains an accessible name - var originalTitle = this.opts.element.attr("title"); - this.opts.element.attr("title", (originalTitle || elementLabel.text())); - - this.focusser.attr("tabindex", this.elementTabIndex); - - // write label for search field using the label from the focusser element - this.search.attr("id", this.focusser.attr('id') + '_search'); - - this.search.prev() - .text($("label[for='" + this.focusser.attr('id') + "']").text()) - .attr('for', this.search.attr('id')); - - this.search.on("keydown", this.bind(function (e) { - if (!this.isInterfaceEnabled()) return; - - // filter 229 keyCodes (input method editor is processing key input) - if (229 == e.keyCode) return; - - if (e.which === KEY.PAGE_UP || e.which === KEY.PAGE_DOWN) { - // prevent the page from scrolling - killEvent(e); - return; - } - - switch (e.which) { - case KEY.UP: - case KEY.DOWN: - this.moveHighlight((e.which === KEY.UP) ? -1 : 1); - killEvent(e); - return; - case KEY.ENTER: - this.selectHighlighted(); - killEvent(e); - return; - case KEY.TAB: - this.selectHighlighted({noFocus: true}); - return; - case KEY.ESC: - this.cancel(e); - killEvent(e); - return; - } - })); - - this.search.on("blur", this.bind(function(e) { - // a workaround for chrome to keep the search field focussed when the scroll bar is used to scroll the dropdown. - // without this the search field loses focus which is annoying - if (document.activeElement === this.body.get(0)) { - window.setTimeout(this.bind(function() { - if (this.opened()) { - this.search.focus(); - } - }), 0); - } - })); - - this.focusser.on("keydown", this.bind(function (e) { - if (!this.isInterfaceEnabled()) return; - - if (e.which === KEY.TAB || KEY.isControl(e) || KEY.isFunctionKey(e) || e.which === KEY.ESC) { - return; - } - - if (this.opts.openOnEnter === false && e.which === KEY.ENTER) { - killEvent(e); - return; - } - - if (e.which == KEY.DOWN || e.which == KEY.UP - || (e.which == KEY.ENTER && this.opts.openOnEnter)) { - - if (e.altKey || e.ctrlKey || e.shiftKey || e.metaKey) return; - - this.open(); - killEvent(e); - return; - } - - if (e.which == KEY.DELETE || e.which == KEY.BACKSPACE) { - if (this.opts.allowClear) { - this.clear(); - } - killEvent(e); - return; - } - })); - - - installKeyUpChangeEvent(this.focusser); - this.focusser.on("keyup-change input", this.bind(function(e) { - if (this.opts.minimumResultsForSearch >= 0) { - e.stopPropagation(); - if (this.opened()) return; - this.open(); - } - })); - - selection.on("mousedown touchstart", "abbr", this.bind(function (e) { - if (!this.isInterfaceEnabled()) return; - this.clear(); - killEventImmediately(e); - this.close(); - this.selection.focus(); - })); - - selection.on("mousedown touchstart", this.bind(function (e) { - // Prevent IE from generating a click event on the body - reinsertElement(selection); - - if (!this.container.hasClass("select2-container-active")) { - this.opts.element.trigger($.Event("select2-focus")); - } - - if (this.opened()) { - this.close(); - } else if (this.isInterfaceEnabled()) { - this.open(); - } - - killEvent(e); - })); - - dropdown.on("mousedown touchstart", this.bind(function() { - if (this.opts.shouldFocusInput(this)) { - this.search.focus(); - } - })); - - selection.on("focus", this.bind(function(e) { - killEvent(e); - })); - - this.focusser.on("focus", this.bind(function(){ - if (!this.container.hasClass("select2-container-active")) { - this.opts.element.trigger($.Event("select2-focus")); - } - this.container.addClass("select2-container-active"); - })).on("blur", this.bind(function() { - if (!this.opened()) { - this.container.removeClass("select2-container-active"); - this.opts.element.trigger($.Event("select2-blur")); - } - })); - this.search.on("focus", this.bind(function(){ - if (!this.container.hasClass("select2-container-active")) { - this.opts.element.trigger($.Event("select2-focus")); - } - this.container.addClass("select2-container-active"); - })); - - this.initContainerWidth(); - this.opts.element.addClass("select2-offscreen"); - this.setPlaceholder(); - - }, - - // single - clear: function(triggerChange) { - var data=this.selection.data("select2-data"); - if (data) { // guard against queued quick consecutive clicks - var evt = $.Event("select2-clearing"); - this.opts.element.trigger(evt); - if (evt.isDefaultPrevented()) { - return; - } - var placeholderOption = this.getPlaceholderOption(); - this.opts.element.val(placeholderOption ? placeholderOption.val() : ""); - this.selection.find(".select2-chosen").empty(); - this.selection.removeData("select2-data"); - this.setPlaceholder(); - - if (triggerChange !== false){ - this.opts.element.trigger({ type: "select2-removed", val: this.id(data), choice: data }); - this.triggerChange({removed:data}); - } - } - }, - - /** - * Sets selection based on source element's value - */ - // single - initSelection: function () { - var selected; - if (this.isPlaceholderOptionSelected()) { - this.updateSelection(null); - this.close(); - this.setPlaceholder(); - } else { - var self = this; - this.opts.initSelection.call(null, this.opts.element, function(selected){ - if (selected !== undefined && selected !== null) { - self.updateSelection(selected); - self.close(); - self.setPlaceholder(); - self.nextSearchTerm = self.opts.nextSearchTerm(selected, self.search.val()); - } - }); - } - }, - - isPlaceholderOptionSelected: function() { - var placeholderOption; - if (this.getPlaceholder() === undefined) return false; // no placeholder specified so no option should be considered - return ((placeholderOption = this.getPlaceholderOption()) !== undefined && placeholderOption.prop("selected")) - || (this.opts.element.val() === "") - || (this.opts.element.val() === undefined) - || (this.opts.element.val() === null); - }, - - // single - prepareOpts: function () { - var opts = this.parent.prepareOpts.apply(this, arguments), - self=this; - - if (opts.element.get(0).tagName.toLowerCase() === "select") { - // install the selection initializer - opts.initSelection = function (element, callback) { - var selected = element.find("option").filter(function() { return this.selected && !this.disabled }); - // a single select box always has a value, no need to null check 'selected' - callback(self.optionToData(selected)); - }; - } else if ("data" in opts) { - // install default initSelection when applied to hidden input and data is local - opts.initSelection = opts.initSelection || function (element, callback) { - var id = element.val(); - //search in data by id, storing the actual matching item - var match = null; - opts.query({ - matcher: function(term, text, el){ - var is_match = equal(id, opts.id(el)); - if (is_match) { - match = el; - } - return is_match; - }, - callback: !$.isFunction(callback) ? $.noop : function() { - callback(match); - } - }); - }; - } - - return opts; - }, - - // single - getPlaceholder: function() { - // if a placeholder is specified on a single select without a valid placeholder option ignore it - if (this.select) { - if (this.getPlaceholderOption() === undefined) { - return undefined; - } - } - - return this.parent.getPlaceholder.apply(this, arguments); - }, - - // single - setPlaceholder: function () { - var placeholder = this.getPlaceholder(); - - if (this.isPlaceholderOptionSelected() && placeholder !== undefined) { - - // check for a placeholder option if attached to a select - if (this.select && this.getPlaceholderOption() === undefined) return; - - this.selection.find(".select2-chosen").html(this.opts.escapeMarkup(placeholder)); - - this.selection.addClass("select2-default"); - - this.container.removeClass("select2-allowclear"); - } - }, - - // single - postprocessResults: function (data, initial, noHighlightUpdate) { - var selected = 0, self = this, showSearchInput = true; - - // find the selected element in the result list - - this.findHighlightableChoices().each2(function (i, elm) { - if (equal(self.id(elm.data("select2-data")), self.opts.element.val())) { - selected = i; - return false; - } - }); - - // and highlight it - if (noHighlightUpdate !== false) { - if (initial === true && selected >= 0) { - this.highlight(selected); - } else { - this.highlight(0); - } - } - - // hide the search box if this is the first we got the results and there are enough of them for search - - if (initial === true) { - var min = this.opts.minimumResultsForSearch; - if (min >= 0) { - this.showSearch(countResults(data.results) >= min); - } - } - }, - - // single - showSearch: function(showSearchInput) { - if (this.showSearchInput === showSearchInput) return; - - this.showSearchInput = showSearchInput; - - this.dropdown.find(".select2-search").toggleClass("select2-search-hidden", !showSearchInput); - this.dropdown.find(".select2-search").toggleClass("select2-offscreen", !showSearchInput); - //add "select2-with-searchbox" to the container if search box is shown - $(this.dropdown, this.container).toggleClass("select2-with-searchbox", showSearchInput); - }, - - // single - onSelect: function (data, options) { - - if (!this.triggerSelect(data)) { return; } - - var old = this.opts.element.val(), - oldData = this.data(); - - this.opts.element.val(this.id(data)); - this.updateSelection(data); - - this.opts.element.trigger({ type: "select2-selected", val: this.id(data), choice: data }); - - this.nextSearchTerm = this.opts.nextSearchTerm(data, this.search.val()); - this.close(); - - if ((!options || !options.noFocus) && this.opts.shouldFocusInput(this)) { - this.focusser.focus(); - } - - if (!equal(old, this.id(data))) { - this.triggerChange({ added: data, removed: oldData }); - } - }, - - // single - updateSelection: function (data) { - - var container=this.selection.find(".select2-chosen"), formatted, cssClass; - - this.selection.data("select2-data", data); - - container.empty(); - if (data !== null) { - formatted=this.opts.formatSelection(data, container, this.opts.escapeMarkup); - } - if (formatted !== undefined) { - container.append(formatted); - } - cssClass=this.opts.formatSelectionCssClass(data, container); - if (cssClass !== undefined) { - container.addClass(cssClass); - } - - this.selection.removeClass("select2-default"); - - if (this.opts.allowClear && this.getPlaceholder() !== undefined) { - this.container.addClass("select2-allowclear"); - } - }, - - // single - val: function () { - var val, - triggerChange = false, - data = null, - self = this, - oldData = this.data(); - - if (arguments.length === 0) { - return this.opts.element.val(); - } - - val = arguments[0]; - - if (arguments.length > 1) { - triggerChange = arguments[1]; - } - - if (this.select) { - this.select - .val(val) - .find("option").filter(function() { return this.selected }).each2(function (i, elm) { - data = self.optionToData(elm); - return false; - }); - this.updateSelection(data); - this.setPlaceholder(); - if (triggerChange) { - this.triggerChange({added: data, removed:oldData}); - } - } else { - // val is an id. !val is true for [undefined,null,'',0] - 0 is legal - if (!val && val !== 0) { - this.clear(triggerChange); - return; - } - if (this.opts.initSelection === undefined) { - throw new Error("cannot call val() if initSelection() is not defined"); - } - this.opts.element.val(val); - this.opts.initSelection(this.opts.element, function(data){ - self.opts.element.val(!data ? "" : self.id(data)); - self.updateSelection(data); - self.setPlaceholder(); - if (triggerChange) { - self.triggerChange({added: data, removed:oldData}); - } - }); - } - }, - - // single - clearSearch: function () { - this.search.val(""); - this.focusser.val(""); - }, - - // single - data: function(value) { - var data, - triggerChange = false; - - if (arguments.length === 0) { - data = this.selection.data("select2-data"); - if (data == undefined) data = null; - return data; - } else { - if (arguments.length > 1) { - triggerChange = arguments[1]; - } - if (!value) { - this.clear(triggerChange); - } else { - data = this.data(); - this.opts.element.val(!value ? "" : this.id(value)); - this.updateSelection(value); - if (triggerChange) { - this.triggerChange({added: value, removed:data}); - } - } - } - } - }); - - MultiSelect2 = clazz(AbstractSelect2, { - - // multi - createContainer: function () { - var container = $(document.createElement("div")).attr({ - "class": "select2-container select2-container-multi" - }).html([ - "
              ", - "
            • ", - " ", - " ", - "
            • ", - "
            ", - "
            ", - "
              ", - "
            ", - "
            "].join("")); - return container; - }, - - // multi - prepareOpts: function () { - var opts = this.parent.prepareOpts.apply(this, arguments), - self=this; - - // TODO validate placeholder is a string if specified - - if (opts.element.get(0).tagName.toLowerCase() === "select") { - // install the selection initializer - opts.initSelection = function (element, callback) { - - var data = []; - - element.find("option").filter(function() { return this.selected && !this.disabled }).each2(function (i, elm) { - data.push(self.optionToData(elm)); - }); - callback(data); - }; - } else if ("data" in opts) { - // install default initSelection when applied to hidden input and data is local - opts.initSelection = opts.initSelection || function (element, callback) { - var ids = splitVal(element.val(), opts.separator); - //search in data by array of ids, storing matching items in a list - var matches = []; - opts.query({ - matcher: function(term, text, el){ - var is_match = $.grep(ids, function(id) { - return equal(id, opts.id(el)); - }).length; - if (is_match) { - matches.push(el); - } - return is_match; - }, - callback: !$.isFunction(callback) ? $.noop : function() { - // reorder matches based on the order they appear in the ids array because right now - // they are in the order in which they appear in data array - var ordered = []; - for (var i = 0; i < ids.length; i++) { - var id = ids[i]; - for (var j = 0; j < matches.length; j++) { - var match = matches[j]; - if (equal(id, opts.id(match))) { - ordered.push(match); - matches.splice(j, 1); - break; - } - } - } - callback(ordered); - } - }); - }; - } - - return opts; - }, - - // multi - selectChoice: function (choice) { - - var selected = this.container.find(".select2-search-choice-focus"); - if (selected.length && choice && choice[0] == selected[0]) { - - } else { - if (selected.length) { - this.opts.element.trigger("choice-deselected", selected); - } - selected.removeClass("select2-search-choice-focus"); - if (choice && choice.length) { - this.close(); - choice.addClass("select2-search-choice-focus"); - this.opts.element.trigger("choice-selected", choice); - } - } - }, - - // multi - destroy: function() { - $("label[for='" + this.search.attr('id') + "']") - .attr('for', this.opts.element.attr("id")); - this.parent.destroy.apply(this, arguments); - - cleanupJQueryElements.call(this, - "searchContainer", - "selection" - ); - }, - - // multi - initContainer: function () { - - var selector = ".select2-choices", selection; - - this.searchContainer = this.container.find(".select2-search-field"); - this.selection = selection = this.container.find(selector); - - var _this = this; - this.selection.on("click", ".select2-search-choice:not(.select2-locked)", function (e) { - //killEvent(e); - _this.search[0].focus(); - _this.selectChoice($(this)); - }); - - // rewrite labels from original element to focusser - this.search.attr("id", "s2id_autogen"+nextUid()); - - this.search.prev() - .text($("label[for='" + this.opts.element.attr("id") + "']").text()) - .attr('for', this.search.attr('id')); - - this.search.on("input paste", this.bind(function() { - if (this.search.attr('placeholder') && this.search.val().length == 0) return; - if (!this.isInterfaceEnabled()) return; - if (!this.opened()) { - this.open(); - } - })); - - this.search.attr("tabindex", this.elementTabIndex); - - this.keydowns = 0; - this.search.on("keydown", this.bind(function (e) { - if (!this.isInterfaceEnabled()) return; - - ++this.keydowns; - var selected = selection.find(".select2-search-choice-focus"); - var prev = selected.prev(".select2-search-choice:not(.select2-locked)"); - var next = selected.next(".select2-search-choice:not(.select2-locked)"); - var pos = getCursorInfo(this.search); - - if (selected.length && - (e.which == KEY.LEFT || e.which == KEY.RIGHT || e.which == KEY.BACKSPACE || e.which == KEY.DELETE || e.which == KEY.ENTER)) { - var selectedChoice = selected; - if (e.which == KEY.LEFT && prev.length) { - selectedChoice = prev; - } - else if (e.which == KEY.RIGHT) { - selectedChoice = next.length ? next : null; - } - else if (e.which === KEY.BACKSPACE) { - if (this.unselect(selected.first())) { - this.search.width(10); - selectedChoice = prev.length ? prev : next; - } - } else if (e.which == KEY.DELETE) { - if (this.unselect(selected.first())) { - this.search.width(10); - selectedChoice = next.length ? next : null; - } - } else if (e.which == KEY.ENTER) { - selectedChoice = null; - } - - this.selectChoice(selectedChoice); - killEvent(e); - if (!selectedChoice || !selectedChoice.length) { - this.open(); - } - return; - } else if (((e.which === KEY.BACKSPACE && this.keydowns == 1) - || e.which == KEY.LEFT) && (pos.offset == 0 && !pos.length)) { - - this.selectChoice(selection.find(".select2-search-choice:not(.select2-locked)").last()); - killEvent(e); - return; - } else { - this.selectChoice(null); - } - - if (this.opened()) { - switch (e.which) { - case KEY.UP: - case KEY.DOWN: - this.moveHighlight((e.which === KEY.UP) ? -1 : 1); - killEvent(e); - return; - case KEY.ENTER: - this.selectHighlighted(); - killEvent(e); - return; - case KEY.TAB: - this.selectHighlighted({noFocus:true}); - this.close(); - return; - case KEY.ESC: - this.cancel(e); - killEvent(e); - return; - } - } - - if (e.which === KEY.TAB || KEY.isControl(e) || KEY.isFunctionKey(e) - || e.which === KEY.BACKSPACE || e.which === KEY.ESC) { - return; - } - - if (e.which === KEY.ENTER) { - if (this.opts.openOnEnter === false) { - return; - } else if (e.altKey || e.ctrlKey || e.shiftKey || e.metaKey) { - return; - } - } - - this.open(); - - if (e.which === KEY.PAGE_UP || e.which === KEY.PAGE_DOWN) { - // prevent the page from scrolling - killEvent(e); - } - - if (e.which === KEY.ENTER) { - // prevent form from being submitted - killEvent(e); - } - - })); - - this.search.on("keyup", this.bind(function (e) { - this.keydowns = 0; - this.resizeSearch(); - }) - ); - - this.search.on("blur", this.bind(function(e) { - this.container.removeClass("select2-container-active"); - this.search.removeClass("select2-focused"); - this.selectChoice(null); - if (!this.opened()) this.clearSearch(); - e.stopImmediatePropagation(); - this.opts.element.trigger($.Event("select2-blur")); - })); - - this.container.on("click", selector, this.bind(function (e) { - if (!this.isInterfaceEnabled()) return; - if ($(e.target).closest(".select2-search-choice").length > 0) { - // clicked inside a select2 search choice, do not open - return; - } - this.selectChoice(null); - this.clearPlaceholder(); - if (!this.container.hasClass("select2-container-active")) { - this.opts.element.trigger($.Event("select2-focus")); - } - this.open(); - this.focusSearch(); - e.preventDefault(); - })); - - this.container.on("focus", selector, this.bind(function () { - if (!this.isInterfaceEnabled()) return; - if (!this.container.hasClass("select2-container-active")) { - this.opts.element.trigger($.Event("select2-focus")); - } - this.container.addClass("select2-container-active"); - this.dropdown.addClass("select2-drop-active"); - this.clearPlaceholder(); - })); - - this.initContainerWidth(); - this.opts.element.addClass("select2-offscreen"); - - // set the placeholder if necessary - this.clearSearch(); - }, - - // multi - enableInterface: function() { - if (this.parent.enableInterface.apply(this, arguments)) { - this.search.prop("disabled", !this.isInterfaceEnabled()); - } - }, - - // multi - initSelection: function () { - var data; - if (this.opts.element.val() === "" && this.opts.element.text() === "") { - this.updateSelection([]); - this.close(); - // set the placeholder if necessary - this.clearSearch(); - } - if (this.select || this.opts.element.val() !== "") { - var self = this; - this.opts.initSelection.call(null, this.opts.element, function(data){ - if (data !== undefined && data !== null) { - self.updateSelection(data); - self.close(); - // set the placeholder if necessary - self.clearSearch(); - } - }); - } - }, - - // multi - clearSearch: function () { - var placeholder = this.getPlaceholder(), - maxWidth = this.getMaxSearchWidth(); - - if (placeholder !== undefined && this.getVal().length === 0 && this.search.hasClass("select2-focused") === false) { - this.search.val(placeholder).addClass("select2-default"); - // stretch the search box to full width of the container so as much of the placeholder is visible as possible - // we could call this.resizeSearch(), but we do not because that requires a sizer and we do not want to create one so early because of a firefox bug, see #944 - this.search.width(maxWidth > 0 ? maxWidth : this.container.css("width")); - } else { - this.search.val("").width(10); - } - }, - - // multi - clearPlaceholder: function () { - if (this.search.hasClass("select2-default")) { - this.search.val("").removeClass("select2-default"); - } - }, - - // multi - opening: function () { - this.clearPlaceholder(); // should be done before super so placeholder is not used to search - this.resizeSearch(); - - this.parent.opening.apply(this, arguments); - - this.focusSearch(); - - // initializes search's value with nextSearchTerm (if defined by user) - // ignore nextSearchTerm if the dropdown is opened by the user pressing a letter - if(this.search.val() === "") { - if(this.nextSearchTerm != undefined){ - this.search.val(this.nextSearchTerm); - this.search.select(); - } - } - - this.updateResults(true); - if (this.opts.shouldFocusInput(this)) { - this.search.focus(); - } - this.opts.element.trigger($.Event("select2-open")); - }, - - // multi - close: function () { - if (!this.opened()) return; - this.parent.close.apply(this, arguments); - }, - - // multi - focus: function () { - this.close(); - this.search.focus(); - }, - - // multi - isFocused: function () { - return this.search.hasClass("select2-focused"); - }, - - // multi - updateSelection: function (data) { - var ids = [], filtered = [], self = this; - - // filter out duplicates - $(data).each(function () { - if (indexOf(self.id(this), ids) < 0) { - ids.push(self.id(this)); - filtered.push(this); - } - }); - data = filtered; - - this.selection.find(".select2-search-choice").remove(); - $(data).each(function () { - self.addSelectedChoice(this); - }); - self.postprocessResults(); - }, - - // multi - tokenize: function() { - var input = this.search.val(); - input = this.opts.tokenizer.call(this, input, this.data(), this.bind(this.onSelect), this.opts); - if (input != null && input != undefined) { - this.search.val(input); - if (input.length > 0) { - this.open(); - } - } - - }, - - // multi - onSelect: function (data, options) { - - if (!this.triggerSelect(data) || data.text === "") { return; } - - this.addSelectedChoice(data); - - this.opts.element.trigger({ type: "selected", val: this.id(data), choice: data }); - - // keep track of the search's value before it gets cleared - this.nextSearchTerm = this.opts.nextSearchTerm(data, this.search.val()); - - this.clearSearch(); - this.updateResults(); - - if (this.select || !this.opts.closeOnSelect) this.postprocessResults(data, false, this.opts.closeOnSelect===true); - - if (this.opts.closeOnSelect) { - this.close(); - this.search.width(10); - } else { - if (this.countSelectableResults()>0) { - this.search.width(10); - this.resizeSearch(); - if (this.getMaximumSelectionSize() > 0 && this.val().length >= this.getMaximumSelectionSize()) { - // if we reached max selection size repaint the results so choices - // are replaced with the max selection reached message - this.updateResults(true); - } else { - // initializes search's value with nextSearchTerm and update search result - if(this.nextSearchTerm != undefined){ - this.search.val(this.nextSearchTerm); - this.updateResults(); - this.search.select(); - } - } - this.positionDropdown(); - } else { - // if nothing left to select close - this.close(); - this.search.width(10); - } - } - - // since its not possible to select an element that has already been - // added we do not need to check if this is a new element before firing change - this.triggerChange({ added: data }); - - if (!options || !options.noFocus) - this.focusSearch(); - }, - - // multi - cancel: function () { - this.close(); - this.focusSearch(); - }, - - addSelectedChoice: function (data) { - var enableChoice = !data.locked, - enabledItem = $( - "
          • " + - "
            " + - " " + - "
          • "), - disabledItem = $( - "
          • " + - "
            " + - "
          • "); - var choice = enableChoice ? enabledItem : disabledItem, - id = this.id(data), - val = this.getVal(), - formatted, - cssClass; - - formatted=this.opts.formatSelection(data, choice.find("div"), this.opts.escapeMarkup); - if (formatted != undefined) { - choice.find("div").replaceWith("
            "+formatted+"
            "); - } - cssClass=this.opts.formatSelectionCssClass(data, choice.find("div")); - if (cssClass != undefined) { - choice.addClass(cssClass); - } - - if(enableChoice){ - choice.find(".select2-search-choice-close") - .on("mousedown", killEvent) - .on("click dblclick", this.bind(function (e) { - if (!this.isInterfaceEnabled()) return; - - this.unselect($(e.target)); - this.selection.find(".select2-search-choice-focus").removeClass("select2-search-choice-focus"); - killEvent(e); - this.close(); - this.focusSearch(); - })).on("focus", this.bind(function () { - if (!this.isInterfaceEnabled()) return; - this.container.addClass("select2-container-active"); - this.dropdown.addClass("select2-drop-active"); - })); - } - - choice.data("select2-data", data); - choice.insertBefore(this.searchContainer); - - val.push(id); - this.setVal(val); - }, - - // multi - unselect: function (selected) { - var val = this.getVal(), - data, - index; - selected = selected.closest(".select2-search-choice"); - - if (selected.length === 0) { - throw "Invalid argument: " + selected + ". Must be .select2-search-choice"; - } - - data = selected.data("select2-data"); - - if (!data) { - // prevent a race condition when the 'x' is clicked really fast repeatedly the event can be queued - // and invoked on an element already removed - return; - } - - var evt = $.Event("select2-removing"); - evt.val = this.id(data); - evt.choice = data; - this.opts.element.trigger(evt); - - if (evt.isDefaultPrevented()) { - return false; - } - - while((index = indexOf(this.id(data), val)) >= 0) { - val.splice(index, 1); - this.setVal(val); - if (this.select) this.postprocessResults(); - } - - selected.remove(); - - this.opts.element.trigger({ type: "select2-removed", val: this.id(data), choice: data }); - this.triggerChange({ removed: data }); - - return true; - }, - - // multi - postprocessResults: function (data, initial, noHighlightUpdate) { - var val = this.getVal(), - choices = this.results.find(".select2-result"), - compound = this.results.find(".select2-result-with-children"), - self = this; - - choices.each2(function (i, choice) { - var id = self.id(choice.data("select2-data")); - if (indexOf(id, val) >= 0) { - choice.addClass("select2-selected"); - // mark all children of the selected parent as selected - choice.find(".select2-result-selectable").addClass("select2-selected"); - } - }); - - compound.each2(function(i, choice) { - // hide an optgroup if it doesn't have any selectable children - if (!choice.is('.select2-result-selectable') - && choice.find(".select2-result-selectable:not(.select2-selected)").length === 0) { - choice.addClass("select2-selected"); - } - }); - - if (this.highlight() == -1 && noHighlightUpdate !== false){ - self.highlight(0); - } - - //If all results are chosen render formatNoMatches - if(!this.opts.createSearchChoice && !choices.filter('.select2-result:not(.select2-selected)').length > 0){ - if(!data || data && !data.more && this.results.find(".select2-no-results").length === 0) { - if (checkFormatter(self.opts.formatNoMatches, "formatNoMatches")) { - this.results.append("
          • " + evaluate(self.opts.formatNoMatches, self.opts.element, self.search.val()) + "
          • "); - } - } - } - - }, - - // multi - getMaxSearchWidth: function() { - return this.selection.width() - getSideBorderPadding(this.search); - }, - - // multi - resizeSearch: function () { - var minimumWidth, left, maxWidth, containerLeft, searchWidth, - sideBorderPadding = getSideBorderPadding(this.search); - - minimumWidth = measureTextWidth(this.search) + 10; - - left = this.search.offset().left; - - maxWidth = this.selection.width(); - containerLeft = this.selection.offset().left; - - searchWidth = maxWidth - (left - containerLeft) - sideBorderPadding; - - if (searchWidth < minimumWidth) { - searchWidth = maxWidth - sideBorderPadding; - } - - if (searchWidth < 40) { - searchWidth = maxWidth - sideBorderPadding; - } - - if (searchWidth <= 0) { - searchWidth = minimumWidth; - } - - this.search.width(Math.floor(searchWidth)); - }, - - // multi - getVal: function () { - var val; - if (this.select) { - val = this.select.val(); - return val === null ? [] : val; - } else { - val = this.opts.element.val(); - return splitVal(val, this.opts.separator); - } - }, - - // multi - setVal: function (val) { - var unique; - if (this.select) { - this.select.val(val); - } else { - unique = []; - // filter out duplicates - $(val).each(function () { - if (indexOf(this, unique) < 0) unique.push(this); - }); - this.opts.element.val(unique.length === 0 ? "" : unique.join(this.opts.separator)); - } - }, - - // multi - buildChangeDetails: function (old, current) { - var current = current.slice(0), - old = old.slice(0); - - // remove intersection from each array - for (var i = 0; i < current.length; i++) { - for (var j = 0; j < old.length; j++) { - if (equal(this.opts.id(current[i]), this.opts.id(old[j]))) { - current.splice(i, 1); - if(i>0){ - i--; - } - old.splice(j, 1); - j--; - } - } - } - - return {added: current, removed: old}; - }, - - - // multi - val: function (val, triggerChange) { - var oldData, self=this; - - if (arguments.length === 0) { - return this.getVal(); - } - - oldData=this.data(); - if (!oldData.length) oldData=[]; - - // val is an id. !val is true for [undefined,null,'',0] - 0 is legal - if (!val && val !== 0) { - this.opts.element.val(""); - this.updateSelection([]); - this.clearSearch(); - if (triggerChange) { - this.triggerChange({added: this.data(), removed: oldData}); - } - return; - } - - // val is a list of ids - this.setVal(val); - - if (this.select) { - this.opts.initSelection(this.select, this.bind(this.updateSelection)); - if (triggerChange) { - this.triggerChange(this.buildChangeDetails(oldData, this.data())); - } - } else { - if (this.opts.initSelection === undefined) { - throw new Error("val() cannot be called if initSelection() is not defined"); - } - - this.opts.initSelection(this.opts.element, function(data){ - var ids=$.map(data, self.id); - self.setVal(ids); - self.updateSelection(data); - self.clearSearch(); - if (triggerChange) { - self.triggerChange(self.buildChangeDetails(oldData, self.data())); - } - }); - } - this.clearSearch(); - }, - - // multi - onSortStart: function() { - if (this.select) { - throw new Error("Sorting of elements is not supported when attached to instead."); - } - - // collapse search field into 0 width so its container can be collapsed as well - this.search.width(0); - // hide the container - this.searchContainer.hide(); - }, - - // multi - onSortEnd:function() { - - var val=[], self=this; - - // show search and move it to the end of the list - this.searchContainer.show(); - // make sure the search container is the last item in the list - this.searchContainer.appendTo(this.searchContainer.parent()); - // since we collapsed the width in dragStarted, we resize it here - this.resizeSearch(); - - // update selection - this.selection.find(".select2-search-choice").each(function() { - val.push(self.opts.id($(this).data("select2-data"))); - }); - this.setVal(val); - this.triggerChange(); - }, - - // multi - data: function(values, triggerChange) { - var self=this, ids, old; - if (arguments.length === 0) { - return this.selection - .children(".select2-search-choice") - .map(function() { return $(this).data("select2-data"); }) - .get(); - } else { - old = this.data(); - if (!values) { values = []; } - ids = $.map(values, function(e) { return self.opts.id(e); }); - this.setVal(ids); - this.updateSelection(values); - this.clearSearch(); - if (triggerChange) { - this.triggerChange(this.buildChangeDetails(old, this.data())); - } - } - } - }); - - $.fn.select2 = function () { - - var args = Array.prototype.slice.call(arguments, 0), - opts, - select2, - method, value, multiple, - allowedMethods = ["val", "destroy", "opened", "open", "close", "focus", "isFocused", "container", "dropdown", "onSortStart", "onSortEnd", "enable", "disable", "readonly", "positionDropdown", "data", "search"], - valueMethods = ["opened", "isFocused", "container", "dropdown"], - propertyMethods = ["val", "data"], - methodsMap = { search: "externalSearch" }; - - this.each(function () { - if (args.length === 0 || typeof(args[0]) === "object") { - opts = args.length === 0 ? {} : $.extend({}, args[0]); - opts.element = $(this); - - if (opts.element.get(0).tagName.toLowerCase() === "select") { - multiple = opts.element.prop("multiple"); - } else { - multiple = opts.multiple || false; - if ("tags" in opts) {opts.multiple = multiple = true;} - } - - select2 = multiple ? new window.Select2["class"].multi() : new window.Select2["class"].single(); - select2.init(opts); - } else if (typeof(args[0]) === "string") { - - if (indexOf(args[0], allowedMethods) < 0) { - throw "Unknown method: " + args[0]; - } - - value = undefined; - select2 = $(this).data("select2"); - if (select2 === undefined) return; - - method=args[0]; - - if (method === "container") { - value = select2.container; - } else if (method === "dropdown") { - value = select2.dropdown; - } else { - if (methodsMap[method]) method = methodsMap[method]; - - value = select2[method].apply(select2, args.slice(1)); - } - if (indexOf(args[0], valueMethods) >= 0 - || (indexOf(args[0], propertyMethods) >= 0 && args.length == 1)) { - return false; // abort the iteration, ready to return first matched value - } - } else { - throw "Invalid arguments to select2 plugin: " + args; - } - }); - return (value === undefined) ? this : value; - }; - - // plugin defaults, accessible to users - $.fn.select2.defaults = { - width: "copy", - loadMorePadding: 0, - closeOnSelect: true, - openOnEnter: true, - containerCss: {}, - dropdownCss: {}, - containerCssClass: "", - dropdownCssClass: "", - formatResult: function(result, container, query, escapeMarkup) { - var markup=[]; - markMatch(result.text, query.term, markup, escapeMarkup); - return markup.join(""); - }, - formatSelection: function (data, container, escapeMarkup) { - return data ? escapeMarkup(data.text) : undefined; - }, - sortResults: function (results, container, query) { - return results; - }, - formatResultCssClass: function(data) {return data.css;}, - formatSelectionCssClass: function(data, container) {return undefined;}, - minimumResultsForSearch: 0, - minimumInputLength: 0, - maximumInputLength: null, - maximumSelectionSize: 0, - id: function (e) { return e == undefined ? null : e.id; }, - matcher: function(term, text) { - return stripDiacritics(''+text).toUpperCase().indexOf(stripDiacritics(''+term).toUpperCase()) >= 0; - }, - separator: ",", - tokenSeparators: [], - tokenizer: defaultTokenizer, - escapeMarkup: defaultEscapeMarkup, - blurOnChange: false, - selectOnBlur: false, - adaptContainerCssClass: function(c) { return c; }, - adaptDropdownCssClass: function(c) { return null; }, - nextSearchTerm: function(selectedObject, currentSearchTerm) { return undefined; }, - searchInputPlaceholder: '', - createSearchChoicePosition: 'top', - shouldFocusInput: function (instance) { - // Attempt to detect touch devices - var supportsTouchEvents = (('ontouchstart' in window) || - (navigator.msMaxTouchPoints > 0)); - - // Only devices which support touch events should be special cased - if (!supportsTouchEvents) { - return true; - } - - // Never focus the input if search is disabled - if (instance.opts.minimumResultsForSearch < 0) { - return false; - } - - return true; - } - }; - - $.fn.select2.locales = []; - - $.fn.select2.locales['en'] = { - formatMatches: function (matches) { if (matches === 1) { return "One result is available, press enter to select it."; } return matches + " results are available, use up and down arrow keys to navigate."; }, - formatNoMatches: function () { return "No matches found"; }, - formatAjaxError: function (jqXHR, textStatus, errorThrown) { return "Loading failed"; }, - formatInputTooShort: function (input, min) { var n = min - input.length; return "Please enter " + n + " or more character" + (n == 1 ? "" : "s"); }, - formatInputTooLong: function (input, max) { var n = input.length - max; return "Please delete " + n + " character" + (n == 1 ? "" : "s"); }, - formatSelectionTooBig: function (limit) { return "You can only select " + limit + " item" + (limit == 1 ? "" : "s"); }, - formatLoadMore: function (pageNumber) { return "Loading more results…"; }, - formatSearching: function () { return "Searching…"; }, - }; - - $.extend($.fn.select2.defaults, $.fn.select2.locales['en']); - - $.fn.select2.ajaxDefaults = { - transport: $.ajax, - params: { - type: "GET", - cache: false, - dataType: "json" - } - }; - - // exports - window.Select2 = { - query: { - ajax: ajax, - local: local, - tags: tags - }, util: { - debounce: debounce, - markMatch: markMatch, - escapeMarkup: defaultEscapeMarkup, - stripDiacritics: stripDiacritics - }, "class": { - "abstract": AbstractSelect2, - "single": SingleSelect2, - "multi": MultiSelect2 - } - }; - -}(jQuery)); diff --git a/awx/ui/client/lib/select2/select2.min.js b/awx/ui/client/lib/select2/select2.min.js deleted file mode 100644 index 1d3ee49f34..0000000000 --- a/awx/ui/client/lib/select2/select2.min.js +++ /dev/null @@ -1,23 +0,0 @@ -/* -Copyright 2014 Igor Vaynberg - -Version: 3.5.1 Timestamp: Tue Jul 22 18:58:56 EDT 2014 - -This software is licensed under the Apache License, Version 2.0 (the "Apache License") or the GNU -General Public License version 2 (the "GPL License"). You may choose either license to govern your -use of this software only upon the condition that you accept all of the terms of either the Apache -License or the GPL License. - -You may obtain a copy of the Apache License and the GPL License at: - -http://www.apache.org/licenses/LICENSE-2.0 -http://www.gnu.org/licenses/gpl-2.0.html - -Unless required by applicable law or agreed to in writing, software distributed under the Apache License -or the GPL Licesnse is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, -either express or implied. See the Apache License and the GPL License for the specific language governing -permissions and limitations under the Apache License and the GPL License. -*/ -!function(a){"undefined"==typeof a.fn.each2&&a.extend(a.fn,{each2:function(b){for(var c=a([0]),d=-1,e=this.length;++dc;c+=1)if(r(a,b[c]))return c;return-1}function q(){var b=a(l);b.appendTo("body");var c={width:b.width()-b[0].clientWidth,height:b.height()-b[0].clientHeight};return b.remove(),c}function r(a,c){return a===c?!0:a===b||c===b?!1:null===a||null===c?!1:a.constructor===String?a+""==c+"":c.constructor===String?c+""==a+"":!1}function s(b,c){var d,e,f;if(null===b||b.length<1)return[];for(d=b.split(c),e=0,f=d.length;f>e;e+=1)d[e]=a.trim(d[e]);return d}function t(a){return a.outerWidth(!1)-a.width()}function u(c){var d="keyup-change-value";c.on("keydown",function(){a.data(c,d)===b&&a.data(c,d,c.val())}),c.on("keyup",function(){var e=a.data(c,d);e!==b&&c.val()!==e&&(a.removeData(c,d),c.trigger("keyup-change"))})}function v(c){c.on("mousemove",function(c){var d=i;(d===b||d.x!==c.pageX||d.y!==c.pageY)&&a(c.target).trigger("mousemove-filtered",c)})}function w(a,c,d){d=d||b;var e;return function(){var b=arguments;window.clearTimeout(e),e=window.setTimeout(function(){c.apply(d,b)},a)}}function x(a,b){var c=w(a,function(a){b.trigger("scroll-debounced",a)});b.on("scroll",function(a){p(a.target,b.get())>=0&&c(a)})}function y(a){a[0]!==document.activeElement&&window.setTimeout(function(){var d,b=a[0],c=a.val().length;a.focus();var e=b.offsetWidth>0||b.offsetHeight>0;e&&b===document.activeElement&&(b.setSelectionRange?b.setSelectionRange(c,c):b.createTextRange&&(d=b.createTextRange(),d.collapse(!1),d.select()))},0)}function z(b){b=a(b)[0];var c=0,d=0;if("selectionStart"in b)c=b.selectionStart,d=b.selectionEnd-c;else if("selection"in document){b.focus();var e=document.selection.createRange();d=document.selection.createRange().text.length,e.moveStart("character",-b.value.length),c=e.text.length-d}return{offset:c,length:d}}function A(a){a.preventDefault(),a.stopPropagation()}function B(a){a.preventDefault(),a.stopImmediatePropagation()}function C(b){if(!h){var c=b[0].currentStyle||window.getComputedStyle(b[0],null);h=a(document.createElement("div")).css({position:"absolute",left:"-10000px",top:"-10000px",display:"none",fontSize:c.fontSize,fontFamily:c.fontFamily,fontStyle:c.fontStyle,fontWeight:c.fontWeight,letterSpacing:c.letterSpacing,textTransform:c.textTransform,whiteSpace:"nowrap"}),h.attr("class","select2-sizer"),a("body").append(h)}return h.text(b.val()),h.width()}function D(b,c,d){var e,g,f=[];e=a.trim(b.attr("class")),e&&(e=""+e,a(e.split(/\s+/)).each2(function(){0===this.indexOf("select2-")&&f.push(this)})),e=a.trim(c.attr("class")),e&&(e=""+e,a(e.split(/\s+/)).each2(function(){0!==this.indexOf("select2-")&&(g=d(this),g&&f.push(g))})),b.attr("class",f.join(" "))}function E(a,b,c,d){var e=o(a.toUpperCase()).indexOf(o(b.toUpperCase())),f=b.length;return 0>e?(c.push(d(a)),void 0):(c.push(d(a.substring(0,e))),c.push(""),c.push(d(a.substring(e,e+f))),c.push(""),c.push(d(a.substring(e+f,a.length))),void 0)}function F(a){var b={"\\":"\","&":"&","<":"<",">":">",'"':""","'":"'","/":"/"};return String(a).replace(/[&<>"'\/\\]/g,function(a){return b[a]})}function G(c){var d,e=null,f=c.quietMillis||100,g=c.url,h=this;return function(i){window.clearTimeout(d),d=window.setTimeout(function(){var d=c.data,f=g,j=c.transport||a.fn.select2.ajaxDefaults.transport,k={type:c.type||"GET",cache:c.cache||!1,jsonpCallback:c.jsonpCallback||b,dataType:c.dataType||"json"},l=a.extend({},a.fn.select2.ajaxDefaults.params,k);d=d?d.call(h,i.term,i.page,i.context):null,f="function"==typeof f?f.call(h,i.term,i.page,i.context):f,e&&"function"==typeof e.abort&&e.abort(),c.params&&(a.isFunction(c.params)?a.extend(l,c.params.call(h)):a.extend(l,c.params)),a.extend(l,{url:f,dataType:c.dataType,data:d,success:function(a){var b=c.results(a,i.page,i);i.callback(b)},error:function(a,b,c){var d={hasError:!0,jqXHR:a,textStatus:b,errorThrown:c};i.callback(d)}}),e=j.call(h,l)},f)}}function H(b){var d,e,c=b,f=function(a){return""+a.text};a.isArray(c)&&(e=c,c={results:e}),a.isFunction(c)===!1&&(e=c,c=function(){return e});var g=c();return g.text&&(f=g.text,a.isFunction(f)||(d=g.text,f=function(a){return a[d]})),function(b){var g,d=b.term,e={results:[]};return""===d?(b.callback(c()),void 0):(g=function(c,e){var h,i;if(c=c[0],c.children){h={};for(i in c)c.hasOwnProperty(i)&&(h[i]=c[i]);h.children=[],a(c.children).each2(function(a,b){g(b,h.children)}),(h.children.length||b.matcher(d,f(h),c))&&e.push(h)}else b.matcher(d,f(c),c)&&e.push(c)},a(c().results).each2(function(a,b){g(b,e.results)}),b.callback(e),void 0)}}function I(c){var d=a.isFunction(c);return function(e){var f=e.term,g={results:[]},h=d?c(e):c;a.isArray(h)&&(a(h).each(function(){var a=this.text!==b,c=a?this.text:this;(""===f||e.matcher(f,c))&&g.results.push(a?this:{id:this,text:this})}),e.callback(g))}}function J(b,c){if(a.isFunction(b))return!0;if(!b)return!1;if("string"==typeof b)return!0;throw new Error(c+" must be a string, function, or falsy value")}function K(b,c){if(a.isFunction(b)){var d=Array.prototype.slice.call(arguments,2);return b.apply(c,d)}return b}function L(b){var c=0;return a.each(b,function(a,b){b.children?c+=L(b.children):c++}),c}function M(a,c,d,e){var h,i,j,k,l,f=a,g=!1;if(!e.createSearchChoice||!e.tokenSeparators||e.tokenSeparators.length<1)return b;for(;;){for(i=-1,j=0,k=e.tokenSeparators.length;k>j&&(l=e.tokenSeparators[j],i=a.indexOf(l),!(i>=0));j++);if(0>i)break;if(h=a.substring(0,i),a=a.substring(i+l.length),h.length>0&&(h=e.createSearchChoice.call(this,h,c),h!==b&&null!==h&&e.id(h)!==b&&null!==e.id(h))){for(g=!1,j=0,k=c.length;k>j;j++)if(r(e.id(h),e.id(c[j]))){g=!0;break}g||d(h)}}return f!==a?a:void 0}function N(){var b=this;a.each(arguments,function(a,c){b[c].remove(),b[c]=null})}function O(b,c){var d=function(){};return d.prototype=new b,d.prototype.constructor=d,d.prototype.parent=b.prototype,d.prototype=a.extend(d.prototype,c),d}if(window.Select2===b){var c,d,e,f,g,h,j,k,i={x:0,y:0},c={TAB:9,ENTER:13,ESC:27,SPACE:32,LEFT:37,UP:38,RIGHT:39,DOWN:40,SHIFT:16,CTRL:17,ALT:18,PAGE_UP:33,PAGE_DOWN:34,HOME:36,END:35,BACKSPACE:8,DELETE:46,isArrow:function(a){switch(a=a.which?a.which:a){case c.LEFT:case c.RIGHT:case c.UP:case c.DOWN:return!0}return!1},isControl:function(a){var b=a.which;switch(b){case c.SHIFT:case c.CTRL:case c.ALT:return!0}return a.metaKey?!0:!1},isFunctionKey:function(a){return a=a.which?a.which:a,a>=112&&123>=a}},l="
            ",m={"\u24b6":"A","\uff21":"A","\xc0":"A","\xc1":"A","\xc2":"A","\u1ea6":"A","\u1ea4":"A","\u1eaa":"A","\u1ea8":"A","\xc3":"A","\u0100":"A","\u0102":"A","\u1eb0":"A","\u1eae":"A","\u1eb4":"A","\u1eb2":"A","\u0226":"A","\u01e0":"A","\xc4":"A","\u01de":"A","\u1ea2":"A","\xc5":"A","\u01fa":"A","\u01cd":"A","\u0200":"A","\u0202":"A","\u1ea0":"A","\u1eac":"A","\u1eb6":"A","\u1e00":"A","\u0104":"A","\u023a":"A","\u2c6f":"A","\ua732":"AA","\xc6":"AE","\u01fc":"AE","\u01e2":"AE","\ua734":"AO","\ua736":"AU","\ua738":"AV","\ua73a":"AV","\ua73c":"AY","\u24b7":"B","\uff22":"B","\u1e02":"B","\u1e04":"B","\u1e06":"B","\u0243":"B","\u0182":"B","\u0181":"B","\u24b8":"C","\uff23":"C","\u0106":"C","\u0108":"C","\u010a":"C","\u010c":"C","\xc7":"C","\u1e08":"C","\u0187":"C","\u023b":"C","\ua73e":"C","\u24b9":"D","\uff24":"D","\u1e0a":"D","\u010e":"D","\u1e0c":"D","\u1e10":"D","\u1e12":"D","\u1e0e":"D","\u0110":"D","\u018b":"D","\u018a":"D","\u0189":"D","\ua779":"D","\u01f1":"DZ","\u01c4":"DZ","\u01f2":"Dz","\u01c5":"Dz","\u24ba":"E","\uff25":"E","\xc8":"E","\xc9":"E","\xca":"E","\u1ec0":"E","\u1ebe":"E","\u1ec4":"E","\u1ec2":"E","\u1ebc":"E","\u0112":"E","\u1e14":"E","\u1e16":"E","\u0114":"E","\u0116":"E","\xcb":"E","\u1eba":"E","\u011a":"E","\u0204":"E","\u0206":"E","\u1eb8":"E","\u1ec6":"E","\u0228":"E","\u1e1c":"E","\u0118":"E","\u1e18":"E","\u1e1a":"E","\u0190":"E","\u018e":"E","\u24bb":"F","\uff26":"F","\u1e1e":"F","\u0191":"F","\ua77b":"F","\u24bc":"G","\uff27":"G","\u01f4":"G","\u011c":"G","\u1e20":"G","\u011e":"G","\u0120":"G","\u01e6":"G","\u0122":"G","\u01e4":"G","\u0193":"G","\ua7a0":"G","\ua77d":"G","\ua77e":"G","\u24bd":"H","\uff28":"H","\u0124":"H","\u1e22":"H","\u1e26":"H","\u021e":"H","\u1e24":"H","\u1e28":"H","\u1e2a":"H","\u0126":"H","\u2c67":"H","\u2c75":"H","\ua78d":"H","\u24be":"I","\uff29":"I","\xcc":"I","\xcd":"I","\xce":"I","\u0128":"I","\u012a":"I","\u012c":"I","\u0130":"I","\xcf":"I","\u1e2e":"I","\u1ec8":"I","\u01cf":"I","\u0208":"I","\u020a":"I","\u1eca":"I","\u012e":"I","\u1e2c":"I","\u0197":"I","\u24bf":"J","\uff2a":"J","\u0134":"J","\u0248":"J","\u24c0":"K","\uff2b":"K","\u1e30":"K","\u01e8":"K","\u1e32":"K","\u0136":"K","\u1e34":"K","\u0198":"K","\u2c69":"K","\ua740":"K","\ua742":"K","\ua744":"K","\ua7a2":"K","\u24c1":"L","\uff2c":"L","\u013f":"L","\u0139":"L","\u013d":"L","\u1e36":"L","\u1e38":"L","\u013b":"L","\u1e3c":"L","\u1e3a":"L","\u0141":"L","\u023d":"L","\u2c62":"L","\u2c60":"L","\ua748":"L","\ua746":"L","\ua780":"L","\u01c7":"LJ","\u01c8":"Lj","\u24c2":"M","\uff2d":"M","\u1e3e":"M","\u1e40":"M","\u1e42":"M","\u2c6e":"M","\u019c":"M","\u24c3":"N","\uff2e":"N","\u01f8":"N","\u0143":"N","\xd1":"N","\u1e44":"N","\u0147":"N","\u1e46":"N","\u0145":"N","\u1e4a":"N","\u1e48":"N","\u0220":"N","\u019d":"N","\ua790":"N","\ua7a4":"N","\u01ca":"NJ","\u01cb":"Nj","\u24c4":"O","\uff2f":"O","\xd2":"O","\xd3":"O","\xd4":"O","\u1ed2":"O","\u1ed0":"O","\u1ed6":"O","\u1ed4":"O","\xd5":"O","\u1e4c":"O","\u022c":"O","\u1e4e":"O","\u014c":"O","\u1e50":"O","\u1e52":"O","\u014e":"O","\u022e":"O","\u0230":"O","\xd6":"O","\u022a":"O","\u1ece":"O","\u0150":"O","\u01d1":"O","\u020c":"O","\u020e":"O","\u01a0":"O","\u1edc":"O","\u1eda":"O","\u1ee0":"O","\u1ede":"O","\u1ee2":"O","\u1ecc":"O","\u1ed8":"O","\u01ea":"O","\u01ec":"O","\xd8":"O","\u01fe":"O","\u0186":"O","\u019f":"O","\ua74a":"O","\ua74c":"O","\u01a2":"OI","\ua74e":"OO","\u0222":"OU","\u24c5":"P","\uff30":"P","\u1e54":"P","\u1e56":"P","\u01a4":"P","\u2c63":"P","\ua750":"P","\ua752":"P","\ua754":"P","\u24c6":"Q","\uff31":"Q","\ua756":"Q","\ua758":"Q","\u024a":"Q","\u24c7":"R","\uff32":"R","\u0154":"R","\u1e58":"R","\u0158":"R","\u0210":"R","\u0212":"R","\u1e5a":"R","\u1e5c":"R","\u0156":"R","\u1e5e":"R","\u024c":"R","\u2c64":"R","\ua75a":"R","\ua7a6":"R","\ua782":"R","\u24c8":"S","\uff33":"S","\u1e9e":"S","\u015a":"S","\u1e64":"S","\u015c":"S","\u1e60":"S","\u0160":"S","\u1e66":"S","\u1e62":"S","\u1e68":"S","\u0218":"S","\u015e":"S","\u2c7e":"S","\ua7a8":"S","\ua784":"S","\u24c9":"T","\uff34":"T","\u1e6a":"T","\u0164":"T","\u1e6c":"T","\u021a":"T","\u0162":"T","\u1e70":"T","\u1e6e":"T","\u0166":"T","\u01ac":"T","\u01ae":"T","\u023e":"T","\ua786":"T","\ua728":"TZ","\u24ca":"U","\uff35":"U","\xd9":"U","\xda":"U","\xdb":"U","\u0168":"U","\u1e78":"U","\u016a":"U","\u1e7a":"U","\u016c":"U","\xdc":"U","\u01db":"U","\u01d7":"U","\u01d5":"U","\u01d9":"U","\u1ee6":"U","\u016e":"U","\u0170":"U","\u01d3":"U","\u0214":"U","\u0216":"U","\u01af":"U","\u1eea":"U","\u1ee8":"U","\u1eee":"U","\u1eec":"U","\u1ef0":"U","\u1ee4":"U","\u1e72":"U","\u0172":"U","\u1e76":"U","\u1e74":"U","\u0244":"U","\u24cb":"V","\uff36":"V","\u1e7c":"V","\u1e7e":"V","\u01b2":"V","\ua75e":"V","\u0245":"V","\ua760":"VY","\u24cc":"W","\uff37":"W","\u1e80":"W","\u1e82":"W","\u0174":"W","\u1e86":"W","\u1e84":"W","\u1e88":"W","\u2c72":"W","\u24cd":"X","\uff38":"X","\u1e8a":"X","\u1e8c":"X","\u24ce":"Y","\uff39":"Y","\u1ef2":"Y","\xdd":"Y","\u0176":"Y","\u1ef8":"Y","\u0232":"Y","\u1e8e":"Y","\u0178":"Y","\u1ef6":"Y","\u1ef4":"Y","\u01b3":"Y","\u024e":"Y","\u1efe":"Y","\u24cf":"Z","\uff3a":"Z","\u0179":"Z","\u1e90":"Z","\u017b":"Z","\u017d":"Z","\u1e92":"Z","\u1e94":"Z","\u01b5":"Z","\u0224":"Z","\u2c7f":"Z","\u2c6b":"Z","\ua762":"Z","\u24d0":"a","\uff41":"a","\u1e9a":"a","\xe0":"a","\xe1":"a","\xe2":"a","\u1ea7":"a","\u1ea5":"a","\u1eab":"a","\u1ea9":"a","\xe3":"a","\u0101":"a","\u0103":"a","\u1eb1":"a","\u1eaf":"a","\u1eb5":"a","\u1eb3":"a","\u0227":"a","\u01e1":"a","\xe4":"a","\u01df":"a","\u1ea3":"a","\xe5":"a","\u01fb":"a","\u01ce":"a","\u0201":"a","\u0203":"a","\u1ea1":"a","\u1ead":"a","\u1eb7":"a","\u1e01":"a","\u0105":"a","\u2c65":"a","\u0250":"a","\ua733":"aa","\xe6":"ae","\u01fd":"ae","\u01e3":"ae","\ua735":"ao","\ua737":"au","\ua739":"av","\ua73b":"av","\ua73d":"ay","\u24d1":"b","\uff42":"b","\u1e03":"b","\u1e05":"b","\u1e07":"b","\u0180":"b","\u0183":"b","\u0253":"b","\u24d2":"c","\uff43":"c","\u0107":"c","\u0109":"c","\u010b":"c","\u010d":"c","\xe7":"c","\u1e09":"c","\u0188":"c","\u023c":"c","\ua73f":"c","\u2184":"c","\u24d3":"d","\uff44":"d","\u1e0b":"d","\u010f":"d","\u1e0d":"d","\u1e11":"d","\u1e13":"d","\u1e0f":"d","\u0111":"d","\u018c":"d","\u0256":"d","\u0257":"d","\ua77a":"d","\u01f3":"dz","\u01c6":"dz","\u24d4":"e","\uff45":"e","\xe8":"e","\xe9":"e","\xea":"e","\u1ec1":"e","\u1ebf":"e","\u1ec5":"e","\u1ec3":"e","\u1ebd":"e","\u0113":"e","\u1e15":"e","\u1e17":"e","\u0115":"e","\u0117":"e","\xeb":"e","\u1ebb":"e","\u011b":"e","\u0205":"e","\u0207":"e","\u1eb9":"e","\u1ec7":"e","\u0229":"e","\u1e1d":"e","\u0119":"e","\u1e19":"e","\u1e1b":"e","\u0247":"e","\u025b":"e","\u01dd":"e","\u24d5":"f","\uff46":"f","\u1e1f":"f","\u0192":"f","\ua77c":"f","\u24d6":"g","\uff47":"g","\u01f5":"g","\u011d":"g","\u1e21":"g","\u011f":"g","\u0121":"g","\u01e7":"g","\u0123":"g","\u01e5":"g","\u0260":"g","\ua7a1":"g","\u1d79":"g","\ua77f":"g","\u24d7":"h","\uff48":"h","\u0125":"h","\u1e23":"h","\u1e27":"h","\u021f":"h","\u1e25":"h","\u1e29":"h","\u1e2b":"h","\u1e96":"h","\u0127":"h","\u2c68":"h","\u2c76":"h","\u0265":"h","\u0195":"hv","\u24d8":"i","\uff49":"i","\xec":"i","\xed":"i","\xee":"i","\u0129":"i","\u012b":"i","\u012d":"i","\xef":"i","\u1e2f":"i","\u1ec9":"i","\u01d0":"i","\u0209":"i","\u020b":"i","\u1ecb":"i","\u012f":"i","\u1e2d":"i","\u0268":"i","\u0131":"i","\u24d9":"j","\uff4a":"j","\u0135":"j","\u01f0":"j","\u0249":"j","\u24da":"k","\uff4b":"k","\u1e31":"k","\u01e9":"k","\u1e33":"k","\u0137":"k","\u1e35":"k","\u0199":"k","\u2c6a":"k","\ua741":"k","\ua743":"k","\ua745":"k","\ua7a3":"k","\u24db":"l","\uff4c":"l","\u0140":"l","\u013a":"l","\u013e":"l","\u1e37":"l","\u1e39":"l","\u013c":"l","\u1e3d":"l","\u1e3b":"l","\u017f":"l","\u0142":"l","\u019a":"l","\u026b":"l","\u2c61":"l","\ua749":"l","\ua781":"l","\ua747":"l","\u01c9":"lj","\u24dc":"m","\uff4d":"m","\u1e3f":"m","\u1e41":"m","\u1e43":"m","\u0271":"m","\u026f":"m","\u24dd":"n","\uff4e":"n","\u01f9":"n","\u0144":"n","\xf1":"n","\u1e45":"n","\u0148":"n","\u1e47":"n","\u0146":"n","\u1e4b":"n","\u1e49":"n","\u019e":"n","\u0272":"n","\u0149":"n","\ua791":"n","\ua7a5":"n","\u01cc":"nj","\u24de":"o","\uff4f":"o","\xf2":"o","\xf3":"o","\xf4":"o","\u1ed3":"o","\u1ed1":"o","\u1ed7":"o","\u1ed5":"o","\xf5":"o","\u1e4d":"o","\u022d":"o","\u1e4f":"o","\u014d":"o","\u1e51":"o","\u1e53":"o","\u014f":"o","\u022f":"o","\u0231":"o","\xf6":"o","\u022b":"o","\u1ecf":"o","\u0151":"o","\u01d2":"o","\u020d":"o","\u020f":"o","\u01a1":"o","\u1edd":"o","\u1edb":"o","\u1ee1":"o","\u1edf":"o","\u1ee3":"o","\u1ecd":"o","\u1ed9":"o","\u01eb":"o","\u01ed":"o","\xf8":"o","\u01ff":"o","\u0254":"o","\ua74b":"o","\ua74d":"o","\u0275":"o","\u01a3":"oi","\u0223":"ou","\ua74f":"oo","\u24df":"p","\uff50":"p","\u1e55":"p","\u1e57":"p","\u01a5":"p","\u1d7d":"p","\ua751":"p","\ua753":"p","\ua755":"p","\u24e0":"q","\uff51":"q","\u024b":"q","\ua757":"q","\ua759":"q","\u24e1":"r","\uff52":"r","\u0155":"r","\u1e59":"r","\u0159":"r","\u0211":"r","\u0213":"r","\u1e5b":"r","\u1e5d":"r","\u0157":"r","\u1e5f":"r","\u024d":"r","\u027d":"r","\ua75b":"r","\ua7a7":"r","\ua783":"r","\u24e2":"s","\uff53":"s","\xdf":"s","\u015b":"s","\u1e65":"s","\u015d":"s","\u1e61":"s","\u0161":"s","\u1e67":"s","\u1e63":"s","\u1e69":"s","\u0219":"s","\u015f":"s","\u023f":"s","\ua7a9":"s","\ua785":"s","\u1e9b":"s","\u24e3":"t","\uff54":"t","\u1e6b":"t","\u1e97":"t","\u0165":"t","\u1e6d":"t","\u021b":"t","\u0163":"t","\u1e71":"t","\u1e6f":"t","\u0167":"t","\u01ad":"t","\u0288":"t","\u2c66":"t","\ua787":"t","\ua729":"tz","\u24e4":"u","\uff55":"u","\xf9":"u","\xfa":"u","\xfb":"u","\u0169":"u","\u1e79":"u","\u016b":"u","\u1e7b":"u","\u016d":"u","\xfc":"u","\u01dc":"u","\u01d8":"u","\u01d6":"u","\u01da":"u","\u1ee7":"u","\u016f":"u","\u0171":"u","\u01d4":"u","\u0215":"u","\u0217":"u","\u01b0":"u","\u1eeb":"u","\u1ee9":"u","\u1eef":"u","\u1eed":"u","\u1ef1":"u","\u1ee5":"u","\u1e73":"u","\u0173":"u","\u1e77":"u","\u1e75":"u","\u0289":"u","\u24e5":"v","\uff56":"v","\u1e7d":"v","\u1e7f":"v","\u028b":"v","\ua75f":"v","\u028c":"v","\ua761":"vy","\u24e6":"w","\uff57":"w","\u1e81":"w","\u1e83":"w","\u0175":"w","\u1e87":"w","\u1e85":"w","\u1e98":"w","\u1e89":"w","\u2c73":"w","\u24e7":"x","\uff58":"x","\u1e8b":"x","\u1e8d":"x","\u24e8":"y","\uff59":"y","\u1ef3":"y","\xfd":"y","\u0177":"y","\u1ef9":"y","\u0233":"y","\u1e8f":"y","\xff":"y","\u1ef7":"y","\u1e99":"y","\u1ef5":"y","\u01b4":"y","\u024f":"y","\u1eff":"y","\u24e9":"z","\uff5a":"z","\u017a":"z","\u1e91":"z","\u017c":"z","\u017e":"z","\u1e93":"z","\u1e95":"z","\u01b6":"z","\u0225":"z","\u0240":"z","\u2c6c":"z","\ua763":"z","\u0386":"\u0391","\u0388":"\u0395","\u0389":"\u0397","\u038a":"\u0399","\u03aa":"\u0399","\u038c":"\u039f","\u038e":"\u03a5","\u03ab":"\u03a5","\u038f":"\u03a9","\u03ac":"\u03b1","\u03ad":"\u03b5","\u03ae":"\u03b7","\u03af":"\u03b9","\u03ca":"\u03b9","\u0390":"\u03b9","\u03cc":"\u03bf","\u03cd":"\u03c5","\u03cb":"\u03c5","\u03b0":"\u03c5","\u03c9":"\u03c9","\u03c2":"\u03c3"};j=a(document),g=function(){var a=1;return function(){return a++}}(),d=O(Object,{bind:function(a){var b=this;return function(){a.apply(b,arguments)}},init:function(c){var d,e,f=".select2-results";this.opts=c=this.prepareOpts(c),this.id=c.id,c.element.data("select2")!==b&&null!==c.element.data("select2")&&c.element.data("select2").destroy(),this.container=this.createContainer(),this.liveRegion=a("",{role:"status","aria-live":"polite"}).addClass("select2-hidden-accessible").appendTo(document.body),this.containerId="s2id_"+(c.element.attr("id")||"autogen"+g()),this.containerEventName=this.containerId.replace(/([.])/g,"_").replace(/([;&,\-\.\+\*\~':"\!\^#$%@\[\]\(\)=>\|])/g,"\\$1"),this.container.attr("id",this.containerId),this.container.attr("title",c.element.attr("title")),this.body=a("body"),D(this.container,this.opts.element,this.opts.adaptContainerCssClass),this.container.attr("style",c.element.attr("style")),this.container.css(K(c.containerCss,this.opts.element)),this.container.addClass(K(c.containerCssClass,this.opts.element)),this.elementTabIndex=this.opts.element.attr("tabindex"),this.opts.element.data("select2",this).attr("tabindex","-1").before(this.container).on("click.select2",A),this.container.data("select2",this),this.dropdown=this.container.find(".select2-drop"),D(this.dropdown,this.opts.element,this.opts.adaptDropdownCssClass),this.dropdown.addClass(K(c.dropdownCssClass,this.opts.element)),this.dropdown.data("select2",this),this.dropdown.on("click",A),this.results=d=this.container.find(f),this.search=e=this.container.find("input.select2-input"),this.queryCount=0,this.resultsPage=0,this.context=null,this.initContainer(),this.container.on("click",A),v(this.results),this.dropdown.on("mousemove-filtered",f,this.bind(this.highlightUnderEvent)),this.dropdown.on("touchstart touchmove touchend",f,this.bind(function(a){this._touchEvent=!0,this.highlightUnderEvent(a)})),this.dropdown.on("touchmove",f,this.bind(this.touchMoved)),this.dropdown.on("touchstart touchend",f,this.bind(this.clearTouchMoved)),this.dropdown.on("click",this.bind(function(){this._touchEvent&&(this._touchEvent=!1,this.selectHighlighted())})),x(80,this.results),this.dropdown.on("scroll-debounced",f,this.bind(this.loadMoreIfNeeded)),a(this.container).on("change",".select2-input",function(a){a.stopPropagation()}),a(this.dropdown).on("change",".select2-input",function(a){a.stopPropagation()}),a.fn.mousewheel&&d.mousewheel(function(a,b,c,e){var f=d.scrollTop();e>0&&0>=f-e?(d.scrollTop(0),A(a)):0>e&&d.get(0).scrollHeight-d.scrollTop()+e<=d.height()&&(d.scrollTop(d.get(0).scrollHeight-d.height()),A(a))}),u(e),e.on("keyup-change input paste",this.bind(this.updateResults)),e.on("focus",function(){e.addClass("select2-focused")}),e.on("blur",function(){e.removeClass("select2-focused")}),this.dropdown.on("mouseup",f,this.bind(function(b){a(b.target).closest(".select2-result-selectable").length>0&&(this.highlightUnderEvent(b),this.selectHighlighted(b))})),this.dropdown.on("click mouseup mousedown touchstart touchend focusin",function(a){a.stopPropagation()}),this.nextSearchTerm=b,a.isFunction(this.opts.initSelection)&&(this.initSelection(),this.monitorSource()),null!==c.maximumInputLength&&this.search.attr("maxlength",c.maximumInputLength);var h=c.element.prop("disabled");h===b&&(h=!1),this.enable(!h);var i=c.element.prop("readonly");i===b&&(i=!1),this.readonly(i),k=k||q(),this.autofocus=c.element.prop("autofocus"),c.element.prop("autofocus",!1),this.autofocus&&this.focus(),this.search.attr("placeholder",c.searchInputPlaceholder)},destroy:function(){var a=this.opts.element,c=a.data("select2"),d=this;this.close(),a.length&&a[0].detachEvent&&a.each(function(){this.detachEvent("onpropertychange",d._sync)}),this.propertyObserver&&(this.propertyObserver.disconnect(),this.propertyObserver=null),this._sync=null,c!==b&&(c.container.remove(),c.liveRegion.remove(),c.dropdown.remove(),a.removeClass("select2-offscreen").removeData("select2").off(".select2").prop("autofocus",this.autofocus||!1),this.elementTabIndex?a.attr({tabindex:this.elementTabIndex}):a.removeAttr("tabindex"),a.show()),N.call(this,"container","liveRegion","dropdown","results","search")},optionToData:function(a){return a.is("option")?{id:a.prop("value"),text:a.text(),element:a.get(),css:a.attr("class"),disabled:a.prop("disabled"),locked:r(a.attr("locked"),"locked")||r(a.data("locked"),!0)}:a.is("optgroup")?{text:a.attr("label"),children:[],element:a.get(),css:a.attr("class")}:void 0},prepareOpts:function(c){var d,e,f,h,i=this;if(d=c.element,"select"===d.get(0).tagName.toLowerCase()&&(this.select=e=c.element),e&&a.each(["id","multiple","ajax","query","createSearchChoice","initSelection","data","tags"],function(){if(this in c)throw new Error("Option '"+this+"' is not allowed for Select2 when attached to a ","
            "," ","
              ","
            ","
            "].join(""));return b},enableInterface:function(){this.parent.enableInterface.apply(this,arguments)&&this.focusser.prop("disabled",!this.isInterfaceEnabled())},opening:function(){var c,d,e;this.opts.minimumResultsForSearch>=0&&this.showSearch(!0),this.parent.opening.apply(this,arguments),this.showSearchInput!==!1&&this.search.val(this.focusser.val()),this.opts.shouldFocusInput(this)&&(this.search.focus(),c=this.search.get(0),c.createTextRange?(d=c.createTextRange(),d.collapse(!1),d.select()):c.setSelectionRange&&(e=this.search.val().length,c.setSelectionRange(e,e))),""===this.search.val()&&this.nextSearchTerm!=b&&(this.search.val(this.nextSearchTerm),this.search.select()),this.focusser.prop("disabled",!0).val(""),this.updateResults(!0),this.opts.element.trigger(a.Event("select2-open"))},close:function(){this.opened()&&(this.parent.close.apply(this,arguments),this.focusser.prop("disabled",!1),this.opts.shouldFocusInput(this)&&this.focusser.focus())},focus:function(){this.opened()?this.close():(this.focusser.prop("disabled",!1),this.opts.shouldFocusInput(this)&&this.focusser.focus())},isFocused:function(){return this.container.hasClass("select2-container-active")},cancel:function(){this.parent.cancel.apply(this,arguments),this.focusser.prop("disabled",!1),this.opts.shouldFocusInput(this)&&this.focusser.focus()},destroy:function(){a("label[for='"+this.focusser.attr("id")+"']").attr("for",this.opts.element.attr("id")),this.parent.destroy.apply(this,arguments),N.call(this,"selection","focusser")},initContainer:function(){var b,h,d=this.container,e=this.dropdown,f=g();this.opts.minimumResultsForSearch<0?this.showSearch(!1):this.showSearch(!0),this.selection=b=d.find(".select2-choice"),this.focusser=d.find(".select2-focusser"),b.find(".select2-chosen").attr("id","select2-chosen-"+f),this.focusser.attr("aria-labelledby","select2-chosen-"+f),this.results.attr("id","select2-results-"+f),this.search.attr("aria-owns","select2-results-"+f),this.focusser.attr("id","s2id_autogen"+f),h=a("label[for='"+this.opts.element.attr("id")+"']"),this.focusser.prev().text(h.text()).attr("for",this.focusser.attr("id"));var i=this.opts.element.attr("title");this.opts.element.attr("title",i||h.text()),this.focusser.attr("tabindex",this.elementTabIndex),this.search.attr("id",this.focusser.attr("id")+"_search"),this.search.prev().text(a("label[for='"+this.focusser.attr("id")+"']").text()).attr("for",this.search.attr("id")),this.search.on("keydown",this.bind(function(a){if(this.isInterfaceEnabled()&&229!=a.keyCode){if(a.which===c.PAGE_UP||a.which===c.PAGE_DOWN)return A(a),void 0;switch(a.which){case c.UP:case c.DOWN:return this.moveHighlight(a.which===c.UP?-1:1),A(a),void 0;case c.ENTER:return this.selectHighlighted(),A(a),void 0;case c.TAB:return this.selectHighlighted({noFocus:!0}),void 0;case c.ESC:return this.cancel(a),A(a),void 0}}})),this.search.on("blur",this.bind(function(){document.activeElement===this.body.get(0)&&window.setTimeout(this.bind(function(){this.opened()&&this.search.focus()}),0)})),this.focusser.on("keydown",this.bind(function(a){if(this.isInterfaceEnabled()&&a.which!==c.TAB&&!c.isControl(a)&&!c.isFunctionKey(a)&&a.which!==c.ESC){if(this.opts.openOnEnter===!1&&a.which===c.ENTER)return A(a),void 0;if(a.which==c.DOWN||a.which==c.UP||a.which==c.ENTER&&this.opts.openOnEnter){if(a.altKey||a.ctrlKey||a.shiftKey||a.metaKey)return;return this.open(),A(a),void 0}return a.which==c.DELETE||a.which==c.BACKSPACE?(this.opts.allowClear&&this.clear(),A(a),void 0):void 0}})),u(this.focusser),this.focusser.on("keyup-change input",this.bind(function(a){if(this.opts.minimumResultsForSearch>=0){if(a.stopPropagation(),this.opened())return;this.open()}})),b.on("mousedown touchstart","abbr",this.bind(function(a){this.isInterfaceEnabled()&&(this.clear(),B(a),this.close(),this.selection.focus())})),b.on("mousedown touchstart",this.bind(function(c){n(b),this.container.hasClass("select2-container-active")||this.opts.element.trigger(a.Event("select2-focus")),this.opened()?this.close():this.isInterfaceEnabled()&&this.open(),A(c)})),e.on("mousedown touchstart",this.bind(function(){this.opts.shouldFocusInput(this)&&this.search.focus()})),b.on("focus",this.bind(function(a){A(a)})),this.focusser.on("focus",this.bind(function(){this.container.hasClass("select2-container-active")||this.opts.element.trigger(a.Event("select2-focus")),this.container.addClass("select2-container-active")})).on("blur",this.bind(function(){this.opened()||(this.container.removeClass("select2-container-active"),this.opts.element.trigger(a.Event("select2-blur")))})),this.search.on("focus",this.bind(function(){this.container.hasClass("select2-container-active")||this.opts.element.trigger(a.Event("select2-focus")),this.container.addClass("select2-container-active")})),this.initContainerWidth(),this.opts.element.addClass("select2-offscreen"),this.setPlaceholder()},clear:function(b){var c=this.selection.data("select2-data");if(c){var d=a.Event("select2-clearing");if(this.opts.element.trigger(d),d.isDefaultPrevented())return;var e=this.getPlaceholderOption();this.opts.element.val(e?e.val():""),this.selection.find(".select2-chosen").empty(),this.selection.removeData("select2-data"),this.setPlaceholder(),b!==!1&&(this.opts.element.trigger({type:"select2-removed",val:this.id(c),choice:c}),this.triggerChange({removed:c}))}},initSelection:function(){if(this.isPlaceholderOptionSelected())this.updateSelection(null),this.close(),this.setPlaceholder();else{var c=this;this.opts.initSelection.call(null,this.opts.element,function(a){a!==b&&null!==a&&(c.updateSelection(a),c.close(),c.setPlaceholder(),c.nextSearchTerm=c.opts.nextSearchTerm(a,c.search.val()))})}},isPlaceholderOptionSelected:function(){var a;return this.getPlaceholder()===b?!1:(a=this.getPlaceholderOption())!==b&&a.prop("selected")||""===this.opts.element.val()||this.opts.element.val()===b||null===this.opts.element.val()},prepareOpts:function(){var b=this.parent.prepareOpts.apply(this,arguments),c=this;return"select"===b.element.get(0).tagName.toLowerCase()?b.initSelection=function(a,b){var d=a.find("option").filter(function(){return this.selected&&!this.disabled});b(c.optionToData(d))}:"data"in b&&(b.initSelection=b.initSelection||function(c,d){var e=c.val(),f=null;b.query({matcher:function(a,c,d){var g=r(e,b.id(d));return g&&(f=d),g},callback:a.isFunction(d)?function(){d(f)}:a.noop})}),b},getPlaceholder:function(){return this.select&&this.getPlaceholderOption()===b?b:this.parent.getPlaceholder.apply(this,arguments)},setPlaceholder:function(){var a=this.getPlaceholder();if(this.isPlaceholderOptionSelected()&&a!==b){if(this.select&&this.getPlaceholderOption()===b)return;this.selection.find(".select2-chosen").html(this.opts.escapeMarkup(a)),this.selection.addClass("select2-default"),this.container.removeClass("select2-allowclear")}},postprocessResults:function(a,b,c){var d=0,e=this;if(this.findHighlightableChoices().each2(function(a,b){return r(e.id(b.data("select2-data")),e.opts.element.val())?(d=a,!1):void 0}),c!==!1&&(b===!0&&d>=0?this.highlight(d):this.highlight(0)),b===!0){var g=this.opts.minimumResultsForSearch;g>=0&&this.showSearch(L(a.results)>=g)}},showSearch:function(b){this.showSearchInput!==b&&(this.showSearchInput=b,this.dropdown.find(".select2-search").toggleClass("select2-search-hidden",!b),this.dropdown.find(".select2-search").toggleClass("select2-offscreen",!b),a(this.dropdown,this.container).toggleClass("select2-with-searchbox",b))},onSelect:function(a,b){if(this.triggerSelect(a)){var c=this.opts.element.val(),d=this.data();this.opts.element.val(this.id(a)),this.updateSelection(a),this.opts.element.trigger({type:"select2-selected",val:this.id(a),choice:a}),this.nextSearchTerm=this.opts.nextSearchTerm(a,this.search.val()),this.close(),b&&b.noFocus||!this.opts.shouldFocusInput(this)||this.focusser.focus(),r(c,this.id(a))||this.triggerChange({added:a,removed:d})}},updateSelection:function(a){var d,e,c=this.selection.find(".select2-chosen");this.selection.data("select2-data",a),c.empty(),null!==a&&(d=this.opts.formatSelection(a,c,this.opts.escapeMarkup)),d!==b&&c.append(d),e=this.opts.formatSelectionCssClass(a,c),e!==b&&c.addClass(e),this.selection.removeClass("select2-default"),this.opts.allowClear&&this.getPlaceholder()!==b&&this.container.addClass("select2-allowclear")},val:function(){var a,c=!1,d=null,e=this,f=this.data();if(0===arguments.length)return this.opts.element.val();if(a=arguments[0],arguments.length>1&&(c=arguments[1]),this.select)this.select.val(a).find("option").filter(function(){return this.selected}).each2(function(a,b){return d=e.optionToData(b),!1}),this.updateSelection(d),this.setPlaceholder(),c&&this.triggerChange({added:d,removed:f});else{if(!a&&0!==a)return this.clear(c),void 0;if(this.opts.initSelection===b)throw new Error("cannot call val() if initSelection() is not defined");this.opts.element.val(a),this.opts.initSelection(this.opts.element,function(a){e.opts.element.val(a?e.id(a):""),e.updateSelection(a),e.setPlaceholder(),c&&e.triggerChange({added:a,removed:f})})}},clearSearch:function(){this.search.val(""),this.focusser.val("")},data:function(a){var c,d=!1;return 0===arguments.length?(c=this.selection.data("select2-data"),c==b&&(c=null),c):(arguments.length>1&&(d=arguments[1]),a?(c=this.data(),this.opts.element.val(a?this.id(a):""),this.updateSelection(a),d&&this.triggerChange({added:a,removed:c})):this.clear(d),void 0)}}),f=O(d,{createContainer:function(){var b=a(document.createElement("div")).attr({"class":"select2-container select2-container-multi"}).html(["
              ","
            • "," "," ","
            • ","
            ","
            ","
              ","
            ","
            "].join(""));return b},prepareOpts:function(){var b=this.parent.prepareOpts.apply(this,arguments),c=this;return"select"===b.element.get(0).tagName.toLowerCase()?b.initSelection=function(a,b){var d=[];a.find("option").filter(function(){return this.selected&&!this.disabled}).each2(function(a,b){d.push(c.optionToData(b))}),b(d)}:"data"in b&&(b.initSelection=b.initSelection||function(c,d){var e=s(c.val(),b.separator),f=[];b.query({matcher:function(c,d,g){var h=a.grep(e,function(a){return r(a,b.id(g))}).length;return h&&f.push(g),h},callback:a.isFunction(d)?function(){for(var a=[],c=0;c0||(this.selectChoice(null),this.clearPlaceholder(),this.container.hasClass("select2-container-active")||this.opts.element.trigger(a.Event("select2-focus")),this.open(),this.focusSearch(),b.preventDefault()))})),this.container.on("focus",b,this.bind(function(){this.isInterfaceEnabled()&&(this.container.hasClass("select2-container-active")||this.opts.element.trigger(a.Event("select2-focus")),this.container.addClass("select2-container-active"),this.dropdown.addClass("select2-drop-active"),this.clearPlaceholder())})),this.initContainerWidth(),this.opts.element.addClass("select2-offscreen"),this.clearSearch()},enableInterface:function(){this.parent.enableInterface.apply(this,arguments)&&this.search.prop("disabled",!this.isInterfaceEnabled())},initSelection:function(){if(""===this.opts.element.val()&&""===this.opts.element.text()&&(this.updateSelection([]),this.close(),this.clearSearch()),this.select||""!==this.opts.element.val()){var c=this;this.opts.initSelection.call(null,this.opts.element,function(a){a!==b&&null!==a&&(c.updateSelection(a),c.close(),c.clearSearch())})}},clearSearch:function(){var a=this.getPlaceholder(),c=this.getMaxSearchWidth();a!==b&&0===this.getVal().length&&this.search.hasClass("select2-focused")===!1?(this.search.val(a).addClass("select2-default"),this.search.width(c>0?c:this.container.css("width"))):this.search.val("").width(10)},clearPlaceholder:function(){this.search.hasClass("select2-default")&&this.search.val("").removeClass("select2-default")},opening:function(){this.clearPlaceholder(),this.resizeSearch(),this.parent.opening.apply(this,arguments),this.focusSearch(),""===this.search.val()&&this.nextSearchTerm!=b&&(this.search.val(this.nextSearchTerm),this.search.select()),this.updateResults(!0),this.opts.shouldFocusInput(this)&&this.search.focus(),this.opts.element.trigger(a.Event("select2-open"))},close:function(){this.opened()&&this.parent.close.apply(this,arguments)},focus:function(){this.close(),this.search.focus()},isFocused:function(){return this.search.hasClass("select2-focused")},updateSelection:function(b){var c=[],d=[],e=this;a(b).each(function(){p(e.id(this),c)<0&&(c.push(e.id(this)),d.push(this))}),b=d,this.selection.find(".select2-search-choice").remove(),a(b).each(function(){e.addSelectedChoice(this)}),e.postprocessResults()},tokenize:function(){var a=this.search.val();a=this.opts.tokenizer.call(this,a,this.data(),this.bind(this.onSelect),this.opts),null!=a&&a!=b&&(this.search.val(a),a.length>0&&this.open())},onSelect:function(a,c){this.triggerSelect(a)&&""!==a.text&&(this.addSelectedChoice(a),this.opts.element.trigger({type:"selected",val:this.id(a),choice:a}),this.nextSearchTerm=this.opts.nextSearchTerm(a,this.search.val()),this.clearSearch(),this.updateResults(),(this.select||!this.opts.closeOnSelect)&&this.postprocessResults(a,!1,this.opts.closeOnSelect===!0),this.opts.closeOnSelect?(this.close(),this.search.width(10)):this.countSelectableResults()>0?(this.search.width(10),this.resizeSearch(),this.getMaximumSelectionSize()>0&&this.val().length>=this.getMaximumSelectionSize()?this.updateResults(!0):this.nextSearchTerm!=b&&(this.search.val(this.nextSearchTerm),this.updateResults(),this.search.select()),this.positionDropdown()):(this.close(),this.search.width(10)),this.triggerChange({added:a}),c&&c.noFocus||this.focusSearch())},cancel:function(){this.close(),this.focusSearch()},addSelectedChoice:function(c){var j,k,d=!c.locked,e=a("
          • "),f=a("
          • "),g=d?e:f,h=this.id(c),i=this.getVal();j=this.opts.formatSelection(c,g.find("div"),this.opts.escapeMarkup),j!=b&&g.find("div").replaceWith("
            "+j+"
            "),k=this.opts.formatSelectionCssClass(c,g.find("div")),k!=b&&g.addClass(k),d&&g.find(".select2-search-choice-close").on("mousedown",A).on("click dblclick",this.bind(function(b){this.isInterfaceEnabled()&&(this.unselect(a(b.target)),this.selection.find(".select2-search-choice-focus").removeClass("select2-search-choice-focus"),A(b),this.close(),this.focusSearch())})).on("focus",this.bind(function(){this.isInterfaceEnabled()&&(this.container.addClass("select2-container-active"),this.dropdown.addClass("select2-drop-active"))})),g.data("select2-data",c),g.insertBefore(this.searchContainer),i.push(h),this.setVal(i)},unselect:function(b){var d,e,c=this.getVal();if(b=b.closest(".select2-search-choice"),0===b.length)throw"Invalid argument: "+b+". Must be .select2-search-choice";if(d=b.data("select2-data")){var f=a.Event("select2-removing");if(f.val=this.id(d),f.choice=d,this.opts.element.trigger(f),f.isDefaultPrevented())return!1;for(;(e=p(this.id(d),c))>=0;)c.splice(e,1),this.setVal(c),this.select&&this.postprocessResults();return b.remove(),this.opts.element.trigger({type:"select2-removed",val:this.id(d),choice:d}),this.triggerChange({removed:d}),!0}},postprocessResults:function(a,b,c){var d=this.getVal(),e=this.results.find(".select2-result"),f=this.results.find(".select2-result-with-children"),g=this;e.each2(function(a,b){var c=g.id(b.data("select2-data"));p(c,d)>=0&&(b.addClass("select2-selected"),b.find(".select2-result-selectable").addClass("select2-selected"))}),f.each2(function(a,b){b.is(".select2-result-selectable")||0!==b.find(".select2-result-selectable:not(.select2-selected)").length||b.addClass("select2-selected")}),-1==this.highlight()&&c!==!1&&g.highlight(0),!this.opts.createSearchChoice&&!e.filter(".select2-result:not(.select2-selected)").length>0&&(!a||a&&!a.more&&0===this.results.find(".select2-no-results").length)&&J(g.opts.formatNoMatches,"formatNoMatches")&&this.results.append("
          • "+K(g.opts.formatNoMatches,g.opts.element,g.search.val())+"
          • ")},getMaxSearchWidth:function(){return this.selection.width()-t(this.search)},resizeSearch:function(){var a,b,c,d,e,f=t(this.search);a=C(this.search)+10,b=this.search.offset().left,c=this.selection.width(),d=this.selection.offset().left,e=c-(b-d)-f,a>e&&(e=c-f),40>e&&(e=c-f),0>=e&&(e=a),this.search.width(Math.floor(e))},getVal:function(){var a;return this.select?(a=this.select.val(),null===a?[]:a):(a=this.opts.element.val(),s(a,this.opts.separator))},setVal:function(b){var c;this.select?this.select.val(b):(c=[],a(b).each(function(){p(this,c)<0&&c.push(this)}),this.opts.element.val(0===c.length?"":c.join(this.opts.separator)))},buildChangeDetails:function(a,b){for(var b=b.slice(0),a=a.slice(0),c=0;c0&&c--,a.splice(d,1),d--);return{added:b,removed:a}},val:function(c,d){var e,f=this;if(0===arguments.length)return this.getVal();if(e=this.data(),e.length||(e=[]),!c&&0!==c)return this.opts.element.val(""),this.updateSelection([]),this.clearSearch(),d&&this.triggerChange({added:this.data(),removed:e}),void 0;if(this.setVal(c),this.select)this.opts.initSelection(this.select,this.bind(this.updateSelection)),d&&this.triggerChange(this.buildChangeDetails(e,this.data()));else{if(this.opts.initSelection===b)throw new Error("val() cannot be called if initSelection() is not defined");this.opts.initSelection(this.opts.element,function(b){var c=a.map(b,f.id);f.setVal(c),f.updateSelection(b),f.clearSearch(),d&&f.triggerChange(f.buildChangeDetails(e,f.data()))})}this.clearSearch()},onSortStart:function(){if(this.select)throw new Error("Sorting of elements is not supported when attached to instead.");this.search.width(0),this.searchContainer.hide()},onSortEnd:function(){var b=[],c=this;this.searchContainer.show(),this.searchContainer.appendTo(this.searchContainer.parent()),this.resizeSearch(),this.selection.find(".select2-search-choice").each(function(){b.push(c.opts.id(a(this).data("select2-data")))}),this.setVal(b),this.triggerChange()},data:function(b,c){var e,f,d=this;return 0===arguments.length?this.selection.children(".select2-search-choice").map(function(){return a(this).data("select2-data")}).get():(f=this.data(),b||(b=[]),e=a.map(b,function(a){return d.opts.id(a)}),this.setVal(e),this.updateSelection(b),this.clearSearch(),c&&this.triggerChange(this.buildChangeDetails(f,this.data())),void 0)}}),a.fn.select2=function(){var d,e,f,g,h,c=Array.prototype.slice.call(arguments,0),i=["val","destroy","opened","open","close","focus","isFocused","container","dropdown","onSortStart","onSortEnd","enable","disable","readonly","positionDropdown","data","search"],j=["opened","isFocused","container","dropdown"],k=["val","data"],l={search:"externalSearch"};return this.each(function(){if(0===c.length||"object"==typeof c[0])d=0===c.length?{}:a.extend({},c[0]),d.element=a(this),"select"===d.element.get(0).tagName.toLowerCase()?h=d.element.prop("multiple"):(h=d.multiple||!1,"tags"in d&&(d.multiple=h=!0)),e=h?new window.Select2["class"].multi:new window.Select2["class"].single,e.init(d);else{if("string"!=typeof c[0])throw"Invalid arguments to select2 plugin: "+c;if(p(c[0],i)<0)throw"Unknown method: "+c[0];if(g=b,e=a(this).data("select2"),e===b)return;if(f=c[0],"container"===f?g=e.container:"dropdown"===f?g=e.dropdown:(l[f]&&(f=l[f]),g=e[f].apply(e,c.slice(1))),p(c[0],j)>=0||p(c[0],k)>=0&&1==c.length)return!1}}),g===b?this:g},a.fn.select2.defaults={width:"copy",loadMorePadding:0,closeOnSelect:!0,openOnEnter:!0,containerCss:{},dropdownCss:{},containerCssClass:"",dropdownCssClass:"",formatResult:function(a,b,c,d){var e=[];return E(a.text,c.term,e,d),e.join("")},formatSelection:function(a,c,d){return a?d(a.text):b},sortResults:function(a){return a},formatResultCssClass:function(a){return a.css},formatSelectionCssClass:function(){return b},minimumResultsForSearch:0,minimumInputLength:0,maximumInputLength:null,maximumSelectionSize:0,id:function(a){return a==b?null:a.id},matcher:function(a,b){return o(""+b).toUpperCase().indexOf(o(""+a).toUpperCase())>=0},separator:",",tokenSeparators:[],tokenizer:M,escapeMarkup:F,blurOnChange:!1,selectOnBlur:!1,adaptContainerCssClass:function(a){return a},adaptDropdownCssClass:function(){return null},nextSearchTerm:function(){return b},searchInputPlaceholder:"",createSearchChoicePosition:"top",shouldFocusInput:function(a){var b="ontouchstart"in window||navigator.msMaxTouchPoints>0;return b?a.opts.minimumResultsForSearch<0?!1:!0:!0}},a.fn.select2.locales=[],a.fn.select2.locales.en={formatMatches:function(a){return 1===a?"One result is available, press enter to select it.":a+" results are available, use up and down arrow keys to navigate." -},formatNoMatches:function(){return"No matches found"},formatAjaxError:function(){return"Loading failed"},formatInputTooShort:function(a,b){var c=b-a.length;return"Please enter "+c+" or more character"+(1==c?"":"s")},formatInputTooLong:function(a,b){var c=a.length-b;return"Please delete "+c+" character"+(1==c?"":"s")},formatSelectionTooBig:function(a){return"You can only select "+a+" item"+(1==a?"":"s")},formatLoadMore:function(){return"Loading more results\u2026"},formatSearching:function(){return"Searching\u2026"}},a.extend(a.fn.select2.defaults,a.fn.select2.locales.en),a.fn.select2.ajaxDefaults={transport:a.ajax,params:{type:"GET",cache:!1,dataType:"json"}},window.Select2={query:{ajax:G,local:H,tags:I},util:{debounce:w,markMatch:E,escapeMarkup:F,stripDiacritics:o},"class":{"abstract":d,single:e,multi:f}}}}(jQuery); \ No newline at end of file diff --git a/awx/ui/client/lib/select2/select2.png b/awx/ui/client/lib/select2/select2.png deleted file mode 100644 index 1d804ffb99699b9e030f1010314de0970b5a000d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 613 zcmV-r0-F7aP)#WY!I$JQV$)A5aAS1BM||2XVJl=+L1^1S1H% zM-&lx?NZpUrHhn>fk<>POqf2sh40}xxGZfc+t+#Eb(qHy9_3*1(U%t9t)QDnI#YAL(|ACV(>)>6WD-t!8tutHkdb^#3`HzoJG3A2@T`% zA|K@o*b!`R#(7)PWrMFn2))Ca3MR4(zaT`Zr61*kZK5NPnZwQszxh$fyv3?&4c>$q z2m=+yc0dRXRAsPDxF6sD;@rK4JGdR_``1S~o6Xi@2&aR6hcSrEp9HVRzEqVDqBn<1%hR=D4e1f^ra^A|34Cjc=Gny{F(o#MrvPYgZuTJOz(n)-F<| zj()qR;C={)N<0RRvDZ^@6ND+W*}gh-Lip(MDt!(zMSO)!j2j+*hxgzC-e3$@(O2p* zu;+gddm(cZwXTCLx*Ky4THOa*^b^F`woveIeCK^0aR|TJ00000NkvXXu0mjfA#WC6 diff --git a/awx/ui/client/lib/select2/select2_locale_ar.js b/awx/ui/client/lib/select2/select2_locale_ar.js deleted file mode 100644 index f9fbaa1698..0000000000 --- a/awx/ui/client/lib/select2/select2_locale_ar.js +++ /dev/null @@ -1,19 +0,0 @@ -/** - * Select2 Arabic translation. - * - * Author: Adel KEDJOUR - */ -(function ($) { - "use strict"; - - $.fn.select2.locales['ar'] = { - formatNoMatches: function () { return "لم يتم العثور على مطابقات"; }, - formatInputTooShort: function (input, min) { var n = min - input.length; if (n == 1){ return "الرجاء إدخال حرف واحد على الأكثر"; } return n == 2 ? "الرجاء إدخال حرفين على الأكثر" : "الرجاء إدخال " + n + " على الأكثر"; }, - formatInputTooLong: function (input, max) { var n = input.length - max; if (n == 1){ return "الرجاء إدخال حرف واحد على الأقل"; } return n == 2 ? "الرجاء إدخال حرفين على الأقل" : "الرجاء إدخال " + n + " على الأقل "; }, - formatSelectionTooBig: function (limit) { if (n == 1){ return "يمكنك أن تختار إختيار واحد فقط"; } return n == 2 ? "يمكنك أن تختار إختيارين فقط" : "يمكنك أن تختار " + n + " إختيارات فقط"; }, - formatLoadMore: function (pageNumber) { return "تحميل المزيد من النتائج…"; }, - formatSearching: function () { return "البحث…"; } - }; - - $.extend($.fn.select2.defaults, $.fn.select2.locales['ar']); -})(jQuery); diff --git a/awx/ui/client/lib/select2/select2_locale_az.js b/awx/ui/client/lib/select2/select2_locale_az.js deleted file mode 100644 index 19fd95b7a5..0000000000 --- a/awx/ui/client/lib/select2/select2_locale_az.js +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Select2 Azerbaijani translation. - * - * Author: Farhad Safarov - */ -(function ($) { - "use strict"; - - $.fn.select2.locales['az'] = { - formatMatches: function (matches) { return matches + " nəticə mövcuddur, hərəkət etdirmək üçün yuxarı və aşağı düymələrindən istifadə edin."; }, - formatNoMatches: function () { return "Nəticə tapılmadı"; }, - formatInputTooShort: function (input, min) { var n = min - input.length; return n + " simvol daxil edin"; }, - formatInputTooLong: function (input, max) { var n = input.length - max; return n + " simvol silin"; }, - formatSelectionTooBig: function (limit) { return "Sadəcə " + limit + " element seçə bilərsiniz"; }, - formatLoadMore: function (pageNumber) { return "Daha çox nəticə yüklənir…"; }, - formatSearching: function () { return "Axtarılır…"; } - }; - - $.extend($.fn.select2.defaults, $.fn.select2.locales['az']); -})(jQuery); diff --git a/awx/ui/client/lib/select2/select2_locale_bg.js b/awx/ui/client/lib/select2/select2_locale_bg.js deleted file mode 100644 index 3283d0ae5d..0000000000 --- a/awx/ui/client/lib/select2/select2_locale_bg.js +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Select2 Bulgarian translation. - * - * @author Lubomir Vikev - * @author Uriy Efremochkin - */ -(function ($) { - "use strict"; - - $.fn.select2.locales['bg'] = { - formatNoMatches: function () { return "Няма намерени съвпадения"; }, - formatInputTooShort: function (input, min) { var n = min - input.length; return "Моля въведете още " + n + " символ" + (n > 1 ? "а" : ""); }, - formatInputTooLong: function (input, max) { var n = input.length - max; return "Моля въведете с " + n + " по-малко символ" + (n > 1 ? "а" : ""); }, - formatSelectionTooBig: function (limit) { return "Можете да направите до " + limit + (limit > 1 ? " избора" : " избор"); }, - formatLoadMore: function (pageNumber) { return "Зареждат се още…"; }, - formatSearching: function () { return "Търсене…"; } - }; - - $.extend($.fn.select2.defaults, $.fn.select2.locales['bg']); -})(jQuery); diff --git a/awx/ui/client/lib/select2/select2_locale_ca.js b/awx/ui/client/lib/select2/select2_locale_ca.js deleted file mode 100644 index dbea39e930..0000000000 --- a/awx/ui/client/lib/select2/select2_locale_ca.js +++ /dev/null @@ -1,19 +0,0 @@ -/** - * Select2 Catalan translation. - * - * Author: David Planella - */ -(function ($) { - "use strict"; - - $.fn.select2.locales['ca'] = { - formatNoMatches: function () { return "No s'ha trobat cap coincidència"; }, - formatInputTooShort: function (input, min) { var n = min - input.length; return "Introduïu " + n + " caràcter" + (n == 1 ? "" : "s") + " més"; }, - formatInputTooLong: function (input, max) { var n = input.length - max; return "Introduïu " + n + " caràcter" + (n == 1? "" : "s") + "menys"; }, - formatSelectionTooBig: function (limit) { return "Només podeu seleccionar " + limit + " element" + (limit == 1 ? "" : "s"); }, - formatLoadMore: function (pageNumber) { return "S'estan carregant més resultats…"; }, - formatSearching: function () { return "S'està cercant…"; } - }; - - $.extend($.fn.select2.defaults, $.fn.select2.locales['ca']); -})(jQuery); diff --git a/awx/ui/client/lib/select2/select2_locale_cs.js b/awx/ui/client/lib/select2/select2_locale_cs.js deleted file mode 100644 index ef12185648..0000000000 --- a/awx/ui/client/lib/select2/select2_locale_cs.js +++ /dev/null @@ -1,51 +0,0 @@ -/** - * Select2 Czech translation. - * - * Author: Michal Marek - * Author - sklonovani: David Vallner - */ -(function ($) { - "use strict"; - // use text for the numbers 2 through 4 - var smallNumbers = { - 2: function(masc) { return (masc ? "dva" : "dvě"); }, - 3: function() { return "tři"; }, - 4: function() { return "čtyři"; } - } - $.fn.select2.locales['cs'] = { - formatNoMatches: function () { return "Nenalezeny žádné položky"; }, - formatInputTooShort: function (input, min) { - var n = min - input.length; - if (n == 1) { - return "Prosím zadejte ještě jeden znak"; - } else if (n <= 4) { - return "Prosím zadejte ještě další "+smallNumbers[n](true)+" znaky"; - } else { - return "Prosím zadejte ještě dalších "+n+" znaků"; - } - }, - formatInputTooLong: function (input, max) { - var n = input.length - max; - if (n == 1) { - return "Prosím zadejte o jeden znak méně"; - } else if (n <= 4) { - return "Prosím zadejte o "+smallNumbers[n](true)+" znaky méně"; - } else { - return "Prosím zadejte o "+n+" znaků méně"; - } - }, - formatSelectionTooBig: function (limit) { - if (limit == 1) { - return "Můžete zvolit jen jednu položku"; - } else if (limit <= 4) { - return "Můžete zvolit maximálně "+smallNumbers[limit](false)+" položky"; - } else { - return "Můžete zvolit maximálně "+limit+" položek"; - } - }, - formatLoadMore: function (pageNumber) { return "Načítají se další výsledky…"; }, - formatSearching: function () { return "Vyhledávání…"; } - }; - - $.extend($.fn.select2.defaults, $.fn.select2.locales['cs']); -})(jQuery); diff --git a/awx/ui/client/lib/select2/select2_locale_da.js b/awx/ui/client/lib/select2/select2_locale_da.js deleted file mode 100644 index 702238b9a0..0000000000 --- a/awx/ui/client/lib/select2/select2_locale_da.js +++ /dev/null @@ -1,19 +0,0 @@ -/** - * Select2 Danish translation. - * - * Author: Anders Jenbo - */ -(function ($) { - "use strict"; - - $.fn.select2.locales['da'] = { - formatNoMatches: function () { return "Ingen resultater fundet"; }, - formatInputTooShort: function (input, min) { var n = min - input.length; return "Angiv venligst " + n + " tegn mere"; }, - formatInputTooLong: function (input, max) { var n = input.length - max; return "Angiv venligst " + n + " tegn mindre"; }, - formatSelectionTooBig: function (limit) { return "Du kan kun vælge " + limit + " emne" + (limit === 1 ? "" : "r"); }, - formatLoadMore: function (pageNumber) { return "Indlæser flere resultater…"; }, - formatSearching: function () { return "Søger…"; } - }; - - $.extend($.fn.select2.defaults, $.fn.select2.locales['da']); -})(jQuery); diff --git a/awx/ui/client/lib/select2/select2_locale_de.js b/awx/ui/client/lib/select2/select2_locale_de.js deleted file mode 100644 index e27541720c..0000000000 --- a/awx/ui/client/lib/select2/select2_locale_de.js +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Select2 German translation - */ -(function ($) { - "use strict"; - - $.fn.select2.locales['de'] = { - formatNoMatches: function () { return "Keine Übereinstimmungen gefunden"; }, - formatInputTooShort: function (input, min) { var n = min - input.length; return "Bitte " + n + " Zeichen mehr eingeben"; }, - formatInputTooLong: function (input, max) { var n = input.length - max; return "Bitte " + n + " Zeichen weniger eingeben"; }, - formatSelectionTooBig: function (limit) { return "Sie können nur " + limit + " Eintr" + (limit === 1 ? "ag" : "äge") + " auswählen"; }, - formatLoadMore: function (pageNumber) { return "Lade mehr Ergebnisse…"; }, - formatSearching: function () { return "Suche…"; }, - formatMatches: function (matches) { return matches + " Ergebnis " + (matches > 1 ? "se" : "") + " verfügbar, zum Navigieren die Hoch-/Runter-Pfeiltasten verwenden."; } - }; - - $.extend($.fn.select2.defaults, $.fn.select2.locales['de']); -})(jQuery); \ No newline at end of file diff --git a/awx/ui/client/lib/select2/select2_locale_el.js b/awx/ui/client/lib/select2/select2_locale_el.js deleted file mode 100644 index d17459e1df..0000000000 --- a/awx/ui/client/lib/select2/select2_locale_el.js +++ /dev/null @@ -1,19 +0,0 @@ -/** - * Select2 Greek translation. - * - * @author Uriy Efremochkin - */ -(function ($) { - "use strict"; - - $.fn.select2.locales['el'] = { - formatNoMatches: function () { return "Δεν βρέθηκαν αποτελέσματα"; }, - formatInputTooShort: function (input, min) { var n = min - input.length; return "Παρακαλούμε εισάγετε " + n + " περισσότερο" + (n > 1 ? "υς" : "") + " χαρακτήρ" + (n > 1 ? "ες" : "α"); }, - formatInputTooLong: function (input, max) { var n = input.length - max; return "Παρακαλούμε διαγράψτε " + n + " χαρακτήρ" + (n > 1 ? "ες" : "α"); }, - formatSelectionTooBig: function (limit) { return "Μπορείτε να επιλέξετε μόνο " + limit + " αντικείμεν" + (limit > 1 ? "α" : "ο"); }, - formatLoadMore: function (pageNumber) { return "Φόρτωση περισσότερων…"; }, - formatSearching: function () { return "Αναζήτηση…"; } - }; - - $.extend($.fn.select2.defaults, $.fn.select2.locales['el']); -})(jQuery); \ No newline at end of file diff --git a/awx/ui/client/lib/select2/select2_locale_en.js.template b/awx/ui/client/lib/select2/select2_locale_en.js.template deleted file mode 100644 index f758b11007..0000000000 --- a/awx/ui/client/lib/select2/select2_locale_en.js.template +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Select2 translation. - * - * Author: Your Name - */ -(function ($) { - "use strict"; - - $.fn.select2.locales['en'] = { - formatMatches: function (matches) { if (matches === 1) { return "One result is available, press enter to select it."; } return matches + " results are available, use up and down arrow keys to navigate."; }, - formatNoMatches: function () { return "No matches found"; }, - formatInputTooShort: function (input, min) { var n = min - input.length; return "Please enter " + n + " or more character" + (n == 1 ? "" : "s"); }, - formatInputTooLong: function (input, max) { var n = input.length - max; return "Please delete " + n + " character" + (n == 1 ? "" : "s"); }, - formatSelectionTooBig: function (limit) { return "You can only select " + limit + " item" + (limit == 1 ? "" : "s"); }, - formatLoadMore: function (pageNumber) { return "Loading more results…"; }, - formatSearching: function () { return "Searching…"; } - }; - - $.extend($.fn.select2.defaults, $.fn.select2.locales['en']); -})(jQuery); diff --git a/awx/ui/client/lib/select2/select2_locale_es.js b/awx/ui/client/lib/select2/select2_locale_es.js deleted file mode 100644 index b506fbcd33..0000000000 --- a/awx/ui/client/lib/select2/select2_locale_es.js +++ /dev/null @@ -1,17 +0,0 @@ -/** - * Select2 Spanish translation - */ -(function ($) { - "use strict"; - - $.fn.select2.locales['es'] = { - formatNoMatches: function () { return "No se encontraron resultados"; }, - formatInputTooShort: function (input, min) { var n = min - input.length; return "Por favor, introduzca " + n + " car" + (n == 1? "ácter" : "acteres"); }, - formatInputTooLong: function (input, max) { var n = input.length - max; return "Por favor, elimine " + n + " car" + (n == 1? "ácter" : "acteres"); }, - formatSelectionTooBig: function (limit) { return "Sólo puede seleccionar " + limit + " elemento" + (limit == 1 ? "" : "s"); }, - formatLoadMore: function (pageNumber) { return "Cargando más resultados…"; }, - formatSearching: function () { return "Buscando…"; } - }; - - $.extend($.fn.select2.defaults, $.fn.select2.locales['es']); -})(jQuery); diff --git a/awx/ui/client/lib/select2/select2_locale_et.js b/awx/ui/client/lib/select2/select2_locale_et.js deleted file mode 100644 index 4d69f55e3f..0000000000 --- a/awx/ui/client/lib/select2/select2_locale_et.js +++ /dev/null @@ -1,19 +0,0 @@ -/** - * Select2 Estonian translation. - * - * Author: Kuldar Kalvik - */ -(function ($) { - "use strict"; - - $.fn.select2.locales['et'] = { - formatNoMatches: function () { return "Tulemused puuduvad"; }, - formatInputTooShort: function (input, min) { var n = min - input.length; return "Sisesta " + n + " täht" + (n == 1 ? "" : "e") + " rohkem"; }, - formatInputTooLong: function (input, max) { var n = input.length - max; return "Sisesta " + n + " täht" + (n == 1? "" : "e") + " vähem"; }, - formatSelectionTooBig: function (limit) { return "Saad vaid " + limit + " tulemus" + (limit == 1 ? "e" : "t") + " valida"; }, - formatLoadMore: function (pageNumber) { return "Laen tulemusi.."; }, - formatSearching: function () { return "Otsin.."; } - }; - - $.extend($.fn.select2.defaults, $.fn.select2.locales['et']); -})(jQuery); diff --git a/awx/ui/client/lib/select2/select2_locale_eu.js b/awx/ui/client/lib/select2/select2_locale_eu.js deleted file mode 100644 index 67ae8d05ae..0000000000 --- a/awx/ui/client/lib/select2/select2_locale_eu.js +++ /dev/null @@ -1,45 +0,0 @@ -/** - * Select2 Basque translation. - * - * Author: Julen Ruiz Aizpuru - */ -(function ($) { - "use strict"; - - $.fn.select2.locales['eu'] = { - formatNoMatches: function () { - return "Ez da bat datorrenik aurkitu"; - }, - formatInputTooShort: function (input, min) { - var n = min - input.length; - if (n === 1) { - return "Idatzi karaktere bat gehiago"; - } else { - return "Idatzi " + n + " karaktere gehiago"; - } - }, - formatInputTooLong: function (input, max) { - var n = input.length - max; - if (n === 1) { - return "Idatzi karaktere bat gutxiago"; - } else { - return "Idatzi " + n + " karaktere gutxiago"; - } - }, - formatSelectionTooBig: function (limit) { - if (limit === 1 ) { - return "Elementu bakarra hauta dezakezu"; - } else { - return limit + " elementu hauta ditzakezu soilik"; - } - }, - formatLoadMore: function (pageNumber) { - return "Emaitza gehiago kargatzen…"; - }, - formatSearching: function () { - return "Bilatzen…"; - } - }; - - $.extend($.fn.select2.defaults, $.fn.select2.locales['eu']); -})(jQuery); diff --git a/awx/ui/client/lib/select2/select2_locale_fa.js b/awx/ui/client/lib/select2/select2_locale_fa.js deleted file mode 100644 index b3ffd8b7da..0000000000 --- a/awx/ui/client/lib/select2/select2_locale_fa.js +++ /dev/null @@ -1,21 +0,0 @@ -/** - * Select2 Persian translation. - * - * Author: Ali Choopan - * Author: Ebrahim Byagowi - */ -(function ($) { - "use strict"; - - $.fn.select2.locales['fa'] = { - formatMatches: function (matches) { return matches + " نتیجه موجود است، کلیدهای جهت بالا و پایین را برای گشتن استفاده کنید."; }, - formatNoMatches: function () { return "نتیجه‌ای یافت نشد."; }, - formatInputTooShort: function (input, min) { var n = min - input.length; return "لطفاً " + n + " نویسه بیشتر وارد نمایید"; }, - formatInputTooLong: function (input, max) { var n = input.length - max; return "لطفاً " + n + " نویسه را حذف کنید."; }, - formatSelectionTooBig: function (limit) { return "شما فقط می‌توانید " + limit + " مورد را انتخاب کنید"; }, - formatLoadMore: function (pageNumber) { return "در حال بارگیری موارد بیشتر…"; }, - formatSearching: function () { return "در حال جستجو…"; } - }; - - $.extend($.fn.select2.defaults, $.fn.select2.locales['fa']); -})(jQuery); diff --git a/awx/ui/client/lib/select2/select2_locale_fi.js b/awx/ui/client/lib/select2/select2_locale_fi.js deleted file mode 100644 index 6487fbdad3..0000000000 --- a/awx/ui/client/lib/select2/select2_locale_fi.js +++ /dev/null @@ -1,30 +0,0 @@ -/** - * Select2 Finnish translation - */ -(function ($) { - "use strict"; - $.fn.select2.locales['fi'] = { - formatNoMatches: function () { - return "Ei tuloksia"; - }, - formatInputTooShort: function (input, min) { - var n = min - input.length; - return "Ole hyvä ja anna " + n + " merkkiä lisää"; - }, - formatInputTooLong: function (input, max) { - var n = input.length - max; - return "Ole hyvä ja anna " + n + " merkkiä vähemmän"; - }, - formatSelectionTooBig: function (limit) { - return "Voit valita ainoastaan " + limit + " kpl"; - }, - formatLoadMore: function (pageNumber) { - return "Ladataan lisää tuloksia…"; - }, - formatSearching: function () { - return "Etsitään…"; - } - }; - - $.extend($.fn.select2.defaults, $.fn.select2.locales['fi']); -})(jQuery); diff --git a/awx/ui/client/lib/select2/select2_locale_fr.js b/awx/ui/client/lib/select2/select2_locale_fr.js deleted file mode 100644 index d5485d6be7..0000000000 --- a/awx/ui/client/lib/select2/select2_locale_fr.js +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Select2 French translation - */ -(function ($) { - "use strict"; - - $.fn.select2.locales['fr'] = { - formatMatches: function (matches) { return matches + " résultats sont disponibles, utilisez les flèches haut et bas pour naviguer."; }, - formatNoMatches: function () { return "Aucun résultat trouvé"; }, - formatInputTooShort: function (input, min) { var n = min - input.length; return "Saisissez " + n + " caractère" + (n == 1? "" : "s") + " supplémentaire" + (n == 1? "" : "s") ; }, - formatInputTooLong: function (input, max) { var n = input.length - max; return "Supprimez " + n + " caractère" + (n == 1? "" : "s"); }, - formatSelectionTooBig: function (limit) { return "Vous pouvez seulement sélectionner " + limit + " élément" + (limit == 1 ? "" : "s"); }, - formatLoadMore: function (pageNumber) { return "Chargement de résultats supplémentaires…"; }, - formatSearching: function () { return "Recherche en cours…"; } - }; - - $.extend($.fn.select2.defaults, $.fn.select2.locales['fr']); -})(jQuery); diff --git a/awx/ui/client/lib/select2/select2_locale_gl.js b/awx/ui/client/lib/select2/select2_locale_gl.js deleted file mode 100644 index 9335167da9..0000000000 --- a/awx/ui/client/lib/select2/select2_locale_gl.js +++ /dev/null @@ -1,45 +0,0 @@ -/** - * Select2 Galician translation - * - * Author: Leandro Regueiro - */ -(function ($) { - "use strict"; - - $.fn.select2.locales['gl'] = { - formatNoMatches: function () { - return "Non se atoparon resultados"; - }, - formatInputTooShort: function (input, min) { - var n = min - input.length; - if (n === 1) { - return "Engada un carácter"; - } else { - return "Engada " + n + " caracteres"; - } - }, - formatInputTooLong: function (input, max) { - var n = input.length - max; - if (n === 1) { - return "Elimine un carácter"; - } else { - return "Elimine " + n + " caracteres"; - } - }, - formatSelectionTooBig: function (limit) { - if (limit === 1 ) { - return "Só pode seleccionar un elemento"; - } else { - return "Só pode seleccionar " + limit + " elementos"; - } - }, - formatLoadMore: function (pageNumber) { - return "Cargando máis resultados…"; - }, - formatSearching: function () { - return "Buscando…"; - } - }; - - $.extend($.fn.select2.defaults, $.fn.select2.locales['gl']); -})(jQuery); diff --git a/awx/ui/client/lib/select2/select2_locale_he.js b/awx/ui/client/lib/select2/select2_locale_he.js deleted file mode 100644 index 789dcdcaaf..0000000000 --- a/awx/ui/client/lib/select2/select2_locale_he.js +++ /dev/null @@ -1,19 +0,0 @@ -/** -* Select2 Hebrew translation. -* -* Author: Yakir Sitbon -*/ -(function ($) { - "use strict"; - - $.fn.select2.locales['he'] = { - formatNoMatches: function () { return "לא נמצאו התאמות"; }, - formatInputTooShort: function (input, min) { var n = min - input.length; return "נא להזין עוד " + n + " תווים נוספים"; }, - formatInputTooLong: function (input, max) { var n = input.length - max; return "נא להזין פחות " + n + " תווים"; }, - formatSelectionTooBig: function (limit) { return "ניתן לבחור " + limit + " פריטים"; }, - formatLoadMore: function (pageNumber) { return "טוען תוצאות נוספות…"; }, - formatSearching: function () { return "מחפש…"; } - }; - - $.extend($.fn.select2.defaults, $.fn.select2.locales['he']); -})(jQuery); diff --git a/awx/ui/client/lib/select2/select2_locale_hr.js b/awx/ui/client/lib/select2/select2_locale_hr.js deleted file mode 100644 index ce8051c788..0000000000 --- a/awx/ui/client/lib/select2/select2_locale_hr.js +++ /dev/null @@ -1,24 +0,0 @@ -/** - * Select2 Croatian translation. - * - * @author Edi Modrić - * @author Uriy Efremochkin - */ -(function ($) { - "use strict"; - - $.fn.select2.locales['hr'] = { - formatNoMatches: function () { return "Nema rezultata"; }, - formatInputTooShort: function (input, min) { return "Unesite još" + character(min - input.length); }, - formatInputTooLong: function (input, max) { return "Unesite" + character(input.length - max) + " manje"; }, - formatSelectionTooBig: function (limit) { return "Maksimalan broj odabranih stavki je " + limit; }, - formatLoadMore: function (pageNumber) { return "Učitavanje rezultata…"; }, - formatSearching: function () { return "Pretraga…"; } - }; - - $.extend($.fn.select2.defaults, $.fn.select2.locales['hr']); - - function character (n) { - return " " + n + " znak" + (n%10 < 5 && n%10 > 0 && (n%100 < 5 || n%100 > 19) ? n%10 > 1 ? "a" : "" : "ova"); - } -})(jQuery); diff --git a/awx/ui/client/lib/select2/select2_locale_hu.js b/awx/ui/client/lib/select2/select2_locale_hu.js deleted file mode 100644 index f431f24636..0000000000 --- a/awx/ui/client/lib/select2/select2_locale_hu.js +++ /dev/null @@ -1,17 +0,0 @@ -/** - * Select2 Hungarian translation - */ -(function ($) { - "use strict"; - - $.fn.select2.locales['hu'] = { - formatNoMatches: function () { return "Nincs találat."; }, - formatInputTooShort: function (input, min) { var n = min - input.length; return "Túl rövid. Még " + n + " karakter hiányzik."; }, - formatInputTooLong: function (input, max) { var n = input.length - max; return "Túl hosszú. " + n + " karakterrel több, mint kellene."; }, - formatSelectionTooBig: function (limit) { return "Csak " + limit + " elemet lehet kiválasztani."; }, - formatLoadMore: function (pageNumber) { return "Töltés…"; }, - formatSearching: function () { return "Keresés…"; } - }; - - $.extend($.fn.select2.defaults, $.fn.select2.locales['hu']); -})(jQuery); diff --git a/awx/ui/client/lib/select2/select2_locale_id.js b/awx/ui/client/lib/select2/select2_locale_id.js deleted file mode 100644 index e9c1fd9b97..0000000000 --- a/awx/ui/client/lib/select2/select2_locale_id.js +++ /dev/null @@ -1,19 +0,0 @@ -/** - * Select2 Indonesian translation. - * - * Author: Ibrahim Yusuf - */ -(function ($) { - "use strict"; - - $.fn.select2.locales['id'] = { - formatNoMatches: function () { return "Tidak ada data yang sesuai"; }, - formatInputTooShort: function (input, min) { var n = min - input.length; return "Masukkan " + n + " huruf lagi" + (n == 1 ? "" : "s"); }, - formatInputTooLong: function (input, max) { var n = input.length - max; return "Hapus " + n + " huruf" + (n == 1 ? "" : "s"); }, - formatSelectionTooBig: function (limit) { return "Anda hanya dapat memilih " + limit + " pilihan" + (limit == 1 ? "" : "s"); }, - formatLoadMore: function (pageNumber) { return "Mengambil data…"; }, - formatSearching: function () { return "Mencari…"; } - }; - - $.extend($.fn.select2.defaults, $.fn.select2.locales['id']); -})(jQuery); diff --git a/awx/ui/client/lib/select2/select2_locale_is.js b/awx/ui/client/lib/select2/select2_locale_is.js deleted file mode 100644 index 273f33de8c..0000000000 --- a/awx/ui/client/lib/select2/select2_locale_is.js +++ /dev/null @@ -1,17 +0,0 @@ -/** - * Select2 Icelandic translation. - */ -(function ($) { - "use strict"; - - $.fn.select2.locales['is'] = { - formatNoMatches: function () { return "Ekkert fannst"; }, - formatInputTooShort: function (input, min) { var n = min - input.length; return "Vinsamlegast skrifið " + n + " staf" + (n > 1 ? "i" : "") + " í viðbót"; }, - formatInputTooLong: function (input, max) { var n = input.length - max; return "Vinsamlegast styttið texta um " + n + " staf" + (n > 1 ? "i" : ""); }, - formatSelectionTooBig: function (limit) { return "Þú getur aðeins valið " + limit + " atriði"; }, - formatLoadMore: function (pageNumber) { return "Sæki fleiri niðurstöður…"; }, - formatSearching: function () { return "Leita…"; } - }; - - $.extend($.fn.select2.defaults, $.fn.select2.locales['is']); -})(jQuery); diff --git a/awx/ui/client/lib/select2/select2_locale_it.js b/awx/ui/client/lib/select2/select2_locale_it.js deleted file mode 100644 index 6e2b8e2370..0000000000 --- a/awx/ui/client/lib/select2/select2_locale_it.js +++ /dev/null @@ -1,17 +0,0 @@ -/** - * Select2 Italian translation - */ -(function ($) { - "use strict"; - - $.fn.select2.locales['it'] = { - formatNoMatches: function () { return "Nessuna corrispondenza trovata"; }, - formatInputTooShort: function (input, min) { var n = min - input.length; return "Inserisci ancora " + n + " caratter" + (n == 1? "e" : "i"); }, - formatInputTooLong: function (input, max) { var n = input.length - max; return "Inserisci " + n + " caratter" + (n == 1? "e" : "i") + " in meno"; }, - formatSelectionTooBig: function (limit) { return "Puoi selezionare solo " + limit + " element" + (limit == 1 ? "o" : "i"); }, - formatLoadMore: function (pageNumber) { return "Caricamento in corso…"; }, - formatSearching: function () { return "Ricerca…"; } - }; - - $.extend($.fn.select2.defaults, $.fn.select2.locales['it']); -})(jQuery); \ No newline at end of file diff --git a/awx/ui/client/lib/select2/select2_locale_ja.js b/awx/ui/client/lib/select2/select2_locale_ja.js deleted file mode 100644 index 7dbd8d7ee8..0000000000 --- a/awx/ui/client/lib/select2/select2_locale_ja.js +++ /dev/null @@ -1,17 +0,0 @@ -/** - * Select2 Japanese translation. - */ -(function ($) { - "use strict"; - - $.fn.select2.locales['ja'] = { - formatNoMatches: function () { return "該当なし"; }, - formatInputTooShort: function (input, min) { var n = min - input.length; return "後" + n + "文字入れてください"; }, - formatInputTooLong: function (input, max) { var n = input.length - max; return "検索文字列が" + n + "文字長すぎます"; }, - formatSelectionTooBig: function (limit) { return "最多で" + limit + "項目までしか選択できません"; }, - formatLoadMore: function (pageNumber) { return "読込中・・・"; }, - formatSearching: function () { return "検索中・・・"; } - }; - - $.extend($.fn.select2.defaults, $.fn.select2.locales['ja']); -})(jQuery); diff --git a/awx/ui/client/lib/select2/select2_locale_ka.js b/awx/ui/client/lib/select2/select2_locale_ka.js deleted file mode 100644 index 6cbe1d8f31..0000000000 --- a/awx/ui/client/lib/select2/select2_locale_ka.js +++ /dev/null @@ -1,19 +0,0 @@ -/** - * Select2 Georgian (Kartuli) translation. - * - * Author: Dimitri Kurashvili dimakura@gmail.com - */ -(function ($) { - "use strict"; - - $.fn.select2.locales['ka'] = { - formatNoMatches: function () { return "ვერ მოიძებნა"; }, - formatInputTooShort: function (input, min) { var n = min - input.length; return "გთხოვთ შეიყვანოთ კიდევ " + n + " სიმბოლო"; }, - formatInputTooLong: function (input, max) { var n = input.length - max; return "გთხოვთ წაშალოთ " + n + " სიმბოლო"; }, - formatSelectionTooBig: function (limit) { return "თქვენ შეგიძლიათ მხოლოდ " + limit + " ჩანაწერის მონიშვნა"; }, - formatLoadMore: function (pageNumber) { return "შედეგის ჩატვირთვა…"; }, - formatSearching: function () { return "ძებნა…"; } - }; - - $.extend($.fn.select2.defaults, $.fn.select2.locales['ka']); -})(jQuery); diff --git a/awx/ui/client/lib/select2/select2_locale_ko.js b/awx/ui/client/lib/select2/select2_locale_ko.js deleted file mode 100644 index bf036e09e6..0000000000 --- a/awx/ui/client/lib/select2/select2_locale_ko.js +++ /dev/null @@ -1,19 +0,0 @@ -/** - * Select2 Korean translation. - * - * @author Swen Mun - */ -(function ($) { - "use strict"; - - $.fn.select2.locales['ko'] = { - formatNoMatches: function () { return "결과 없음"; }, - formatInputTooShort: function (input, min) { var n = min - input.length; return "너무 짧습니다. "+n+"글자 더 입력해주세요."; }, - formatInputTooLong: function (input, max) { var n = input.length - max; return "너무 깁니다. "+n+"글자 지워주세요."; }, - formatSelectionTooBig: function (limit) { return "최대 "+limit+"개까지만 선택하실 수 있습니다."; }, - formatLoadMore: function (pageNumber) { return "불러오는 중…"; }, - formatSearching: function () { return "검색 중…"; } - }; - - $.extend($.fn.select2.defaults, $.fn.select2.locales['ko']); -})(jQuery); diff --git a/awx/ui/client/lib/select2/select2_locale_lt.js b/awx/ui/client/lib/select2/select2_locale_lt.js deleted file mode 100644 index 7d7040f72f..0000000000 --- a/awx/ui/client/lib/select2/select2_locale_lt.js +++ /dev/null @@ -1,26 +0,0 @@ -/** - * Select2 Lithuanian translation. - * - * @author CRONUS Karmalakas - * @author Uriy Efremochkin - */ -(function ($) { - "use strict"; - - $.fn.select2.locales['lt'] = { - formatNoMatches: function () { return "Atitikmenų nerasta"; }, - formatInputTooShort: function (input, min) { return "Įrašykite dar" + character(min - input.length); }, - formatInputTooLong: function (input, max) { return "Pašalinkite" + character(input.length - max); }, - formatSelectionTooBig: function (limit) { - return "Jūs galite pasirinkti tik " + limit + " element" + ((limit%100 > 9 && limit%100 < 21) || limit%10 == 0 ? "ų" : limit%10 > 1 ? "us" : "ą"); - }, - formatLoadMore: function (pageNumber) { return "Kraunama daugiau rezultatų…"; }, - formatSearching: function () { return "Ieškoma…"; } - }; - - $.extend($.fn.select2.defaults, $.fn.select2.locales['lt']); - - function character (n) { - return " " + n + " simbol" + ((n%100 > 9 && n%100 < 21) || n%10 == 0 ? "ių" : n%10 > 1 ? "ius" : "į"); - } -})(jQuery); diff --git a/awx/ui/client/lib/select2/select2_locale_lv.js b/awx/ui/client/lib/select2/select2_locale_lv.js deleted file mode 100644 index 4afc5b41c8..0000000000 --- a/awx/ui/client/lib/select2/select2_locale_lv.js +++ /dev/null @@ -1,19 +0,0 @@ -/** - * Select2 Latvian translation. - * - * @author Uriy Efremochkin - */ -(function ($) { - "use strict"; - - $.fn.select2.locales['lv'] = { - formatNoMatches: function () { return "Sakritību nav"; }, - formatInputTooShort: function (input, min) { var n = min - input.length; return "Lūdzu ievadiet vēl " + n + " simbol" + (n == 11 ? "us" : n%10 == 1 ? "u" : "us"); }, - formatInputTooLong: function (input, max) { var n = input.length - max; return "Lūdzu ievadiet par " + n + " simbol" + (n == 11 ? "iem" : n%10 == 1 ? "u" : "iem") + " mazāk"; }, - formatSelectionTooBig: function (limit) { return "Jūs varat izvēlēties ne vairāk kā " + limit + " element" + (limit == 11 ? "us" : limit%10 == 1 ? "u" : "us"); }, - formatLoadMore: function (pageNumber) { return "Datu ielāde…"; }, - formatSearching: function () { return "Meklēšana…"; } - }; - - $.extend($.fn.select2.defaults, $.fn.select2.locales['lv']); -})(jQuery); diff --git a/awx/ui/client/lib/select2/select2_locale_mk.js b/awx/ui/client/lib/select2/select2_locale_mk.js deleted file mode 100644 index 8a51a9e0b3..0000000000 --- a/awx/ui/client/lib/select2/select2_locale_mk.js +++ /dev/null @@ -1,19 +0,0 @@ -/** - * Select2 Macedonian translation. - * - * Author: Marko Aleksic - */ -(function ($) { - "use strict"; - - $.fn.select2.locales['mk'] = { - formatNoMatches: function () { return "Нема пронајдено совпаѓања"; }, - formatInputTooShort: function (input, min) { var n = min - input.length; return "Ве молиме внесете уште " + n + " карактер" + (n == 1 ? "" : "и"); }, - formatInputTooLong: function (input, max) { var n = input.length - max; return "Ве молиме внесете " + n + " помалку карактер" + (n == 1? "" : "и"); }, - formatSelectionTooBig: function (limit) { return "Можете да изберете само " + limit + " ставк" + (limit == 1 ? "а" : "и"); }, - formatLoadMore: function (pageNumber) { return "Вчитување резултати…"; }, - formatSearching: function () { return "Пребарување…"; } - }; - - $.extend($.fn.select2.defaults, $.fn.select2.locales['mk']); -})(jQuery); \ No newline at end of file diff --git a/awx/ui/client/lib/select2/select2_locale_ms.js b/awx/ui/client/lib/select2/select2_locale_ms.js deleted file mode 100644 index 46588d6d72..0000000000 --- a/awx/ui/client/lib/select2/select2_locale_ms.js +++ /dev/null @@ -1,19 +0,0 @@ -/** - * Select2 Malay translation. - * - * Author: Kepoweran - */ -(function ($) { - "use strict"; - - $.fn.select2.locales['ms'] = { - formatNoMatches: function () { return "Tiada padanan yang ditemui"; }, - formatInputTooShort: function (input, min) { var n = min - input.length; return "Sila masukkan " + n + " aksara lagi"; }, - formatInputTooLong: function (input, max) { var n = input.length - max; return "Sila hapuskan " + n + " aksara"; }, - formatSelectionTooBig: function (limit) { return "Anda hanya boleh memilih " + limit + " pilihan"; }, - formatLoadMore: function (pageNumber) { return "Sedang memuatkan keputusan…"; }, - formatSearching: function () { return "Mencari…"; } - }; - - $.extend($.fn.select2.defaults, $.fn.select2.locales['ms']); -})(jQuery); diff --git a/awx/ui/client/lib/select2/select2_locale_nl.js b/awx/ui/client/lib/select2/select2_locale_nl.js deleted file mode 100644 index 985741ec20..0000000000 --- a/awx/ui/client/lib/select2/select2_locale_nl.js +++ /dev/null @@ -1,17 +0,0 @@ -/** - * Select2 Dutch translation - */ -(function ($) { - "use strict"; - - $.fn.select2.locales['nl'] = { - formatNoMatches: function () { return "Geen resultaten gevonden"; }, - formatInputTooShort: function (input, min) { var n = min - input.length; return "Vul nog " + n + " karakter" + (n == 1? "" : "s") + " in"; }, - formatInputTooLong: function (input, max) { var n = input.length - max; return "Haal " + n + " karakter" + (n == 1? "" : "s") + " weg"; }, - formatSelectionTooBig: function (limit) { return "Maximaal " + limit + " item" + (limit == 1 ? "" : "s") + " toegestaan"; }, - formatLoadMore: function (pageNumber) { return "Meer resultaten laden…"; }, - formatSearching: function () { return "Zoeken…"; } - }; - - $.extend($.fn.select2.defaults, $.fn.select2.locales['nl']); -})(jQuery); diff --git a/awx/ui/client/lib/select2/select2_locale_no.js b/awx/ui/client/lib/select2/select2_locale_no.js deleted file mode 100644 index e00408cf6a..0000000000 --- a/awx/ui/client/lib/select2/select2_locale_no.js +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Select2 Norwegian translation. - * - * Author: Torgeir Veimo - */ -(function ($) { - "use strict"; - - $.fn.select2.locales['no'] = { - formatNoMatches: function () { return "Ingen treff"; }, - formatInputTooShort: function (input, min) { var n = min - input.length; return "Vennligst skriv inn " + n + (n>1 ? " flere tegn" : " tegn til"); }, - formatInputTooLong: function (input, max) { var n = input.length - max; return "Vennligst fjern " + n + " tegn"; }, - formatSelectionTooBig: function (limit) { return "Du kan velge maks " + limit + " elementer"; }, - formatLoadMore: function (pageNumber) { return "Laster flere resultater…"; }, - formatSearching: function () { return "Søker…"; } - }; - - $.extend($.fn.select2.defaults, $.fn.select2.locales['no']); -})(jQuery); - diff --git a/awx/ui/client/lib/select2/select2_locale_pl.js b/awx/ui/client/lib/select2/select2_locale_pl.js deleted file mode 100644 index d77648ff82..0000000000 --- a/awx/ui/client/lib/select2/select2_locale_pl.js +++ /dev/null @@ -1,25 +0,0 @@ -/** - * Select2 Polish translation. - * - * @author Jan Kondratowicz - * @author Uriy Efremochkin - * @author Michał Połtyn - */ -(function ($) { - "use strict"; - - $.fn.select2.locales['pl'] = { - formatNoMatches: function () { return "Brak wyników"; }, - formatInputTooShort: function (input, min) { return "Wpisz co najmniej" + character(min - input.length, "znak", "i"); }, - formatInputTooLong: function (input, max) { return "Wpisana fraza jest za długa o" + character(input.length - max, "znak", "i"); }, - formatSelectionTooBig: function (limit) { return "Możesz zaznaczyć najwyżej" + character(limit, "element", "y"); }, - formatLoadMore: function (pageNumber) { return "Ładowanie wyników…"; }, - formatSearching: function () { return "Szukanie…"; } - }; - - $.extend($.fn.select2.defaults, $.fn.select2.locales['pl']); - - function character (n, word, pluralSuffix) { - return " " + n + " " + word + (n == 1 ? "" : n%10 < 5 && n%10 > 1 && (n%100 < 5 || n%100 > 20) ? pluralSuffix : "ów"); - } -})(jQuery); diff --git a/awx/ui/client/lib/select2/select2_locale_pt-BR.js b/awx/ui/client/lib/select2/select2_locale_pt-BR.js deleted file mode 100644 index e4088f0c77..0000000000 --- a/awx/ui/client/lib/select2/select2_locale_pt-BR.js +++ /dev/null @@ -1,17 +0,0 @@ -/** - * Select2 Brazilian Portuguese translation - */ -(function ($) { - "use strict"; - - $.fn.select2.locales['pt-BR'] = { - formatNoMatches: function () { return "Nenhum resultado encontrado"; }, - formatInputTooShort: function (input, min) { var n = min - input.length; return "Digite mais " + n + " caracter" + (n == 1? "" : "es"); }, - formatInputTooLong: function (input, max) { var n = input.length - max; return "Apague " + n + " caracter" + (n == 1? "" : "es"); }, - formatSelectionTooBig: function (limit) { return "Só é possível selecionar " + limit + " elemento" + (limit == 1 ? "" : "s"); }, - formatLoadMore: function (pageNumber) { return "Carregando mais resultados…"; }, - formatSearching: function () { return "Buscando…"; } - }; - - $.extend($.fn.select2.defaults, $.fn.select2.locales['pt-BR']); -})(jQuery); diff --git a/awx/ui/client/lib/select2/select2_locale_pt-PT.js b/awx/ui/client/lib/select2/select2_locale_pt-PT.js deleted file mode 100644 index ae55a4fc4e..0000000000 --- a/awx/ui/client/lib/select2/select2_locale_pt-PT.js +++ /dev/null @@ -1,17 +0,0 @@ -/** - * Select2 Portuguese (Portugal) translation - */ -(function ($) { - "use strict"; - - $.fn.select2.locales['pt-PT'] = { - formatNoMatches: function () { return "Nenhum resultado encontrado"; }, - formatInputTooShort: function (input, min) { var n = min - input.length; return "Introduza " + n + " car" + (n == 1 ? "ácter" : "acteres"); }, - formatInputTooLong: function (input, max) { var n = input.length - max; return "Apague " + n + " car" + (n == 1 ? "ácter" : "acteres"); }, - formatSelectionTooBig: function (limit) { return "Só é possível selecionar " + limit + " elemento" + (limit == 1 ? "" : "s"); }, - formatLoadMore: function (pageNumber) { return "A carregar mais resultados…"; }, - formatSearching: function () { return "A pesquisar…"; } - }; - - $.extend($.fn.select2.defaults, $.fn.select2.locales['pt-PT']); -})(jQuery); diff --git a/awx/ui/client/lib/select2/select2_locale_ro.js b/awx/ui/client/lib/select2/select2_locale_ro.js deleted file mode 100644 index 21b0cf1818..0000000000 --- a/awx/ui/client/lib/select2/select2_locale_ro.js +++ /dev/null @@ -1,17 +0,0 @@ -/** - * Select2 Romanian translation. - */ -(function ($) { - "use strict"; - - $.fn.select2.locales['ro'] = { - formatNoMatches: function () { return "Nu a fost găsit nimic"; }, - formatInputTooShort: function (input, min) { var n = min - input.length; return "Vă rugăm să introduceți incă " + n + " caracter" + (n == 1 ? "" : "e"); }, - formatInputTooLong: function (input, max) { var n = input.length - max; return "Vă rugăm să introduceți mai puțin de " + n + " caracter" + (n == 1? "" : "e"); }, - formatSelectionTooBig: function (limit) { return "Aveți voie să selectați cel mult " + limit + " element" + (limit == 1 ? "" : "e"); }, - formatLoadMore: function (pageNumber) { return "Se încarcă…"; }, - formatSearching: function () { return "Căutare…"; } - }; - - $.extend($.fn.select2.defaults, $.fn.select2.locales['ro']); -})(jQuery); diff --git a/awx/ui/client/lib/select2/select2_locale_rs.js b/awx/ui/client/lib/select2/select2_locale_rs.js deleted file mode 100644 index 72c16389c9..0000000000 --- a/awx/ui/client/lib/select2/select2_locale_rs.js +++ /dev/null @@ -1,19 +0,0 @@ -/** - * Select2 Serbian translation. - * - * @author Limon Monte - */ -(function ($) { - "use strict"; - - $.fn.select2.locales['rs'] = { - formatNoMatches: function () { return "Ništa nije pronađeno"; }, - formatInputTooShort: function (input, min) { var n = min - input.length; return "Ukucajte bar još " + n + " simbol" + (n % 10 == 1 && n % 100 != 11 ? "" : "a"); }, - formatInputTooLong: function (input, max) { var n = input.length - max; return "Obrišite " + n + " simbol" + (n % 10 == 1 && n % 100 != 11 ? "" : "a"); }, - formatSelectionTooBig: function (limit) { return "Možete izabrati samo " + limit + " stavk" + (limit % 10 == 1 && limit % 100 != 11 ? "u" : (limit % 10 >= 2 && limit % 10 <= 4 && (limit % 100 < 12 || limit % 100 > 14)? "e" : "i")); }, - formatLoadMore: function (pageNumber) { return "Preuzimanje još rezultata…"; }, - formatSearching: function () { return "Pretraga…"; } - }; - - $.extend($.fn.select2.defaults, $.fn.select2.locales['rs']); -})(jQuery); diff --git a/awx/ui/client/lib/select2/select2_locale_ru.js b/awx/ui/client/lib/select2/select2_locale_ru.js deleted file mode 100644 index 2a6c7702c4..0000000000 --- a/awx/ui/client/lib/select2/select2_locale_ru.js +++ /dev/null @@ -1,23 +0,0 @@ -/** - * Select2 Russian translation. - * - * @author Uriy Efremochkin - */ -(function ($) { - "use strict"; - - $.fn.select2.locales['ru'] = { - formatNoMatches: function () { return "Совпадений не найдено"; }, - formatInputTooShort: function (input, min) { return "Пожалуйста, введите еще хотя бы" + character(min - input.length); }, - formatInputTooLong: function (input, max) { return "Пожалуйста, введите на" + character(input.length - max) + " меньше"; }, - formatSelectionTooBig: function (limit) { return "Вы можете выбрать не более " + limit + " элемент" + (limit%10 == 1 && limit%100 != 11 ? "а" : "ов"); }, - formatLoadMore: function (pageNumber) { return "Загрузка данных…"; }, - formatSearching: function () { return "Поиск…"; } - }; - - $.extend($.fn.select2.defaults, $.fn.select2.locales['ru']); - - function character (n) { - return " " + n + " символ" + (n%10 < 5 && n%10 > 0 && (n%100 < 5 || n%100 > 20) ? n%10 > 1 ? "a" : "" : "ов"); - } -})(jQuery); diff --git a/awx/ui/client/lib/select2/select2_locale_sk.js b/awx/ui/client/lib/select2/select2_locale_sk.js deleted file mode 100644 index 0b49850d8e..0000000000 --- a/awx/ui/client/lib/select2/select2_locale_sk.js +++ /dev/null @@ -1,50 +0,0 @@ -/** - * Select2 Slovak translation. - * - * Author: David Vallner - */ -(function ($) { - "use strict"; - // use text for the numbers 2 through 4 - var smallNumbers = { - 2: function(masc) { return (masc ? "dva" : "dve"); }, - 3: function() { return "tri"; }, - 4: function() { return "štyri"; } - }; - $.fn.select2.locales['sk'] = { - formatNoMatches: function () { return "Nenašli sa žiadne položky"; }, - formatInputTooShort: function (input, min) { - var n = min - input.length; - if (n == 1) { - return "Prosím, zadajte ešte jeden znak"; - } else if (n <= 4) { - return "Prosím, zadajte ešte ďalšie "+smallNumbers[n](true)+" znaky"; - } else { - return "Prosím, zadajte ešte ďalších "+n+" znakov"; - } - }, - formatInputTooLong: function (input, max) { - var n = input.length - max; - if (n == 1) { - return "Prosím, zadajte o jeden znak menej"; - } else if (n <= 4) { - return "Prosím, zadajte o "+smallNumbers[n](true)+" znaky menej"; - } else { - return "Prosím, zadajte o "+n+" znakov menej"; - } - }, - formatSelectionTooBig: function (limit) { - if (limit == 1) { - return "Môžete zvoliť len jednu položku"; - } else if (limit <= 4) { - return "Môžete zvoliť najviac "+smallNumbers[limit](false)+" položky"; - } else { - return "Môžete zvoliť najviac "+limit+" položiek"; - } - }, - formatLoadMore: function (pageNumber) { return "Načítavajú sa ďalšie výsledky…"; }, - formatSearching: function () { return "Vyhľadávanie…"; } - }; - - $.extend($.fn.select2.defaults, $.fn.select2.locales['sk']); -})(jQuery); diff --git a/awx/ui/client/lib/select2/select2_locale_sv.js b/awx/ui/client/lib/select2/select2_locale_sv.js deleted file mode 100644 index 96f8c0a881..0000000000 --- a/awx/ui/client/lib/select2/select2_locale_sv.js +++ /dev/null @@ -1,19 +0,0 @@ -/** - * Select2 Swedish translation. - * - * Author: Jens Rantil - */ -(function ($) { - "use strict"; - - $.fn.select2.locales['sv'] = { - formatNoMatches: function () { return "Inga träffar"; }, - formatInputTooShort: function (input, min) { var n = min - input.length; return "Var god skriv in " + n + (n>1 ? " till tecken" : " tecken till"); }, - formatInputTooLong: function (input, max) { var n = input.length - max; return "Var god sudda ut " + n + " tecken"; }, - formatSelectionTooBig: function (limit) { return "Du kan max välja " + limit + " element"; }, - formatLoadMore: function (pageNumber) { return "Laddar fler resultat…"; }, - formatSearching: function () { return "Söker…"; } - }; - - $.extend($.fn.select2.defaults, $.fn.select2.locales['sv']); -})(jQuery); diff --git a/awx/ui/client/lib/select2/select2_locale_th.js b/awx/ui/client/lib/select2/select2_locale_th.js deleted file mode 100644 index 7f3e6ef8c3..0000000000 --- a/awx/ui/client/lib/select2/select2_locale_th.js +++ /dev/null @@ -1,19 +0,0 @@ -/** - * Select2 Thai translation. - * - * Author: Atsawin Chaowanakritsanakul - */ -(function ($) { - "use strict"; - - $.fn.select2.locales['th'] = { - formatNoMatches: function () { return "ไม่พบข้อมูล"; }, - formatInputTooShort: function (input, min) { var n = min - input.length; return "โปรดพิมพ์เพิ่มอีก " + n + " ตัวอักษร"; }, - formatInputTooLong: function (input, max) { var n = input.length - max; return "โปรดลบออก " + n + " ตัวอักษร"; }, - formatSelectionTooBig: function (limit) { return "คุณสามารถเลือกได้ไม่เกิน " + limit + " รายการ"; }, - formatLoadMore: function (pageNumber) { return "กำลังค้นข้อมูลเพิ่ม…"; }, - formatSearching: function () { return "กำลังค้นข้อมูล…"; } - }; - - $.extend($.fn.select2.defaults, $.fn.select2.locales['th']); -})(jQuery); diff --git a/awx/ui/client/lib/select2/select2_locale_tr.js b/awx/ui/client/lib/select2/select2_locale_tr.js deleted file mode 100644 index 1dda95ca37..0000000000 --- a/awx/ui/client/lib/select2/select2_locale_tr.js +++ /dev/null @@ -1,19 +0,0 @@ -/** - * Select2 Turkish translation. - * - * Author: Salim KAYABAŞI - */ -(function ($) { - "use strict"; - - $.fn.select2.locales['tr'] = { - formatNoMatches: function () { return "Sonuç bulunamadı"; }, - formatInputTooShort: function (input, min) { var n = min - input.length; return "En az " + n + " karakter daha girmelisiniz"; }, - formatInputTooLong: function (input, max) { var n = input.length - max; return n + " karakter azaltmalısınız"; }, - formatSelectionTooBig: function (limit) { return "Sadece " + limit + " seçim yapabilirsiniz"; }, - formatLoadMore: function (pageNumber) { return "Daha fazla…"; }, - formatSearching: function () { return "Aranıyor…"; } - }; - - $.extend($.fn.select2.defaults, $.fn.select2.locales['tr']); -})(jQuery); diff --git a/awx/ui/client/lib/select2/select2_locale_ug-CN.js b/awx/ui/client/lib/select2/select2_locale_ug-CN.js deleted file mode 100644 index 579588a7ac..0000000000 --- a/awx/ui/client/lib/select2/select2_locale_ug-CN.js +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Select2 Uyghur translation - */ -(function ($) { - "use strict"; - $.fn.select2.locales['ug-CN'] = { - formatNoMatches: function () { return "ماس كېلىدىغان ئۇچۇر تېپىلمىدى"; }, - formatInputTooShort: function (input, min) { var n = min - input.length; return "يەنە " + n + " ھەرپ كىرگۈزۈڭ";}, - formatInputTooLong: function (input, max) { var n = input.length - max; return "" + n + "ھەرپ ئۆچۈرۈڭ";}, - formatSelectionTooBig: function (limit) { return "ئەڭ كۆپ بولغاندا" + limit + " تال ئۇچۇر تاللىيالايسىز"; }, - formatLoadMore: function (pageNumber) { return "ئۇچۇرلار ئوقۇلىۋاتىدۇ…"; }, - formatSearching: function () { return "ئىزدەۋاتىدۇ…"; } - }; - - $.extend($.fn.select2.defaults, $.fn.select2.locales['ug-CN']); -})(jQuery); diff --git a/awx/ui/client/lib/select2/select2_locale_uk.js b/awx/ui/client/lib/select2/select2_locale_uk.js deleted file mode 100644 index b5bd0e02d2..0000000000 --- a/awx/ui/client/lib/select2/select2_locale_uk.js +++ /dev/null @@ -1,25 +0,0 @@ -/** - * Select2 Ukrainian translation. - * - * @author bigmihail - * @author Uriy Efremochkin - */ -(function ($) { - "use strict"; - - $.fn.select2.locales['uk'] = { - formatMatches: function (matches) { return character(matches, "результат") + " знайдено, використовуйте клавіші зі стрілками вверх та вниз для навігації."; }, - formatNoMatches: function () { return "Нічого не знайдено"; }, - formatInputTooShort: function (input, min) { return "Введіть буль ласка ще " + character(min - input.length, "символ"); }, - formatInputTooLong: function (input, max) { return "Введіть буль ласка на " + character(input.length - max, "символ") + " менше"; }, - formatSelectionTooBig: function (limit) { return "Ви можете вибрати лише " + character(limit, "елемент"); }, - formatLoadMore: function (pageNumber) { return "Завантаження даних…"; }, - formatSearching: function () { return "Пошук…"; } - }; - - $.extend($.fn.select2.defaults, $.fn.select2.locales['uk']); - - function character (n, word) { - return n + " " + word + (n%10 < 5 && n%10 > 0 && (n%100 < 5 || n%100 > 19) ? n%10 > 1 ? "и" : "" : "ів"); - } -})(jQuery); diff --git a/awx/ui/client/lib/select2/select2_locale_vi.js b/awx/ui/client/lib/select2/select2_locale_vi.js deleted file mode 100644 index cc67065f97..0000000000 --- a/awx/ui/client/lib/select2/select2_locale_vi.js +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Select2 Vietnamese translation. - * - * Author: Long Nguyen - */ -(function ($) { - "use strict"; - - $.fn.select2.locales['vi'] = { - formatNoMatches: function () { return "Không tìm thấy kết quả"; }, - formatInputTooShort: function (input, min) { var n = min - input.length; return "Vui lòng nhập nhiều hơn " + n + " ký tự" + (n == 1 ? "" : "s"); }, - formatInputTooLong: function (input, max) { var n = input.length - max; return "Vui lòng nhập ít hơn " + n + " ký tự" + (n == 1? "" : "s"); }, - formatSelectionTooBig: function (limit) { return "Chỉ có thể chọn được " + limit + " tùy chọn" + (limit == 1 ? "" : "s"); }, - formatLoadMore: function (pageNumber) { return "Đang lấy thêm kết quả…"; }, - formatSearching: function () { return "Đang tìm…"; } - }; - - $.extend($.fn.select2.defaults, $.fn.select2.locales['vi']); -})(jQuery); - diff --git a/awx/ui/client/lib/select2/select2_locale_zh-CN.js b/awx/ui/client/lib/select2/select2_locale_zh-CN.js deleted file mode 100644 index e988dac1a4..0000000000 --- a/awx/ui/client/lib/select2/select2_locale_zh-CN.js +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Select2 Chinese translation - */ -(function ($) { - "use strict"; - $.fn.select2.locales['zh-CN'] = { - formatNoMatches: function () { return "没有找到匹配项"; }, - formatInputTooShort: function (input, min) { var n = min - input.length; return "请再输入" + n + "个字符";}, - formatInputTooLong: function (input, max) { var n = input.length - max; return "请删掉" + n + "个字符";}, - formatSelectionTooBig: function (limit) { return "你只能选择最多" + limit + "项"; }, - formatLoadMore: function (pageNumber) { return "加载结果中…"; }, - formatSearching: function () { return "搜索中…"; } - }; - - $.extend($.fn.select2.defaults, $.fn.select2.locales['zh-CN']); -})(jQuery); diff --git a/awx/ui/client/lib/select2/select2_locale_zh-TW.js b/awx/ui/client/lib/select2/select2_locale_zh-TW.js deleted file mode 100644 index 85dbd5afc2..0000000000 --- a/awx/ui/client/lib/select2/select2_locale_zh-TW.js +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Select2 Traditional Chinese translation - */ -(function ($) { - "use strict"; - $.fn.select2.locales['zh-TW'] = { - formatNoMatches: function () { return "沒有找到相符的項目"; }, - formatInputTooShort: function (input, min) { var n = min - input.length; return "請再輸入" + n + "個字元";}, - formatInputTooLong: function (input, max) { var n = input.length - max; return "請刪掉" + n + "個字元";}, - formatSelectionTooBig: function (limit) { return "你只能選擇最多" + limit + "項"; }, - formatLoadMore: function (pageNumber) { return "載入中…"; }, - formatSearching: function () { return "搜尋中…"; } - }; - - $.extend($.fn.select2.defaults, $.fn.select2.locales['zh-TW']); -})(jQuery); diff --git a/awx/ui/client/lib/select2/select2x2.png b/awx/ui/client/lib/select2/select2x2.png deleted file mode 100644 index 4bdd5c961d452c49dfa0789c2c7ffb82c238fc24..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 845 zcmV-T1G4;yP)upQ6WKflyv?C|ADVW!U!t`EpA+x zB)5#EjWk-_X77YJZtQo`E0SF)^1bZr%)B7Cd`*OK*r z5WG-7e-R9G9^69ksDt29&oyHqxPSt|-S>xi3%PTd+GjY+BGF|nWC(7D-sd(kxqd9~ zS@2YF5vB+>dP8+$l^{oO3-lEWiGA*QIU)Wds#9M6RZ9N zcQ4y4)xqQOxD=vwu%7cz1nY#$lT&y8HCmkWgpwQP#3dhnYj9|2aS_R}IUF_^6s#$= zTm%~>A#oM?KIg$kh=<`gJkeoHa2LrulVy$Yx+N_0R3$4I!R*0677f(FKqm`2_o4~W z0h}fQZ`lC^1A+m;fM7uI(R1`S0KtG@KrkQ}5DW+&@cTnDVIow56KciMk7a899t0bC zC1KI{TsMe5NAR%GD_5`B-@ad4k~K3SO%H z_M31|`HV?E6)u$E3c&*<*n20+V@mRCop>R5;DWuZCmjSo7p@R&OYl^@G -1) { + return this; + } + + return ret; } else { throw new Error('Invalid arguments for Select2: ' + options); } diff --git a/awx/ui/client/lib/select2/src/js/select2/compat/containerCss.js b/awx/ui/client/lib/select2/src/js/select2/compat/containerCss.js new file mode 100644 index 0000000000..a1fc83bbe4 --- /dev/null +++ b/awx/ui/client/lib/select2/src/js/select2/compat/containerCss.js @@ -0,0 +1,56 @@ +define([ + 'jquery', + './utils' +], function ($, CompatUtils) { + // No-op CSS adapter that discards all classes by default + function _containerAdapter (clazz) { + return null; + } + + function ContainerCSS () { } + + ContainerCSS.prototype.render = function (decorated) { + var $container = decorated.call(this); + + var containerCssClass = this.options.get('containerCssClass') || ''; + + if ($.isFunction(containerCssClass)) { + containerCssClass = containerCssClass(this.$element); + } + + var containerCssAdapter = this.options.get('adaptContainerCssClass'); + containerCssAdapter = containerCssAdapter || _containerAdapter; + + if (containerCssClass.indexOf(':all:') !== -1) { + containerCssClass = containerCssClass.replace(':all', ''); + + var _cssAdapter = containerCssAdapter; + + containerCssAdapter = function (clazz) { + var adapted = _cssAdapter(clazz); + + if (adapted != null) { + // Append the old one along with the adapted one + return adapted + ' ' + clazz; + } + + return clazz; + }; + } + + var containerCss = this.options.get('containerCss') || {}; + + if ($.isFunction(containerCss)) { + containerCss = containerCss(this.$element); + } + + CompatUtils.syncCssClasses($container, this.$element, containerCssAdapter); + + $container.css(containerCss); + $container.addClass(containerCssClass); + + return $container; + }; + + return ContainerCSS; +}); diff --git a/awx/ui/client/lib/select2/src/js/select2/compat/dropdownCss.js b/awx/ui/client/lib/select2/src/js/select2/compat/dropdownCss.js new file mode 100644 index 0000000000..edf38ac732 --- /dev/null +++ b/awx/ui/client/lib/select2/src/js/select2/compat/dropdownCss.js @@ -0,0 +1,56 @@ +define([ + 'jquery', + './utils' +], function ($, CompatUtils) { + // No-op CSS adapter that discards all classes by default + function _dropdownAdapter (clazz) { + return null; + } + + function DropdownCSS () { } + + DropdownCSS.prototype.render = function (decorated) { + var $dropdown = decorated.call(this); + + var dropdownCssClass = this.options.get('dropdownCssClass') || ''; + + if ($.isFunction(dropdownCssClass)) { + dropdownCssClass = dropdownCssClass(this.$element); + } + + var dropdownCssAdapter = this.options.get('adaptDropdownCssClass'); + dropdownCssAdapter = dropdownCssAdapter || _dropdownAdapter; + + if (dropdownCssClass.indexOf(':all:') !== -1) { + dropdownCssClass = dropdownCssClass.replace(':all', ''); + + var _cssAdapter = dropdownCssAdapter; + + dropdownCssAdapter = function (clazz) { + var adapted = _cssAdapter(clazz); + + if (adapted != null) { + // Append the old one along with the adapted one + return adapted + ' ' + clazz; + } + + return clazz; + }; + } + + var dropdownCss = this.options.get('dropdownCss') || {}; + + if ($.isFunction(dropdownCss)) { + dropdownCss = dropdownCss(this.$element); + } + + CompatUtils.syncCssClasses($dropdown, this.$element, dropdownCssAdapter); + + $dropdown.css(dropdownCss); + $dropdown.addClass(dropdownCssClass); + + return $dropdown; + }; + + return DropdownCSS; +}); diff --git a/awx/ui/client/lib/select2/src/js/select2/compat/inputData.js b/awx/ui/client/lib/select2/src/js/select2/compat/inputData.js index 0789d1150c..a338bf1eea 100644 --- a/awx/ui/client/lib/select2/src/js/select2/compat/inputData.js +++ b/awx/ui/client/lib/select2/src/js/select2/compat/inputData.js @@ -116,8 +116,8 @@ define([ }; InputData.prototype.addOptions = function (_, $options) { - var options = $.map($options, function (option) { - return $.data(option, 'data'); + var options = $.map($options, function ($option) { + return $.data($option[0], 'data'); }); this._currentData.push.apply(this._currentData, options); diff --git a/awx/ui/client/lib/select2/src/js/select2/compat/utils.js b/awx/ui/client/lib/select2/src/js/select2/compat/utils.js new file mode 100644 index 0000000000..5a3ea1c6e7 --- /dev/null +++ b/awx/ui/client/lib/select2/src/js/select2/compat/utils.js @@ -0,0 +1,43 @@ +define([ + 'jquery' +], function ($) { + function syncCssClasses ($dest, $src, adapter) { + var classes, replacements = [], adapted; + + classes = $.trim($dest.attr('class')); + + if (classes) { + classes = '' + classes; // for IE which returns object + + $(classes.split(/\s+/)).each(function () { + // Save all Select2 classes + if (this.indexOf('select2-') === 0) { + replacements.push(this); + } + }); + } + + classes = $.trim($src.attr('class')); + + if (classes) { + classes = '' + classes; // for IE which returns object + + $(classes.split(/\s+/)).each(function () { + // Only adapt non-Select2 classes + if (this.indexOf('select2-') !== 0) { + adapted = adapter(this); + + if (adapted != null) { + replacements.push(adapted); + } + } + }); + } + + $dest.attr('class', replacements.join(' ')); + } + + return { + syncCssClasses: syncCssClasses + }; +}); diff --git a/awx/ui/client/lib/select2/src/js/select2/core.js b/awx/ui/client/lib/select2/src/js/select2/core.js index 1ccc5600e7..6f88c2ca63 100644 --- a/awx/ui/client/lib/select2/src/js/select2/core.js +++ b/awx/ui/client/lib/select2/src/js/select2/core.js @@ -77,8 +77,9 @@ define([ }); // Hide the original select - $element.hide(); - + $element.addClass('select2-hidden-accessible'); + $element.attr('aria-hidden', 'true'); + // Synchronize any monitored attributes this._syncAttributes(); @@ -489,7 +490,8 @@ define([ this.$element.off('.select2'); this.$element.attr('tabindex', this.$element.data('old-tabindex')); - this.$element.show(); + this.$element.removeClass('select2-hidden-accessible'); + this.$element.attr('aria-hidden', 'false'); this.$element.removeData('select2'); this.dataAdapter.destroy(); diff --git a/awx/ui/client/lib/select2/src/js/select2/data/ajax.js b/awx/ui/client/lib/select2/src/js/select2/data/ajax.js index 07a53783c9..d54b5a5848 100644 --- a/awx/ui/client/lib/select2/src/js/select2/data/ajax.js +++ b/awx/ui/client/lib/select2/src/js/select2/data/ajax.js @@ -43,8 +43,12 @@ define([ var matches = []; var self = this; - if (this._request) { - this._request.abort(); + if (this._request != null) { + // JSONP requests cannot always be aborted + if ($.isFunction(this._request.abort)) { + this._request.abort(); + } + this._request = null; } diff --git a/awx/ui/client/lib/select2/src/js/select2/data/array.js b/awx/ui/client/lib/select2/src/js/select2/data/array.js index 7ac3272a78..99cd8b0956 100644 --- a/awx/ui/client/lib/select2/src/js/select2/data/array.js +++ b/awx/ui/client/lib/select2/src/js/select2/data/array.js @@ -14,7 +14,9 @@ define([ Utils.Extend(ArrayAdapter, SelectAdapter); ArrayAdapter.prototype.select = function (data) { - var $option = this.$element.find('option[value="' + data.id + '"]'); + var $option = this.$element.find('option').filter(function (i, elm) { + return elm.value == data.id.toString(); + }); if ($option.length === 0) { $option = this.option(data); @@ -33,7 +35,7 @@ define([ return self.item($(this)).id; }).get(); - var $options = $(); + var $options = []; // Filter out all items except for the one passed in the argument function onlyItem (item) { @@ -64,10 +66,10 @@ define([ if (item.children) { var $children = this.convertToOptions(item.children); - $option.append($children); + Utils.appendMany($option, $children); } - $options = $options.add($option); + $options.push($option); } return $options; diff --git a/awx/ui/client/lib/select2/src/js/select2/data/select.js b/awx/ui/client/lib/select2/src/js/select2/data/select.js index 1ecf281a3c..ab50410755 100644 --- a/awx/ui/client/lib/select2/src/js/select2/data/select.js +++ b/awx/ui/client/lib/select2/src/js/select2/data/select.js @@ -30,7 +30,9 @@ define([ SelectAdapter.prototype.select = function (data) { var self = this; - // If data.element is a DOM nose, use it instead + data.selected = true; + + // If data.element is a DOM node, use it instead if ($(data.element).is('option')) { data.element.selected = true; @@ -72,6 +74,8 @@ define([ return; } + data.selected = false; + if ($(data.element).is('option')) { data.element.selected = false; @@ -147,7 +151,7 @@ define([ }; SelectAdapter.prototype.addOptions = function ($options) { - this.$element.append($options); + Utils.appendMany(this.$element, $options); }; SelectAdapter.prototype.option = function (data) { diff --git a/awx/ui/client/lib/select2/src/js/select2/data/tags.js b/awx/ui/client/lib/select2/src/js/select2/data/tags.js index 8ca3836f1b..a9b48cc91c 100644 --- a/awx/ui/client/lib/select2/src/js/select2/data/tags.js +++ b/awx/ui/client/lib/select2/src/js/select2/data/tags.js @@ -71,7 +71,7 @@ define([ var $option = self.option(tag); $option.attr('data-select2-tag', true); - self.addOptions($option); + self.addOptions([$option]); self.insertTag(data, tag); } diff --git a/awx/ui/client/lib/select2/src/js/select2/defaults.js b/awx/ui/client/lib/select2/src/js/select2/defaults.js index 44a6029089..885feaca59 100644 --- a/awx/ui/client/lib/select2/src/js/select2/defaults.js +++ b/awx/ui/client/lib/select2/src/js/select2/defaults.js @@ -165,6 +165,19 @@ define([ ); } + if ( + options.dropdownCssClass != null || + options.dropdownCss != null || + options.adaptDropdownCssClass != null + ) { + var DropdownCSS = require(options.amdBase + 'compat/dropdownCss'); + + options.dropdownAdapter = Utils.Decorate( + options.dropdownAdapter, + DropdownCSS + ); + } + options.dropdownAdapter = Utils.Decorate( options.dropdownAdapter, AttachBody @@ -200,6 +213,19 @@ define([ ); } + if ( + options.containerCssClass != null || + options.containerCss != null || + options.adaptContainerCssClass != null + ) { + var ContainerCSS = require(options.amdBase + 'compat/containerCss'); + + options.selectionAdapter = Utils.Decorate( + options.selectionAdapter, + ContainerCSS + ); + } + options.selectionAdapter = Utils.Decorate( options.selectionAdapter, EventRelay @@ -257,7 +283,14 @@ define([ options.translations = languages; } else { - options.translations = new Translation(options.language); + var baseTranslation = Translation.loadPath( + this.defaults.amdLanguageBase + 'en' + ); + var customTranslation = new Translation(options.language); + + customTranslation.extend(baseTranslation); + + options.translations = customTranslation; } return options; @@ -323,6 +356,7 @@ define([ amdLanguageBase: './i18n/', closeOnSelect: true, debug: false, + dropdownAutoWidth: false, escapeMarkup: Utils.escapeMarkup, language: EnglishTranslation, matcher: matcher, diff --git a/awx/ui/client/lib/select2/src/js/select2/dropdown/attachBody.js b/awx/ui/client/lib/select2/src/js/select2/dropdown/attachBody.js index 704625393a..a7a38ff55f 100644 --- a/awx/ui/client/lib/select2/src/js/select2/dropdown/attachBody.js +++ b/awx/ui/client/lib/select2/src/js/select2/dropdown/attachBody.js @@ -179,9 +179,16 @@ define([ AttachBody.prototype._resizeDropdown = function () { this.$dropdownContainer.width(); - this.$dropdown.css({ + var css = { width: this.$container.outerWidth(false) + 'px' - }); + }; + + if (this.options.get('dropdownAutoWidth')) { + css.minWidth = css.width; + css.width = 'auto'; + } + + this.$dropdown.css(css); }; AttachBody.prototype._showDropdown = function (decorated) { diff --git a/awx/ui/client/lib/select2/src/js/select2/dropdown/selectOnClose.js b/awx/ui/client/lib/select2/src/js/select2/dropdown/selectOnClose.js index d8e368e09a..763d18a29a 100644 --- a/awx/ui/client/lib/select2/src/js/select2/dropdown/selectOnClose.js +++ b/awx/ui/client/lib/select2/src/js/select2/dropdown/selectOnClose.js @@ -20,7 +20,9 @@ define([ return; } - $highlightedResults.trigger('mouseup'); + this.trigger('select', { + data: $highlightedResults.data('data') + }); }; return SelectOnClose; diff --git a/awx/ui/client/lib/select2/src/js/select2/i18n/he.js b/awx/ui/client/lib/select2/src/js/select2/i18n/he.js new file mode 100644 index 0000000000..8ccc3609a0 --- /dev/null +++ b/awx/ui/client/lib/select2/src/js/select2/i18n/he.js @@ -0,0 +1,44 @@ +define(function () { + // Hebrew + return { + errorLoading: function () { + return 'התוצאות לא נטענו בהלכה'; + }, + inputTooLong: function (args) { + var overChars = args.input.length - args.maximum; + + var message = 'נא למחוק ' + overChars + ' תווים'; + + if (overChars != 1) { + message += 's'; + } + + return message; + }, + inputTooShort: function (args) { + var remainingChars = args.minimum - args.input.length; + + var message = 'נא להכניס ' + remainingChars + ' תווים או יותר'; + + return message; + }, + loadingMore: function () { + return 'טען תוצאות נוספות…'; + }, + maximumSelected: function (args) { + var message = 'באפשרותך לבחור רק ' + args.maximum + ' פריטים'; + + if (args.maximum != 1) { + message += 's'; + } + + return message; + }, + noResults: function () { + return 'לא נמצאו תוצאות'; + }, + searching: function () { + return 'מחפש…'; + } + }; +}); diff --git a/awx/ui/client/lib/select2/src/js/select2/i18n/ru.js b/awx/ui/client/lib/select2/src/js/select2/i18n/ru.js index d987722959..2ac11ec750 100644 --- a/awx/ui/client/lib/select2/src/js/select2/i18n/ru.js +++ b/awx/ui/client/lib/select2/src/js/select2/i18n/ru.js @@ -14,6 +14,9 @@ define(function () { } return { + errorLoading: function () { + return 'Невозможно загрузить результаты'; + }, inputTooLong: function (args) { var overChars = args.input.length - args.maximum; diff --git a/awx/ui/client/lib/select2/src/js/select2/options.js b/awx/ui/client/lib/select2/src/js/select2/options.js index 533cc1da11..3e48deea50 100644 --- a/awx/ui/client/lib/select2/src/js/select2/options.js +++ b/awx/ui/client/lib/select2/src/js/select2/options.js @@ -1,8 +1,9 @@ define([ + 'require', 'jquery', './defaults', './utils' -], function ($, Defaults, Utils) { +], function (require, $, Defaults, Utils) { function Options (options, $element) { this.options = options; diff --git a/awx/ui/client/lib/select2/src/js/select2/results.js b/awx/ui/client/lib/select2/src/js/select2/results.js index 64c2dc9c4d..aba02a2846 100644 --- a/awx/ui/client/lib/select2/src/js/select2/results.js +++ b/awx/ui/client/lib/select2/src/js/select2/results.js @@ -109,7 +109,8 @@ define([ // id needs to be converted to a string when comparing var id = '' + item.id; - if ($.inArray(id, selectedIds) > -1) { + if ((item.element != null && item.element.selected) || + (item.element == null && $.inArray(id, selectedIds) > -1)) { $option.attr('aria-selected', 'true'); } else { $option.attr('aria-selected', 'false'); diff --git a/awx/ui/client/lib/select2/src/js/select2/selection/allowClear.js b/awx/ui/client/lib/select2/src/js/select2/selection/allowClear.js index 709dfc77cc..3bd1fa0fbd 100644 --- a/awx/ui/client/lib/select2/src/js/select2/selection/allowClear.js +++ b/awx/ui/client/lib/select2/src/js/select2/selection/allowClear.js @@ -1,6 +1,7 @@ define([ - 'jquery' -], function ($) { + 'jquery', + '../keys' +], function ($, KEYS) { function AllowClear () { } AllowClear.prototype.bind = function (decorated, container, $container) { @@ -8,8 +9,8 @@ define([ decorated.call(this, container, $container); - if (self.placeholder == null) { - if (self.options.get('debug') && window.console && console.error) { + if (this.placeholder == null) { + if (this.options.get('debug') && window.console && console.error) { console.error( 'Select2: The `allowClear` option should be used in combination ' + 'with the `placeholder` option.' @@ -19,34 +20,59 @@ define([ this.$selection.on('mousedown', '.select2-selection__clear', function (evt) { - // Ignore the event if it is disabled - if (self.options.get('disabled')) { - return; - } - - evt.stopPropagation(); - - var data = $(this).data('data'); - - for (var d = 0; d < data.length; d++) { - var unselectData = { - data: data[d] - }; - - // Trigger the `unselect` event, so people can prevent it from being - // cleared. - self.trigger('unselect', unselectData); - - // If the event was prevented, don't clear it out. - if (unselectData.prevented) { - return; - } - } - - self.$element.val(self.placeholder.id).trigger('change'); - - self.trigger('toggle'); + self._handleClear(evt); }); + + container.on('keypress', function (evt) { + self._handleKeyboardClear(evt, container); + }); + }; + + AllowClear.prototype._handleClear = function (_, evt) { + // Ignore the event if it is disabled + if (this.options.get('disabled')) { + return; + } + + var $clear = this.$selection.find('.select2-selection__clear'); + + // Ignore the event if nothing has been selected + if ($clear.length === 0) { + return; + } + + evt.stopPropagation(); + + var data = $clear.data('data'); + + for (var d = 0; d < data.length; d++) { + var unselectData = { + data: data[d] + }; + + // Trigger the `unselect` event, so people can prevent it from being + // cleared. + this.trigger('unselect', unselectData); + + // If the event was prevented, don't clear it out. + if (unselectData.prevented) { + return; + } + } + + this.$element.val(this.placeholder.id).trigger('change'); + + this.trigger('toggle'); + }; + + AllowClear.prototype._handleKeyboardClear = function (_, evt, container) { + if (container.isOpen()) { + return; + } + + if (evt.which == KEYS.DELETE || evt.which == KEYS.BACKSPACE) { + this._handleClear(evt); + } }; AllowClear.prototype.update = function (decorated, data) { diff --git a/awx/ui/client/lib/select2/src/js/select2/selection/multiple.js b/awx/ui/client/lib/select2/src/js/select2/selection/multiple.js index fea875f9fd..01eb9c8822 100644 --- a/awx/ui/client/lib/select2/src/js/select2/selection/multiple.js +++ b/awx/ui/client/lib/select2/src/js/select2/selection/multiple.js @@ -76,7 +76,7 @@ define([ return; } - var $selections = $(); + var $selections = []; for (var d = 0; d < data.length; d++) { var selection = data[d]; @@ -89,10 +89,12 @@ define([ $selection.data('data', selection); - $selections = $selections.add($selection); + $selections.push($selection); } - this.$selection.find('.select2-selection__rendered').append($selections); + var $rendered = this.$selection.find('.select2-selection__rendered'); + + Utils.appendMany($rendered, $selections); }; return MultipleSelection; diff --git a/awx/ui/client/lib/select2/src/js/select2/selection/search.js b/awx/ui/client/lib/select2/src/js/select2/selection/search.js index c7d9f9dafe..c3c66e04dc 100644 --- a/awx/ui/client/lib/select2/src/js/select2/selection/search.js +++ b/awx/ui/client/lib/select2/src/js/select2/selection/search.js @@ -75,6 +75,8 @@ define([ var item = $previousChoice.data('data'); self.searchRemoveChoice(item); + + evt.preventDefault(); } } }); diff --git a/awx/ui/client/lib/select2/src/js/select2/utils.js b/awx/ui/client/lib/select2/src/js/select2/utils.js index db7b3fb3ef..7bb962dc34 100644 --- a/awx/ui/client/lib/select2/src/js/select2/utils.js +++ b/awx/ui/client/lib/select2/src/js/select2/utils.js @@ -241,5 +241,22 @@ define([ }); }; + // Append an array of jQuery nodes to a given element. + Utils.appendMany = function ($element, $nodes) { + // jQuery 1.7.x does not support $.fn.append() with an array + // Fall back to a jQuery object collection using $.fn.add() + if ($.fn.jquery.substr(0, 3) === '1.7') { + var $jqNodes = $(); + + $.map($nodes, function (node) { + $jqNodes = $jqNodes.add(node); + }); + + $nodes = $jqNodes; + } + + $element.append($nodes); + }; + return Utils; }); diff --git a/awx/ui/client/lib/select2/src/js/wrapper.end.js b/awx/ui/client/lib/select2/src/js/wrapper.end.js index a6b5dc6978..43678296f4 100644 --- a/awx/ui/client/lib/select2/src/js/wrapper.end.js +++ b/awx/ui/client/lib/select2/src/js/wrapper.end.js @@ -5,7 +5,7 @@ // Hold the AMD module references on the jQuery function that was just loaded // This allows Select2 to use the internal loader outside of this file, such // as in the language files. - $.fn.select2.amd = S2; + jQuery.fn.select2.amd = S2; // Return the Select2 instance for anyone who is importing it. return select2; diff --git a/awx/ui/client/lib/select2/src/scss/core.scss b/awx/ui/client/lib/select2/src/scss/core.scss index 901e414405..0d268820da 100644 --- a/awx/ui/client/lib/select2/src/scss/core.scss +++ b/awx/ui/client/lib/select2/src/scss/core.scss @@ -33,5 +33,16 @@ filter: alpha(opacity=0); } +.select2-hidden-accessible { + border: 0; + clip: rect(0 0 0 0); + height: 1px; + margin: -1px; + overflow: hidden; + padding: 0; + position: absolute; + width: 1px; +} + @import "theme/default/layout"; @import "theme/classic/layout"; diff --git a/awx/ui/client/lib/select2/tests/dropdown/dropdownCss-tests.js b/awx/ui/client/lib/select2/tests/dropdown/dropdownCss-tests.js new file mode 100644 index 0000000000..9969335e1f --- /dev/null +++ b/awx/ui/client/lib/select2/tests/dropdown/dropdownCss-tests.js @@ -0,0 +1,104 @@ +module('Dropdown - dropdownCssClass compatibility'); + +var $ = require('jquery'); +var Utils = require('select2/utils'); +var Options = require('select2/options'); + +var Dropdown = require('select2/dropdown'); +var DropdownCSS = Utils.Decorate( + Dropdown, + require('select2/compat/dropdownCss') +); + +test('all classes will be copied if :all: is used', function (assert) { + var $element = $(''); + var options = new Options({ + dropdownCssClass: ':all:' + }); + + var select = new DropdownCSS($element, options); + var $dropdown = select.render(); + + assert.ok($dropdown.hasClass('test')); + assert.ok($dropdown.hasClass('copy')); + assert.ok($dropdown.hasClass('works')); + assert.ok(!$dropdown.hasClass(':all:')); +}); + +test(':all: can be used with other classes', function (assert) { + var $element = $(''); + var options = new Options({ + dropdownCssClass: ':all: other' + }); + + var select = new DropdownCSS($element, options); + var $dropdown = select.render(); + + assert.ok($dropdown.hasClass('test')); + assert.ok($dropdown.hasClass('copy')); + assert.ok($dropdown.hasClass('works')); + assert.ok($dropdown.hasClass('other')); + assert.ok(!$dropdown.hasClass(':all:')); +}); + +test('classes can be passed in as a string', function (assert) { + var $element = $(''); + var options = new Options({ + dropdownCssClass: 'other' + }); + + var select = new DropdownCSS($element, options); + var $dropdown = select.render(); + + assert.ok($dropdown.hasClass('other')); +}); + +test('a function can be used based on the element', function (assert){ + var $element = $(''); + var options = new Options({ + dropdownCssClass: function ($element) { + return 'function'; + } + }); + + var select = new DropdownCSS($element, options); + var $dropdown = select.render(); + + assert.ok($dropdown.hasClass('function')); + assert.ok(!$dropdown.hasClass('test')); +}); + +test(':all: works around custom adapters', function (assert) { + var $element = $(''); + var options = new Options({ + dropdownCssClass: ':all: something', + adaptDropdownCssClass: function (clazz) { + return clazz + '-modified'; + } + }); + + var select = new DropdownCSS($element, options); + var $dropdown = select.render(); + + assert.ok($dropdown.hasClass('something')); + + assert.ok($dropdown.hasClass('test')); + assert.ok($dropdown.hasClass('test-modified')); +}); + +module('Dropdown - adaptDropdownCss compatibility'); + +test('only return when adapted', function (assert) { + var $element = $(''); + var options = new Options({ + adaptDropdownCssClass: function (clazz) { + return 'modified'; + } + }); + + var select = new DropdownCSS($element, options); + var $dropdown = select.render(); + + assert.ok(!$dropdown.hasClass('original')); + assert.ok($dropdown.hasClass('modified')); +}); diff --git a/awx/ui/client/lib/select2/tests/options/translation-tests.js b/awx/ui/client/lib/select2/tests/options/translation-tests.js new file mode 100644 index 0000000000..ab433b6157 --- /dev/null +++ b/awx/ui/client/lib/select2/tests/options/translation-tests.js @@ -0,0 +1,28 @@ +module('Options - Translations'); + +var $ = require('jquery'); +var Options = require('select2/options'); + +test('partial dictionaries can be passed', function (assert) { + var options = new Options({ + language: { + searching: function () { + return 'Something'; + } + } + }); + + var translations = options.get('translations'); + + assert.equal( + translations.get('searching')(), + 'Something', + 'The partial dictionary still overrides translations' + ); + + assert.equal( + translations.get('noResults')(), + 'No results found', + 'You can still get English translations for keys not passed in' + ); +}); diff --git a/awx/ui/client/lib/select2/tests/selection/containerCss-tests.js b/awx/ui/client/lib/select2/tests/selection/containerCss-tests.js new file mode 100644 index 0000000000..522703a238 --- /dev/null +++ b/awx/ui/client/lib/select2/tests/selection/containerCss-tests.js @@ -0,0 +1,104 @@ +module('Dropdown - containerCssClass compatibility'); + +var $ = require('jquery'); +var Utils = require('select2/utils'); +var Options = require('select2/options'); + +var SingleSelection = require('select2/selection/single'); +var ContainerCSS = Utils.Decorate( + SingleSelection, + require('select2/compat/containerCss') +); + +test('all classes will be copied if :all: is used', function (assert) { + var $element = $(''); + var options = new Options({ + containerCssClass: ':all:' + }); + + var select = new ContainerCSS($element, options); + var $container = select.render(); + + assert.ok($container.hasClass('test')); + assert.ok($container.hasClass('copy')); + assert.ok($container.hasClass('works')); + assert.ok(!$container.hasClass(':all:')); +}); + +test(':all: can be used with other classes', function (assert) { + var $element = $(''); + var options = new Options({ + containerCssClass: ':all: other' + }); + + var select = new ContainerCSS($element, options); + var $container = select.render(); + + assert.ok($container.hasClass('test')); + assert.ok($container.hasClass('copy')); + assert.ok($container.hasClass('works')); + assert.ok($container.hasClass('other')); + assert.ok(!$container.hasClass(':all:')); +}); + +test('classes can be passed in as a string', function (assert) { + var $element = $(''); + var options = new Options({ + containerCssClass: 'other' + }); + + var select = new ContainerCSS($element, options); + var $container = select.render(); + + assert.ok($container.hasClass('other')); +}); + +test('a function can be used based on the element', function (assert){ + var $element = $(''); + var options = new Options({ + containerCssClass: function ($element) { + return 'function'; + } + }); + + var select = new ContainerCSS($element, options); + var $container = select.render(); + + assert.ok($container.hasClass('function')); + assert.ok(!$container.hasClass('test')); +}); + +test(':all: works around custom adapters', function (assert) { + var $element = $(''); + var options = new Options({ + containerCssClass: ':all: something', + adaptContainerCssClass: function (clazz) { + return clazz + '-modified'; + } + }); + + var select = new ContainerCSS($element, options); + var $container = select.render(); + + assert.ok($container.hasClass('something')); + + assert.ok($container.hasClass('test')); + assert.ok($container.hasClass('test-modified')); +}); + +module('Selection - adaptContainerCss compatibility'); + +test('only return when adapted', function (assert) { + var $element = $(''); + var options = new Options({ + adaptContainerCssClass: function (clazz) { + return 'modified'; + } + }); + + var select = new ContainerCSS($element, options); + var $container = select.render(); + + assert.ok(!$container.hasClass('original')); + assert.ok($container.hasClass('modified')); +}); diff --git a/awx/ui/client/lib/select2/tests/unit.html b/awx/ui/client/lib/select2/tests/unit.html index 8f832dc9e2..b7eac54bc0 100644 --- a/awx/ui/client/lib/select2/tests/unit.html +++ b/awx/ui/client/lib/select2/tests/unit.html @@ -66,14 +66,17 @@ + + + diff --git a/awx/ui/templates/ui/index.html b/awx/ui/templates/ui/index.html index b85c11a3a4..c387f95bda 100644 --- a/awx/ui/templates/ui/index.html +++ b/awx/ui/templates/ui/index.html @@ -9,7 +9,7 @@ - + From dd143c1c715135d0387a448d37ba318e1767c62d Mon Sep 17 00:00:00 2001 From: Joe Fiorini Date: Thu, 6 Aug 2015 10:27:29 -0400 Subject: [PATCH 3/5] Use select lists for multiple choice answers --- awx/ui/client/src/helpers/JobSubmission.js | 50 ++++++++--------- .../src/job-templates/survey-maker/main.js | 2 + .../questions/finalize.factory.js | 36 +++++++----- .../job-templates/survey-maker/render/main.js | 9 +++ .../render/multiple-choice.directive.js | 56 +++++++++++++++++++ .../render/multiple-choice.partial.html | 5 ++ .../render/multiselect.directive.js | 42 ++++++++++++++ .../render/survey-question.directive.js | 50 +++++++++++++++++ .../render/survey-question.partial.html | 7 +++ .../shared/survey-controls.block.less | 11 ++++ .../survey-maker/surveys/init.factory.js | 6 +- .../survey-maker/surveys/show.factory.js | 3 + awx/ui/client/src/shared/Modal.js | 4 +- 13 files changed, 234 insertions(+), 47 deletions(-) create mode 100644 awx/ui/client/src/job-templates/survey-maker/render/main.js create mode 100644 awx/ui/client/src/job-templates/survey-maker/render/multiple-choice.directive.js create mode 100644 awx/ui/client/src/job-templates/survey-maker/render/multiple-choice.partial.html create mode 100644 awx/ui/client/src/job-templates/survey-maker/render/multiselect.directive.js create mode 100644 awx/ui/client/src/job-templates/survey-maker/render/survey-question.directive.js create mode 100644 awx/ui/client/src/job-templates/survey-maker/render/survey-question.partial.html create mode 100644 awx/ui/client/src/job-templates/survey-maker/shared/survey-controls.block.less diff --git a/awx/ui/client/src/helpers/JobSubmission.js b/awx/ui/client/src/helpers/JobSubmission.js index 345183ab82..d461d6a659 100644 --- a/awx/ui/client/src/helpers/JobSubmission.js +++ b/awx/ui/client/src/helpers/JobSubmission.js @@ -507,14 +507,14 @@ function($compile, Rest, GetBasePath, TextareaResize,CreateDialog, GenerateForm, url = params.url, callback=params.callback, scope = params.scope, - i, j, + i, requiredAsterisk, requiredClasses, defaultValue, choices, element, minlength, maxlength, - checked, min, max, + min, max, survey_url = GetBasePath('job_templates') + id + '/survey_spec/' ; //for toggling the input on password inputs @@ -605,41 +605,35 @@ function($compile, Rest, GetBasePath, TextareaResize,CreateDialog, GenerateForm, if(question.type === 'multiplechoice'){ choices = question.choices.split(/\n/); element = (question.type==="multiselect") ? "checkbox" : 'radio'; - question.default = (question.default) ? question.default : (question.default_multiselect) ? question.default_multiselect : "" ; - html+='
            '; - for( j = 0; j' + - ''+choices[j] +'
            ' ; + + if (question.default) { + scope[question.variable] = question.default; + } else { + scope[question.variable] = ''; } - html+= '
            Please select an answer.
            '+ - '
            '; + + html+='
            '; + html += ''; + // html+= '
            Please select an answer.
            '+ + // '
            '; html+= '
            '; //end survey_taker_input } if(question.type === "multiselect"){ //seperate the choices out into an array choices = question.choices.split(/\n/); - question.default = (question.default) ? question.default : (question.default_multiselect) ? question.default_multiselect : "" ; //ensure that the default answers are in an array - scope[question.variable] = question.default.split(/\n/); - //create a new object to be used by the surveyCheckboxes directive - scope[question.variable + '_object'] = { - name: question.variable, - value: (question.default.split(/\n/)[0]==="") ? [] : question.default.split(/\n/) , - required: question.required, - options:[] - }; - //load the options into the 'options' key of the new object - for(j=0; j'+ - '{{job_launch_form.'+question.variable+'_object.$error.checkbox}}'+ - '
            Please select at least one answer.
            '; + //create a new object to be used by the surveyCheckboxes directive + html += ''; + // html += ''+ + // '{{job_launch_form.'+question.variable+'_object.$error.checkbox}}'+ + // '
            Please select at least one answer.
            '; } if(question.type === 'integer'){ diff --git a/awx/ui/client/src/job-templates/survey-maker/main.js b/awx/ui/client/src/job-templates/survey-maker/main.js index 38d30679d9..d6ac9de3b8 100644 --- a/awx/ui/client/src/job-templates/survey-maker/main.js +++ b/awx/ui/client/src/job-templates/survey-maker/main.js @@ -1,6 +1,7 @@ import listGenerator from '../../shared/list-generator/main'; import questions from './questions/main'; import surveys from './surveys/main'; +import render from './render/main'; import shared from './shared/main'; export default @@ -8,5 +9,6 @@ export default [ listGenerator.name, questions.name, surveys.name, + render.name, shared.name ]); diff --git a/awx/ui/client/src/job-templates/survey-maker/questions/finalize.factory.js b/awx/ui/client/src/job-templates/survey-maker/questions/finalize.factory.js index 9c81ec8d37..facd87260b 100644 --- a/awx/ui/client/src/job-templates/survey-maker/questions/finalize.factory.js +++ b/awx/ui/client/src/job-templates/survey-maker/questions/finalize.factory.js @@ -18,13 +18,9 @@ export default index = params.index, required, element, - choices, - i, - checked, max, min, defaultValue, - answers, html = ""; question.index = index; @@ -65,18 +61,28 @@ export default '
            '; } if(question.type === 'multiplechoice' || question.type === "multiselect"){ - choices = question.choices.split(/\n/); - element = (question.type==="multiselect") ? "checkbox" : 'radio'; - question.default = (question.default) ? question.default : (question.default_multiselect) ? question.default_multiselect : "" ; - answers = question.default.split(/\n/); - html += '
            '; - for( i = 0; i' + - ''+choices[i] +'
            ' ; + + question.default = question.default_multiselect || question.default; + + var defaultScopePropertyName = + question.variable + '_default'; + + if (question.default) { + if (question.type === 'multiselect' && typeof question.default.split === 'function') { + scope[defaultScopePropertyName] = question.default.split('\n'); + } else if (question.type !== 'multiselect') { + scope[defaultScopePropertyName] = question.default; + } + } else { + scope[defaultScopePropertyName] = ''; } + + html += '
            '; + html += '
            '; + html += '
            '; + html += ''; + html += '
            '; + html += '
            '; html += '
            '; } diff --git a/awx/ui/client/src/job-templates/survey-maker/render/main.js b/awx/ui/client/src/job-templates/survey-maker/render/main.js new file mode 100644 index 0000000000..90390c74e1 --- /dev/null +++ b/awx/ui/client/src/job-templates/survey-maker/render/main.js @@ -0,0 +1,9 @@ +import surveyQuestion from './survey-question.directive'; +import multipleChoice from './multiple-choice.directive'; +import multiSelect from './multiselect.directive'; + +export default + angular.module('jobTemplates.surveyMaker.render', []) + .directive('surveyQuestion', surveyQuestion) + .directive('multipleChoice', multipleChoice) + .directive('multiSelect', multiSelect); diff --git a/awx/ui/client/src/job-templates/survey-maker/render/multiple-choice.directive.js b/awx/ui/client/src/job-templates/survey-maker/render/multiple-choice.directive.js new file mode 100644 index 0000000000..aaa36ac053 --- /dev/null +++ b/awx/ui/client/src/job-templates/survey-maker/render/multiple-choice.directive.js @@ -0,0 +1,56 @@ +/* jshint unused: vars */ +import {templateUrl} from '../../../shared/template-url/template-url.factory'; + +function link($timeout, scope, element, attrs, ngModel) { + attrs.width = attrs.width || '100%'; + + $timeout(function() { + + $.fn.select2.amd.require( + [ 'select2/utils', + 'select2/dropdown', + 'select2/dropdown/search', + 'select2/dropdown/attachContainer', + 'select2/dropdown/closeOnSelect', + 'select2/dropdown/minimumResultsForSearch' + ], + function(Utils, Dropdown, Search, AttachContainer, CloseOnSelect, MinimumResultsForSearch) { + + var CustomAdapter = + _.reduce([Search, AttachContainer, CloseOnSelect, MinimumResultsForSearch], + function(Adapter, Decorator) { + return Utils.Decorate(Adapter, Decorator); + }, Dropdown); + + element.find('select').select2( + { multiple: scope.isMultipleSelect(), + minimumResultsForSearch: Infinity, + theme: 'bootstrap', + width: attrs.width, + dropdownAdapter: CustomAdapter + }); + }); + + }); + +} + +export default + [ '$timeout', + function($timeout) { + var directive = + { restrict: 'E', + require: 'ngModel', + scope: { + isMultipleSelect: '&multiSelect', + choices: '=', + question: '=', + isRequired: '=ngRequired', + selectedValue: '=ngModel' + }, + templateUrl: templateUrl('job-templates/survey-maker/render/multiple-choice'), + link: _.partial(link, $timeout) + }; + return directive; + } + ]; diff --git a/awx/ui/client/src/job-templates/survey-maker/render/multiple-choice.partial.html b/awx/ui/client/src/job-templates/survey-maker/render/multiple-choice.partial.html new file mode 100644 index 0000000000..57557c76ca --- /dev/null +++ b/awx/ui/client/src/job-templates/survey-maker/render/multiple-choice.partial.html @@ -0,0 +1,5 @@ +
            + +
            diff --git a/awx/ui/client/src/job-templates/survey-maker/render/multiselect.directive.js b/awx/ui/client/src/job-templates/survey-maker/render/multiselect.directive.js new file mode 100644 index 0000000000..dd3fb60610 --- /dev/null +++ b/awx/ui/client/src/job-templates/survey-maker/render/multiselect.directive.js @@ -0,0 +1,42 @@ +/* jshint unused: vars */ + +/** + * @ngdoc + * + * @name jobTemplates.surveyMaker.render.multiSelect + * @description + * Angular provides no method of binding to "multiple" for + * select lists. This is because under normal circumstances, + * the structure of `ng-model` changes based on whether `multiple` + * is true or false. We're not needing to "bind" to "multiple", + * but we do need to pass in the value dynamically. This allows + * us to do that. + */ + +var directive = + { require: 'ngModel', + compile: function() { + return { + pre: function(scope, element, attrs, ngModel) { + if (_.isUndefined(scope.isMultipleSelect)) { + return; + } + + if (!scope.isMultipleSelect()) { + return; + } + + element.attr('multiple', true); + attrs.multiple = true; + + + } + }; + }, + priority: 1000 + }; + +export default + function() { + return directive; + } diff --git a/awx/ui/client/src/job-templates/survey-maker/render/survey-question.directive.js b/awx/ui/client/src/job-templates/survey-maker/render/survey-question.directive.js new file mode 100644 index 0000000000..3dc64e6667 --- /dev/null +++ b/awx/ui/client/src/job-templates/survey-maker/render/survey-question.directive.js @@ -0,0 +1,50 @@ +/* jshint unused: vars */ +import {templateUrl} from '../../../shared/template-url/template-url.factory'; + +/** + * @ngdoc + * @name jobTemplates.surveyMaker.render.surveyQuestion + * @description + * Directive that will eventually hold all logic + * for rendering different form controls based on + * the question type for a survey. + */ + +// Since we're generating HTML for the entire survey, and _then_ +// calling $compile, this directive never actually gets compiled +// with the question object we need. Therefore, we give it the index +// of the question as an attribute (not scope) and then look it up +// in the `survey_questions` by that index when it the directive gets +// compiled. +// +function findQuestionByIndex(questions, index) { + return _.find(questions, function(question) { + return question.index === index; + }); +} + +function link(scope, element, attrs) { + var question = findQuestionByIndex(scope.surveyQuestions, Number(attrs.index)); + + scope.question = question; + + if (!_.isUndefined(question.choices)) { + scope.choices = question.choices.split('\n'); + } +} + +export default + function() { + var directive = + { restrict: 'E', + scope: + { surveyQuestions: '=', + selectedValue: '=ngModel', + isRequired: '@ngRequired' + }, + templateUrl: templateUrl('job-templates/survey-maker/render/survey-question'), + link: link + }; + + return directive; + } diff --git a/awx/ui/client/src/job-templates/survey-maker/render/survey-question.partial.html b/awx/ui/client/src/job-templates/survey-maker/render/survey-question.partial.html new file mode 100644 index 0000000000..1b761f17e5 --- /dev/null +++ b/awx/ui/client/src/job-templates/survey-maker/render/survey-question.partial.html @@ -0,0 +1,7 @@ + + diff --git a/awx/ui/client/src/job-templates/survey-maker/shared/survey-controls.block.less b/awx/ui/client/src/job-templates/survey-maker/shared/survey-controls.block.less new file mode 100644 index 0000000000..74b3af4967 --- /dev/null +++ b/awx/ui/client/src/job-templates/survey-maker/shared/survey-controls.block.less @@ -0,0 +1,11 @@ +/** @define SurveyControls */ + +.SurveyControls { + &-selectWrapper { + margin-left: 15px; + } + &--dropdown { + z-index: 10000; + opacity: 1; + } +} diff --git a/awx/ui/client/src/job-templates/survey-maker/surveys/init.factory.js b/awx/ui/client/src/job-templates/survey-maker/surveys/init.factory.js index b710fc0a92..9f0cf8ea1f 100644 --- a/awx/ui/client/src/job-templates/survey-maker/surveys/init.factory.js +++ b/awx/ui/client/src/job-templates/survey-maker/surveys/init.factory.js @@ -136,13 +136,13 @@ export default if(questions.length>0){ $('#survey-save-button').removeAttr('disabled'); } - scope.finalizeQuestion(questions[key], key); + scope.finalizeQuestion(questions[key], Number(key)); } else if(scope.mode=== 'edit' ){ if(scope.survey_questions.length>0 && scope.can_edit === true){ $('#survey-save-button').removeAttr('disabled'); } - scope.finalizeQuestion(scope.survey_questions[key] , key); + scope.finalizeQuestion(scope.survey_questions[key] , Number(key)); } } }; @@ -464,7 +464,7 @@ export default scope.survey_questions[key] = data; } $('#'+elementID).empty(); - scope.finalizeQuestion(data , key); + scope.finalizeQuestion(data , Number(key)); } diff --git a/awx/ui/client/src/job-templates/survey-maker/surveys/show.factory.js b/awx/ui/client/src/job-templates/survey-maker/surveys/show.factory.js index 74b0b7fd1c..84874522cb 100644 --- a/awx/ui/client/src/job-templates/survey-maker/surveys/show.factory.js +++ b/awx/ui/client/src/job-templates/survey-maker/surveys/show.factory.js @@ -70,6 +70,9 @@ export default } }, + _allowInteraction: function(e) { + return !!$(e.target).is('.select2-input') || this._super(e); + }, callback: callback }); }; diff --git a/awx/ui/client/src/shared/Modal.js b/awx/ui/client/src/shared/Modal.js index 772ba532af..2c17b1e14c 100644 --- a/awx/ui/client/src/shared/Modal.js +++ b/awx/ui/client/src/shared/Modal.js @@ -55,6 +55,7 @@ angular.module('ModalDialog', ['Utilities', 'ParseHelper']) onResizeStop = params.onResizeStop, onClose = params.onClose, onOpen = params.onOpen, + _allowInteraction = params._allowInteraction, callback = params.callback, beforeDestroy = params.beforeDestroy, closeOnEscape = (params.closeOnEscape === undefined) ? false : params.closeOnEscape, @@ -177,7 +178,8 @@ angular.module('ModalDialog', ['Utilities', 'ParseHelper']) if (onOpen) { onOpen(); } - } + }, + _allowInteraction: _allowInteraction }); }; }]) From 524d0da0dedc2bee3ea0a9deec655949e6751331 Mon Sep 17 00:00:00 2001 From: Joe Fiorini Date: Wed, 12 Aug 2015 11:16:43 -0400 Subject: [PATCH 4/5] Pass question directly for survey taker --- .../questions/finalize.factory.js | 14 ++++++----- .../survey-maker/questions/main.js | 2 ++ .../questions/question-scope.factory.js | 25 +++++++++++++++++++ .../render/survey-question.directive.js | 12 +++++---- 4 files changed, 42 insertions(+), 11 deletions(-) create mode 100644 awx/ui/client/src/job-templates/survey-maker/questions/question-scope.factory.js diff --git a/awx/ui/client/src/job-templates/survey-maker/questions/finalize.factory.js b/awx/ui/client/src/job-templates/survey-maker/questions/finalize.factory.js index facd87260b..e790f8e2dd 100644 --- a/awx/ui/client/src/job-templates/survey-maker/questions/finalize.factory.js +++ b/awx/ui/client/src/job-templates/survey-maker/questions/finalize.factory.js @@ -9,12 +9,13 @@ * }) * */ + export default - function FinalizeQuestion(GetBasePath, Rest, Wait, ProcessErrors, $compile, Empty, $filter) { + function FinalizeQuestion(GetBasePath, Rest, Wait, ProcessErrors, $compile, Empty, $filter, questionScope) { return function(params) { - var scope = params.scope, - question = params.question, + var question = params.question, + scope = questionScope(question, params.scope), index = params.index, required, element, @@ -80,7 +81,7 @@ export default html += '
            '; html += '
            '; html += '
            '; - html += ''; + html += ''; html += '
            '; html += '
            '; html += '
            '; @@ -132,8 +133,8 @@ export default element = angular.element(document.getElementById('question_'+question.index)); // // element.html(html); //element.css('opacity', 0.7); + $compile(element)(scope); - // var questionScope = scope.$new; $('#add_question_btn').show(); $('#add_question_btn').removeAttr('disabled'); @@ -187,5 +188,6 @@ FinalizeQuestion.$inject = 'ProcessErrors', '$compile', 'Empty', - '$filter' + '$filter', + 'questionScope' ]; diff --git a/awx/ui/client/src/job-templates/survey-maker/questions/main.js b/awx/ui/client/src/job-templates/survey-maker/questions/main.js index f1bbd8bc7c..346e6e9bff 100644 --- a/awx/ui/client/src/job-templates/survey-maker/questions/main.js +++ b/awx/ui/client/src/job-templates/survey-maker/questions/main.js @@ -1,7 +1,9 @@ +import questionScope from './question-scope.factory'; import finalize from './finalize.factory'; import edit from './edit.factory'; export default angular.module('jobTemplates.surveyMaker.questions', []) .factory('finalizeQuestion', finalize) + .factory('questionScope', questionScope) .factory('editQuestion', edit); diff --git a/awx/ui/client/src/job-templates/survey-maker/questions/question-scope.factory.js b/awx/ui/client/src/job-templates/survey-maker/questions/question-scope.factory.js new file mode 100644 index 0000000000..31af0902a5 --- /dev/null +++ b/awx/ui/client/src/job-templates/survey-maker/questions/question-scope.factory.js @@ -0,0 +1,25 @@ +var typesSupportingIsolatedScope = + [ 'multiselect', + 'multiplechoice' + ]; + +function typeSupportsIsolatedScope(type) { + return _.include(typesSupportingIsolatedScope, type); +} + +function getIsolatedScope(question, oldScope) { + var newScope = oldScope.$new(); + newScope.question = question; + return newScope; +} + +export default + function() { + return function(question, oldScope) { + if (typeSupportsIsolatedScope(question.type)) { + return getIsolatedScope(question, oldScope); + } else { + return oldScope; + } + }; + } diff --git a/awx/ui/client/src/job-templates/survey-maker/render/survey-question.directive.js b/awx/ui/client/src/job-templates/survey-maker/render/survey-question.directive.js index 3dc64e6667..da620de889 100644 --- a/awx/ui/client/src/job-templates/survey-maker/render/survey-question.directive.js +++ b/awx/ui/client/src/job-templates/survey-maker/render/survey-question.directive.js @@ -24,12 +24,13 @@ function findQuestionByIndex(questions, index) { } function link(scope, element, attrs) { - var question = findQuestionByIndex(scope.surveyQuestions, Number(attrs.index)); - scope.question = question; + if (!scope.question) { + scope.question = findQuestionByIndex(scope.surveyQuestions, Number(attrs.index)); + } - if (!_.isUndefined(question.choices)) { - scope.choices = question.choices.split('\n'); + if (!_.isUndefined(scope.question.choices)) { + scope.choices = scope.question.choices.split('\n'); } } @@ -38,8 +39,9 @@ export default var directive = { restrict: 'E', scope: - { surveyQuestions: '=', + { question: '=', selectedValue: '=ngModel', + surveyQuestions: '=', isRequired: '@ngRequired' }, templateUrl: templateUrl('job-templates/survey-maker/render/survey-question'), From 83046aeef7c19cc0afe4c6d9e8b00d65c953ba30 Mon Sep 17 00:00:00 2001 From: Joe Fiorini Date: Wed, 12 Aug 2015 14:01:48 -0400 Subject: [PATCH 5/5] Include empty values for blank, optional select lists --- awx/ui/client/src/helpers/JobSubmission.js | 28 +++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/awx/ui/client/src/helpers/JobSubmission.js b/awx/ui/client/src/helpers/JobSubmission.js index d461d6a659..9e641dc388 100644 --- a/awx/ui/client/src/helpers/JobSubmission.js +++ b/awx/ui/client/src/helpers/JobSubmission.js @@ -154,9 +154,31 @@ function(Rest, Wait, ProcessErrors, ToJSON, Empty, GetBasePath) { if(scope.survey_questions[i].required || (scope.survey_questions[i].required === false && scope[fld].toString()!=="")) { job_launch_data.extra_vars[fld] = scope[fld]; } - // for optional text and text-areas, submit a blank string if min length is 0 - if(scope.survey_questions[i].required === false && (scope.survey_questions[i].type === "text" || scope.survey_questions[i].type === "textarea") && scope.survey_questions[i].min === 0 && (scope[fld] === "" || scope[fld] === undefined)){ - job_launch_data.extra_vars[fld] = ""; + + + if(scope.survey_questions[i].required === false && _.isEmpty(scope[fld])) { + switch (scope.survey_questions[i].type) { + // for optional text and text-areas, submit a blank string if min length is 0 + // -- this is confusing, for an explanation see: + // http://docs.ansible.com/ansible-tower/latest/html/userguide/job_templates.html#optional-survey-questions + // + case "text": + case "textarea": + if (scope.survey_questions[i].min === 0) { + job_launch_data.extra_vars[fld] = ""; + } + break; + + // for optional select lists, if they are left blank make sure we submit + // a value that the API will consider "empty" + // + case "multiplechoice": + job_launch_data.extra_vars[fld] = ""; + break; + case "multiselect": + job_launch_data.extra_vars[fld] = []; + break; + } } } }