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/>.
18 @template core/form_autocomplete_input
20 Moodle template for the input field in an autocomplate form element.
22 Classes required for JS:
25 Data attributes required for JS:
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" }
39 <div class="d-md-inline-block mr-md-2 position-relative">
41 }} id="{{inputId}}"{{!
42 }} class="form-control"{{!
43 }} list="{{suggestionsId}}"{{!
44 }} placeholder="{{placeholder}}"{{!
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}}{{!
55 <span class="form-autocomplete-downarrow position-absolute p-1" id="{{downArrowId}}">▼</span>
59 <div class="d-md-inline-block mr-md-2">
61 }} id="{{inputId}}"{{!
62 }} class="form-control"{{!
63 }} placeholder="{{placeholder}}"{{!
65 }} aria-owns="{{selectionId}}"{{!
66 }} {{#tags}}data-tags="1"{{/tags}}{{!
67 }} {{#multiple}}data-multiple="multiple"{{/multiple}}{{!
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');