/* * https://github.com/morethanwords/tweb * Copyright (C) 2019-2021 Eduard Kuzmenko * https://github.com/morethanwords/tweb/blob/master/LICENSE */ import { attachClickEvent } from "../../helpers/dom/clickEvent"; import ListenerSetter from "../../helpers/listenerSetter"; import { i18n, LangPackKey } from "../../lib/langPack"; import { ripple } from "../ripple"; export default function makeButton(className: string, listenerSetter: ListenerSetter, options: { text?: LangPackKey | HTMLElement, isDanger?: boolean, noRipple?: boolean, callback?: () => void, icon?: string, isConfirm?: boolean, }) { const _className = className + '-button'; const buttonDiv = document.createElement('div'); buttonDiv.classList.add(_className, 'call-button', 'rp-overflow'); if(options.icon) { buttonDiv.classList.add('tgico-' + options.icon); } if(!options.noRipple) { ripple(buttonDiv); } if(options.isDanger) { buttonDiv.classList.add(_className + '-red'); } if(options.isConfirm) { buttonDiv.classList.add(_className + '-green'); } if(options.callback) { attachClickEvent(buttonDiv, options.callback, {listenerSetter}); } let ret = buttonDiv; if(options.text) { const div = document.createElement('div'); div.classList.add(_className + '-container', 'call-button-container'); const textEl = typeof(options.text) === 'string' ? i18n(options.text) : options.text; textEl.classList.add(_className + '-text', 'call-button-text'); div.append(buttonDiv, textEl); ret = div; } return ret; }