ac76ed575ea1ddc6addcef97b02f34e273e257db
[moodle.git] / lib / templates / form_autocomplete_input.mustache
1 {{!
2     This file is part of Moodle - http://moodle.org/
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.
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.
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
20     Moodle template for the input field in an autocomplate form element.
22     Classes required for JS:
23     * none
25     Data attributes required for JS:
26     * none
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
35     Example context (json):
36     { "inputID": 1, "suggestionsId": 2, "selectionId": 3, "downArrowId": 4, "placeholder": "Select something" }
37 }}
38 {{#showSuggestions}}
39 <div class="d-md-inline-block mr-md-2 position-relative">
40     <input type="text" id="{{inputId}}" class="form-control" list="{{suggestionsId}}" placeholder="{{placeholder}}" role="combobox" aria-expanded="false" autocomplete="off" autocorrect="off" autocapitalize="off" aria-autocomplete="list" aria-owns="{{suggestionsId}} {{selectionId}}" {{#tags}}data-tags="1"{{/tags}}/>
41     <span class="form-autocomplete-downarrow position-absolute p-1" id="{{downArrowId}}">&#x25BC;</span>
42 </div>
43 {{/showSuggestions}}
44 {{^showSuggestions}}
45 <div class="d-md-inline-block mr-md-2">
46     <input type="text" id="{{inputId}}" class="form-control" placeholder="{{placeholder}}" role="textbox" aria-owns="{{selectionId}}" {{#tags}}data-tags="1"{{/tags}}/>
47 </div>
48 {{/showSuggestions}}
50 {{#js}}
51 require(['jquery'], function($) {
52     // Set the minimum width of the input so that the placeholder is whole displayed.
53     var inputElement = $(document.getElementById('{{inputId}}'));
54     if (inputElement.length) {
55         inputElement.css('min-width', inputElement.attr('placeholder').length + 'ch');
56     }
57 });
58 {{/js}}