import {ipcRenderer} from 'electron'; import {htmlEscape} from 'escape-goat'; import BaseComponent from '../../components/base'; interface BaseSectionProps { $element: HTMLElement; disabled?: boolean; value: boolean; clickHandler: () => void; } export default class BaseSection extends BaseComponent { generateSettingOption(props: BaseSectionProps): void { const {$element, disabled, value, clickHandler} = props; $element.textContent = ''; const $optionControl = this.generateNodeFromHTML(this.generateOptionHTML(value, disabled)); $element.append($optionControl); if (!disabled) { $optionControl.addEventListener('click', clickHandler); } } generateOptionHTML(settingOption: boolean, disabled?: boolean): string { const labelHTML = disabled ? '' : ''; if (settingOption) { return htmlEscape`
` + labelHTML + htmlEscape`
`; } return htmlEscape`
` + labelHTML + htmlEscape`
`; } /* A method that in future can be used to create dropdown menus using \n`; Object.keys(options).forEach(key => { html += htmlEscape`\n`; }); html += ''; return html; } reloadApp(): void { ipcRenderer.send('forward-message', 'reload-viewer'); } }