%PDF- %PDF-
Server IP : 37.220.80.31 / Your IP : 18.191.117.57 Web Server : Apache/2.4.52 (Ubuntu) System : Linux 3051455-guretool.twc1.net 5.15.0-107-generic #117-Ubuntu SMP Fri Apr 26 12:26:49 UTC 2024 x86_64 User : www-root ( 1010) PHP Version : 7.4.33 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority, MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /var/www/www-root/data/www/dev.artlot24.ru/bitrix/js/landing/ui/button/basebutton/src/ |
Upload File : |
import {Type, Cache, Tag, Text, Dom, Event} from 'main.core'; import {EventEmitter} from 'main.core.events'; import type BaseButtonOptions from './types/button-options'; import defaultOptions from './internal/default-options'; import './css/base_button.css'; /** * @memberOf BX.Landing.UI.Button */ export class BaseButton extends EventEmitter { id: string; options: {[key: string]: any}; layout: HTMLElement; cache: Cache.MemoryCache; constructor(id, options: BaseButtonOptions) { super(); this.setEventNamespace('BX.Landing.UI.Button.BaseButton'); const compatOptions = (() => { if (Type.isPlainObject(options)) { return options; } if (Type.isPlainObject(id)) { return id; } return {}; })(); const compatId = (() => { if (Type.isStringFilled(id)) { return id; } if (Type.isStringFilled(compatOptions.id)) { return compatOptions.id; } return Text.getRandom(); })(); this.options = {...defaultOptions, ...compatOptions}; this.id = compatId; this.cache = new Cache.MemoryCache(); this.layout = this.getLayout(); if (Type.isStringFilled(this.options.html)) { this.setHtml(this.options.html); } else { this.setText(this.options.text); } if (Type.isFunction(this.options.onClick)) { Event.bind(this.getLayout(), 'click', this.options.onClick); } if (Type.isPlainObject(this.options.attrs)) { Dom.attr(this.getLayout(), this.options.attrs); } if ( Type.isArray(this.options.className) || Type.isStringFilled(this.options.className) ) { Dom.addClass(this.layout, this.options.className); } if (this.options.active) { this.activate(); } if (this.options.disabled) { this.disable(); } Event.bind(this.getLayout(), 'click', (event) => { event.preventDefault(); this.emit('onClick'); }); } getLayout(): HTMLElement { return this.cache.remember('layout', () => { return Tag.render` <button class="landing-ui-button" type="button" data-id="${this.id}" >${this.getTextLayout()}</button> `; }); } getTextLayout(): HTMLSpanElement { return this.cache.remember('textLayout', () => { return Tag.render`<span class="landing-ui-button-text"></span>`; }); } setHtml(html: string) { this.getTextLayout().innerHTML = html; } setText(text: string) { this.getTextLayout().innerHTML = Text.encode(text); } /** * @deprecated */ on(event, handler, context) { if (Type.isString(event) && Type.isFunction(handler)) { Event.bind(this.layout, event, BX.proxy(handler, context)); } } setAttributes(attrs) { Dom.attr(this.layout, attrs); } setAttribute(key, value) { Dom.attr(this.layout, key, value); } disable() { Dom.addClass(this.layout, 'landing-ui-disabled'); } enable() { Dom.removeClass(this.layout, 'landing-ui-disabled'); Dom.attr(this.layout, 'disabled', null); } isEnabled() { return !Dom.hasClass(this.layout, 'landing-ui-disabled'); } show() { return BX.Landing.Utils.show(this.layout); } hide() { return BX.Landing.Utils.hide(this.layout); } activate() { Dom.addClass(this.layout, 'landing-ui-active'); } deactivate() { Dom.removeClass(this.layout, 'landing-ui-active'); } isActive() { return Dom.hasClass(this.layout, 'landing-ui-active'); } }