text: /* ------------------------------------------------------------------------------
   *
   *  # Alpaca - Basic inputs
   *
   *  Demo JS code for alpaca_basic.html page
   *
   * ---------------------------------------------------------------------------- */
  
  
  // Setup module
  // ------------------------------
  
  var AlpacaBasic = function() {
  
  
      //
      // Setup module components
      //
  
      // Alpaca examples
      var _componentAlpaca = function() {
          if (!$().alpaca) {
              console.warn('Warning - alpaca.min.js is not loaded.');
              return;
          }
  
  
          // Text input
          // ------------------------------
  
          // Basic example
          $('#alpaca-basic').alpaca({
              data: 'I Love Alpaca Ice Cream!',
              options: {
                  focus: false
              }
          });
  
          // Display only view
          $('#alpaca-static').alpaca({
              data: 'I Love Alpaca Ice Cream!',
              schema: {
                  type: 'string'
              },
              view: 'bootstrap-display'
          });
  
          // Input field label
          $('#alpaca-input-label').alpaca({
              data: 'I Love Alpaca Ice Cream!',
              options: {
                  label: 'Input label',
                  focus: false
              }
          });
  
          // Static input label
          $('#alpaca-static-label').alpaca({
              data: 'I Love Alpaca Ice Cream!',
              schema: {
                  type: 'string'
              },
              options: {
                  label: 'Input label'
              },
              view: 'bootstrap-display'
          });
  
          // Validation
          $('#alpaca-validation').alpaca({
              data: 'Mint',
              schema: {
                  minLength: 3,
                  maxLength: 5
              },
              options: {
                  label: 'Ice Cream',
                  helper: 'Your favorite ice cream?',
                  size: 30,
                  focus: false
              }
          });
  
          // Validation with predefined value
          $('#alpaca-validation-predefined').alpaca({
              data: 'Mint Chocolate',
              schema: {
                  minLength: 3,
                  maxLength: 5
              },
              options: {
                  label: 'Ice Cream',
                  helper: 'Please tell us the kind of ice cream you love most!',
                  size: 30,
                  focus: false,
                  placeholder: 'Enter an ice cream flavor'
              }
          });
  
          // Disallow empty spaces
          $('#alpaca-disallow-empty').alpaca({
              schema: {
                  type: 'string'
              },
              options: {
                  type: 'lowercase',
                  label: 'User Name',
                  disallowEmptySpaces: true,
                  helper: 'Type something with empty space',
                  focus: false
              }
          });
  
          // Disallow values
          $('#alpaca-disallow-values').alpaca({
              data: 'Mickey Mantle',
              schema: {
                  type: 'string',
                  disallow: ['Mickey Mantle', 'Mickey']
              },
              options: {
                  label: 'Name',
                  focus: false
              }
          });
  
          // Typeahead integration
          $('#alpaca-typeahead').alpaca({
              schema: {
                  type: 'string'
              },
              options: {
                  type: 'text',
                  label: 'Company Name',
                  helper: 'Select the name of a computing company',
                  placeholder: 'Enter "a"',
                  focus: false,
                  typeahead: {
                      config: {
                          highlight: true,
                          hint: true,
                          minLength: 1
                      },
                      datasets: {
                          type: 'local',
                          displayKey: 'value',
                          source: ['Google', 'Amazon', 'Microsoft', 'Apple', 'Spotify', 'Alpaca', 'Another company', 'Facebook']
                      }
                  }
              }
          });
  
          // [RTL] Typeahead integration
          $('#alpaca-typeahead-rtl').alpaca({
              schema: {
                  type: 'string'
              },
              options: {
                  type: 'text',
                  label: 'Company Name',
                  helper: 'Select the name of a computing company',
                  placeholder: 'Enter "a"',
                  focus: false,
                  fieldClass: 'typeahead-rtl',
                  typeahead: {
                      config: {
                          highlight: true,
                          hint: true,
                          minLength: 1
                      },
                      datasets: {
                          type: 'local',
                          displayKey: 'value',
                          source: ['Google', 'Amazon', 'Microsoft', 'Apple', 'Spotify', 'Alpaca', 'Another company', 'Facebook']
                      }
                  }
              },
              postRender: function() {
                  $('.typeahead-rtl').find('.form-control').attr('dir', 'rtl');
              }
          });
  
          // Maxlength integration
          $('#alpaca-maxlength').alpaca({
              schema: {
                  type: 'string',
                  minLength: 3,
                  maxLength: 25
              },
              options: {
                  type: 'text',
                  label: 'What is your name?',
                  constrainMaxLength: true,
                  constrainMinLength: true,
                  showMaxLengthIndicator: true,
                  focus: false
              },
              data: 'Jackie Robinson'
          });
  
  
          // Textareas
          // ------------------------------
  
          // Basic textarea
          $('#alpaca-textarea').alpaca({
              data: 'Ice cream or ice-cream is a frozen dessert usually made from dairy products, such as milk and cream, and often combined with fruits or other ingredients and flavours.',
              options: {
                  type: 'textarea',
                  label: 'Receipt',
                  helper: 'Receipt for Best Homemade Ice Cream',
                  rows: 4,
                  cols: 80,
                  focus: false
              }
          });
  
          // With placeholder
          $('#alpaca-textarea-placeholder').alpaca({
              options: {
                  type: 'textarea',
                  label: 'Receipt',
                  helper: 'Receipt for Best Homemade Ice Cream',
                  placeholder: 'Enter your favorite ice cream here...',
                  rows: 4,
                  cols: 80,
                  focus: false
              }
          });
  
          // Display mode
          $('#alpaca-textarea-static').alpaca({
              data: 'Ice cream or ice-cream is a frozen dessert usually made from dairy products, such as milk and cream, and often combined with fruits or other ingredients and flavours.',
              options: {
                  type: 'textarea',
                  label: 'Receipt',
                  rows: 6,
                  cols: 80,
                  focus: false
              },
              view: 'bootstrap-display'
          });
  
          // Single field render
          $('#alpaca-textarea-override').alpaca({
              data: 'My name is Dr. Jacobian and I am a neuroscientist from the Cornell University.  I\'ve perfected a DNA transcription process which makes it possible for the first time to use DNA nucleotides to store pedabytes of information in real-time.',
              schema: {
                  type: 'string'
              },
              options: {
                  type: 'textarea',
                  label: 'Tell us about yourself',
                  view: 'bootstrap-display'
              }
          });
  
  
          // Selects
          // ------------------------------
  
          // Basic select
          $('#alpaca-select').alpaca({
              data: 'coffee',
              schema: {
                  enum: ['vanilla', 'chocolate', 'coffee', 'strawberry', 'mint']
              },
              options: {
                  label: 'Ice cream',
                  helper: 'What flavor of ice cream do you prefer?',
                  focus: false
              }
          });
  
          // External data source
          $('#alpaca-select-external').alpaca({
              options: {
                  label: 'Ice cream',
                  helper: 'Guess my favorite ice cream?',
                  type: 'select',
                  focus: false,
                  dataSource: '../../../../main_assets/demo_data/alpaca/selects.json'
              }
          });
      };
  
      // Alpaca with Select2
      var _componentAlpacaSelect2 = function() {
          if (!$().alpaca || !$().select2) {
              console.warn('Warning - alpaca.min.js and/or select2.min.js is not loaded.');
              return;
          }
  
          // Select2 select
          $('#alpaca-select2').alpaca({
              data: 'coffee',
              schema: {
                  enum: ['vanilla', 'chocolate', 'coffee', 'strawberry', 'mint']
              },
              options: {
                  label: 'Ice cream',
                  helper: 'What flavor of ice cream do you prefer?',
                  id: 'select2-basic',
                  focus: false
              },
              postRender: function(control) {
                  $('#select2-basic').select2({
                      minimumResultsForSearch: Infinity
                  });
              }
          });
  
          // Select2 select with search
          $('#alpaca-select2-search').alpaca({
              data: 'coffee',
              schema: {
                  enum: ['vanilla', 'chocolate', 'coffee', 'strawberry', 'mint']
              },
              options: {
                  label: 'Ice cream',
                  helper: 'What flavor of ice cream do you prefer?',
                  id: 'select2-search',
                  focus: false
              },
              postRender: function(control) {
                  $('#select2-search').select2();
              }
          });
      };
  
      // Alpaca with Multiselect
      var _componentAlpacaMultiselect = function() {
          if (!$().alpaca || !$().multiselect) {
              console.warn('Warning - alpaca.min.js and/or bootstrap-multiselect.js is not loaded.');
              return;
          }
  
          // Multiselect
          $('#alpaca-multiselect').alpaca({
              data: ['Vanilla', 'Chocolate'],
              schema: {
                  type: 'array',
                  items: {
                      title: 'Ice Cream',
                      type: 'string',
                      enum: ['Vanilla', 'Chocolate', 'Strawberry', 'Mint'],
                      minItems: 2,
                      maxItems: 3
                  }
              },
              options: {
                  label: 'Ice cream',
                  helper: 'Guess my favorite ice cream?',
                  type: 'select',
                  size: 5,
                  id: 'multiselect',
                  focus: false
              }
          });
  
          // Multiselect with remote data
          $('#alpaca-multiselect-remote').alpaca({
              options: {
                  label: 'Select your favorite flavor of ice cream',
                  type: 'select',
                  multiple: true,
                  helper: 'Guess my favorite ice cream?',
                  size: 3,
                  focus: false,
                  id: 'multiselect-remote',
                  dataSource: '../../../../main_assets/demo_data/alpaca/selects.json'
              }
          });
      };
  
  
      //
      // Return objects assigned to module
      //
  
      return {
          init: function() {
              _componentAlpaca();
              _componentAlpacaSelect2();
              _componentAlpacaMultiselect();
          }
      }
  }();
  
  
  // Initialize module
  // ------------------------------
  
  document.addEventListener('DOMContentLoaded', function() {
      AlpacaBasic.init();
  });
  