[BUGFIX] Prevent loading jsfunc.inline.js twice
[Packages/TYPO3.CMS.git] / typo3 / sysext / backend / Resources / Private / TypeScript / ToggleSearchToolbox.ts
1 /*
2  * This file is part of the TYPO3 CMS project.
3  *
4  * It is free software; you can redistribute it and/or modify it under
5  * the terms of the GNU General Public License, either version 2
6  * of the License, or any later version.
7  *
8  * For the full copyright and license information, please read the
9  * LICENSE.txt file that was distributed with this source code.
10  *
11  * The TYPO3 project - inspiring people to share!
12  */
13
14 import * as $ from 'jquery';
15 import DocumentHeader = require('./DocumentHeader');
16 import 'TYPO3/CMS/Backend/jquery.clearable';
17
18 /**
19  * Module: TYPO3/CMS/Backend/ToggleSearchToolbox
20  * Toggle the search toolbox
21  * @exports TYPO3/CMS/Backend/ToggleSearchToolbox
22  */
23 class ToggleSearchToolbox {
24   constructor() {
25     $((): void => {
26       this.initialize();
27     });
28   }
29
30   private initialize(): void {
31     const $toolbar = $('#db_list-searchbox-toolbar');
32     $('.t3js-toggle-search-toolbox').on('click', (): void => {
33       $toolbar.toggle();
34       DocumentHeader.reposition();
35       if ($toolbar.is(':visible')) {
36         $('#search_field').focus();
37       }
38     });
39
40     const $searchFields = $('#search_field');
41     const searchResultShown = ('' !== $searchFields.val());
42
43     // make search field clearable
44     $searchFields.clearable({
45       onClear: (): void => {
46         if (searchResultShown) {
47           $(this).closest('form').submit();
48         }
49       }
50     });
51   }
52 }
53
54 export = new ToggleSearchToolbox();