Telegram Web K with changes to work inside I2P
https://web.telegram.i2p/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
49 lines
1.3 KiB
49 lines
1.3 KiB
import { cancelEvent, CLICK_EVENT_NAME } from "../helpers/dom"; |
|
import { closeBtnMenu } from "./misc"; |
|
import { ripple } from "./ripple"; |
|
|
|
export type ButtonMenuItemOptions = {icon: string, text: string, onClick: (e: MouseEvent | TouchEvent) => void, element?: HTMLElement/* , cancelEvent?: true */}; |
|
|
|
const ButtonMenuItem = (options: ButtonMenuItemOptions) => { |
|
if(options.element) return options.element; |
|
|
|
const {icon, text, onClick} = options; |
|
const el = document.createElement('div'); |
|
el.className = 'btn-menu-item tgico-' + icon; |
|
el.innerText = text; |
|
|
|
ripple(el); |
|
/* if(options.cancelEvent) { |
|
el.addEventListener(CLICK_EVENT_NAME, (e) => { |
|
cancelEvent(e); |
|
closeBtnMenu(); |
|
options.onClick(e); |
|
}); |
|
} else { |
|
el.addEventListener(CLICK_EVENT_NAME, onClick); |
|
} */ |
|
if(CLICK_EVENT_NAME == 'touchend') { // * cancel keyboard close |
|
el.addEventListener(CLICK_EVENT_NAME, (e) => { |
|
cancelEvent(e); |
|
options.onClick(e); |
|
closeBtnMenu(); |
|
}); |
|
} else { |
|
el.addEventListener(CLICK_EVENT_NAME, onClick); |
|
} |
|
|
|
return options.element = el; |
|
}; |
|
|
|
const ButtonMenu = (buttons: ButtonMenuItemOptions[]) => { |
|
const el = document.createElement('div'); |
|
el.classList.add('btn-menu'); |
|
|
|
const items = buttons.map(ButtonMenuItem); |
|
|
|
el.append(...items); |
|
|
|
return el; |
|
}; |
|
|
|
export default ButtonMenu; |