/*
 * 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;
}
