| Current Path : /var/www/homesaver/www/bitrix/js/iblock/userfield-selector/dist/ |
| Current File : /var/www/homesaver/www/bitrix/js/iblock/userfield-selector/dist/userfield-selector.bundle.js.map |
{"version":3,"file":"userfield-selector.bundle.js","sources":["../src/userfield-selector.js"],"sourcesContent":["import { Dom, Runtime, Tag, Type } from 'main.core';\nimport { EventEmitter } from 'main.core.events';\nimport { Item, TagSelector } from 'ui.entity-selector';\n\ntype ItemId = [\n\tstring,\n\t\tstring | number\n];\n\nconst SECTION_TYPE = 'iblock_section';\nconst ELEMENT_TYPE = 'iblock_element';\n\nexport class UserFieldSelector\n{\n\t#params: string;\n\t#fieldName: string;\n\t#value: Array;\n\t#isMultiple: string;\n\t#iblockId: number;\n\t#type: string;\n\n\t#tagSelector: ?TagSelector;\n\n\t#hiddenInputsContainer: ?HTMLElement;\n\t#tagSelectorContainer: ?HTMLElement;\n\n\tconstructor(params: string)\n\t{\n\t\tthis.#params = JSON.parse(params);\n\n\t\tthis.#init();\n\t}\n\n\t#init(): void\n\t{\n\t\tconst { fieldName, value, isMultiple, iblockId, type } = this.#params;\n\n\t\tif (!Type.isStringFilled(fieldName))\n\t\t{\n\t\t\tthrow new RangeError('fieldName must be a string');\n\t\t}\n\n\t\tif (![SECTION_TYPE, ELEMENT_TYPE].includes(type))\n\t\t{\n\t\t\tthrow new RangeError(`type must be a ${SECTION_TYPE} or ${ELEMENT_TYPE}`);\n\t\t}\n\n\t\tif (!Type.isNumber(iblockId) || iblockId <= 0)\n\t\t{\n\t\t\tthrow new RangeError('iblockId must be a number and greater than 0');\n\t\t}\n\n\t\tthis.#fieldName = fieldName;\n\t\tthis.#value = (Type.isArray(value) ? value : []).filter((item) => !Number.isNaN(item) && item > 0);\n\t\tthis.#isMultiple = isMultiple === true;\n\t\tthis.#iblockId = iblockId;\n\t\tthis.#type = type;\n\t}\n\n\trenderTo(node: HTMLElement): void\n\t{\n\t\tDom.clean(node);\n\n\t\tthis.#appendHiddenInputsContainer(node);\n\t\tthis.#renderHiddenInputs();\n\n\t\tthis.#appendTagSelectorContainer(node);\n\t\tthis.#renderTagSelector();\n\t}\n\n\t#appendHiddenInputsContainer(node: HTMLElement): void\n\t{\n\t\tconst hiddenInputsContainer = this.#getHiddenInputsContainer();\n\t\tDom.append(hiddenInputsContainer, node);\n\t}\n\n\t#getHiddenInputsContainer(): ?HTMLElement\n\t{\n\t\tif (!this.#hiddenInputsContainer)\n\t\t{\n\t\t\tthis.#hiddenInputsContainer = Tag.render`<span></span>`;\n\t\t}\n\n\t\treturn this.#hiddenInputsContainer;\n\t}\n\n\t#renderHiddenInputs(): void\n\t{\n\t\tconst hiddenInputsContainer = this.#getHiddenInputsContainer();\n\n\t\tDom.clean(hiddenInputsContainer);\n\n\t\tconst fieldName = this.#isMultiple ? `${this.#fieldName}[]` : this.#fieldName;\n\n\t\tconst values = Type.isArrayFilled(this.#value) ? this.#value : [null];\n\t\tvalues.forEach((value) => {\n\t\t\tconst input = Tag.render`\n\t\t\t\t<input type=\"hidden\" name=\"${fieldName}\" value=\"${value === null ? '' : Number(value)}\">\n\t\t\t`;\n\t\t\tDom.append(input, hiddenInputsContainer);\n\t\t});\n\t}\n\n\t#appendTagSelectorContainer(node: HTMLElement): void\n\t{\n\t\tconst hiddenInputsContainer = this.#getTagSelectorContainer();\n\t\tDom.append(hiddenInputsContainer, node);\n\t}\n\n\t#getTagSelectorContainer(): ?HTMLElement\n\t{\n\t\tif (!this.#tagSelectorContainer)\n\t\t{\n\t\t\tthis.#tagSelectorContainer = Tag.render`<span></span>`;\n\t\t}\n\n\t\treturn this.#tagSelectorContainer;\n\t}\n\n\t#renderTagSelector(): void\n\t{\n\t\tconst tagSelectorContainer = this.#getTagSelectorContainer();\n\n\t\tthis.#getTagSelector().renderTo(tagSelectorContainer);\n\t}\n\n\t#getTagSelector(): TagSelector\n\t{\n\t\tif (!this.#tagSelector)\n\t\t{\n\t\t\tthis.#tagSelector = new TagSelector({\n\t\t\t\tmultiple: this.#isMultiple,\n\t\t\t\tdialogOptions: {\n\t\t\t\t\tcontext: 'USER_FIELD',\n\t\t\t\t\tpreselectedItems: this.#getPreselectedItems(),\n\t\t\t\t\tentities: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: this.#getDataProviderEntityId(),\n\t\t\t\t\t\t\tdynamicLoad: true,\n\t\t\t\t\t\t\tdynamicSearch: true,\n\t\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\t\tiblockId: this.#iblockId,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t\tevents: {\n\t\t\t\t\t\t'Item:onSelect': () => {\n\t\t\t\t\t\t\tthis.#onChange();\n\t\t\t\t\t\t},\n\t\t\t\t\t\t'Item:onDeselect': () => {\n\t\t\t\t\t\t\tthis.#onChange();\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\treturn this.#tagSelector;\n\t}\n\n\t#onChange(): void\n\t{\n\t\tconst selectedItems = this.#getTagSelector().getDialog().getSelectedItems();\n\n\t\tconst values = [];\n\t\tselectedItems.forEach((item: Item) => {\n\t\t\tvalues.push(item.getId());\n\t\t});\n\t\tthis.#value = values;\n\n\t\tthis.#renderHiddenInputs();\n\n\t\tEventEmitter.emit(this, 'change', { values });\n\t}\n\n\t#getPreselectedItems(): ItemId[]\n\t{\n\t\tconst values = Runtime.clone(Type.isArray(this.#value) ? this.#value : [this.#value]);\n\n\t\treturn values.map((value) => [this.#getDataProviderEntityId(), Number(value)]);\n\t}\n\n\t#getDataProviderEntityId(): string\n\t{\n\t\treturn (this.#type === SECTION_TYPE ? 'iblock-property-section' : 'iblock-property-element');\n\t}\n}\n"],"names":["SECTION_TYPE","ELEMENT_TYPE","UserFieldSelector","params","babelHelpers","_classPrivateMethodInitSpec","_classPrivateFieldInitSpec","writable","value","JSON","parse","_classPrivateMethodGet","this","key","node","Dom","clean","fieldName","isMultiple","iblockId","type","Type","isStringFilled","RangeError","includes","isNumber","isArray","filter","item","Number","isNaN","hiddenInputsContainer","append","Tag","render","isArrayFilled","forEach","input","tagSelectorContainer","renderTo","TagSelector","multiple","dialogOptions","context","preselectedItems","entities","id","dynamicLoad","dynamicSearch","options","events","Item:onSelect","_this","Item:onDeselect","selectedItems","getDialog","getSelectedItems","values","push","getId","EventEmitter","emit","Runtime","clone","map","_this2"],"mappings":"iWASA,IAAMA,EAAe,iBACfC,EAAe,ySAERC,aAcZ,WAAYC,GACZC,oCAAAC,UAAAA,UAAAA,UAAAA,UAAAA,UAAAA,UAAAA,UAAAA,UAAAA,UAAAA,UAAAA,UAAAC,UAAAC,YAAAC,eAAAF,UAAAC,YAAAC,eAAAF,UAAAC,YAAAC,eAAAF,UAAAC,YAAAC,eAAAF,UAAAC,YAAAC,eAAAF,UAAAC,YAAAC,eAAAF,UAAAC,YAAAC,eAAAF,UAAAC,YAAAC,eAAAF,UAAAC,YAAAC,eACCJ,yCAAeK,KAAKC,MAAMP,IAE1BQ,iBAAAC,MAsCA,OArCAR,6BAAAS,eAAAL,eA4BQM,GAERC,MAAIC,MAAMF,GAEVH,iBAAAC,KAAkCE,GAClCH,iBAAAC,MAEAD,iBAAAC,KAAiCE,GACjCH,iBAAAC,eAuHD,aAvJC,wCAAyDA,QAAjDK,IAAAA,UAAWT,IAAAA,MAAOU,IAAAA,WAAYC,IAAAA,SAAUC,IAAAA,KAEhD,IAAKC,OAAKC,eAAeL,GAExB,MAAM,IAAIM,WAAW,8BAGtB,IAAK,CAACvB,EAAcC,GAAcuB,SAASJ,GAE1C,MAAM,IAAIG,oCAA6BvB,iBAAmBC,IAG3D,IAAKoB,OAAKI,SAASN,IAAaA,GAAY,EAE3C,MAAM,IAAII,WAAW,gDAGtBnB,yCAAkBa,GAClBb,0CAAeiB,OAAKK,QAAQlB,GAASA,EAAQ,IAAImB,QAAO,SAACC,GAAI,OAAMC,OAAOC,MAAMF,IAASA,EAAO,MAChGxB,0CAAkC,IAAfc,GACnBd,yCAAiBe,GACjBf,yCAAagB,GACb,WAa4BN,GAE5B,IAAMiB,IAAwBnB,eAAAA,MAC9BG,MAAIiB,OAAOD,EAAuBjB,GAClC,aASA,yCALKF,SAEJR,yCAA8B6B,MAAIC,wGAG5BtB,QACP,aAIA,IAAMmB,IAAwBnB,eAAAA,MAE9BG,MAAIC,MAAMe,GAEV,IAAMd,EAAYb,sFAAsBQ,gDAAsBA,SAE/CS,OAAKc,gDAAcvB,2CAAeA,QAAc,CAAC,OACzDwB,SAAQ,SAAC5B,GACf,IAAM6B,EAAQJ,MAAIC,qHACYjB,EAA+B,OAAVT,EAAiB,GAAKqB,OAAOrB,IAEhFO,MAAIiB,OAAOK,EAAON,MAEnB,WAE2BjB,GAE3B,IAAMiB,IAAwBnB,eAAAA,MAC9BG,MAAIiB,OAAOD,EAAuBjB,GAClC,aASA,yCALKF,SAEJR,yCAA6B6B,MAAIC,wGAG3BtB,QACP,aAIA,IAAM0B,IAAuB1B,eAAAA,MAE7BD,iBAAAC,MAAuB2B,SAASD,GAChC,aAGD,WA8BC,yCA7BK1B,SAEJR,yCAAoB,IAAIoC,cAAY,CACnCC,2CAAU7B,QACV8B,cAAe,CACdC,QAAS,aACTC,mBAAkBhC,eAAAA,MAClBiC,SAAU,CACT,CACCC,KAAIlC,eAAAA,MACJmC,aAAa,EACbC,eAAe,EACfC,QAAS,CACR9B,2CAAUP,WAIbsC,OAAQ,CACPC,gBAAiB,WAChBxC,cAAAyC,IAEDC,kBAAmB,WAClB1C,cAAAyC,2CAOExC,QACP,aAIA,IAAM0C,EAAgB3C,iBAAAC,MAAuB2C,YAAYC,mBAEnDC,EAAS,GACfH,EAAclB,SAAQ,SAACR,GACtB6B,EAAOC,KAAK9B,EAAK+B,YAElBvD,yCAAcqD,GAEd9C,iBAAAC,MAEAgD,eAAaC,KAAKjD,KAAM,SAAU,CAAE6C,OAAAA,IACpC,aAGD,WAGC,OAFeK,UAAQC,MAAM1C,OAAKK,0CAAQd,2CAAeA,QAAc,mCAACA,UAE1DoD,KAAI,SAACxD,GAAK,MAAK,GAACyD,YAAAA,GAAiCpC,OAAOrB,OACtE,aAIA,OAAQJ,4CAAeJ,EAAe,0BAA4B"}