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/yandex.market/ui/userfield/catalogcategory/ |
Upload File : |
{"version":3,"file":"script.js","sources":["src/CatalogCategory.js"],"sourcesContent":["const $ = window.YMarketJQuery || window.jQuery;\nconst BX = window.BX;\n\n// noinspection JSUnusedGlobalSymbols\nexport class CatalogCategory {\n\n static defaults = {\n\t rowElement: '.ym-section-category__row',\n\t expandElement: '.ym-section-category__expand',\n\t controlElement: '.ym-category-panel',\n\t form: {},\n\t transport: {},\n\t locale: {},\n language: 'ru',\n }\n\n\t_controls = {};\n\t_parametersPool;\n\n constructor(element: HTMLElement, options: Object = {}) {\n this.el = element;\n this.options = Object.assign({}, this.constructor.defaults, options);\n\n this.handleExpand();\n\t\tthis.bootRows();\n }\n\n\thandleExpand() : void {\n\t for (const button of this.el.querySelectorAll(this.options.expandElement)) {\n\t\t button.addEventListener('click', this.onExpand);\n\t }\n }\n\n\thandleChange(row: HTMLElement) : void {\n\t\t$(row).on('change', this.onChange);\n\t}\n\n\tonExpand = (evt) : void => {\n\t\tconst button = evt.currentTarget;\n\t\tconst row = button.closest(this.options.rowElement);\n\t\tconst needActivate = !button.classList.contains('is--active');\n\n\t\tthis.toggleRows(row, needActivate);\n\t\tthis.toggleExpand(button, needActivate);\n\t}\n\n\tonChange = (evt) : void => {\n\t\tconst row = evt.currentTarget;\n\t\tconst control = this.bootControl(row);\n\n\t\tthis.passParent(row, this.fulfillParentValue(row, control.value()));\n\t}\n\n\tbootRows() : void {\n\t\tfor (const row of this.el.querySelectorAll(this.options.rowElement)) {\n\t\t\tif (row.hidden) { continue; }\n\n\t\t\tthis.bootControl(row);\n\t\t}\n\t}\n\n // noinspection JSUnresolvedReference\n\tbootControl(row: HTMLElement) : BX.YandexMarket.Admin.Property.CategoryPanel {\n\t\tconst sectionId = +row.dataset.id;\n\n\t\tif (this._controls[sectionId] != null) {\n\t\t\treturn this._controls[sectionId];\n\t\t}\n\n\t const control = row.querySelector(this.options.controlElement);\n\n\t\t// noinspection JSUnresolvedReference\n\t this._controls[sectionId] = new BX.YandexMarket.Admin.Property.CategoryPanel(control, {\n\t\t transport: this.options.transport,\n\t\t form: Object.assign({}, this.options.form, {\n\t\t\t parentValue: () => {\n\t\t\t\t const parentRow = this.getParent(row);\n\n\t\t\t\t if (parentRow == null) { return null; }\n\n\t\t\t\t return this.fulfillParentValue(parentRow, this.bootControl(parentRow).value());\n\t\t\t }\n\t\t }),\n locale: this.options.locale,\n language: this.options.language,\n\t\t parametersPool: this._parametersPool,\n });\n\n\t\tif (this._parametersPool == null) {\n\t\t\tthis._parametersPool = this._controls[sectionId].parametersPool;\n\t\t}\n\n\t\tif (this.hasChildren(row)) {\n\t\t\tthis.handleChange(row);\n\t\t}\n\n\t\treturn this._controls[sectionId];\n }\n\n\thasChildren(row: HTMLElement) : boolean {\n\t\tlet nextRow = row.nextElementSibling;\n\n\t\twhile (nextRow != null) {\n\t\t\tif (nextRow.dataset.parent === row.dataset.id) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tif (nextRow.dataset.parent != null) { break; }\n\n\t\t\tnextRow = nextRow.nextElementSibling;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\tgetParent(row: HTMLElement) : ?HTMLElement {\n\t\tif (row.dataset.parent == null) { return null; }\n\n\t\tlet prevRow = row.previousElementSibling;\n\n\t\twhile (prevRow != null) {\n\t\t\tif (prevRow.dataset.id === row.dataset.parent) {\n\t\t\t\treturn prevRow;\n\t\t\t}\n\n\t\t\tprevRow = prevRow.previousElementSibling;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tgetChildren(row: HTMLElement) : HTMLElement[] {\n\t\tconst result = [];\n\t\tlet nextRow = row.nextElementSibling;\n\n\t\twhile (nextRow != null) {\n\t\t\tif (nextRow.dataset.parent === row.dataset.id) {\n\t\t\t\tresult.push(nextRow);\n\t\t\t}\n\n\t\t\tnextRow = nextRow.nextElementSibling;\n\t\t}\n\n\t\treturn result;\n\t}\n\n\tpassParent(row: HTMLElement, value: Object) : void {\n\t\tfor (const child of this.getChildren(row)) {\n\t\t\tconst childControl = this.bootControl(child);\n\n\t\t\tchildControl.resetParent(value);\n\n\t\t\tconst childValue = childControl.value();\n\n\t\t\tif (childValue.category) { continue; }\n\n\t\t\tthis.passParent(child, this.mergeParentValue(childValue, value));\n\t\t}\n\t}\n\n\tfulfillParentValue(row: HTMLElement, value: Object) : Object {\n\t\tif (value.category) { return value; }\n\n\t\tconst parent = this.getParent(row);\n\n\t\tif (parent == null) { return value; }\n\n\t\tconst parentValue = this.bootControl(parent).value();\n\t\tconst mergedValue = this.mergeParentValue(value, parentValue);\n\n\t\tif (mergedValue.category) { return mergedValue; }\n\n\t\treturn this.fulfillParentValue(parent, mergedValue);\n\t}\n\n\tmergeParentValue(selfValue: Object, parentValue: Object) : Object {\n\t\tif (selfValue.category) { return selfValue; }\n\n\t\tconst parameters = Object.assign({}, parentValue.parameters, selfValue.parameters);\n\n\t\tfor (const [parameterId, parameterValue] of Object.entries(parameters)) {\n\t\t\tif (parameterValue == null || parameterValue === '') {\n\t\t\t\tdelete parameters[parameterId];\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tcategory: parentValue.category,\n\t\t\tparameters: parameters,\n\t\t};\n\t}\n\n toggleRows = (row: HTMLElement, dir: boolean) : void => {\n\t let nextRow = row;\n\n\t\t// noinspection JSAssignmentUsedAsCondition\n\t while (nextRow = nextRow.nextElementSibling) {\n\t\t\tif (nextRow.dataset.parent !== row.dataset.id) { continue; }\n\n\t\t\tconst wasActive = !nextRow.hidden;\n\n\t\t\tif (wasActive === dir) { continue; }\n\n\t\t nextRow.hidden = !dir;\n\n\t\t\tif (dir) {\n\t\t\t\tthis.bootControl(nextRow);\n\t\t\t} else {\n\t\t\t\tconst expand = nextRow.querySelector(this.options.expandElement);\n\n\t\t\t\tif (expand == null || !expand.classList.contains('is--active')) { continue; }\n\n\t\t\t\tthis.toggleRows(nextRow, false);\n\t\t\t\tthis.toggleExpand(expand, false);\n\t\t\t}\n\t\t}\n }\n\n\ttoggleExpand(button: HTMLElement, dir: boolean) {\n\t\tif (button.classList.contains('is--active') === dir) { return; }\n\n\t\tconst alt = button.dataset.alt;\n\t\tconst textElement = button.querySelector('span') || button;\n\t\tconst text = textElement.textContent;\n\n\t\tbutton.classList.toggle('is--active', dir);\n\t\ttextElement.textContent = alt;\n\t\tbutton.dataset.alt = text;\n\t}\n}"],"names":["$","window","YMarketJQuery","jQuery","BX","CatalogCategory","constructor","element","options","_controls","onExpand","evt","button","currentTarget","row","closest","this","rowElement","needActivate","classList","contains","toggleRows","toggleExpand","onChange","control","bootControl","passParent","fulfillParentValue","value","dir","nextRow","nextElementSibling","dataset","parent","id","hidden","expand","querySelector","expandElement","el","Object","assign","defaults","handleExpand","bootRows","querySelectorAll","addEventListener","handleChange","on","sectionId","controlElement","YandexMarket","Admin","Property","CategoryPanel","transport","form","parentValue","parentRow","getParent","locale","language","parametersPool","_parametersPool","hasChildren","prevRow","previousElementSibling","getChildren","result","push","child","childControl","resetParent","childValue","category","mergeParentValue","mergedValue","selfValue","parameters","parameterId","parameterValue","entries","alt","textElement","text","textContent","toggle"],"mappings":"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"}