| 1 | efrain | 1 | <?php
 | 
        
           |  |  | 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 |  * Test page for dropdown dialog output component.
 | 
        
           |  |  | 19 |  *
 | 
        
           |  |  | 20 |  * @copyright 2023 Ferran Recio <ferran@moodle.com>
 | 
        
           |  |  | 21 |  * @package   core
 | 
        
           |  |  | 22 |  * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
 | 
        
           |  |  | 23 |  */
 | 
        
           |  |  | 24 |   | 
        
           |  |  | 25 | require_once(__DIR__ . '/../../../../config.php');
 | 
        
           |  |  | 26 |   | 
        
           |  |  | 27 | defined('BEHAT_SITE_RUNNING') || die();
 | 
        
           |  |  | 28 |   | 
        
           |  |  | 29 | global $CFG, $PAGE, $OUTPUT;
 | 
        
           |  |  | 30 | $PAGE->set_url('/lib/tests/behat/fixtures/dropdown_dialog_testpage.php');
 | 
        
           |  |  | 31 | $PAGE->add_body_class('limitedwidth');
 | 
        
           |  |  | 32 | require_login();
 | 
        
           |  |  | 33 | $PAGE->set_context(core\context\system::instance());
 | 
        
           |  |  | 34 |   | 
        
           |  |  | 35 | echo $OUTPUT->header();
 | 
        
           |  |  | 36 |   | 
        
           |  |  | 37 | echo "<h2>Dropdown dialog test page</h2>";
 | 
        
           |  |  | 38 |   | 
        
           |  |  | 39 | echo '<div id="regularscenario" class="mb-4">';
 | 
        
           |  |  | 40 | echo "<h3>Basic example</h3>";
 | 
        
           |  |  | 41 | $dialog = new core\output\local\dropdown\dialog('Open dialog', 'Dialog content');
 | 
        
           |  |  | 42 | echo $OUTPUT->render($dialog);
 | 
        
           |  |  | 43 | echo '</div>';
 | 
        
           |  |  | 44 |   | 
        
           |  |  | 45 | echo '<div id="richcontent" class="mb-4">';
 | 
        
           |  |  | 46 | echo "<h3>Rich content example</h3>";
 | 
        
           |  |  | 47 | $content = '
 | 
        
           |  |  | 48 |     <p>Some rich content <b>element</b>.</p>
 | 
        
           |  |  | 49 |     <ul>
 | 
        
           |  |  | 50 |         <li>Item 1 <a href="#">Link 1</a></li>
 | 
        
           |  |  | 51 |         <li>Item 2 <a href="#">Link 2</a></li>
 | 
        
           |  |  | 52 |     </ul>
 | 
        
           |  |  | 53 | ';
 | 
        
           |  |  | 54 | $dialog = new core\output\local\dropdown\dialog('Open dialog', $content);
 | 
        
           |  |  | 55 | echo $OUTPUT->render($dialog);
 | 
        
           |  |  | 56 | echo '</div>';
 | 
        
           |  |  | 57 |   | 
        
           |  |  | 58 | echo '<div id="richbutton" class="mb-4">';
 | 
        
           |  |  | 59 | echo "<h3>Rich button example</h3>";
 | 
        
           |  |  | 60 | $button = $OUTPUT->pix_icon('t/hide', 'Eye icon') . ' Click to <b>open</b></a>';
 | 
        
           |  |  | 61 | $dialog = new core\output\local\dropdown\dialog($button, 'Dialog content');
 | 
        
           |  |  | 62 | echo $OUTPUT->render($dialog);
 | 
        
           |  |  | 63 | echo '</div>';
 | 
        
           |  |  | 64 |   | 
        
           |  |  | 65 | echo '<div id="cssoverride" class="mb-4">';
 | 
        
           |  |  | 66 | echo "<h3>CSS override example</h3>";
 | 
        
           |  |  | 67 | $dialog = new core\output\local\dropdown\dialog(
 | 
        
           |  |  | 68 |     'Open dialog',
 | 
        
           |  |  | 69 |     'Dialog content',
 | 
        
           |  |  | 70 |     [
 | 
        
           |  |  | 71 |         'buttonclasses' => 'btn btn-primary extraclass',
 | 
        
           |  |  | 72 |     ]
 | 
        
           |  |  | 73 | );
 | 
        
           |  |  | 74 | echo $OUTPUT->render($dialog);
 | 
        
           |  |  | 75 | echo '</div>';
 | 
        
           |  |  | 76 |   | 
        
           |  |  | 77 | echo '<div id="extraattributes" class="mb-4">';
 | 
        
           |  |  | 78 | echo "<h3>Extra data attributes example</h3>";
 | 
        
           |  |  | 79 | $dialog = new core\output\local\dropdown\dialog('Open dialog', 'Dialog content', [
 | 
        
           |  |  | 80 |     'extras' => ['data-foo' => 'bar'],
 | 
        
           |  |  | 81 | ]);
 | 
        
           |  |  | 82 | echo $OUTPUT->render($dialog);
 | 
        
           |  |  | 83 | echo '</div>';
 | 
        
           |  |  | 84 |   | 
        
           |  |  | 85 | echo '<div id="customid" class="mb-4">';
 | 
        
           |  |  | 86 | echo "<h3>Custom element id</h3>";
 | 
        
           |  |  | 87 | $dialog = new core\output\local\dropdown\dialog('Open dialog', 'Dialog content', [
 | 
        
           |  |  | 88 |     'extras' => ['id' => 'CustomDropdownButtonId'],
 | 
        
           |  |  | 89 | ]);
 | 
        
           |  |  | 90 | echo $OUTPUT->render($dialog);
 | 
        
           |  |  | 91 | echo '</div>';
 | 
        
           |  |  | 92 |   | 
        
           |  |  | 93 | $inlinejs = "document.querySelector('#CustomDropdownButtonId button').innerHTML = 'Custom ID button found';";
 | 
        
           |  |  | 94 | $PAGE->requires->js_amd_inline($inlinejs);
 | 
        
           |  |  | 95 |   | 
        
           |  |  | 96 | echo '<div id="position" class="mb-4">';
 | 
        
           |  |  | 97 | echo "<h3>Dropdown position example</h3>";
 | 
        
           |  |  | 98 | $dialog = new core\output\local\dropdown\dialog('Open dialog', 'Dialog content');
 | 
        
           |  |  | 99 | $dialog->set_position(core\output\local\dropdown\dialog::POSITION['end']);
 | 
        
           |  |  | 100 | echo $OUTPUT->render($dialog);
 | 
        
           |  |  | 101 | echo '</div>';
 | 
        
           |  |  | 102 |   | 
        
           |  |  | 103 | echo '<div id="widths" class="mb-4">';
 | 
        
           |  |  | 104 | echo "<h3>Dropdown max width values example</h3>";
 | 
        
           |  |  | 105 | $content = '
 | 
        
           |  |  | 106 |     Some long long content. Some long long content. Some long long content. Some long long content.
 | 
        
           |  |  | 107 |     Some long long content. Some long long content. Some long long content. Some long long content.
 | 
        
           |  |  | 108 |     Some long long content. Some long long content. Some long long content. Some long long content.
 | 
        
           |  |  | 109 | ';
 | 
        
           |  |  | 110 |   | 
        
           |  |  | 111 | $dialog = new core\output\local\dropdown\dialog('Default dialog (adaptative)', $content);
 | 
        
           |  |  | 112 | $dialog->set_classes('mb-3');
 | 
        
           |  |  | 113 | echo $OUTPUT->render($dialog);
 | 
        
           |  |  | 114 |   | 
        
           |  |  | 115 | $dialog = new core\output\local\dropdown\dialog('Big dialog', $content);
 | 
        
           |  |  | 116 | $dialog->set_dialog_width(core\output\local\dropdown\dialog::WIDTH['big']);
 | 
        
           |  |  | 117 | $dialog->set_classes('mb-3');
 | 
        
           |  |  | 118 | echo $OUTPUT->render($dialog);
 | 
        
           |  |  | 119 |   | 
        
           |  |  | 120 | $dialog = new core\output\local\dropdown\dialog('Small dialog', $content);
 | 
        
           |  |  | 121 | $dialog->set_dialog_width(core\output\local\dropdown\dialog::WIDTH['small']);
 | 
        
           |  |  | 122 | $dialog->set_classes('mb-3');
 | 
        
           |  |  | 123 | echo $OUTPUT->render($dialog);
 | 
        
           |  |  | 124 | echo '</div>';
 | 
        
           |  |  | 125 |   | 
        
           |  |  | 126 | echo '<div id="dialogjscontrolssection" class="mb-4">';
 | 
        
           |  |  | 127 | echo "<h3>Dropdown JS module controls</h3>";
 | 
        
           |  |  | 128 | echo '<div class="mb-2">
 | 
        
           |  |  | 129 |     <button class="btn btn-secondary" id="buttontext">Change button text</button>
 | 
        
           |  |  | 130 |     <button class="btn btn-secondary" id="opendropdown">Open</button>
 | 
        
           |  |  | 131 |     <button class="btn btn-secondary" id="closedropdown">Close</button>
 | 
        
           |  |  | 132 |     <span id="dialogvisibility"></span>
 | 
        
           |  |  | 133 | </div>';
 | 
        
           |  |  | 134 | $dialog = new core\output\local\dropdown\dialog('Open dialog', 'Dialog content', [
 | 
        
           |  |  | 135 |     'extras' => ['id' => 'dialogjscontrols'],
 | 
        
           |  |  | 136 | ]);
 | 
        
           |  |  | 137 | echo $OUTPUT->render($dialog);
 | 
        
           |  |  | 138 | echo '</div>';
 | 
        
           |  |  | 139 |   | 
        
           |  |  | 140 | $inlinejs = <<<EOF
 | 
        
           |  |  | 141 | require(
 | 
        
           |  |  | 142 |     ['core/local/dropdown/dialog', 'jquery'],
 | 
        
           |  |  | 143 |     (Module, jQuery) => {
 | 
        
           |  |  | 144 |         const dialog = Module.getDropdownDialog('#dialogjscontrols');
 | 
        
           |  |  | 145 |   | 
        
           |  |  | 146 |         document.querySelector('#buttontext').addEventListener('click', () => {
 | 
        
           |  |  | 147 |             dialog.setButtonContent('New button text');
 | 
        
           |  |  | 148 |         });
 | 
        
           |  |  | 149 |   | 
        
           |  |  | 150 |         document.querySelector('#opendropdown').addEventListener('click', (e) => {
 | 
        
           |  |  | 151 |             e.stopPropagation();
 | 
        
           |  |  | 152 |             dialog.setVisible(true);
 | 
        
           |  |  | 153 |         });
 | 
        
           |  |  | 154 |   | 
        
           |  |  | 155 |         document.querySelector('#closedropdown').addEventListener('click', (e) => {
 | 
        
           |  |  | 156 |             e.stopPropagation();
 | 
        
           |  |  | 157 |             dialog.setVisible(false);
 | 
        
           |  |  | 158 |         });
 | 
        
           |  |  | 159 |   | 
        
           |  |  | 160 |         const visibility = () => {
 | 
        
           |  |  | 161 |             const text = 'The dropdown is ' + (dialog.isVisible() ? 'visible' : 'hidden') + '.';
 | 
        
           |  |  | 162 |             document.querySelector('#dialogvisibility').innerHTML = text;
 | 
        
           |  |  | 163 |         }
 | 
        
           |  |  | 164 |         visibility();
 | 
        
           |  |  | 165 |   | 
        
           |  |  | 166 |   | 
        
           |  |  | 167 |         // Bootstrap 4 events are still jQuery.
 | 
        
           |  |  | 168 |         jQuery(dialog.getElement()).on('shown.bs.dropdown', (e) => {
 | 
        
           |  |  | 169 |             visibility();
 | 
        
           |  |  | 170 |         });
 | 
        
           |  |  | 171 |         jQuery(dialog.getElement()).on('hidden.bs.dropdown', (e) => {
 | 
        
           |  |  | 172 |             visibility();
 | 
        
           |  |  | 173 |         });
 | 
        
           |  |  | 174 |     }
 | 
        
           |  |  | 175 | );
 | 
        
           |  |  | 176 | EOF;
 | 
        
           |  |  | 177 | $PAGE->requires->js_amd_inline($inlinejs);
 | 
        
           |  |  | 178 |   | 
        
           |  |  | 179 | echo "<h2>Dropdown status test page</h2>";
 | 
        
           |  |  | 180 |   | 
        
           |  |  | 181 | echo '<div id="statusregularscenario" class="mb-4">';
 | 
        
           |  |  | 182 | echo "<h3>Basic example</h3>";
 | 
        
           |  |  | 183 | $choice = new core\output\choicelist('Dialog content');
 | 
        
           |  |  | 184 | $choice->add_option('option1', 'Option 1', [
 | 
        
           |  |  | 185 |     'description' => 'Option 1 description'
 | 
        
           |  |  | 186 | ]);
 | 
        
           |  |  | 187 | $choice->add_option('option2', 'Option 2', [
 | 
        
           |  |  | 188 |     'description' => 'Option 2 description',
 | 
        
           |  |  | 189 |     'icon' => new pix_icon('t/hide', 'Eye icon 1')
 | 
        
           |  |  | 190 | ]);
 | 
        
           |  |  | 191 | $choice->add_option('option3', 'Option 3', [
 | 
        
           |  |  | 192 |     'icon' => new pix_icon('t/show', 'Eye icon 2')
 | 
        
           |  |  | 193 | ]);
 | 
        
           |  |  | 194 | $dialog = new core\output\local\dropdown\status('Open dialog', $choice);
 | 
        
           |  |  | 195 | echo $OUTPUT->render($dialog);
 | 
        
           |  |  | 196 | echo '</div>';
 | 
        
           |  |  | 197 |   | 
        
           |  |  | 198 | echo '<div id="statusselectedscenario" class="mb-4">';
 | 
        
           |  |  | 199 | echo "<h3>Selected element example</h3>";
 | 
        
           |  |  | 200 | $choice = new core\output\choicelist('Dialog content');
 | 
        
           |  |  | 201 | $choice->add_option('option1', 'Option 1', [
 | 
        
           |  |  | 202 |     'description' => 'Option 1 description',
 | 
        
           |  |  | 203 |     'icon' => new pix_icon('t/show', 'Eye icon 1')
 | 
        
           |  |  | 204 | ]);
 | 
        
           |  |  | 205 | $choice->add_option('option2', 'Option 2', [
 | 
        
           |  |  | 206 |     'description' => 'Option 2 description',
 | 
        
           |  |  | 207 |     'icon' => new pix_icon('t/hide', 'Eye icon 2')
 | 
        
           |  |  | 208 | ]);
 | 
        
           |  |  | 209 | $choice->add_option('option3', 'Option 3', [
 | 
        
           |  |  | 210 |     'description' => 'Option 3 description',
 | 
        
           |  |  | 211 |     'icon' => new pix_icon('t/stealth', 'Eye icon 3')
 | 
        
           |  |  | 212 | ]);
 | 
        
           |  |  | 213 | $choice->set_selected_value('option2');
 | 
        
           |  |  | 214 | $dialog = new core\output\local\dropdown\status('Open dialog', $choice);
 | 
        
           |  |  | 215 | echo $OUTPUT->render($dialog);
 | 
        
           |  |  | 216 | echo '</div>';
 | 
        
           |  |  | 217 |   | 
        
           |  |  | 218 | echo '<div id="statusdisablescenario" class="mb-4">';
 | 
        
           |  |  | 219 | echo "<h3>Disable option example</h3>";
 | 
        
           |  |  | 220 | $choice = new core\output\choicelist('Dialog content');
 | 
        
           |  |  | 221 | $choice->add_option('option1', 'Option 1');
 | 
        
           |  |  | 222 | $choice->add_option('option2', 'Option 2', [
 | 
        
           |  |  | 223 |     'description' => 'Option 2 description',
 | 
        
           |  |  | 224 |     'icon' => new pix_icon('t/hide', 'Eye icon')
 | 
        
           |  |  | 225 | ]);
 | 
        
           |  |  | 226 | $choice->add_option('option3', 'Option 3');
 | 
        
           |  |  | 227 | $choice->set_option_disabled('option2', true);
 | 
        
           |  |  | 228 | $dialog = new core\output\local\dropdown\status('Open dialog', $choice);
 | 
        
           |  |  | 229 | echo $OUTPUT->render($dialog);
 | 
        
           |  |  | 230 | echo '</div>';
 | 
        
           |  |  | 231 |   | 
        
           |  |  | 232 | echo '<div id="statusoptionextrasscenario" class="mb-4">';
 | 
        
           |  |  | 233 | echo "<h3>Set option extra attributes example</h3>";
 | 
        
           |  |  | 234 | $choice = new core\output\choicelist('Dialog content');
 | 
        
           |  |  | 235 | $choice->add_option('option1', 'Option 1');
 | 
        
           |  |  | 236 | $choice->add_option('option2', 'Option 2', [
 | 
        
           |  |  | 237 |     'description' => 'Option 2 description',
 | 
        
           |  |  | 238 |     'icon' => new pix_icon('t/hide', 'Eye icon')
 | 
        
           |  |  | 239 | ]);
 | 
        
           |  |  | 240 | $choice->add_option('option3', 'Option 3');
 | 
        
           |  |  | 241 | $choice->set_option_extras('option2', ['data-foo' => 'bar']);
 | 
        
           |  |  | 242 | $dialog = new core\output\local\dropdown\status('Open dialog', $choice);
 | 
        
           |  |  | 243 | echo $OUTPUT->render($dialog);
 | 
        
           |  |  | 244 | echo '</div>';
 | 
        
           |  |  | 245 |   | 
        
           |  |  | 246 | echo '<div id="statusoptionurl" class="mb-4">';
 | 
        
           |  |  | 247 | echo "<h3>Set option url example</h3>";
 | 
        
           |  |  | 248 | $choice = new core\output\choicelist('Dialog content');
 | 
        
           |  |  | 249 | $choice->add_option('option1', 'Option 1');
 | 
        
           |  |  | 250 | $choice->add_option('option2', 'Option 2', [
 | 
        
           |  |  | 251 |     'url' => new moodle_url('/lib/tests/behat/fixtures/dropdown_output_testpage.php', ['foo' => 'bar']),
 | 
        
           |  |  | 252 | ]);
 | 
        
           |  |  | 253 | $choice->add_option('option3', 'Option 3');
 | 
        
           |  |  | 254 | $choice->set_option_extras('option2', ['data-foo' => 'bar']);
 | 
        
           |  |  | 255 | $dialog = new core\output\local\dropdown\status('Open dialog', $choice);
 | 
        
           |  |  | 256 | echo $OUTPUT->render($dialog);
 | 
        
           |  |  | 257 | $foo = optional_param('foo', 'none', PARAM_TEXT);
 | 
        
           |  |  | 258 | echo "<p>Foo param value: $foo</p>";
 | 
        
           |  |  | 259 | echo '</div>';
 | 
        
           |  |  | 260 |   | 
        
           |  |  | 261 | echo '<div id="statussyncbutton" class="mb-4">';
 | 
        
           |  |  | 262 | echo "<h3>Sync button text</h3>";
 | 
        
           |  |  | 263 | $choice = new core\output\choicelist('Dialog content');
 | 
        
           |  |  | 264 | $choice->add_option('option1', 'Option 1', [
 | 
        
           |  |  | 265 |     'description' => 'Option 1 description',
 | 
        
           |  |  | 266 |     'icon' => new pix_icon('t/show', 'Eye icon 1')
 | 
        
           |  |  | 267 | ]);
 | 
        
           |  |  | 268 | $choice->add_option('option2', 'Option 2', [
 | 
        
           |  |  | 269 |     'description' => 'Option 2 description',
 | 
        
           |  |  | 270 |     'icon' => new pix_icon('t/hide', 'Eye icon 2')
 | 
        
           |  |  | 271 | ]);
 | 
        
           |  |  | 272 | $choice->add_option('option3', 'Option 3', [
 | 
        
           |  |  | 273 |     'description' => 'Option 3 description',
 | 
        
           |  |  | 274 |     'icon' => new pix_icon('t/stealth', 'Eye icon 3')
 | 
        
           |  |  | 275 | ]);
 | 
        
           |  |  | 276 | $choice->set_selected_value('option2');
 | 
        
           |  |  | 277 | $dialog = new core\output\local\dropdown\status(
 | 
        
           |  |  | 278 |     'Open dialog',
 | 
        
           |  |  | 279 |     $choice,
 | 
        
           |  |  | 280 |     ['buttonsync' => true, 'updatestatus' => true]
 | 
        
           |  |  | 281 | );
 | 
        
           |  |  | 282 | echo '<button class="btn">Focus helper</button>';
 | 
        
           |  |  | 283 | echo $OUTPUT->render($dialog);
 | 
        
           |  |  | 284 | echo '</div>';
 | 
        
           |  |  | 285 |   | 
        
           |  |  | 286 | echo '<div id="statusjscontrolsection" class="mb-4">';
 | 
        
           |  |  | 287 | echo "<h3>Status JS controls</h3>";
 | 
        
           |  |  | 288 | echo '<div class="mb-2">
 | 
        
           |  |  | 289 |     <button class="btn btn-secondary" id="setselected">Change selected value</button>
 | 
        
           |  |  | 290 |     <button class="btn btn-secondary" id="syncbutton">Enable sync</button>
 | 
        
           |  |  | 291 |     <button class="btn btn-secondary" id="updatestatus">Disable update</button>
 | 
        
           |  |  | 292 |     <span id="statusvalue"></span>
 | 
        
           |  |  | 293 | </div>';
 | 
        
           |  |  | 294 | $choice = new core\output\choicelist('Dialog content');
 | 
        
           |  |  | 295 | $choice->add_option('option1', 'Option 1', [
 | 
        
           |  |  | 296 |     'description' => 'Option 1 description',
 | 
        
           |  |  | 297 |     'icon' => new pix_icon('t/show', 'Eye icon 1')
 | 
        
           |  |  | 298 | ]);
 | 
        
           |  |  | 299 | $choice->add_option('option2', 'Option 2', [
 | 
        
           |  |  | 300 |     'description' => 'Option 2 description',
 | 
        
           |  |  | 301 |     'icon' => new pix_icon('t/hide', 'Eye icon 2')
 | 
        
           |  |  | 302 | ]);
 | 
        
           |  |  | 303 | $choice->add_option('option3', 'Option 3', [
 | 
        
           |  |  | 304 |     'description' => 'Option 3 description',
 | 
        
           |  |  | 305 |     'icon' => new pix_icon('t/stealth', 'Eye icon 3')
 | 
        
           |  |  | 306 | ]);
 | 
        
           |  |  | 307 | $choice->set_selected_value('option2');
 | 
        
           |  |  | 308 | $dialog = new core\output\local\dropdown\status(
 | 
        
           |  |  | 309 |     'Open dialog',
 | 
        
           |  |  | 310 |     $choice,
 | 
        
           |  |  | 311 |     [
 | 
        
           |  |  | 312 |         'extras' => ['id' => 'statusjscontrols'],
 | 
        
           |  |  | 313 |         'updatestatus' => true
 | 
        
           |  |  | 314 |     ],
 | 
        
           |  |  | 315 | );
 | 
        
           |  |  | 316 | echo $OUTPUT->render($dialog);
 | 
        
           |  |  | 317 | echo '</div>';
 | 
        
           |  |  | 318 |   | 
        
           |  |  | 319 | $inlinejs = <<<EOF
 | 
        
           |  |  | 320 | require(
 | 
        
           |  |  | 321 |     ['core/local/dropdown/status', 'jquery'],
 | 
        
           |  |  | 322 |     (Module, jQuery) => {
 | 
        
           |  |  | 323 |         const status = Module.getDropdownStatus('#statusjscontrols');
 | 
        
           |  |  | 324 |   | 
        
           |  |  | 325 |         const printValue = () => {
 | 
        
           |  |  | 326 |             const text = 'The status value is ' + status.getSelectedValue() + '.';
 | 
        
           |  |  | 327 |             document.querySelector('#statusvalue').innerHTML = text;
 | 
        
           |  |  | 328 |         }
 | 
        
           |  |  | 329 |         printValue();
 | 
        
           |  |  | 330 |   | 
        
           |  |  | 331 |         document.querySelector('#setselected').addEventListener('click', () => {
 | 
        
           |  |  | 332 |             if (status.getSelectedValue() == 'option2') {
 | 
        
           |  |  | 333 |                 status.setSelectedValue('option3');
 | 
        
           |  |  | 334 |             } else {
 | 
        
           |  |  | 335 |                 status.setSelectedValue('option2');
 | 
        
           |  |  | 336 |             }
 | 
        
           |  |  | 337 |         });
 | 
        
           |  |  | 338 |   | 
        
           |  |  | 339 |         document.querySelector('#syncbutton').addEventListener('click', (e) => {
 | 
        
           |  |  | 340 |             if (status.isButtonSyncEnabled()) {
 | 
        
           |  |  | 341 |                 status.setButtonSyncEnabled(false);
 | 
        
           |  |  | 342 |             } else {
 | 
        
           |  |  | 343 |                 status.setButtonSyncEnabled(true);
 | 
        
           |  |  | 344 |             }
 | 
        
           |  |  | 345 |             e.target.innerHTML = (status.isButtonSyncEnabled()) ? 'Disable sync': 'Enable sync';
 | 
        
           |  |  | 346 |         });
 | 
        
           |  |  | 347 |   | 
        
           |  |  | 348 |         document.querySelector('#updatestatus').addEventListener('click', (e) => {
 | 
        
           |  |  | 349 |             if (status.isUpdateStatusEnabled()) {
 | 
        
           |  |  | 350 |                 status.setUpdateStatusEnabled(false);
 | 
        
           |  |  | 351 |             } else {
 | 
        
           |  |  | 352 |                 status.setUpdateStatusEnabled(true);
 | 
        
           |  |  | 353 |             }
 | 
        
           |  |  | 354 |             e.target.innerHTML = (status.isUpdateStatusEnabled()) ? 'Disable update': 'Enable update';
 | 
        
           |  |  | 355 |         });
 | 
        
           |  |  | 356 |   | 
        
           |  |  | 357 |         status.getElement().addEventListener('change', () => {
 | 
        
           |  |  | 358 |             printValue();
 | 
        
           |  |  | 359 |         });
 | 
        
           |  |  | 360 |   | 
        
           |  |  | 361 |     }
 | 
        
           |  |  | 362 | );
 | 
        
           |  |  | 363 | EOF;
 | 
        
           |  |  | 364 | $PAGE->requires->js_amd_inline($inlinejs);
 | 
        
           |  |  | 365 |   | 
        
           |  |  | 366 | echo $OUTPUT->footer();
 |