Your IP : 216.73.216.86


Current Path : /var/www/homesaver/www/bitrix/js/iblock/field-selector/dist/
Upload File :
Current File : /var/www/homesaver/www/bitrix/js/iblock/field-selector/dist/field-selector.bundle.js.map

{"version":3,"file":"field-selector.bundle.js","sources":["../src/value-collections/base-collection.js","../src/value-collections/integer-collection.js","../src/value-collections/string-collection.js","../src/field-selector.js"],"sourcesContent":["export class BaseCollection\n{\n\tvalues: [] = [];\n\n\tconstructor()\n\t{\n\t\tthis.clear();\n\t}\n\n\tclear(): void\n\t{\n\t\tthis.values = [];\n\t}\n\n\tset(rawValues: []): void\n\t{\n\t\tthis.values = this.validateValues(rawValues);\n\t}\n\n\tget(): []\n\t{\n\t\treturn this.values;\n\t}\n\n\tvalidateValues(rawValues: []): []\n\t{\n\t\treturn rawValues;\n\t}\n}\n","import { Type } from 'main.core';\nimport { BaseCollection } from './base-collection';\n\nexport class IntegerCollection extends BaseCollection\n{\n\tvalidateValues(rawValues: []): []\n\t{\n\t\tconst result = [];\n\t\trawValues.forEach((value): void => {\n\t\t\tif (!Type.isInteger(value))\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (value > 0)\n\t\t\t{\n\t\t\t\tresult.push(value);\n\t\t\t}\n\t\t});\n\n\t\treturn result;\n\t}\n}\n","import { Type } from 'main.core';\nimport { BaseCollection } from './base-collection';\n\nexport class StringCollection extends BaseCollection\n{\n\tvalidateValues(rawValues: []): []\n\t{\n\t\tconst result = [];\n\t\trawValues.forEach((value): void => {\n\t\t\tif (!Type.isString(value))\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst trimValue = value.trim();\n\t\t\tif (trimValue !== '')\n\t\t\t{\n\t\t\t\tresult.push(trimValue);\n\t\t\t}\n\t\t});\n\n\t\treturn result;\n\t}\n}\n","import { Dom, Tag, Text, Type } from 'main.core';\nimport { type BaseEvent } from 'main.core.events';\nimport { type Item, type ItemId, TagSelector, type TagSelectorOptions } from 'ui.entity-selector';\nimport { FieldSelectorConfig } from './field-selector-config';\nimport { TabMessages } from './tab-messages';\nimport { BaseCollection } from './value-collections/base-collection';\nimport { IntegerCollection } from './value-collections/integer-collection';\nimport { StringCollection } from './value-collections/string-collection';\n\nexport class FieldSelector\n{\n\tstate: boolean = true;\n\tcontainerId: string = '';\n\tfieldName: string = '';\n\tmultiple: boolean = false;\n\tvalueCollection: BaseCollection;\n\tiblockId: number = 0;\n\tuserType: string = '';\n\tentityId: string = '';\n\tsearchMessages: TabMessages = {};\n\tchangeEvents: string[] = [];\n\n\tconstructor(selectorConfig: FieldSelectorConfig)\n\t{\n\t\tconst config: FieldSelectorConfig = Type.isPlainObject(selectorConfig) ? selectorConfig : {};\n\n\t\tthis.resetState();\n\n\t\tthis.setContainerId(config.containerId);\n\t\tthis.setFieldName(config.fieldName);\n\t\tthis.setMultiple(config.multiple);\n\t\tthis.initValueCollection(config.collectionType ?? 'int');\n\t\tthis.setValues(Type.isArray(config.selectedItems) ? config.selectedItems : [config.selectedItems]);\n\t\tthis.setIblockId(config.iblockId);\n\t\tthis.setUserType(config.userType);\n\t\tthis.setEntityId(config.entityId);\n\t\tthis.setSearchMessages(config.searchMessages);\n\t\tthis.setChangeEvents(config.changeEvents);\n\t}\n\n\tresetState(): void\n\t{\n\t\tthis.state = true;\n\t}\n\n\tisStateSuccess(): boolean\n\t{\n\t\treturn this.state;\n\t}\n\n\tshowError(error): void\n\t{\n\t\tthis.state = false;\n\t\tif (Type.isStringFilled(error))\n\t\t{\n\t\t\tconsole.error(`BX.Iblock.FieldSelector: ${error}`);\n\t\t}\n\t}\n\n\tshowWarning(warning): void\n\t{\n\t\tthis.state = false;\n\t\tif (Type.isStringFilled(warning))\n\t\t{\n\t\t\tconsole.warn(`BX.Iblock.FieldSelector: ${warning}`);\n\t\t}\n\t}\n\n\tsetContainerId(containerId): void\n\t{\n\t\tthis.containerId = Type.isStringFilled(containerId) ? containerId : '';\n\t\tif (this.containerId === '')\n\t\t{\n\t\t\tthis.showError('containerId is empty. Selector is can\\'t be used');\n\t\t}\n\t}\n\n\tgetContainerId(): string\n\t{\n\t\treturn this.containerId;\n\t}\n\n\tsetFieldName(fieldName): void\n\t{\n\t\tthis.fieldName = Type.isStringFilled(fieldName) ? fieldName : '';\n\t\tif (this.fieldName === '')\n\t\t{\n\t\t\tthis.showError('fieldName is empty. Selector is can\\'t be used');\n\t\t}\n\t}\n\n\tgetFieldName(): string\n\t{\n\t\treturn this.fieldName;\n\t}\n\n\tsetMultiple(multiple): void\n\t{\n\t\tthis.multiple = Type.isBoolean(multiple) ? multiple : false;\n\t}\n\n\tgetMultiple(): boolean\n\t{\n\t\treturn this.multiple;\n\t}\n\n\tgetTagSelectorContainerId(): string\n\t{\n\t\treturn `${this.getContainerId()}_selector`;\n\t}\n\n\tgetTagResultContainerId(): string\n\t{\n\t\treturn `${this.getContainerId()}_results`;\n\t}\n\n\tgetTagSelectorControlId(): string\n\t{\n\t\treturn `${this.getContainerId()}Control`;\n\t}\n\n\tinitValueCollection(collectionType: string): void\n\t{\n\t\tif (collectionType === 'string')\n\t\t{\n\t\t\tthis.valueCollection = new StringCollection();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.valueCollection = new IntegerCollection();\n\t\t}\n\t}\n\n\tsetValues(rawValues: []): void\n\t{\n\t\tthis.valueCollection.set(rawValues);\n\t}\n\n\tgetValues(): []\n\t{\n\t\treturn this.valueCollection.get();\n\t}\n\n\tgetTagSelectorItems(): ItemId[]\n\t{\n\t\tconst entityId: string = this.getEntityId();\n\t\tconst result = [];\n\n\t\tthis.getValues().forEach((value: string | number): void => {\n\t\t\tconst item: ItemId = [\n\t\t\t\tentityId,\n\t\t\t\tvalue,\n\t\t\t];\n\t\t\tresult.push(item);\n\t\t});\n\n\t\treturn result;\n\t}\n\n\tsetIblockId(iblockId): void\n\t{\n\t\tthis.iblockId = 0;\n\t\tif (Type.isInteger(iblockId) && iblockId > 0)\n\t\t{\n\t\t\tthis.iblockId = iblockId;\n\t\t}\n\t}\n\n\tgetIblockId(): number\n\t{\n\t\treturn this.iblockId;\n\t}\n\n\tsetUserType(userType): void\n\t{\n\t\tthis.userType = '';\n\t\tif (Type.isStringFilled(userType))\n\t\t{\n\t\t\tthis.userType = userType;\n\t\t}\n\t}\n\n\tgetUserType(): string\n\t{\n\t\treturn this.userType;\n\t}\n\n\tsetEntityId(entityId): void\n\t{\n\t\tthis.entityId = Type.isStringFilled(entityId) ? entityId : '';\n\t\tif (this.entityId === '')\n\t\t{\n\t\t\tthis.showError('entityI id is empty. Selector is can\\'t be used');\n\t\t}\n\t}\n\n\tgetEntityId(): string\n\t{\n\t\treturn this.entityId;\n\t}\n\n\tsetSearchMessages(messages): void\n\t{\n\t\tif (Type.isPlainObject(messages))\n\t\t{\n\t\t\tthis.searchMessages.title = Type.isStringFilled(messages.title) ? messages.title : '';\n\t\t\tthis.searchMessages.subtitle = Type.isStringFilled(messages.subtitle) ? messages.subtitle : '';\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.searchMessages.title = '';\n\t\t\tthis.searchMessages.subtitle = '';\n\t\t}\n\t}\n\n\tgetSearchTabTitle(): string\n\t{\n\t\treturn this.searchMessages.title;\n\t}\n\n\tgetSearchSubtitle(): string\n\t{\n\t\treturn this.searchMessages.subtitle;\n\t}\n\n\tsetChangeEvents(events): void\n\t{\n\t\tthis.changeEvents = [];\n\t\tif (Type.isArrayFilled(events))\n\t\t{\n\t\t\tevents.forEach((value): void => {\n\t\t\t\tif (Type.isStringFilled(value))\n\t\t\t\t{\n\t\t\t\t\tthis.changeEvents.push(value);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tgetChangeEvents(): string[]\n\t{\n\t\treturn this.changeEvents;\n\t}\n\n\trender(): void\n\t{\n\t\tif (!this.isStateSuccess())\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tconst containerId: string = this.getContainerId();\n\t\tconst container = document.getElementById(containerId);\n\t\tif (!Type.isElementNode(container))\n\t\t{\n\t\t\tthis.showError(`dom-container ${containerId} is absent. Selector is can't be used`);\n\t\t}\n\n\t\tconst tagSelectorContainer = Tag.render`\n\t\t\t<div id=\"${this.getTagSelectorContainerId()}\"></div>\n\t\t`;\n\t\tDom.append(tagSelectorContainer, container);\n\n\t\tconst tagResult = Tag.render`\n\t\t\t<div id=\"${this.getTagResultContainerId()}\"></div>\n\t\t`;\n\t\tDom.append(tagResult, container);\n\n\t\tthis.renderSelectedItems(this.getValues());\n\n\t\tconst tagSelectorConfig: TagSelectorOptions = {\n\t\t\tid: this.getTagSelectorControlId(),\n\t\t\tmultiple: this.getMultiple(),\n\t\t\tdialogOptions: {\n\t\t\t\tid: this.getTagSelectorControlId(),\n\t\t\t\tmultiple: this.getMultiple(),\n\t\t\t\tpreselectedItems: this.getTagSelectorItems(),\n\t\t\t\tentities: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: this.getEntityId(),\n\t\t\t\t\t\tdynamicLoad: true,\n\t\t\t\t\t\tdynamicSearch: true,\n\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\tiblockId: this.getIblockId(),\n\t\t\t\t\t\t\tpropertyType: this.getUserType(),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tsearchOptions: {\n\t\t\t\t\tallowCreateItem: false,\n\t\t\t\t},\n\t\t\t\tsearchTabOptions: {\n\t\t\t\t\tstub: true,\n\t\t\t\t\tstubOptions: {\n\t\t\t\t\t\ttitle: Text.encode(this.getSearchTabTitle()),\n\t\t\t\t\t\tsubtitle: Text.encode(this.getSearchSubtitle()),\n\t\t\t\t\t\tarrow: false,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tevents: {\n\t\t\t\t\t'Item:onSelect': this.updateSelectedItems.bind(this),\n\t\t\t\t\t'Item:onDeselect': this.updateSelectedItems.bind(this),\n\t\t\t\t},\n\t\t\t},\n\t\t};\n\n\t\tconst tagSelector = new TagSelector(tagSelectorConfig);\n\t\ttagSelector.renderTo(tagSelectorContainer);\n\t}\n\n\trenderSelectedItems(items: []): void\n\t{\n\t\tconst tagResult = document.getElementById(this.getTagResultContainerId());\n\t\tif (!Type.isDomNode(tagResult))\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tconst fieldName = this.getFieldName();\n\t\ttagResult.innerHTML = '';\n\t\tif (items.length > 0)\n\t\t{\n\t\t\titems.forEach((value: string | number): void => {\n\t\t\t\tconst hiddenValue = Tag.render`\n\t\t\t\t\t<input type=\"hidden\" name=\"${fieldName}\" value=\"${Tag.safe`${value.toString()}`}\">\n\t\t\t\t`;\n\t\t\t\tDom.append(hiddenValue, tagResult);\n\t\t\t});\n\t\t}\n\t\telse\n\t\t{\n\t\t\tconst emptyValue = Tag.render`\n\t\t\t\t<input type=\"hidden\" name=\"${fieldName}\" value=\"\">\n\t\t\t`;\n\t\t\tDom.append(emptyValue, tagResult);\n\t\t}\n\t}\n\n\tupdateSelectedItems(event: BaseEvent): void\n\t{\n\t\tconst dialog = event.getTarget();\n\t\tif (!dialog.isMultiple())\n\t\t{\n\t\t\tdialog.hide();\n\t\t}\n\n\t\tconst selectedItems = dialog.getSelectedItems();\n\t\tif (Type.isArray(selectedItems))\n\t\t{\n\t\t\tconst parsedValues = [];\n\t\t\tselectedItems.forEach((item: Item): void => {\n\t\t\t\tparsedValues.push(item.getId());\n\t\t\t});\n\t\t\tthis.renderSelectedItems(parsedValues);\n\t\t\tconst eventList: string[] = this.getChangeEvents();\n\t\t\teventList.forEach((event: string): void => {\n\t\t\t\tBX.Event.EventEmitter.emit(event);\n\t\t\t});\n\t\t}\n\t}\n}\n"],"names":["BaseCollection","babelHelpers","this","clear","key","value","values","rawValues","validateValues","IntegerCollection","result","forEach","Type","isInteger","push","StringCollection","isString","trimValue","trim","FieldSelector","selectorConfig","config","isPlainObject","resetState","setContainerId","containerId","setFieldName","fieldName","setMultiple","multiple","initValueCollection","collectionType","setValues","isArray","selectedItems","setIblockId","iblockId","setUserType","userType","setEntityId","entityId","setSearchMessages","searchMessages","setChangeEvents","changeEvents","state","error","isStringFilled","console","warning","warn","showError","isBoolean","getContainerId","valueCollection","set","get","getEntityId","getValues","item","messages","title","subtitle","events","isArrayFilled","_this","isStateSuccess","container","document","getElementById","isElementNode","tagSelectorContainer","Tag","render","getTagSelectorContainerId","Dom","append","tagResult","getTagResultContainerId","renderSelectedItems","tagSelectorConfig","id","getTagSelectorControlId","getMultiple","dialogOptions","preselectedItems","getTagSelectorItems","entities","dynamicLoad","dynamicSearch","options","getIblockId","propertyType","getUserType","searchOptions","allowCreateItem","searchTabOptions","stub","stubOptions","Text","encode","getSearchTabTitle","getSearchSubtitle","arrow","Item:onSelect","updateSelectedItems","bind","Item:onDeselect","TagSelector","renderTo","items","isDomNode","getFieldName","innerHTML","length","hiddenValue","safe","toString","emptyValue","event","dialog","getTarget","isMultiple","hide","getSelectedItems","parsedValues","getId","getChangeEvents","BX","Event","EventEmitter","emit"],"mappings":"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"}