| 1 | 
           efrain | 
           1 | 
           {{!
  | 
        
        
            | 
            | 
           2 | 
               This file is part of Moodle - http://moodle.org/
  | 
        
        
            | 
            | 
           3 | 
              | 
        
        
            | 
            | 
           4 | 
               Moodle is free software: you can redistribute it and/or modify
  | 
        
        
            | 
            | 
           5 | 
               it under the terms of the GNU General Public License as published by
  | 
        
        
            | 
            | 
           6 | 
               the Free Software Foundation, either version 3 of the License, or
  | 
        
        
            | 
            | 
           7 | 
               (at your option) any later version.
  | 
        
        
            | 
            | 
           8 | 
              | 
        
        
            | 
            | 
           9 | 
               Moodle is distributed in the hope that it will be useful,
  | 
        
        
            | 
            | 
           10 | 
               but WITHOUT ANY WARRANTY; without even the implied warranty of
  | 
        
        
            | 
            | 
           11 | 
               MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  | 
        
        
            | 
            | 
           12 | 
               GNU General Public License for more details.
  | 
        
        
            | 
            | 
           13 | 
              | 
        
        
            | 
            | 
           14 | 
               You should have received a copy of the GNU General Public License
  | 
        
        
            | 
            | 
           15 | 
               along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
  | 
        
        
            | 
            | 
           16 | 
           }}
  | 
        
        
            | 
            | 
           17 | 
           {{!
  | 
        
        
            | 
            | 
           18 | 
               @template core/form_autocomplete_input
  | 
        
        
            | 
            | 
           19 | 
              | 
        
        
            | 
            | 
           20 | 
               Moodle template for the input field in an autocomplate form element.
  | 
        
        
            | 
            | 
           21 | 
              | 
        
        
            | 
            | 
           22 | 
               Classes required for JS:
  | 
        
        
            | 
            | 
           23 | 
               * none
  | 
        
        
            | 
            | 
           24 | 
              | 
        
        
            | 
            | 
           25 | 
               Data attributes required for JS:
  | 
        
        
            | 
            | 
           26 | 
               * none
  | 
        
        
            | 
            | 
           27 | 
              | 
        
        
            | 
            | 
           28 | 
               Context variables required for this template:
  | 
        
        
            | 
            | 
           29 | 
               * inputId The dom id of this input field.
  | 
        
        
            | 
            | 
           30 | 
               * suggestionsId The dom id of the suggestions list.
  | 
        
        
            | 
            | 
           31 | 
               * selectionId The dom id of the current selection list.
  | 
        
        
            | 
            | 
           32 | 
               * downArrowId The dom id of the down arrow to open the suggestions.
  | 
        
        
            | 
            | 
           33 | 
               * placeholder The place holder text when the field is empty
  | 
        
        
            | 
            | 
           34 | 
              | 
        
        
            | 
            | 
           35 | 
               Example context (json):
  | 
        
        
            | 
            | 
           36 | 
               { "inputID": 1, "suggestionsId": 2, "selectionId": 3, "downArrowId": 4, "placeholder": "Select something" }
  | 
        
        
            | 
            | 
           37 | 
           }}
  | 
        
        
            | 
            | 
           38 | 
           {{#showSuggestions}}
  | 
        
        
           | 1441 | 
           ariadna | 
           39 | 
           <div class="form-autocomplete-input d-md-inline-block me-md-2 position-relative">
  | 
        
        
           | 1 | 
           efrain | 
           40 | 
               <input type="text"{{!
  | 
        
        
            | 
            | 
           41 | 
               }} id="{{inputId}}"{{!
  | 
        
        
            | 
            | 
           42 | 
               }} class="form-control"{{!
  | 
        
        
            | 
            | 
           43 | 
               }} list="{{suggestionsId}}"{{!
  | 
        
        
            | 
            | 
           44 | 
               }} placeholder="{{placeholder}}"{{!
  | 
        
        
            | 
            | 
           45 | 
               }} role="combobox"{{!
  | 
        
        
            | 
            | 
           46 | 
               }} aria-expanded="false"{{!
  | 
        
        
            | 
            | 
           47 | 
               }} autocomplete="off"{{!
  | 
        
        
            | 
            | 
           48 | 
               }} autocorrect="off"{{!
  | 
        
        
            | 
            | 
           49 | 
               }} autocapitalize="off"{{!
  | 
        
        
            | 
            | 
           50 | 
               }} aria-autocomplete="list"{{!
  | 
        
        
            | 
            | 
           51 | 
               }} aria-owns="{{suggestionsId}} {{selectionId}}"{{!
  | 
        
        
            | 
            | 
           52 | 
               }} {{#tags}}data-tags="1"{{/tags}}{{!
  | 
        
        
            | 
            | 
           53 | 
               }} {{#multiple}}data-multiple="multiple"{{/multiple}}{{!
  | 
        
        
            | 
            | 
           54 | 
               }}>
  | 
        
        
            | 
            | 
           55 | 
               <span class="form-autocomplete-downarrow position-absolute p-1" id="{{downArrowId}}">▼</span>
  | 
        
        
            | 
            | 
           56 | 
           </div>
  | 
        
        
            | 
            | 
           57 | 
           {{/showSuggestions}}
  | 
        
        
            | 
            | 
           58 | 
           {{^showSuggestions}}
  | 
        
        
           | 1441 | 
           ariadna | 
           59 | 
           <div class="form-autocomplete-input d-md-inline-block me-md-2">
  | 
        
        
           | 1 | 
           efrain | 
           60 | 
               <input type="text"{{!
  | 
        
        
            | 
            | 
           61 | 
               }} id="{{inputId}}"{{!
  | 
        
        
            | 
            | 
           62 | 
               }} class="form-control"{{!
  | 
        
        
            | 
            | 
           63 | 
               }} placeholder="{{placeholder}}"{{!
  | 
        
        
            | 
            | 
           64 | 
               }} role="textbox"{{!
  | 
        
        
            | 
            | 
           65 | 
               }} aria-owns="{{selectionId}}"{{!
  | 
        
        
            | 
            | 
           66 | 
               }} {{#tags}}data-tags="1"{{/tags}}{{!
  | 
        
        
            | 
            | 
           67 | 
               }} {{#multiple}}data-multiple="multiple"{{/multiple}}{{!
  | 
        
        
            | 
            | 
           68 | 
               }}>
  | 
        
        
            | 
            | 
           69 | 
           </div>
  | 
        
        
            | 
            | 
           70 | 
           {{/showSuggestions}}
  | 
        
        
            | 
            | 
           71 | 
              | 
        
        
            | 
            | 
           72 | 
           {{#js}}
  | 
        
        
            | 
            | 
           73 | 
           require(['jquery'], function($) {
  | 
        
        
            | 
            | 
           74 | 
               // Set the minimum width of the input so that the placeholder is whole displayed.
  | 
        
        
            | 
            | 
           75 | 
               var inputElement = $(document.getElementById('{{inputId}}'));
  | 
        
        
            | 
            | 
           76 | 
               if (inputElement.length) {
  | 
        
        
            | 
            | 
           77 | 
                   inputElement.css('min-width', inputElement.attr('placeholder').length + 'ch');
  | 
        
        
            | 
            | 
           78 | 
               }
  | 
        
        
            | 
            | 
           79 | 
           });
  | 
        
        
            | 
            | 
           80 | 
           {{/js}}
  |