File : dialogs/selectDialog/SelectDialog.js

1
/*
2
Copyright - 2017 2023 - wwwouaiebe - Contact: https://www.ouaie.be/
3
4
This  program is free software;
5
you can redistribute it and/or modify it under the terms of the
6
GNU General Public License as published by the Free Software Foundation;
7
either version 3 of the License, or any later version.
8
9
This program 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 this program; if not, write to the Free Software
16
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
17
*/
18
/*
19
Changes:
20
    - v4.0.0:
21
        - created from v3.6.0
22
Doc reviewed 202208
23
 */
24
25
import ModalBaseDialog from '../baseDialog/ModalBaseDialog.js';
26
import SelectOptionData from './SelectOptionData.js';
27
import SelectControl from '../../controls/selectControl/SelectControl.js';
28
29
/* ------------------------------------------------------------------------------------------------------------------------- */
30
/**
31
Simple dialog with a select element
32
*/
33
/* ------------------------------------------------------------------------------------------------------------------------- */
34
35
class SelectDialog extends ModalBaseDialog {
36
37
    /**
38
    The select control
39
    @type {SelectControl}
40
    */
41
42
    #selectControl;
43
44
    /**
45
    The constructor
46
    @param {BaseDialogOptions|Object} options An Object with the needed options. See DialogOptions class.
47
    */
48
49
    constructor ( options ) {
50
        super ( options );
51
    }
52
53
    /**
54
    Create all the controls needed for the dialog.
55
    Overload of the base class createContentHTML
56
    */
57
58
    createContentHTML ( ) {
59
        this.#selectControl = new SelectControl (
60
            {
61
                elements : Array.from ( this.options.selectOptionsData, optionData => optionData.text )
62
            }
63
        );
64
    }
65
66
    /**
67
    Get the title of the dialog. Can be overloaded in the derived classes
68
    @type {String}
69
    */
70
71
    get title ( ) { return this.options.title || ''; }
72
73
    /**
74
    Get an array with the HTMLElements that have to be added in the content of the dialog.
75
    Can be overloaded in the derived classes
76
    @type {Array.<HTMLElement>}
77
    */
78
79
    get contentHTMLElements ( ) {
80
        return [ this.#selectControl.controlHTMLElement    ];
81
    }
82
83
    /**
84
    Overload of the BaseDialog.onOk ( ) method.
85
    */
86
87
    onOk ( ) {
88
        super.onOk ( this.options.selectOptionsData [ this.#selectControl.selectedIndex ].objId );
89
    }
90
91
}
92
93
export { SelectOptionData, SelectDialog };
94
95
/* --- End of file --------------------------------------------------------------------------------------------------------- */
96