/* * https://github.com/morethanwords/tweb * Copyright (C) 2019-2021 Eduard Kuzmenko * https://github.com/morethanwords/tweb/blob/master/LICENSE */ import { IS_TOUCH_SUPPORTED } from "../../environment/touchSupport"; import AppSelectPeers from "../appSelectPeers"; import PopupElement from "."; import { LangPackKey, _i18n } from "../../lib/langPack"; export default class PopupPickUser extends PopupElement { protected selector: AppSelectPeers; constructor(options: { peerTypes: AppSelectPeers['peerType'], onSelect?: (peerId: PeerId) => Promise | void, onClose?: () => void, placeholder: LangPackKey, chatRightsAction?: AppSelectPeers['chatRightsAction'], peerId?: number, selfPresence?: LangPackKey }) { super('popup-forward', null, {closable: true, overlayClosable: true, body: true}); if(options.onClose) this.onClose = options.onClose; this.selector = new AppSelectPeers({ appendTo: this.body, onChange: async() => { const selected = this.selector.getSelected(); const peerId = selected[selected.length - 1].toPeerId(); if(options.onSelect) { const res = options.onSelect(peerId); if(res instanceof Promise) { try { await res; } catch(err) { return; } } } this.selector = null; this.hide(); }, peerType: options.peerTypes, onFirstRender: () => { this.show(); this.selector.checkForTriggers(); // ! due to zero height before mounting if(!IS_TOUCH_SUPPORTED) { this.selector.input.focus(); } }, chatRightsAction: options.chatRightsAction, multiSelect: false, rippleEnabled: false, avatarSize: 46, peerId: options.peerId, placeholder: options.placeholder, selfPresence: options.selfPresence }); //this.scrollable = new Scrollable(this.body); this.title.append(this.selector.input); } }