403Webshell
Server IP : 80.87.202.40  /  Your IP : 216.73.216.169
Web Server : Apache
System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64
User : bitrix ( 600)
PHP Version : 8.2.27
Disable Function : NONE
MySQL : OFF |  cURL : ON |  WGET : ON |  Perl : ON |  Python : OFF |  Sudo : ON |  Pkexec : ON
Directory :  /home/bitrix/ext_www/cvetdv.ru/bitrix/js/landing/ui/card/iconoptionscard/src/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /home/bitrix/ext_www/cvetdv.ru/bitrix/js/landing/ui/card/iconoptionscard/src/iconoptionscard.js
import {Dom, Event, Tag, Type} from 'main.core';
import {BaseCard} from 'landing.ui.card.basecard';
import {Loc} from 'landing.loc';

import 'ui.fonts.opensans';
import './css/style.css';
import {IconPanel} from 'landing.ui.panel.iconpanel';

/**
 * @memberOf BX.Landing.UI.Card
 */
export class IconOptionsCard extends BaseCard
{
	options: [string] = [];

	constructor()
	{
		super();
		this.setEventNamespace('BX.Landing.UI.Card.IconOptionsCard');
	}

	getLayout(): HTMLDivElement
	{
		return this.cache.remember('layout', () =>
		{
			return Tag.render`
				<div class="landing-ui-card landing-ui-card-icon-options --hide">
					<div class="landing-ui-card-icon-options-title">${Loc.getMessage('LANDING_ICONS_CHANGE_STYLE')}</div>
					<div class="landing-ui-card-icon-options-items"></div>
				</div>
			`;
		});
	}

	getOptionsLayout(): HTMLElement
	{
		return this.getLayout().querySelector('.landing-ui-card-icon-options-items');
	}

	getOptions(): [string]
	{
		return this.options;
	}

	setOptions(options: [], activeOption: string)
	{
		if (options.length > 0)
		{
			this.options = options;
			Dom.clean(this.getOptionsLayout());
			Dom.removeClass(this.getLayout(), '--hide');
			options.forEach(option =>
			{
				const isActive = (option === activeOption) ? ' --active' : '';
				const optionLayout = Tag.render`<span class="${option}${isActive}"></span>`;

				Event.bind(optionLayout, 'click', this.onOptionClick.bind(this, option));

				Dom.append(optionLayout, this.getOptionsLayout());
			});
		}
	}

	onOptionClick(option)
	{
		this.getOptionsLayout().querySelectorAll('span').forEach(optionItem => {
			Dom.removeClass(optionItem, '--active');
			if (Dom.hasClass(optionItem, option))
			{
				Dom.addClass(optionItem, '--active')
			}
		});

		this.emit('onChange', {option: option});
	}

	setOptionsByItem(classList: [])
	{
		IconPanel
			.getLibraries()
			.then(libraries => {
				if (classList.length > 0)
				{
					const iconOptions = new Set();
					let iconOptionActive;

					libraries.forEach(library =>
					{
						library.categories.forEach(category =>
						{
							category.items.forEach(item =>
							{
								if (Type.isObject(item))
								{
									const foundedOptions = item.options.filter(option =>
										classList.every(iconClass => option.split(' ').includes(iconClass))
									);
									if (foundedOptions.length > 0)
									{
										item.options.forEach(option => {iconOptions.add(option)});
										iconOptionActive = foundedOptions[0];
									}
								}
								else
								{
									if (
										classList.every(iconClass => item.split(' ').includes(iconClass))
									)
									{
										iconOptions.add(item);
										iconOptionActive = item;
									}
								}
							})
						})
					});

					if (iconOptions.size > 0)
					{
						this.setOptions([...iconOptions], iconOptionActive);
					}
				}
			});
	}
}

Youez - 2016 - github.com/yon3zu
LinuXploit