Your IP : 216.73.216.86


Current Path : /var/www/homesaver/www/bitrix/components/bitrix/main.ui.filter/templates/.default/
Upload File :
Current File : /var/www/homesaver/www/bitrix/components/bitrix/main.ui.filter/templates/.default/script.js.map

{"version":3,"file":"script.js","sources":["src/blocks/date-group.js","src/blocks/main-ui-control-field.js","src/blocks/main-ui-control-field-group.js","src/blocks/main-ui-control-string.js","src/blocks/main-ui-control-textarea.js","src/blocks/main-ui-filter-field-list-item.js","src/blocks/main-ui-filter-info.js","src/blocks/main-ui-number.js","src/blocks/main-ui-search-square.js","src/blocks/number-group.js","src/blocks/sidebar-item.js","src/utils.js","src/destination-selector.js","src/entity-selector.js","src/field-controller.js","src/main-ui-control-custom-entity.js","src/search.js","src/settings.js","src/additional-filter.js","src/presets.js","src/filter.js","src/field/field.js","src/api.js","src/fields/create-date-input-decl.js","src/fields/create-number-input-decl.js","src/fields/create-line-decl.js","src/fields/create-select-decl.js","src/fields.js"],"sourcesContent":[";(function() {\n\t'use strict';\n\n\tBX.namespace('BX.Main.ui.block');\n\n\tBX.Main.ui.block['date-group'] = function(data)\n\t{\n\t\tvar group, select, deleteButton, label, dragButton;\n\n\t\tgroup = {\n\t\t\tblock: 'main-ui-control-field-group',\n\t\t\tname: 'name' ? (data.name + '_datesel') : '',\n\t\t\tmix: 'mix' in data ? data.mix : null,\n\t\t\tattrs: {\n\t\t\t\t'data-type': 'type' in data ? data.type : '',\n\t\t\t\t'data-name': 'name' in data ? data.name : '',\n\t\t\t\t'data-time': data.enableTime\n\n\t\t\t},\n\t\t\tcontent: []\n\t\t};\n\n\t\tif ('label' in data && BX.type.isNotEmptyString(data.label))\n\t\t{\n\t\t\tlet labelContent = data.label;\n\n\t\t\tif ('icon' in data && BX.Type.isPlainObject(data.icon))\n\t\t\t{\n\t\t\t\tlabelContent = [\n\t\t\t\t\t{\n\t\t\t\t\t\tblock: 'main-ui-control-field-label-icon',\n\t\t\t\t\t\ttag: 'img',\n\t\t\t\t\t\tattrs: {\n\t\t\t\t\t\t\ttitle: data.icon.title ? data.icon.title : '',\n\t\t\t\t\t\t\tsrc: data.icon.url\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tblock: 'main-ui-control-field-label-text',\n\t\t\t\t\t\ttag: 'span',\n\t\t\t\t\t\tcontent: labelContent\n\t\t\t\t\t}\n\t\t\t\t];\n\t\t\t}\n\t\t\tlabel = {\n\t\t\t\tblock: 'main-ui-control-field-label',\n\t\t\t\ttag: 'span',\n\t\t\t\tattrs: {title: data.label},\n\t\t\t\tcontent: labelContent\n\t\t\t};\n\n\t\t\tgroup.content.push(label);\n\t\t}\n\n\t\tselect = {\n\t\t\tblock: 'main-ui-control-field',\n\t\t\tdragButton: false,\n\t\t\tcontent: {\n\t\t\t\tblock: 'main-ui-select',\n\t\t\t\ttabindex: 'tabindex' in data ? data.tabindex : '',\n\t\t\t\tvalue: 'value' in data ? data.value : '',\n\t\t\t\titems: 'items' in data ? data.items : '',\n\t\t\t\tname: 'name' in data ? (data.name + '_datesel') : '',\n\t\t\t\tparams: 'params' in data ? data.params : '',\n\t\t\t\tvalueDelete: false\n\t\t\t}\n\t\t};\n\n\t\tgroup.content.push(select);\n\n\t\tif ('content' in data && BX.type.isArray(data.content))\n\t\t{\n\t\t\tdata.content.forEach(function(current) {\n\t\t\t\tgroup.content.push(current);\n\t\t\t});\n\t\t}\n\n\t\tif ('content' in data &&\n\t\t\t(BX.type.isPlainObject(data.content) || BX.type.isNotEmptyString(data.content)))\n\t\t{\n\t\t\tgroup.content.push(data.content);\n\t\t}\n\n\t\tdeleteButton = {\n\t\t\tblock: 'main-ui-item-icon-container',\n\t\t\tcontent: {\n\t\t\t\tblock: 'main-ui-item-icon',\n\t\t\t\tmix: ['main-ui-delete', 'main-ui-filter-field-delete'],\n\t\t\t\ttag: 'span',\n\t\t\t\tattrs: {\n\t\t\t\t\ttitle: 'deleteTitle' in data && data.deleteTitle ? data.deleteTitle : ''\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tgroup.content.push(deleteButton);\n\n\t\tif (!('dragButton' in data) || data.dragButton !== false)\n\t\t{\n\t\t\tdragButton = {\n\t\t\t\tblock: 'main-ui-filter-icon-grab',\n\t\t\t\tmix: ['main-ui-item-icon'],\n\t\t\t\ttag: 'span',\n\t\t\t\tattrs: {\n\t\t\t\t\ttitle: 'dragTitle' in data && data.dragTitle ? data.dragTitle : ''\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tgroup.content.push(dragButton);\n\t\t}\n\n\t\treturn group;\n\t};\n})();",";(function() {\n\t'use strict';\n\n\tBX.namespace('BX.Main.ui.block');\n\n\tBX.Main.ui.block['main-ui-control-field'] = function(data)\n\t{\n\t\tvar field, deleteButton, valueDeleteButton, label, dragButton;\n\n\t\tfield = {\n\t\t\tblock: 'main-ui-control-field',\n\t\t\tmix: 'mix' in data ? data.mix : null,\n\t\t\tattrs: {\n\t\t\t\t'data-type': 'type' in data ? data.type : '',\n\t\t\t\t'data-name': 'name' in data ? data.name : ''\n\t\t\t},\n\t\t\tcontent: []\n\t\t};\n\n\t\tif ('label' in data && BX.type.isNotEmptyString(data.label))\n\t\t{\n\t\t\tlet labelContent = data.label;\n\n\t\t\tif ('icon' in data && BX.Type.isPlainObject(data.icon))\n\t\t\t{\n\t\t\t\tlabelContent = [\n\t\t\t\t\t{\n\t\t\t\t\t\tblock: 'main-ui-control-field-label-icon',\n\t\t\t\t\t\ttag: 'img',\n\t\t\t\t\t\tattrs: {\n\t\t\t\t\t\t\ttitle: data.icon.title ? data.icon.title : '',\n\t\t\t\t\t\t\tsrc: data.icon.url\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tblock: 'main-ui-control-field-label-text',\n\t\t\t\t\t\ttag: 'span',\n\t\t\t\t\t\tcontent: labelContent\n\t\t\t\t\t}\n\t\t\t\t];\n\t\t\t}\n\n\t\t\tlabel = {\n\t\t\t\tblock: 'main-ui-control-field-label',\n\t\t\t\ttag: 'span',\n\t\t\t\tattrs: {title: data.label},\n\t\t\t\tcontent: labelContent\n\t\t\t};\n\n\t\t\tfield.content.push(label);\n\t\t}\n\n\t\tif (BX.type.isArray(data.content))\n\t\t{\n\t\t\tdata.content.forEach(function(current) {\n\t\t\t\tfield.content.push(current);\n\t\t\t});\n\t\t}\n\t\telse if (BX.type.isPlainObject(data.content) ||\n\t\t\tBX.type.isNotEmptyString(data.content))\n\t\t{\n\t\t\tfield.content.push(data.content);\n\t\t}\n\n\t\tif ('valueDelete' in data && data.valueDelete === true)\n\t\t{\n\t\t\tvalueDeleteButton = {\n\t\t\t\tblock: 'main-ui-control-value-delete',\n\t\t\t\tcontent: {\n\t\t\t\t\tblock: 'main-ui-control-value-delete-item',\n\t\t\t\t\ttag: 'span'\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tfield.content.push(valueDeleteButton);\n\t\t}\n\n\t\tif ('deleteButton' in data && data.deleteButton === true)\n\t\t{\n\t\t\tdeleteButton = {\n\t\t\t\tblock: 'main-ui-item-icon-container',\n\t\t\t\tcontent: {\n\t\t\t\t\tblock: 'main-ui-item-icon',\n\t\t\t\t\tmix: ['main-ui-delete', 'main-ui-filter-field-delete'],\n\t\t\t\t\ttag: 'span',\n\t\t\t\t\tattrs: {\n\t\t\t\t\t\ttitle: 'deleteTitle' in data && data.deleteTitle ? data.deleteTitle : ''\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tfield.content.push(deleteButton);\n\t\t}\n\n\t\tif (!('dragButton' in data) || data.dragButton !== false)\n\t\t{\n\t\t\tdragButton = {\n\t\t\t\tblock: 'main-ui-filter-icon-grab',\n\t\t\t\tmix: ['main-ui-item-icon'],\n\t\t\t\ttag: 'span',\n\t\t\t\tattrs: {\n\t\t\t\t\ttitle: 'dragTitle' in data && data.dragTitle ? data.dragTitle : ''\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tfield.content.push(dragButton);\n\t\t}\n\n\t\treturn field;\n\t};\n\n})();",";(function() {\n\t'use strict';\n\n\tBX.namespace('BX.Main.ui.block');\n\n\tBX.Main.ui.block['main-ui-control-field-group'] = function(data)\n\t{\n\t\tvar field, deleteButton, label, dragButton;\n\n\t\tfield = {\n\t\t\tblock: 'main-ui-control-field-group',\n\t\t\tmix: 'mix' in data ? data.mix : null,\n\t\t\tattrs: {\n\t\t\t\t'data-type': 'type' in data ? data.type : '',\n\t\t\t\t'data-name': 'name' in data ? data.name : ''\n\t\t\t},\n\t\t\tcontent: []\n\t\t};\n\n\t\tif ('label' in data && BX.type.isNotEmptyString(data.label))\n\t\t{\n\t\t\tlet labelContent = data.label;\n\n\t\t\tif ('icon' in data && BX.Type.isPlainObject(data.icon))\n\t\t\t{\n\t\t\t\tlabelContent = [\n\t\t\t\t\t{\n\t\t\t\t\t\tblock: 'main-ui-control-field-label-icon',\n\t\t\t\t\t\ttag: 'img',\n\t\t\t\t\t\tattrs: {\n\t\t\t\t\t\t\ttitle: data.icon.title ? data.icon.title : '',\n\t\t\t\t\t\t\tsrc: data.icon.url\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tblock: 'main-ui-control-field-label-text',\n\t\t\t\t\t\ttag: 'span',\n\t\t\t\t\t\tcontent: labelContent\n\t\t\t\t\t}\n\t\t\t\t];\n\t\t\t}\n\t\t\tlabel = {\n\t\t\t\tblock: 'main-ui-control-field-label',\n\t\t\t\ttag: 'span',\n\t\t\t\tattrs: {title: data.label},\n\t\t\t\tcontent: labelContent\n\t\t\t};\n\n\t\t\tfield.content.push(label);\n\t\t}\n\n\t\tif (BX.type.isArray(data.content))\n\t\t{\n\t\t\tdata.content.forEach(function(current) {\n\t\t\t\tfield.content.push(current);\n\t\t\t});\n\t\t}\n\t\telse if (BX.type.isPlainObject(data.content) ||\n\t\t\tBX.type.isNotEmptyString(data.content))\n\t\t{\n\t\t\tfield.content.push(data.content);\n\t\t}\n\n\t\tif ('deleteButton' in data && data.deleteButton === true)\n\t\t{\n\t\t\tdeleteButton = {\n\t\t\t\tblock: 'main-ui-item-icon-container',\n\t\t\t\tcontent: {\n\t\t\t\t\tblock: 'main-ui-item-icon',\n\t\t\t\t\tmix: ['main-ui-delete', 'main-ui-filter-field-delete'],\n\t\t\t\t\ttag: 'span',\n\t\t\t\t\tattrs: {\n\t\t\t\t\t\ttitle: 'deleteTitle' in data && data.deleteTitle ? data.deleteTitle : ''\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tfield.content.push(deleteButton);\n\t\t}\n\n\t\tif (!('dragButton' in data) || data.dragButton !== false)\n\t\t{\n\t\t\tdragButton = {\n\t\t\t\tblock: 'main-ui-filter-icon-grab',\n\t\t\t\tmix: ['main-ui-item-icon'],\n\t\t\t\ttag: 'span',\n\t\t\t\tattrs: {\n\t\t\t\t\ttitle: 'dragTitle' in data && data.dragTitle ? data.dragTitle : ''\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tfield.content.push(dragButton);\n\t\t}\n\n\t\treturn field;\n\t};\n\n})();",";(function() {\n\t'use strict';\n\n\tBX.namespace('BX.Main.ui.block');\n\n\tBX.Main.ui.block['main-ui-control-string'] = function(data)\n\t{\n\t\treturn {\n\t\t\tblock: 'main-ui-control-string',\n\t\t\tmix: ['main-ui-control'],\n\t\t\ttag: 'input',\n\t\t\tattrs: {\n\t\t\t\ttype: 'type' in data ? data.type : 'text',\n\t\t\t\tname: 'name' in data ? data.name : '',\n\t\t\t\tplaceholder: 'placeholder' in data ? data.placeholder : '',\n\t\t\t\ttabindex: 'tabindex' in data ? data.tabindex : '',\n\t\t\t\tvalue: 'value' in data ? data.value : ''\n\t\t\t}\n\t\t};\n\t};\n})();",";(function() {\n\t'use strict';\n\n\tBX.namespace('BX.Main.ui.block');\n\n\tBX.Main.ui.block['main-ui-control-textarea'] = function(data)\n\t{\n\t\treturn {\n\t\t\tblock: 'main-ui-control-string',\n\t\t\tmix: ['main-ui-control main-ui-control-textarea'],\n\t\t\ttag: 'textarea',\n\t\t\tattrs: {\n\t\t\t\tname: 'name' in data ? data.name : '',\n\t\t\t\tplaceholder: 'placeholder' in data ? data.placeholder : '',\n\t\t\t\ttabindex: 'tabindex' in data ? data.tabindex : '',\n\t\t\t},\n\t\t\tcontent: 'value' in data ? data.value : '',\n\t\t};\n\t};\n})();",";(function() {\n\t'use strict';\n\n\tBX.namespace('BX.Main.ui.block');\n\n\tBX.Main.ui.block['main-ui-filter-field-list-item'] = function(data)\n\t{\n\t\tvar label = {\n\t\t\tblock: 'main-ui-select-inner-label',\n\t\t\tcontent: 'label' in data ? data.label : ''\n\t\t};\n\n\t\tvar item = {\n\t\t\tblock: 'main-ui-filter-field-list-item',\n\t\t\tmix: 'main-ui-select-inner-item',\n\t\t\tattrs: {\n\t\t\t\t'data-id': data.id,\n\t\t\t\t'data-name': data.name,\n\t\t\t\t'data-item': 'item' in data ? JSON.stringify(data.item) : {}\n\t\t\t},\n\t\t\tevents: {\n\t\t\t\tclick: 'onClick' in data ? data.onClick : ''\n\t\t\t},\n\t\t\tcontent: label\n\t\t};\n\n\t\treturn item;\n\t}\n})();",";(function() {\n\t'use strict';\n\n\tBX.namespace('BX.Main.ui.block');\n\n\tBX.Main.ui.block['main-ui-filter-info'] = function(data)\n\t{\n\t\treturn {\n\t\t\tblock: 'main-ui-filter-info',\n\t\t\ttag: 'span',\n\t\t\tcontent: data.content,\n\t\t\tattrs: {\n\t\t\t\ttitle: data.title\n\t\t\t}\n\t\t}\n\t};\n})();",";(function() {\n\t'use strict';\n\n\tBX.namespace('BX.Main.ui.block');\n\n\tBX.Main.ui.block['main-ui-number'] = function(data)\n\t{\n\t\tvar control, input, valueDelete;\n\n\t\tcontrol = {\n\t\t\tblock: 'main-ui-number',\n\t\t\tmix: ['main-ui-control'],\n\t\t\tcontent: []\n\t\t};\n\n\t\tif ('mix' in data && BX.type.isArray(data.mix))\n\t\t{\n\t\t\tdata.mix.forEach(function(current) {\n\t\t\t\tcontrol.mix.push(current);\n\t\t\t});\n\t\t}\n\n\t\tinput = {\n\t\t\tblock: 'main-ui-number-input',\n\t\t\tmix: ['main-ui-control-input'],\n\t\t\ttag: 'input',\n\t\t\tattrs: {\n\t\t\t\ttype: 'number',\n\t\t\t\tname: 'name' in data ? data.name : '',\n\t\t\t\ttabindex: 'tabindex' in data ? data.tabindex : '',\n\t\t\t\tvalue: 'value' in data ? data.value : '',\n\t\t\t\tplaceholder: 'placeholder' in data ? data.placeholder : '',\n\t\t\t\tautocomplete: 'off'\n\t\t\t}\n\t\t};\n\n\t\tcontrol.content.push(input);\n\n\t\tif ('valueDelete' in data && data.valueDelete === true)\n\t\t{\n\t\t\tvalueDelete = {\n\t\t\t\tblock: 'main-ui-control-value-delete',\n\t\t\t\tcontent: {\n\t\t\t\t\tblock: 'main-ui-control-value-delete-item',\n\t\t\t\t\ttag: 'span'\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tcontrol.content.push(valueDelete);\n\t\t}\n\n\t\treturn control;\n\t};\n})();",";(function() {\n\t'use strict';\n\n\tBX.namespace('BX.Main.ui.block');\n\n\tBX.Main.ui.block['main-ui-search-square'] = function(data)\n\t{\n\t\tvar mix = ['main-ui-filter-search-square'];\n\n\t\tif ('isPreset' in data && data.isPreset)\n\t\t{\n\t\t\tmix.push('main-ui-filter-search-square-preset');\n\t\t}\n\n\t\tlet title = ('title' in data ? data.title : '');\n\t\tlet name = ('name' in data ? BX.util.htmlspecialcharsback(data.name) : '');\n\t\tif ('icon' in data && BX.Type.isPlainObject(data.icon))\n\t\t{\n\t\t\tlet iconTitle = data.icon.title;\n\t\t\ttitle = title.length ? (iconTitle + ': ' + title) : '';\n\t\t\tname = name.length ? (iconTitle + ': ' + name)  : '';\n\t\t}\n\n\t\treturn {\n\t\t\tblock: 'main-ui-square',\n\t\t\tmix: mix,\n\t\t\tattrs: {\n\t\t\t\t'data-item': 'item' in data ? JSON.stringify(data.item) : '',\n\t\t\t\t'title': title\n\t\t\t},\n\t\t\tcontent: [\n\t\t\t\t{\n\t\t\t\t\tblock: 'main-ui-square-item',\n\t\t\t\t\tcontent: name\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tblock: 'main-ui-square-delete',\n\t\t\t\t\tmix: ['main-ui-item-icon']\n\t\t\t\t}\n\t\t\t]\n\t\t}\n\t};\n})();",";(function() {\n\t'use strict';\n\n\tBX.namespace('BX.Main.ui.block');\n\n\tBX.Main.ui.block['number-group'] = function(data)\n\t{\n\t\tvar group, select, deleteButton, label, dragButton;\n\n\t\tgroup = {\n\t\t\tblock: 'main-ui-control-field-group',\n\t\t\tname: 'name' in data ? (data.name + '_numsel') : '',\n\t\t\tmix: 'mix' in data ? data.mix : null,\n\t\t\tattrs: {\n\t\t\t\t'data-type': 'type' in data ? data.type : '',\n\t\t\t\t'data-name': 'name' in data ? data.name : ''\n\t\t\t},\n\t\t\tcontent: []\n\t\t};\n\n\t\tif ('label' in data && BX.type.isNotEmptyString(data.label))\n\t\t{\n\t\t\tlet labelContent = data.label;\n\n\t\t\tif ('icon' in data && BX.Type.isPlainObject(data.icon))\n\t\t\t{\n\t\t\t\tlabelContent = [\n\t\t\t\t\t{\n\t\t\t\t\t\tblock: 'main-ui-control-field-label-icon',\n\t\t\t\t\t\ttag: 'img',\n\t\t\t\t\t\tattrs: {\n\t\t\t\t\t\t\ttitle: data.icon.title ? data.icon.title : '',\n\t\t\t\t\t\t\tsrc: data.icon.url\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tblock: 'main-ui-control-field-label-text',\n\t\t\t\t\t\ttag: 'span',\n\t\t\t\t\t\tcontent: labelContent\n\t\t\t\t\t}\n\t\t\t\t];\n\t\t\t}\n\n\t\t\tlabel = {\n\t\t\t\tblock: 'main-ui-control-field-label',\n\t\t\t\ttag: 'span',\n\t\t\t\tattrs: {title: data.label},\n\t\t\t\tcontent: labelContent\n\t\t\t};\n\n\t\t\tgroup.content.push(label);\n\t\t}\n\n\t\tselect = {\n\t\t\tblock: 'main-ui-control-field',\n\t\t\tdragButton: false,\n\t\t\tcontent: {\n\t\t\t\tblock: 'main-ui-select',\n\t\t\t\ttabindex: 'tabindex' in data ? data.tabindex : '',\n\t\t\t\tvalue: 'value' in data ? data.value : '',\n\t\t\t\titems: 'items' in data ? data.items : '',\n\t\t\t\tname: 'name' in data ? (data.name + '_numsel') : '',\n\t\t\t\tparams: 'params' in data ? data.params : '',\n\t\t\t\tvalueDelete: false\n\t\t\t}\n\t\t};\n\n\t\tgroup.content.push(select);\n\n\t\tif ('content' in data && BX.type.isArray(data.content))\n\t\t{\n\t\t\tdata.content.forEach(function(current) {\n\t\t\t\tgroup.content.push(current);\n\t\t\t});\n\t\t}\n\n\t\tif ('content' in data &&\n\t\t\t(BX.type.isPlainObject(data.content) || BX.type.isNotEmptyString(data.content)))\n\t\t{\n\t\t\tgroup.content.push(data.content);\n\t\t}\n\n\t\tdeleteButton = {\n\t\t\tblock: 'main-ui-item-icon-container',\n\t\t\tcontent: {\n\t\t\t\tblock: 'main-ui-item-icon',\n\t\t\t\tmix: ['main-ui-delete', 'main-ui-filter-field-delete'],\n\t\t\t\ttag: 'span',\n\t\t\t\tattrs: {\n\t\t\t\t\ttitle: 'deleteTitle' in data && data.deleteTitle ? data.deleteTitle : ''\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tgroup.content.push(deleteButton);\n\n\t\tif (!('dragButton' in data) || data.dragButton !== false)\n\t\t{\n\t\t\tdragButton = {\n\t\t\t\tblock: 'main-ui-filter-icon-grab',\n\t\t\t\tmix: ['main-ui-item-icon'],\n\t\t\t\ttag: 'span',\n\t\t\t\tattrs: {\n\t\t\t\t\ttitle: 'dragTitle' in data && data.dragTitle ? data.dragTitle : ''\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tgroup.content.push(dragButton);\n\t\t}\n\n\t\treturn group;\n\t};\n})();",";(function() {\n\t'use strict';\n\n\tBX.namespace('BX.Main.ui.block');\n\n\tBX.Main.ui.block['sidebar-item'] = function(data)\n\t{\n\t\treturn {\n\t\t\tblock: 'main-ui-filter-sidebar-item' + ('pinned' in data && data.pinned ? ' main-ui-item-pin' : ''),\n\t\t\tattrs: {\n\t\t\t\t'data-id': 'id' in data ? data.id : ''\n\t\t\t},\n\t\t\tcontent: [\n\t\t\t\t{\n\t\t\t\t\tblock: 'main-ui-filter-icon-grab',\n\t\t\t\t\ttag: 'span',\n\t\t\t\t\tmix: ['main-ui-item-icon'],\n\t\t\t\t\tattrs: {\n\t\t\t\t\t\ttitle: 'dragTitle' in data && data.dragTitle ? data.dragTitle : ''\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tblock: 'main-ui-filter-sidebar-item-text-container',\n\t\t\t\t\ttag: 'span',\n\t\t\t\t\tcontent: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tblock: 'main-ui-filter-sidebar-item-input',\n\t\t\t\t\t\t\ttag: 'input',\n\t\t\t\t\t\t\tattrs: {\n\t\t\t\t\t\t\t\ttype: 'text',\n\t\t\t\t\t\t\t\tplaceholder: 'placeholder' in data ? data.placeholder : '',\n\t\t\t\t\t\t\t\tvalue: 'text' in data ? BX.util.htmlspecialchars(BX.util.htmlspecialcharsback(data.text)) : ''\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tblock: 'main-ui-filter-sidebar-item-text',\n\t\t\t\t\t\t\ttag: 'span',\n\t\t\t\t\t\t\tcontent: 'text' in data ? data.text : '',\n\t\t\t\t\t\t\tattrs: {\n\t\t\t\t\t\t\t\ttitle: 'text' in data ? data.text : ''\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tblock: 'main-ui-filter-icon-pin',\n\t\t\t\t\t\t\ttag: 'span',\n\t\t\t\t\t\t\tmix: ['main-ui-item-icon'],\n\t\t\t\t\t\t\tattrs: {\n\t\t\t\t\t\t\t\ttitle: 'noEditPinTitle' in data && data.noEditPinTitle ? data.noEditPinTitle : ''\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},\n\t\t\t\t{\n\t\t\t\t\tblock: 'main-ui-filter-icon-edit',\n\t\t\t\t\ttag: 'span',\n\t\t\t\t\tmix: ['main-ui-item-icon'],\n\t\t\t\t\tattrs: {\n\t\t\t\t\t\ttitle: 'editNameTitle' in data && data.editNameTitle ? data.editNameTitle : ''\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tblock: 'main-ui-delete',\n\t\t\t\t\ttag: 'span',\n\t\t\t\t\tmix: ['main-ui-item-icon'],\n\t\t\t\t\tattrs: {\n\t\t\t\t\t\ttitle: 'removeTitle' in data && data.removeTitle ? data.removeTitle : ''\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tblock: 'main-ui-filter-icon-pin',\n\t\t\t\t\ttag: 'span',\n\t\t\t\t\tmix: ['main-ui-item-icon'],\n\t\t\t\t\tattrs: {\n\t\t\t\t\t\ttitle: 'editPinTitle' in data && data.editPinTitle ? data.editPinTitle : ''\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tblock: 'main-ui-filter-edit-mask'\n\t\t\t\t}\n\t\t\t]\n\t\t};\n\t};\n})();",";(function() {\n\t'use strict';\n\n\tBX.namespace('BX.Filter');\n\n\n\t/**\n\t * @type {{\n\t * \t\tcache: {},\n\t * \t\tstyleForEach: BX.Filter.Utils.styleForEach,\n\t * \t\tclosestParent: BX.Filter.Utils.closestParent,\n\t * \t\tclosestChilds: BX.Filter.Utils.closestChilds,\n\t * \t\tgetNext: BX.Filter.Utils.getNext,\n\t * \t\tgetPrev: BX.Filter.Utils.getPrev,\n\t * \t\tcollectionSort: BX.Filter.Utils.collectionSort,\n\t * \t\tgetIndex: BX.Filter.Utils.getIndex,\n\t * \t\tgetByClass: BX.Filter.Utils.getByClass,\n\t * \t\tgetByTag: BX.Filter.Utils.getByTag,\n\t * \t\tgetBySelector: BX.Filter.Utils.getBySelector,\n\t * \t\trequestAnimationFrame: BX.Filter.Utils.requestAnimationFrame,\n\t * \t\tsortObject: BX.Filter.Utils.sortObject,\n\t * \t\tobjectsIsEquals: BX.Filter.Utils.objectsIsEquals,\n\t * \t\tisKey: BX.Filter.Utils.isKey\n\t * \t}}\n\t */\n\tBX.Filter.Utils = {\n\t\t/** @protected **/\n\t\tcache: {},\n\n\t\t/**\n\t\t * Sets css properties for element or elements collection\n\t\t * @param {?HTMLElement|?HTMLElement[]} collection\n\t\t * @param {object} properties\n\t\t */\n\t\tstyleForEach: function(collection, properties)\n\t\t{\n\t\t\tvar keys;\n\t\t\tproperties = BX.type.isPlainObject(properties) ? properties : null;\n\t\t\tkeys = Object.keys(properties);\n\n\t\t\t[].forEach.call((collection || []), function(current) {\n\t\t\t\tkeys.forEach(function(propKey) {\n\t\t\t\t\tBX.style(current, propKey, properties[propKey]);\n\t\t\t\t});\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n\t\t * Gets closest parent or closest parent element with class name\n\t\t * @param {HTMLElement} item\n\t\t * @param {?string} [className]\n\t\t * @return {?HTMLElement|?Node}\n\t\t */\n\t\tclosestParent: function(item, className)\n\t\t{\n\t\t\tif (item)\n\t\t\t{\n\t\t\t\tif (!className)\n\t\t\t\t{\n\t\t\t\t\treturn item.parentNode || null;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\treturn BX.findParent(\n\t\t\t\t\t\titem,\n\t\t\t\t\t\t{className: className}\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\n\t\t/**\n\t\t * Gets closest childs elements\n\t\t * @param {HTMLElement} item\n\t\t * @return {?HTMLElement}\n\t\t */\n\t\tclosestChilds: function(item)\n\t\t{\n\t\t\treturn !!item ? item.children : null;\n\t\t},\n\n\n\t\t/**\n\t\t * Gets next element\n\t\t * @param {HTMLElement} currentItem\n\t\t * @return {?HTMLElement}\n\t\t */\n\t\tgetNext: function(currentItem)\n\t\t{\n\t\t\treturn !!currentItem ? currentItem.nextElementSibling : null;\n\t\t},\n\n\n\t\t/**\n\t\t * Gets previews element\n\t\t * @param {HTMLElement} currentItem\n\t\t * @return {?HTMLElement}\n\t\t */\n\t\tgetPrev: function(currentItem)\n\t\t{\n\t\t\treturn !!currentItem ? currentItem.previousElementSibling : null\n\t\t},\n\n\n\t\t/**\n\t\t * Move current item after target item\n\t\t * @param {HTMLElement} current\n\t\t * @param {HTMLElement} target\n\t\t */\n\t\tcollectionSort: function(current, target)\n\t\t{\n\t\t\tvar root, collection, collectionLength, currentIndex, targetIndex;\n\n\t\t\tif (current && target && current !== target && current.parentNode === target.parentNode)\n\t\t\t{\n\t\t\t\troot = this.closestParent(target);\n\t\t\t\tcollection = this.closestChilds(root);\n\t\t\t\tcollectionLength = collection.length;\n\t\t\t\tcurrentIndex = this.getIndex(collection, current);\n\t\t\t\ttargetIndex = this.getIndex(collection, target);\n\n\t\t\t\tif (collectionLength === targetIndex) {\n\t\t\t\t\troot.appendChild(target);\n\t\t\t\t}\n\n\t\t\t\tif (currentIndex > targetIndex) {\n\t\t\t\t\troot.insertBefore(current, target);\n\t\t\t\t}\n\n\t\t\t\tif (currentIndex < targetIndex && collectionLength !== targetIndex)\n\t\t\t\t{\n\t\t\t\t\troot.insertBefore(current, this.getNext(target));\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\n\t\t/**\n\t\t * Gets collection item index\n\t\t * @param {Array|HTMLCollection|NodeList} collection\n\t\t * @param {*} item\n\t\t * @return {int}\n\t\t */\n\t\tgetIndex: function(collection, item)\n\t\t{\n\t\t\treturn [].indexOf.call((collection || []), item);\n\t\t},\n\n\n\t\t/**\n\t\t * Gets elements by class name\n\t\t * @param {HTMLElement|HTMLDocument} rootElement\n\t\t * @param {string} className\n\t\t * @param {boolean} [all = false]\n\t\t * @returns {?HTMLElement|?HTMLElement[]}\n\t\t */\n\t\tgetByClass: function(rootElement, className, all)\n\t\t{\n\t\t\tvar result = [];\n\n\t\t\tif (className)\n\t\t\t{\n\t\t\t\tresult = (rootElement || document.body).getElementsByClassName(className);\n\n\t\t\t\tif (!all)\n\t\t\t\t{\n\t\t\t\t\tresult = result.length ? result[0] : null;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tresult = [].slice.call(result);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn result;\n\t\t},\n\n\n\t\t/**\n\t\t * Gets element or elements by tag name\n\t\t * @param {HTMLElement|HTMLDocument} rootElement\n\t\t * @param {string} tag\n\t\t * @param {boolean} [all = false]\n\t\t * @return {?HTMLElement|?HTMLElement[]}\n\t\t */\n\t\tgetByTag: function(rootElement, tag, all)\n\t\t{\n\t\t\tvar result = [];\n\n\t\t\tif (tag)\n\t\t\t{\n\t\t\t\tresult = (rootElement || document.body).getElementsByTagName(tag);\n\n\t\t\t\tif (!all)\n\t\t\t\t{\n\t\t\t\t\tresult = result.length ? result[0] : null;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tresult = [].slice.call(result);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn result;\n\t\t},\n\n\n\t\t/**\n\t\t * Gets element or elements by css selector\n\t\t * @param {HTMLElement|HTMLDocument|Node} rootElement\n\t\t * @param {string} selector\n\t\t * @param {boolean} [all = false]\n\t\t * @return {?HTMLElement|?HTMLElement[]}\n\t\t */\n\t\tgetBySelector: function(rootElement, selector, all)\n\t\t{\n\t\t\tvar result = [];\n\n\t\t\tif (selector)\n\t\t\t{\n\t\t\t\tif (!all)\n\t\t\t\t{\n\t\t\t\t\tresult = (rootElement || document.body).querySelector(selector);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tresult = (rootElement || document.body).querySelectorAll(selector);\n\t\t\t\t\tresult = [].slice.call(result);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn result;\n\t\t},\n\n\t\trequestAnimationFrame: function()\n\t\t{\n\t\t\tvar raf = (\n\t\t\t\twindow.requestAnimationFrame ||\n\t\t\t\twindow.webkitRequestAnimationFrame ||\n\t\t\t\twindow.mozRequestAnimationFrame ||\n\t\t\t\twindow.msRequestAnimationFrame ||\n\t\t\t\twindow.oRequestAnimationFrame ||\n\t\t\t\tfunction(callback){ window.setTimeout(callback, 1000/60) }\n\t\t\t);\n\n\t\t\traf.apply(window, arguments);\n\t\t},\n\n\n\t\t/**\n\t\t * Sorts object properties\n\t\t * @param {object} input\n\t\t * @return {object}\n\t\t */\n\t\tsortObject: function(input)\n\t\t{\n\t\t\tvar output = {};\n\n\t\t\tObject.keys(input).sort().forEach(function(key) {\n\t\t\t\toutput[key] = input[key];\n\t\t\t});\n\n\t\t\treturn output;\n\t\t},\n\n\n\t\t/**\n\t\t * Compares two objects or arrays\n\t\t * @param {object} object1\n\t\t * @param {object} object2\n\t\t * @return {boolean}\n\t\t */\n\t\tobjectsIsEquals: function(object1, object2)\n\t\t{\n\t\t\treturn JSON.stringify(object1) === JSON.stringify(object2);\n\t\t},\n\n\t\tisKey: function(event, keyCode)\n\t\t{\n\t\t\tvar keyboard = {8: 'backspace', 9: 'tab', 13: 'enter', 16: 'shift', 17: 'ctrl', 18: 'alt', 27: 'escape',\n\t\t\t\t32: 'space', 37: 'leftArrow', 38: 'upArrow', 39: 'rightArrow', 40: 'downArrow', 46: 'delete',\n\t\t\t\t112: 'f1', 113: 'f2', 114: 'f3', 115: 'f4', 116: 'f5', 117: 'f6', 118: 'f7', 119: 'f8', 120: 'f9',\n\t\t\t\t121: 'f10', 122: 'f11', 123: 'f12', 65: 'a'};\n\n\t\t\tvar code = !!event ? (('keyCode' in event) ? event.keyCode : 'which' in event ? event.which : 0) : 0;\n\n\t\t\treturn code in keyboard && keyboard[code] === keyCode;\n\t\t}\n\t};\n})();",";(function() {\n\t'use strict';\n\n\tBX.namespace('BX.Filter');\n\n\tBX.Filter.DestinationSelectorManager = {\n\n\t\tfields: [],\n\t\tcontrols: {},\n\n\t\tonSelect: function(isNumeric, prefix, params)\n\t\t{\n\t\t\tif (\n\t\t\t\t!BX.type.isNotEmptyObject(params)\n\t\t\t\t|| !BX.type.isNotEmptyObject(params.item)\n\t\t\t\t|| !BX.type.isNotEmptyString(params.selectorId)\n\t\t\t)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar\n\t\t\t\tselectorId = params.selectorId,\n\t\t\t\titem = params.item;\n\n\t\t\tvar control = BX.Filter.DestinationSelectorManager.controls[selectorId];\n\t\t\tif (control)\n\t\t\t{\n\t\t\t\tvar value = item.id;\n\n\t\t\t\tif (\n\t\t\t\t\tBX.type.isNotEmptyString(isNumeric)\n\t\t\t\t\t&& isNumeric == 'Y'\n\t\t\t\t\t&& BX.type.isNotEmptyString(prefix)\n\t\t\t\t)\n\t\t\t\t{\n\t\t\t\t\tvar re = new RegExp('^' + prefix + '(\\\\d+)$');\n\t\t\t\t\tvar found = value.match(re);\n\t\t\t\t\tif (BX.type.isArray(found))\n\t\t\t\t\t{\n\t\t\t\t\t\tvalue = found[1];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tvar eventResult = {};\n\t\t\t\t\tBX.onCustomEvent(window, 'BX.Filter.DestinationSelector:convert', [ {\n\t\t\t\t\t\tselectorId: selectorId,\n\t\t\t\t\t\tvalue: value\n\t\t\t\t\t}, eventResult ]);\n\n\t\t\t\t\tif (BX.type.isNotEmptyString(eventResult.value))\n\t\t\t\t\t{\n\t\t\t\t\t\tvalue = eventResult.value;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcontrol.setData(BX.util.htmlspecialcharsback(item.name), value);\n\t\t\t\tcontrol.getLabelNode().value = '';\n\t\t\t\tcontrol.getLabelNode().blur();\n\t\t\t}\n\t\t},\n\n\t\tonDialogOpen: function(params)\n\t\t{\n\t\t\tif (\n\t\t\t\ttypeof params == 'undefined'\n\t\t\t\t|| !BX.type.isNotEmptyString(params.selectorId)\n\t\t\t)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar selectorId = params.selectorId;\n\n\t\t\tvar item = BX.Filter.DestinationSelector.items[selectorId];\n\t\t\tif(item)\n\t\t\t{\n\t\t\t\titem.onDialogOpen();\n\t\t\t}\n\t\t},\n\n\t\tonDialogClose: function(params)\n\t\t{\n\t\t\tif (\n\t\t\t\ttypeof params == 'undefined'\n\t\t\t\t|| !BX.type.isNotEmptyString(params.selectorId)\n\t\t\t)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar selectorId = params.selectorId;\n\n\t\t\tvar item = BX.Filter.DestinationSelector.items[selectorId];\n\t\t\tif(item)\n\t\t\t{\n\t\t\t\titem.onDialogClose();\n\t\t\t}\n\t\t}\n\t};\n\n\tBX.Filter.DestinationSelector = function ()\n\t{\n\t\tthis.id = \"\";\n\t\tthis.filterId = \"\";\n\t\tthis.settings = {};\n\t\tthis.fieldId = \"\";\n\t\tthis.control = null;\n\t\tthis.inited = null;\n\t};\n\n\tBX.Filter.DestinationSelector.items = {};\n\n\tBX.Filter.DestinationSelector.create = function(id, settings)\n\t{\n\t\tif (typeof this.items[id] != 'undefined')\n\t\t{\n\t\t\treturn this.items[id];\n\t\t}\n\n\t\tvar self = new BX.Filter.DestinationSelector(id, settings);\n\t\tself.initialize(id, settings);\n\t\tthis.items[id] = self;\n\t\tBX.onCustomEvent(window, 'BX.Filter.DestinationSelector:create', [ id ]);\n\t\treturn self;\n\t};\n\n\tBX.Filter.DestinationSelector.prototype.getSetting = function(name, defaultval)\n\t{\n\t\treturn this.settings.hasOwnProperty(name) ? this.settings[name] : defaultval;\n\t};\n\n\tBX.Filter.DestinationSelector.prototype.getSearchInput = function()\n\t{\n\t\treturn this.control ? this.control.getLabelNode() : null;\n\t};\n\n\tBX.Filter.DestinationSelector.prototype.initialize = function(id, settings)\n\t{\n\t\tthis.id = id;\n\t\tthis.settings = settings ? settings : {};\n\t\tthis.fieldId = this.getSetting(\"fieldId\", \"\");\n\t\tthis.filterId = this.getSetting(\"filterId\", \"\");\n\t\tthis.inited = false;\n\t\tthis.opened = null;\n\n\t\tvar initialValue = this.getSetting(\"initialValue\", false);\n\t\tif (!!initialValue)\n\t\t{\n\t\t\tvar initialSettings = {};\n\t\t\tinitialSettings[this.fieldId] = initialValue.itemId;\n\t\t\tinitialSettings[this.fieldId + '_label'] = initialValue.itemName;\n\n\t\t\tBX.Main.filterManager.getById(this.filterId).getApi().setFields(initialSettings);\n\t\t}\n\t\tBX.addCustomEvent(window, \"BX.Main.Filter:customEntityFocus\", BX.delegate(this.onCustomEntitySelectorOpen, this));\n\t\tBX.addCustomEvent(window, \"BX.Main.Filter:customEntityBlur\", BX.delegate(this.onCustomEntitySelectorClose, this));\n\t\tBX.addCustomEvent(window, \"BX.Main.Filter:onGetStopBlur\", BX.delegate(this.onGetStopBlur, this));\n\t\tBX.addCustomEvent(window, \"BX.Main.SelectorV2:beforeInitDialog\", BX.delegate(this.onBeforeInitDialog, this));\n\t\tBX.addCustomEvent(window, \"BX.Main.Filter:customEntityRemove\", BX.delegate(this.onCustomEntityRemove, this));\n\t};\n\n\tBX.Filter.DestinationSelector.prototype.open = function()\n\t{\n\t\tvar name = this.id;\n\n\t\tif (!this.inited)\n\t\t{\n\t\t\tvar input = this.getSearchInput();\n\t\t\tinput.id = input.name;\n\n\t\t\tBX.addCustomEvent(window, \"BX.Main.SelectorV2:afterInitDialog\", BX.delegate(function(params) {\n\t\t\t\tif (\n\t\t\t\t\ttypeof params.id != 'undefined'\n\t\t\t\t\t|| params.id != this.id\n\t\t\t\t)\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tthis.opened = true;\n\t\t\t}, this));\n\n\t\t\tBX.addCustomEvent(window, \"BX.UI.SelectorManager:onCreate\", BX.delegate(function(selectorId) {\n\t\t\t\tif (\n\t\t\t\t\t!BX.type.isNotEmptyString(selectorId)\n\t\t\t\t\t|| selectorId != this.id\n\t\t\t\t)\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tBX.onCustomEvent(window, 'BX.Filter.DestinationSelector:setSelected', [ {\n\t\t\t\t\tselectorId: selectorId,\n\t\t\t\t\tcurrent: this.control.getCurrentValues()\n\t\t\t\t} ]);\n\n\t\t\t}, this));\n\n\t\t\tBX.onCustomEvent(window, 'BX.Filter.DestinationSelector:openInit', [ {\n\t\t\t\tid: this.id,\n\t\t\t\tinputId: input.id,\n\t\t\t\tcontainerId: input.id\n\t\t\t} ]);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tvar currentValue = {};\n\t\t\tcurrentValue[this.currentUser.entityId] = \"users\";\n\n\t\t\tBX.onCustomEvent(window, 'BX.Filter.DestinationSelector:open', [ {\n\t\t\t\tid: this.id,\n\t\t\t\tbindNode: this.control.getField(),\n\t\t\t\tvalue: currentValue\n\t\t\t} ]);\n\n\t\t\tthis.opened = true;\n\t\t}\n\t};\n\n\tBX.Filter.DestinationSelector.prototype.close = function()\n\t{\n\t\tif(typeof(BX.Main.selectorManagerV2.controls[this.id]) !== \"undefined\")\n\t\t{\n\t\t\tBX.Main.selectorManagerV2.controls[this.id].closeDialog();\n\t\t}\n\t};\n\n\tBX.Filter.DestinationSelector.prototype.onCustomEntitySelectorOpen = function(control)\n\t{\n\t\tvar fieldId = control.getId();\n\n\t\tif(this.fieldId !== fieldId)\n\t\t{\n\t\t\tthis.control = null;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.control = control;\n\n\t\t\tif(this.control)\n\t\t\t{\n\t\t\t\tvar current = this.control.getCurrentValues();\n\t\t\t\tthis.currentUser = {\n\t\t\t\t\tentityId: current[\"value\"]\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tBX.Filter.DestinationSelectorManager.controls[this.id] = this.control;\n\n\t\t\tif (!this.opened)\n\t\t\t{\n\t\t\t\tthis.open();\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.close();\n\t\t\t}\n\t\t}\n\t};\n\n\tBX.Filter.DestinationSelector.prototype.onCustomEntitySelectorClose = function(control)\n\t{\n\t\tif(\n\t\t\tthis.fieldId === control.getId()\n\t\t\t&& this.inited === true\n\t\t\t&& this.opened === true\n\t\t)\n\t\t{\n\t\t\tthis.control = null;\n\t\t\twindow.setTimeout(BX.delegate(this.close, this), 0);\n\t\t}\n\t};\n\n\tBX.Filter.DestinationSelector.prototype.onGetStopBlur = function(event, result)\n\t{\n\t\tif (BX.findParent(event.target, { className: 'bx-lm-box'}))\n\t\t{\n\t\t\tresult.stopBlur = true;\n\t\t}\n\t};\n\n\tBX.Filter.DestinationSelector.prototype.onCustomEntityRemove = function(control)\n\t{\n\t\tif(this.fieldId === control.getId())\n\t\t{\n\t\t\tvar instance = BX.UI.SelectorManager.instances[control.getId()];\n\t\t\tif (\n\t\t\t\tinstance\n\t\t\t\t&& typeof control.hiddenInput != 'undefined'\n\t\t\t\t&& typeof control.hiddenInput.value != 'undefined'\n\t\t\t\t&& BX.type.isNotEmptyObject(instance.itemsSelected)\n\t\t\t\t&& typeof instance.itemsSelected[control.hiddenInput.value] != 'undefined'\n\t\t\t)\n\t\t\t{\n\t\t\t\tdelete instance.itemsSelected[control.hiddenInput.value];\n\t\t\t}\n\t\t}\n\t};\n\n\tBX.Filter.DestinationSelector.prototype.onBeforeInitDialog = function(params)\n\t{\n\t\tif (\n\t\t\ttypeof params.id == 'undefined'\n\t\t\t|| params.id != this.id\n\t\t)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tthis.inited = true;\n\n\t\tif (!this.control)\n\t\t{\n\t\t\tparams.blockInit = true;\n\t\t}\n\t};\n\n\tBX.Filter.DestinationSelector.prototype.onDialogOpen = function()\n\t{\n\t\tthis.opened = true;\n\t};\n\n\tBX.Filter.DestinationSelector.prototype.onDialogClose = function()\n\t{\n\t\tthis.opened = false;\n\t};\n\n})();","import {Dialog, DialogOptions, Item} from 'ui.entity-selector';\nimport {Event, Reflection, Type, Runtime, Dom} from \"main.core\";\nimport {EventEmitter, BaseEvent} from \"main.core.events\";\n\nclass EntitySelector\n{\n\tstatic initExtensionPromise = null;\n\tstatic items = {};\n\n\tid: string = null;\n\tfilter: BX.Main.Filter = null;\n\tdialog: Dialog = null;\n\tdialogOptions: DialogOptions = null;\n\tcontrol: BX.Main.ui.CustomEntity = null;\n\tisMultiple: boolean = false;\n\tneedAddEntityIdToFilter = false;\n\tisActive: boolean = false;\n\tneedShowDialogOnEmptyInput: boolean = true;\n\n\tconstructor(id: string, settings)\n\t{\n\t\tthis.id = id;\n\t\tthis.settings = settings ? settings : {};\n\t\tthis.filter = this.getSetting('filter', null);\n\t\tif (!this.filter)\n\t\t{\n\t\t\tthrow new Error('Filter option is required for EntitySelector field');\n\t\t}\n\n\t\tthis.isMultiple = !!this.getSetting('isMultiple', false);\n\t\tthis.needAddEntityIdToFilter = this.getSetting('addEntityIdToResult', 'N') === 'Y';\n\t\tthis.needShowDialogOnEmptyInput = !!this.getSetting('showDialogOnEmptyInput', true);\n\n\t\tthis.dialogOptions = this.prepareDialogOptions();\n\t\tthis.dialog = null;\n\n\t\tEventEmitter.subscribe('BX.Main.Filter:customEntityFocus', this.onCustomEntityFocus.bind(this));\n\t\tEventEmitter.subscribe('BX.Main.Filter:customEntityBlur', this.onCustomEntityBlur.bind(this));\n\t\tEventEmitter.subscribe('BX.Main.Filter:onGetStopBlur', this.onGetStopBlur.bind(this));\n\t\tEventEmitter.subscribe('BX.Main.Filter:move', this.onCustomEntityRemove.bind(this));\n\t\tEventEmitter.subscribe('BX.Main.Filter:onApplyPreset', this.onApplyPreset.bind(this));\n\n\t\tthis.controlInputChangeHandler = this.onSearchInputChange.bind(this);\n\t}\n\n\topen(): void\n\t{\n\t\tthis.isActive = true;\n\t\tif (!this.dialog)\n\t\t{\n\t\t\tthis.initDialog()\n\t\t\t\t.then(() => {\n\t\t\t\t\tif (this.isActive)\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.openDialog();\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.openDialog();\n\t\t}\n\t}\n\n\tclose(): void\n\t{\n\t\tthis.isActive = false;\n\t\tif (this.dialog && this.dialog.isOpen())\n\t\t{\n\t\t\tthis.dialog.hide();\n\t\t}\n\t}\n\n\tgetFilterField(): ?BX.Filter.Field\n\t{\n\t\treturn this.filter.getField(this.id);\n\t}\n\n\tgetFilterFieldInputWrapper(): ?HTMLElement\n\t{\n\t\tconst field = this.getFilterField();\n\t\tif (!field)\n\t\t{\n\t\t\treturn null;\n\t\t}\n\n\t\treturn BX.Filter.Utils.getBySelector(field.node, '.main-ui-control-entity');\n\t}\n\n\tgetFilterFieldInput(): ?HTMLElement\n\t{\n\t\tconst field = this.getFilterField();\n\t\tif (!field)\n\t\t{\n\t\t\treturn null;\n\t\t}\n\t\treturn BX.Filter.Utils.getBySelector(field.node, '.' + this.filter.settings.classStringInput + '[type=\"text\"]');\n\t}\n\n\tsetControl(control: BX.Main.ui.CustomEntity): void\n\t{\n\t\tthis.control = control;\n\t}\n\n\tunsetControl(): void\n\t{\n\t\tthis.control = null;\n\t}\n\n\tgetSetting(name: string, defaultValue)\n\t{\n\t\treturn this.settings.hasOwnProperty(name)\n\t\t\t? this.settings[name]\n\t\t\t: defaultValue\n\t\t;\n\t};\n\n\tprepareDialogOptions()\n\t{\n\t\tconst defaultOptions = {\n\t\t\tenableSearch: false,\n\t\t\thideOnSelect: true,\n\t\t\tautoHide: false,\n\t\t\thideByEsc: false,\n\t\t};\n\n\t\tlet dialogOptions = this.getSetting('dialogOptions', {});\n\t\tdialogOptions = Object.assign(defaultOptions, dialogOptions);\n\n\t\treturn dialogOptions;\n\t}\n\n\topenDialog(): void\n\t{\n\t\tif (this.dialog.isOpen())\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tconst inputWrapper = this.getFilterFieldInputWrapper();\n\t\tconst searchInput = this.getFilterFieldInput();\n\t\tconst searchQuery = Type.isDomNode(searchInput) ? searchInput.value.trim() : '';\n\t\tthis.dialog.setTargetNode(inputWrapper);\n\t\tthis.dialog.setWidth(inputWrapper.offsetWidth);\n\t\tif (this.needShowDialogOnEmptyInput || searchQuery.length)\n\t\t{\n\t\t\tthis.dialog.show();\n\t\t}\n\t\tthis.updateSelectedItemsInDialog(this.dialog);\n\n\t\tif (searchQuery.length)\n\t\t{\n\t\t\tthis.dialog.search(searchQuery);\n\t\t}\n\t}\n\n\tinitDialog(): Promise\n\t{\n\t\treturn EntitySelector.initDialogExtension()\n\t\t\t.then(exports =>\n\t\t\t{\n\t\t\t\tconst {Dialog} = exports;\n\t\t\t\tthis.dialog = new Dialog({\n\t\t\t\t\t...this.dialogOptions,\n\t\t\t\t\tid: this.getDialogId(),\n\t\t\t\t\tmultiple: this.isMultiple,\n\t\t\t\t});\n\n\t\t\t\tEventEmitter.subscribe(this.dialog, 'Item:onSelect', this.onDialogItemSelect.bind(this));\n\t\t\t\tEventEmitter.subscribe(this.dialog, 'Item:onDeselect', this.onDialogItemDeSelect.bind(this));\n\t\t\t\tEventEmitter.subscribe(this.dialog, 'onLoad', this.onDialogLoad.bind(this));\n\n\t\t\t\tconst searchInput = this.getFilterFieldInput();\n\t\t\t\tEvent.bind(searchInput, 'input', this.controlInputChangeHandler);\n\t\t\t})\n\t\t\t;\n\t}\n\n\taddItemToFilter(id: string, title: string): void\n\t{\n\t\tif (!this.control)\n\t\t{\n\t\t\treturn;\n\t\t}\n\t\tif (this.isMultiple)\n\t\t{\n\t\t\tconst currentValues = this.control.getCurrentValues();\n\t\t\tif (\n\t\t\t\t!(currentValues\n\t\t\t\t\t.filter(item => (item.value === id))\n\t\t\t\t\t.length\n\t\t\t\t)\n\t\t\t)\n\t\t\t{\n\t\t\t\tcurrentValues.push({\n\t\t\t\t\tvalue: id,\n\t\t\t\t\tlabel: title\n\t\t\t\t});\n\t\t\t\tthis.control.setMultipleData(currentValues);\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.control.setSingleData(title, id);\n\t\t}\n\t}\n\n\tremoveItemFromFilter(id: string): void\n\t{\n\t\tif (!this.control)\n\t\t{\n\t\t\treturn;\n\t\t}\n\t\tif (this.isMultiple)\n\t\t{\n\t\t\tconst currentValues = this.control.getCurrentValues();\n\t\t\tthis.control.setMultipleData(\n\t\t\t\tcurrentValues.filter(item => (item.value !== id))\n\t\t\t);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.control.clearValue();\n\t\t}\n\t}\n\n\tgetDialogId(): string\n\t{\n\t\treturn this.id + '_' + this.filter.getParam('FILTER_ID');\n\t}\n\n\tgetItemId(item: Item): string\n\t{\n\t\tif (this.needAddEntityIdToFilter)\n\t\t{\n\t\t\treturn JSON.stringify([item.getEntityId() + '', item.getId() + '']);\n\t\t}\n\t\treturn item.getId() + '';\n\t}\n\n\tupdateSelectedItemsInDialog(dialog: Dialog)\n\t{\n\t\tif (!this.control)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tlet currentValues = this.control.getCurrentValues();\n\t\tif (!this.isMultiple)\n\t\t{\n\t\t\tcurrentValues = [currentValues];\n\t\t}\n\t\tconst selectedIds = currentValues.map(item => item.value);\n\n\t\tdialog.getItems()\n\t\t\t.forEach((dialogItem) =>\n\t\t\t{\n\t\t\t\tif (selectedIds.indexOf(this.getItemId(dialogItem)) > -1)\n\t\t\t\t{\n\t\t\t\t\tdialogItem.select(true);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tdialogItem.deselect();\n\t\t\t\t}\n\t\t\t})\n\t\t;\n\t}\n\n\tonCustomEntityFocus(event: BaseEvent): void\n\t{\n\t\tconst [control] = event.getData();\n\t\tif (this.id !== control.getId())\n\t\t{\n\t\t\treturn;\n\t\t}\n\t\tthis.setControl(control);\n\t\tthis.open();\n\t}\n\n\tonCustomEntityBlur(event: BaseEvent): void\n\t{\n\t\tconst [control] = event.getData();\n\t\tif (this.id !== control.getId())\n\t\t{\n\t\t\treturn;\n\t\t}\n\t\tthis.close();\n\t\tthis.unsetControl();\n\t}\n\n\tonGetStopBlur(event: BaseEvent): void\n\t{\n\t\tconst [browserEvent, result] = event.getData();\n\t\tif (!(this.dialog && this.dialog.isOpen()))\n\t\t{\n\t\t\treturn; // if dialog wasn't shown, cancel blur is not required\n\t\t}\n\t\tconst field = this.getFilterField();\n\t\tif (!field)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tconst target = browserEvent.target;\n\t\tif (\n\t\t\ttarget === field.node\n\t\t\t|| (\n\t\t\t\t// click on any child except field deletion button\n\t\t\t\tfield.node.contains(target)\n\t\t\t\t&& !Dom.hasClass(target, this.filter.settings.classFieldDelete)\n\t\t\t)\n\t\t\t|| target === document.body\n\t\t)\n\t\t{\n\t\t\tresult.stopBlur = true;\n\t\t\treturn;\n\t\t}\n\n\t\tconst dialogContainerElement = this.dialog.getPopup().getContentContainer();\n\t\tif (target === dialogContainerElement || dialogContainerElement.contains(target))\n\t\t{\n\t\t\tresult.stopBlur = true;\n\t\t}\n\t}\n\n\tonCustomEntityRemove(event: BaseEvent): void\n\t{\n\t\tconst [control] = event.getData();\n\t\tif (this.id !== control.getId())\n\t\t{\n\t\t\treturn;\n\t\t}\n\t\tif (this.dialog)\n\t\t{\n\t\t\tthis.dialog.destroy();\n\t\t\tthis.dialog = null;\n\t\t}\n\t\tthis.unsetControl();\n\t}\n\n\tonApplyPreset(event: BaseEvent): void\n\t{\n\t\tif (this.dialog)\n\t\t{\n\t\t\tthis.dialog.destroy();\n\t\t\tthis.dialog = null;\n\t\t}\n\t\tthis.unsetControl();\n\t}\n\n\tonSearchInputChange(event): void\n\t{\n\t\tif (this.dialog)\n\t\t{\n\t\t\tif (!this.needShowDialogOnEmptyInput)\n\t\t\t{\n\t\t\t\tif (event.target.value)\n\t\t\t\t{\n\t\t\t\t\tthis.open();\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tthis.close();\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.dialog.search(event.target.value);\n\t\t}\n\t}\n\n\tonDialogItemSelect(event: BaseEvent): void\n\t{\n\t\tconst {item} = event.getData();\n\t\tthis.addItemToFilter(this.getItemId(item), item.getTitle());\n\t\tthis.getFilterFieldInput().value = ''; // clear search query\n\t}\n\n\tonDialogItemDeSelect(event: BaseEvent): void\n\t{\n\t\tconst {item} = event.getData();\n\t\tthis.removeItemFromFilter(this.getItemId(item));\n\t}\n\n\tonDialogLoad(event: BaseEvent): void\n\t{\n\t\tconst dialog: Dialog = event.getTarget();\n\t\tthis.updateSelectedItemsInDialog(dialog);\n\t}\n\n\tstatic initDialogExtension(): Promise\n\t{\n\t\tif (!EntitySelector.initExtensionPromise)\n\t\t{\n\t\t\tEntitySelector.initExtensionPromise = Runtime.loadExtension('ui.entity-selector');\n\t\t}\n\n\t\treturn EntitySelector.initExtensionPromise;\n\t}\n\n\tstatic create(id, settings): EntitySelector\n\t{\n\t\tif (Type.isObject(this.items[id]))\n\t\t{\n\t\t\tif (Type.isObject(settings.filter))\n\t\t\t{\n\t\t\t\tthis.items[id].filter = settings.filter;\n\t\t\t}\n\t\t\treturn this.items[id];\n\t\t}\n\t\tconst self = new EntitySelector(id, settings);\n\t\tthis.items[id] = self;\n\t\treturn self;\n\t}\n}\n\nconst namespace = Reflection.namespace('BX.Filter');\nnamespace.EntitySelector = EntitySelector;\n",";(function() {\n\t'use strict';\n\n\tBX.namespace('BX.Filter');\n\n\tBX.Filter.FieldController = function(field, parent)\n\t{\n\t\tthis.field = null;\n\t\tthis.parent = null;\n\t\tthis.type = null;\n\t\tthis.input = null;\n\t\tthis.deleteButton = null;\n\t\tthis.init(field, parent);\n\t};\n\n\tBX.Filter.FieldController.prototype = {\n\t\tinit: function(field, parent)\n\t\t{\n\t\t\tif (!BX.type.isDomNode(field))\n\t\t\t{\n\t\t\t\tthrow 'BX.Filter.FieldController.init: field isn\\'t dom node';\n\t\t\t}\n\n\t\t\tif (!(parent instanceof BX.Main.Filter))\n\t\t\t{\n\t\t\t\tthrow 'BX.Filter.FieldController.init: parent not instance of BX.Main.ui.Filter';\n\t\t\t}\n\n\t\t\tthis.field = field;\n\t\t\tthis.parent = parent;\n\t\t\tthis.bind();\n\n\t\t\tthis.isShowDelete() ? this.showDelete() : this.hideDelete();\n\t\t},\n\n\t\tisShowDelete: function()\n\t\t{\n\t\t\tvar squares = this.getSquares();\n\t\t\treturn this.getInputValue() || (BX.type.isArray(squares) && squares.length);\n\t\t},\n\n\t\tgetField: function()\n\t\t{\n\t\t\treturn this.field;\n\t\t},\n\n\t\tgetInput: function()\n\t\t{\n\t\t\tvar type, types;\n\n\t\t\tif (!BX.type.isDomNode(this.input))\n\t\t\t{\n\t\t\t\ttype = this.getType();\n\t\t\t\ttypes = this.parent.types;\n\n\t\t\t\tif (type === types.DATE)\n\t\t\t\t{\n\t\t\t\t\tthis.input = BX.Filter.Utils.getByClass(this.getField(), this.parent.settings.classDateInput);\n\t\t\t\t}\n\n\t\t\t\tif (type === types.NUMBER || type === 'number')\n\t\t\t\t{\n\t\t\t\t\tthis.input = BX.Filter.Utils.getByClass(this.getField(), this.parent.settings.classNumberInput);\n\t\t\t\t}\n\n\t\t\t\tif (type === types.STRING)\n\t\t\t\t{\n\t\t\t\t\tthis.input = BX.Filter.Utils.getByClass(this.getField(), this.parent.settings.classStringInput);\n\t\t\t\t}\n\n\t\t\t\tif (type === types.CUSTOM_ENTITY)\n\t\t\t\t{\n\t\t\t\t\tthis.input = BX.Filter.Utils.getBySelector(this.getField(), 'input[type=\"hidden\"]');\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn this.input;\n\t\t},\n\n\t\tgetDeleteButton: function()\n\t\t{\n\t\t\tif (!BX.type.isDomNode(this.deleteButton))\n\t\t\t{\n\t\t\t\tthis.deleteButton = BX.Filter.Utils.getByClass(this.getField(), this.parent.settings.classValueDelete);\n\t\t\t}\n\n\t\t\treturn this.deleteButton;\n\t\t},\n\n\t\tgetSquares: function()\n\t\t{\n\t\t\treturn BX.Filter.Utils.getByClass(this.getField(), this.parent.settings.classSquare);\n\t\t},\n\n\t\tbind: function()\n\t\t{\n\t\t\tif (this.getType() !== this.parent.types.MULTI_SELECT && this.getType() !== this.parent.types.SELECT)\n\t\t\t{\n\t\t\t\tBX.bind(this.getDeleteButton(), 'click', BX.delegate(this._onDeleteClick, this));\n\t\t\t\tBX.bind(this.getInput(), 'input', BX.delegate(this._onInput, this));\n\t\t\t}\n\t\t},\n\n\t\tclearInput: function()\n\t\t{\n\t\t\tvar input = this.getInput();\n\n\t\t\tif (BX.type.isDomNode(input))\n\t\t\t{\n\t\t\t\tinput.value = '';\n\t\t\t}\n\t\t},\n\n\t\thideDelete: function()\n\t\t{\n\t\t\tvar deleteButton = this.getDeleteButton();\n\n\t\t\tif (BX.type.isDomNode(deleteButton))\n\t\t\t{\n\t\t\t\tBX.addClass(deleteButton, this.parent.settings.classHide);\n\t\t\t}\n\t\t},\n\n\t\tshowDelete: function()\n\t\t{\n\t\t\tvar deleteButton = this.getDeleteButton();\n\n\t\t\tif (BX.type.isDomNode(deleteButton))\n\t\t\t{\n\t\t\t\tBX.removeClass(deleteButton, this.parent.settings.classHide);\n\t\t\t}\n\t\t},\n\n\t\tremoveSquares: function()\n\t\t{\n\t\t\tvar squares = this.getSquares();\n\n\t\t\tif (BX.type.isArray(squares) && squares.length)\n\t\t\t{\n\t\t\t\tsquares.forEach(function(square) {\n\t\t\t\t\tBX.remove(square);\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\n\t\t_onDeleteClick: function()\n\t\t{\n\t\t\tthis.removeSquares();\n\t\t\tthis.clearInput();\n\t\t\tthis.hideDelete();\n\t\t},\n\n\t\t_onInput: function()\n\t\t{\n\t\t\tthis.getInputValue() ? this.showDelete() : this.hideDelete();\n\t\t},\n\n\t\tgetInputValue: function()\n\t\t{\n\t\t\tvar result = '';\n\t\t\tvar input = this.getInput();\n\n\t\t\tif (BX.type.isDomNode(input))\n\t\t\t{\n\t\t\t\tresult = input.value;\n\t\t\t}\n\n\t\t\treturn result;\n\t\t},\n\n\t\tgetType: function()\n\t\t{\n\t\t\tif (!BX.type.isNotEmptyString(this.type))\n\t\t\t{\n\t\t\t\tthis.type = BX.data(this.getField(), 'type');\n\t\t\t}\n\n\t\t\treturn this.type;\n\t\t}\n\t};\n\n})();",";(function() {\n\t'use strict';\n\n\tBX.namespace('BX.Main.ui');\n\n\tBX.Main.ui.CustomEntity = function()\n\t{\n\t\tthis.field = null;\n\t\tthis.labelInput = null;\n\t\tthis.hiddenInput = null;\n\t\tthis.popupContainer = null;\n\t\tthis.inputClass = 'main-ui-control-string';\n\t\tthis.squareClass = 'main-ui-square';\n\t\tthis.multiple = null;\n\t};\n\n\n\t/**\n\t * @static\n\t * @param {HTMLElement} field\n\t * @return {boolean}\n\t */\n\tBX.Main.ui.CustomEntity.isMultiple = function(field)\n\t{\n\t\tif (!!field && !BX.hasClass(field, 'main-ui-control-entity'))\n\t\t{\n\t\t\tfield = BX.Filter.Utils.getByClass(field, 'main-ui-control-entity');\n\t\t}\n\n\t\treturn !!field && JSON.parse(BX.data(field, 'multiple'));\n\t};\n\n\n\t//noinspection JSUnusedGlobalSymbols\n\tBX.Main.ui.CustomEntity.prototype = {\n\t\tsetField: function(field)\n\t\t{\n\t\t\tif (this.field !== field)\n\t\t\t{\n\t\t\t\tthis.field = field;\n\t\t\t\tthis.reset();\n\t\t\t}\n\t\t},\n\n\t\tisMultiple: function()\n\t\t{\n\t\t\treturn BX.Main.ui.CustomEntity.isMultiple(this.getField());\n\t\t},\n\n\t\treset: function()\n\t\t{\n\t\t\tthis.labelInput = null;\n\t\t\tthis.hiddenInput = null;\n\t\t},\n\n\t\tgetField: function()\n\t\t{\n\t\t\treturn this.field;\n\t\t},\n\n\t\tgetId: function()\n\t\t{\n\t\t\tvar hiddenNode = this.getHiddenNode();\n\t\t\tvar id = null;\n\n\t\t\tif (BX.type.isDomNode(hiddenNode))\n\t\t\t{\n\t\t\t\tid = hiddenNode.name;\n\t\t\t}\n\n\t\t\treturn id;\n\t\t},\n\n\t\tgetLabelNode: function()\n\t\t{\n\t\t\tif (!BX.type.isDomNode(this.labelInput))\n\t\t\t{\n\t\t\t\tthis.labelInput = BX.Filter.Utils.getBySelector(this.getField(), '.'+this.inputClass+'[type=\"text\"]');\n\t\t\t}\n\n\t\t\treturn this.labelInput;\n\t\t},\n\n\t\tgetHiddenNode: function()\n\t\t{\n\t\t\tif (!BX.type.isDomNode(this.hiddenInput))\n\t\t\t{\n\t\t\t\tthis.hiddenInput = BX.Filter.Utils.getBySelector(this.getField(), '.'+this.inputClass+'[type=\"hidden\"]');\n\t\t\t}\n\n\t\t\treturn this.hiddenInput;\n\t\t},\n\n\t\tgetSquareByValue: function(value)\n\t\t{\n\t\t\treturn BX.Filter.Utils.getBySelector(this.getField(), [\n\t\t\t\t'[data-item*=\":'+BX.util.jsencode(value)+'}\"]',\n\t\t\t\t'[data-item*=\":\\\\\"'+BX.util.jsencode(value)+'\\\\\"}\"]'\n\t\t\t].join(', '));\n\t\t},\n\n\t\tgetSquares: function()\n\t\t{\n\t\t\treturn BX.Filter.Utils.getByClass(this.getField(), this.squareClass, true);\n\t\t},\n\n\t\tremoveSquares: function()\n\t\t{\n\t\t\tthis.getSquares().forEach(BX.remove);\n\t\t},\n\n\t\tsetSquare: function(label, value)\n\t\t{\n\t\t\tvar field = this.getField();\n\t\t\tvar squareData = {\n\t\t\t\tblock: 'main-ui-square',\n\t\t\t\tname: label,\n\t\t\t\titem: {\n\t\t\t\t\t'_label': label,\n\t\t\t\t\t'_value': value\n\t\t\t\t}\n\t\t\t};\n\t\t\tvar square = BX.decl(squareData);\n\t\t\tvar squares = this.getSquares();\n\n\t\t\tif (!squares.length)\n\t\t\t{\n\t\t\t\tBX.prepend(square, field);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tBX.insertAfter(square, squares[squares.length-1]);\n\t\t\t}\n\t\t},\n\n\t\tgetCurrentValues: function()\n\t\t{\n\t\t\tvar squares = this.getSquares();\n\t\t\tvar data, result;\n\t\t\tif(this.isMultiple())\n\t\t\t{\n\t\t\t\tresult = [];\n\t\t\t\tfor(var i = 0, length = squares.length; i < length; i++)\n\t\t\t\t{\n\t\t\t\t\ttry\n\t\t\t\t\t{\n\t\t\t\t\t\tdata = JSON.parse(BX.data(squares[i], 'item'));\n\t\t\t\t\t\tresult.push({ label: data._label, value: data._value });\n\t\t\t\t\t}\n\t\t\t\t\tcatch (ex)\n\t\t\t\t\t{\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tif(squares.length === 0)\n\t\t\t\t{\n\t\t\t\t\tresult = { label: '', value: '' };\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\ttry\n\t\t\t\t\t{\n\t\t\t\t\t\tdata = JSON.parse(BX.data(squares[0], 'item'));\n\t\t\t\t\t\tresult =  { label: data._label, value: data._value };\n\t\t\t\t\t}\n\t\t\t\t\tcatch (ex)\n\t\t\t\t\t{\n\t\t\t\t\t\tresult = { label: '', value: '' };\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn result;\n\t\t},\n\n\t\tsetData: function(label, value)\n\t\t{\n\t\t\treturn this.isMultiple() ? this.setMultipleData(label, value) : this.setSingleData(label, value);\n\t\t},\n\n\t\tsetSingleData: function(label, value)\n\t\t{\n\t\t\tvar hiddenNode = this.getHiddenNode();\n\t\t\tthis.removeSquares();\n\t\t\tthis.setSquare(label, value);\n\n\t\t\tif (BX.type.isDomNode(hiddenNode))\n\t\t\t{\n\t\t\t\thiddenNode.value = value;\n\t\t\t\tBX.fireEvent(hiddenNode, 'input');\n\t\t\t}\n\t\t},\n\n\t\tsetMultipleData: function(items, value)\n\t\t{\n\t\t\tvar values = [];\n\t\t\tvar hiddenNode = this.getHiddenNode();\n\n\t\t\tif (BX.type.isArray(items))\n\t\t\t{\n\t\t\t\tthis.removeSquares();\n\n\t\t\t\tif (BX.type.isArray(items))\n\t\t\t\t{\n\t\t\t\t\titems.forEach(function(item) {\n\t\t\t\t\t\tvalues.push(item.value);\n\t\t\t\t\t\tthis.setSquare(item.label, item.value);\n\t\t\t\t\t}, this);\n\n\t\t\t\t\tif (BX.type.isDomNode(hiddenNode))\n\t\t\t\t\t{\n\t\t\t\t\t\thiddenNode.value = JSON.stringify(values);\n\t\t\t\t\t\tBX.fireEvent(hiddenNode, 'input');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!BX.type.isArray(items) && value !== null)\n\t\t\t{\n\t\t\t\tif (!this.getSquareByValue(value))\n\t\t\t\t{\n\t\t\t\t\tthis.setSquare(items, value);\n\n\t\t\t\t\tthis.getSquares().forEach(function(square) {\n\t\t\t\t\t\tvar squareData = JSON.parse(BX.data(square, 'item'));\n\t\t\t\t\t\tif (BX.type.isPlainObject(squareData))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvalues.push(squareData._value);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\thiddenNode.value = JSON.stringify(values);\n\t\t\t\t\tBX.fireEvent(hiddenNode, 'input');\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tclearValue: function()\n\t\t{\n\t\t\tthis.removeSquares();\n\n\t\t\tvar hiddenNode = this.getHiddenNode();\n\t\t\thiddenNode.value = this.isMultiple() ? '[]': '';\n\t\t},\n\n\t\tsetPopupContainer: function(container)\n\t\t{\n\t\t\tif (BX.type.isDomNode(container))\n\t\t\t{\n\t\t\t\tthis.popupContainer = container;\n\t\t\t}\n\t\t},\n\n\t\tgetPopupContainer: function()\n\t\t{\n\t\t\treturn this.popupContainer;\n\t\t}\n\t};\n})();",";(function() {\n\t'use strict';\n\n\tBX.namespace('BX.Filter');\n\n\t/**\n\t * Filter search block class\n\t * @param parent\n\t * @constructor\n\t */\n\tBX.Filter.Search = function(parent)\n\t{\n\t\tthis.parent = null;\n\t\tthis.container = null;\n\t\tthis.input = null;\n\t\tthis.preset = null;\n\t\tthis.buttonsContainer = null;\n\t\tthis.delay = 800;\n\t\tthis.timeout = null;\n\t\tthis.init(parent);\n\t};\n\tBX.Filter.Search.prototype = {\n\t\tinit: function(parent)\n\t\t{\n\t\t\tthis.parent = parent;\n\t\t\tBX.bind(this.getInput(), 'input', BX.delegate(this._onInputWithoutDebounce, this));\n\n\t\t\tif (this.parent.getParam('ENABLE_LIVE_SEARCH'))\n\t\t\t{\n\t\t\t\tBX.bind(this.getInput(), 'input', BX.debounce(this._onInput, this.delay, this));\n\t\t\t}\n\n\t\t\tBX.bind(this.getInput(), 'keydown', BX.delegate(this._onKeyDown, this));\n\t\t\tBX.bind(this.getFindButton(), 'click', BX.delegate(this._onSearchClick, this));\n\t\t\tBX.bind(this.getContainer(), 'click', BX.delegate(this._onSearchContainerClick, this));\n\t\t\tthis.removeAutofocus();\n\t\t\tthis.firstInit = true;\n\t\t},\n\n\n\t\t/**\n\t\t * Removes autofocus attr from search input\n\t\t */\n\t\tremoveAutofocus: function()\n\t\t{\n\t\t\tvar input = this.getInput();\n\n\t\t\tif (!!input)\n\t\t\t{\n\t\t\t\tinput.blur();\n\t\t\t\tinput.autofocus = null;\n\t\t\t}\n\t\t},\n\n\n\t\tgetFindButton: function()\n\t\t{\n\t\t\tif (!BX.type.isDomNode(this.findButton))\n\t\t\t{\n\t\t\t\tthis.findButton = BX.Filter.Utils.getByClass(this.getContainer(), this.parent.settings.classSearchButton);\n\t\t\t}\n\n\t\t\treturn this.findButton;\n\t\t},\n\n\t\t_onSearchClick: function()\n\t\t{\n\t\t\tthis.apply();\n\t\t},\n\n\t\tselectSquare: function(square)\n\t\t{\n\t\t\t!!square && BX.addClass(square, this.parent.settings.classSquareSelected);\n\t\t},\n\n\t\tselectSquares: function()\n\t\t{\n\t\t\tthis.getSquares().forEach(this.selectSquare, this);\n\t\t},\n\n\t\tunselectSquare: function(square)\n\t\t{\n\t\t\t!!square && BX.removeClass(square, this.parent.settings.classSquareSelected);\n\t\t},\n\n\t\tunselectSquares: function()\n\t\t{\n\t\t\tthis.getSquares().forEach(this.unselectSquare, this);\n\t\t},\n\n\t\tremoveSquares: function()\n\t\t{\n\t\t\tthis.getSquares().forEach(this.removeSquare, this);\n\t\t},\n\n\t\tisSquaresSelected: function()\n\t\t{\n\t\t\tvar squares = this.getSquares();\n\t\t\treturn squares.length && squares.every(this.isSquareSelected, this);\n\t\t},\n\n\t\tisSquareSelected: function(square)\n\t\t{\n\t\t\treturn !!square && BX.hasClass(square, this.parent.settings.classSquareSelected);\n\t\t},\n\n\t\tgetLastSquare: function()\n\t\t{\n\t\t\tvar squares = this.getSquares();\n\t\t\treturn !!squares ? squares[squares.length-1] : null;\n\t\t},\n\n\t\tisTextSelected: function()\n\t\t{\n\t\t\tvar searchStringLength = this.getSearchString().length;\n\t\t\tvar searchInput = this.getInput();\n\t\t\tvar selectionStart = searchInput.selectionStart;\n\t\t\tvar selectionEnd = searchInput.selectionEnd;\n\n\t\t\treturn selectionStart === 0 && selectionEnd !== 0 && selectionEnd === searchStringLength;\n\t\t},\n\n\t\tisSelectionStart: function()\n\t\t{\n\t\t\tvar searchInput = this.getInput();\n\t\t\tvar selectionStart = searchInput.selectionStart;\n\t\t\tvar selectionEnd = searchInput.selectionEnd;\n\n\t\t\treturn selectionStart === 0 && selectionEnd === 0;\n\t\t},\n\n\t\tisSquareRemoveButton: function(node)\n\t\t{\n\t\t\treturn !!node && BX.hasClass(node, this.parent.settings.classSquareDelete);\n\t\t},\n\n\t\tisClearButton: function(node)\n\t\t{\n\t\t\treturn !!node && BX.hasClass(node, this.parent.settings.classClearSearchValueButton);\n\t\t},\n\n\t\tgetClearButton: function()\n\t\t{\n\t\t\treturn this.getContainer().querySelector(\".\" + this.parent.settings.classClearSearchValueButton);\n\t\t},\n\n\t\tisSearchButton: function(node)\n\t\t{\n\t\t\treturn !!node && BX.hasClass(node, this.parent.settings.classSearchButton);\n\t\t},\n\n\n\t\t/**\n\t\t * Adjust focus on search input\n\t\t */\n\t\tadjustFocus: function()\n\t\t{\n\t\t\tif (!BX.browser.IsMobile())\n\t\t\t{\n\t\t\t\tvar searchInput = this.getInput();\n\n\t\t\t\tif (document.activeElement !== searchInput && window.scrollY < BX.pos(searchInput).top)\n\t\t\t\t{\n\t\t\t\t\t//Puts cursor after last character\n\t\t\t\t\t//noinspection SillyAssignmentJS\n\t\t\t\t\tsearchInput.value = searchInput.value;\n\t\t\t\t\tsearchInput.blur();\n\t\t\t\t\tsearchInput.focus();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tfindSquareByChild: function(childNode)\n\t\t{\n\t\t\treturn BX.findParent(childNode, {className: this.parent.settings.classSquare}, true, false);\n\t\t},\n\n\t\t/**\n\t\t * @param {HTMLElement} square\n\t\t */\n\t\tgetSquareData: function(square)\n\t\t{\n\t\t\tvar rawData = BX.data(square, 'item');\n\t\t\treturn !!square && !!rawData ? JSON.parse(rawData) : null;\n\t\t},\n\n\t\t/**\n\t\t * @param {HTMLElement} square\n\t\t * @return {boolean}\n\t\t */\n\t\tisSquareControl: function(square)\n\t\t{\n\t\t\tvar squareData = this.getSquareData(square);\n\t\t\treturn !!squareData && (squareData.type === 'control' || BX.type.isArray(squareData));\n\t\t},\n\n\t\tonPresetSquareRemove: function()\n\t\t{\n\t\t\tvar Filter = this.parent;\n\t\t\tvar Preset = Filter.getPreset();\n\t\t\tvar currentPresetId = Preset.getCurrentPresetId();\n\t\t\tvar isResetToDefaultMode = Filter.getParam('RESET_TO_DEFAULT_MODE');\n\t\t\tvar isValueRequiredModeMail = Filter.getParam('VALUE_REQUIRED');\n\t\t\tvar isPinned = Preset.isPinned(currentPresetId);\n\t\t\tvar squares = this.getSquares();\n\n\t\t\tif (squares.length === 1)\n\t\t\t{\n\t\t\t\tif (isValueRequiredModeMail && isPinned)\n\t\t\t\t{\n\t\t\t\t\tthis.parent.showPopup();\n\t\t\t\t\tthis.adjustPlaceholder();\n\t\t\t\t\tthis.parent.getPreset().deactivateAllPresets();\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tif ((isResetToDefaultMode && isPinned) || !isResetToDefaultMode)\n\t\t\t\t\t{\n\t\t\t\t\t\tvar resetWithoutSearch = true;\n\t\t\t\t\t\tthis.lastPromise = Filter.resetFilter(resetWithoutSearch);\n\t\t\t\t\t\tFilter.closePopup();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (isResetToDefaultMode && !isPinned)\n\t\t\t\t{\n\t\t\t\t\tthis.lastPromise = Filter.getPreset().applyPinnedPreset();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (squares.length > 1)\n\t\t\t{\n\t\t\t\tvar currentPreset = Preset.getPreset(Preset.getCurrentPresetId());\n\t\t\t\tvar tmpPreset = Preset.getPreset('tmp_filter');\n\n\t\t\t\ttmpPreset.FIELDS = BX.clone(currentPreset.ADDITIONAL);\n\t\t\t\tcurrentPreset.ADDITIONAL = [];\n\t\t\t\tPreset.deactivateAllPresets();\n\t\t\t\tPreset.applyPreset('tmp_filter');\n\t\t\t\tFilter.applyFilter();\n\t\t\t}\n\t\t},\n\n\t\tonControlSquareRemove: function(square)\n\t\t{\n\t\t\tvar Filter = this.parent;\n\t\t\tvar Preset = Filter.getPreset();\n\t\t\tvar isResetToDefaultMode = Filter.getParam('RESET_TO_DEFAULT_MODE');\n\t\t\tvar isValueRequiredModeMail = Filter.getParam('VALUE_REQUIRED');\n\t\t\tvar squareData;\n\n\t\t\tif (isResetToDefaultMode && this.getSquares().length === 1)\n\t\t\t{\n\t\t\t\tif (isValueRequiredModeMail)\n\t\t\t\t{\n\t\t\t\t\tsquareData = this.getSquareData(square);\n\t\t\t\t\tFilter.clearControls(squareData);\n\n\t\t\t\t\tthis.parent.showPopup();\n\t\t\t\t\tthis.adjustPlaceholder();\n\t\t\t\t\tthis.parent.getPreset().deactivateAllPresets();\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tthis.lastPromise = Filter.getPreset().applyPinnedPreset();\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tsquareData = this.getSquareData(square);\n\t\t\t\tFilter.clearControls(squareData);\n\t\t\t\tFilter.closePopup();\n\n\t\t\t\tif (BX.type.isArray(squareData))\n\t\t\t\t{\n\t\t\t\t\tsquareData.forEach(function(square) {\n\t\t\t\t\t\tPreset.removeAdditionalField(square.name);\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif (BX.type.isPlainObject(squareData))\n\t\t\t\t{\n\t\t\t\t\tPreset.removeAdditionalField(squareData.name);\n\t\t\t\t}\n\n\t\t\t\tthis.apply();\n\t\t\t}\n\t\t},\n\n\t\tonValueRequiredSquareRemove: function()\n\t\t{\n\t\t\tvar Filter = this.parent;\n\t\t\tFilter.getPreset().deactivateAllPresets();\n\t\t\tFilter.showPopup();\n\t\t\tthis.adjustPlaceholder();\n\t\t},\n\n\t\t/**\n\t\t * @param {HTMLElement} square\n\t\t */\n\t\tcomplexSquareRemove: function(square)\n\t\t{\n\t\t\tvar isValueRequiredMode = this.parent.getParam('VALUE_REQUIRED_MODE');\n\t\t\tvar isPresetSquare = !this.isSquareControl(square);\n\n\t\t\tif (isValueRequiredMode)\n\t\t\t{\n\t\t\t\tthis.onValueRequiredSquareRemove();\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tif (isPresetSquare)\n\t\t\t\t{\n\t\t\t\t\tthis.onPresetSquareRemove();\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tthis.onControlSquareRemove(square);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.removeSquare(square);\n\t\t\tthis.adjustClearButton();\n\t\t},\n\n\t\tadjustClearButton: function()\n\t\t{\n\t\t\t!!this.getLastSquare() ? this.showClearButton() : this.hideClearButton();\n\t\t},\n\n\t\t/**\n\t\t * @param {HTMLElement} square\n\t\t */\n\t\tremoveSquare: function(square)\n\t\t{\n\t\t\t!!square && BX.remove(square);\n\t\t},\n\n\t\t_onSearchContainerClick: function(event)\n\t\t{\n\t\t\tvar Filter = this.parent;\n\n\t\t\tif (this.isClearButton(event.target))\n\t\t\t{\n\t\t\t\tif (!Filter.getParam('VALUE_REQUIRED'))\n\t\t\t\t{\n\t\t\t\t\tif (!Filter.getParam('VALUE_REQUIRED_MODE'))\n\t\t\t\t\t{\n\t\t\t\t\t\tif (Filter.getParam('RESET_TO_DEFAULT_MODE'))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tthis.clearInput();\n\t\t\t\t\t\t\tthis.lastPromise = Filter.getPreset().applyPinnedPreset();\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tFilter.resetFilter();\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tFilter.closePopup();\n\t\t\t\t\t\tthis.adjustFocus();\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.removeSquares();\n\t\t\t\t\t\tFilter.showPopup();\n\t\t\t\t\t\tthis.adjustPlaceholder();\n\t\t\t\t\t\tthis.hideClearButton();\n\t\t\t\t\t\tFilter.getPreset().deactivateAllPresets();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tvar isPinned = Filter.getPreset().isPinned(\n\t\t\t\t\t\tFilter.getPreset().getCurrentPresetId()\n\t\t\t\t\t);\n\n\t\t\t\t\tif (isPinned || Filter.getPreset().getCurrentPresetId() === 'tmp_filter')\n\t\t\t\t\t{\n\t\t\t\t\t\tvar presetData = Filter.getPreset().getPreset(\n\t\t\t\t\t\t\tFilter.getPreset().getCurrentPresetId()\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tif (presetData.ADDITIONAL.length)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpresetData.ADDITIONAL = [];\n\t\t\t\t\t\t\tthis.lastPromise = Filter.getPreset().applyPreset(Filter.getPreset().getCurrentPresetId());\n\t\t\t\t\t\t\tthis.apply();\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tthis.removeSquares();\n\t\t\t\t\t\t\tFilter.showPopup();\n\t\t\t\t\t\t\tthis.adjustPlaceholder();\n\t\t\t\t\t\t\tthis.hideClearButton();\n\t\t\t\t\t\t\tFilter.getPreset().deactivateAllPresets();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tif (Filter.getParam('RESET_TO_DEFAULT_MODE'))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tthis.lastPromise = Filter.getPreset().applyPinnedPreset();\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tFilter.resetFilter();\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tFilter.closePopup();\n\t\t\t\t\t\tthis.adjustFocus();\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.clearInput();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\telse if (this.isSearchButton(event.target))\n\t\t\t{\n\t\t\t\tthis.apply();\n\t\t\t\tthis.adjustFocus();\n\t\t\t}\n\n\t\t\telse if (this.isSquareRemoveButton(event.target))\n\t\t\t{\n\t\t\t\tvar square = this.findSquareByChild(event.target);\n\t\t\t\tthis.complexSquareRemove(square);\n\t\t\t\tthis.adjustFocus();\n\t\t\t}\n\n\t\t\telse\n\t\t\t{\n\t\t\t\tif (!Filter.getPopup().isShown())\n\t\t\t\t{\n\t\t\t\t\tFilter.showPopup();\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tvar input = this.getInput();\n\t\t\t\t\tvar start = input.selectionStart;\n\t\t\t\t\tvar end = input.selectionEnd;\n\t\t\t\t\tvar searchLength = this.getSearchString().length;\n\n\t\t\t\t\tif (!(searchLength && start === 0 && end === searchLength))\n\t\t\t\t\t{\n\t\t\t\t\t\tif (Filter.getParam('VALUE_REQUIRED'))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif (!this.getSquares().length)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tthis.lastPromise = Filter.getPreset().applyPinnedPreset();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tFilter.closePopup();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tFilter.closePopup();\n\n\t\t\t\t\t\t\tif (Filter.getParam('VALUE_REQUIRED_MODE'))\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tFilter.restoreRemovedPreset();\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}\n\t\t\t}\n\t\t},\n\n\t\t_onKeyDown: function(event)\n\t\t{\n\t\t\tvar utils = BX.Filter.Utils;\n\t\t\tvar parent = this.parent;\n\n\t\t\tif (utils.isKey(event, 'enter'))\n\t\t\t{\n\t\t\t\tif (parent.getParam('VALUE_REQUIRED'))\n\t\t\t\t{\n\t\t\t\t\tif (!this.getSquares().length)\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.parent.getPreset().applyPinnedPreset();\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.apply();\n\t\t\t\t\t\tthis.firstInit = false;\n\t\t\t\t\t\tthis.lastSearchString = this.getSearchString();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tthis.apply();\n\t\t\t\t\tthis.firstInit = false;\n\t\t\t\t\tthis.lastSearchString = this.getSearchString();\n\t\t\t\t}\n\n\t\t\t\tparent.closePopup();\n\t\t\t}\n\n\t\t\tif (utils.isKey(event, 'tab') || utils.isKey(event, 'downArrow'))\n\t\t\t{\n\t\t\t\tparent.showPopup();\n\t\t\t\tparent.adjustFocus();\n\t\t\t\tthis.unselectSquares();\n\t\t\t}\n\n\t\t\tif (utils.isKey(event, 'upArrow'))\n\t\t\t{\n\t\t\t\tparent.closePopup();\n\n\t\t\t\tif (parent.getParam('VALUE_REQUIRED_MODE'))\n\t\t\t\t{\n\t\t\t\t\tthis.parent.restoreRemovedPreset();\n\t\t\t\t}\n\n\t\t\t\tif (parent.getParam('VALUE_REQUIRED'))\n\t\t\t\t{\n\t\t\t\t\tif (!this.getSquares().length)\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.parent.getPreset().applyPinnedPreset();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (utils.isKey(event, 'a') && event.metaKey || utils.isKey(event, 'a') && event.ctrlKey)\n\t\t\t{\n\t\t\t\tthis.selectSquares();\n\t\t\t}\n\n\t\t\tif (utils.isKey(event, 'backspace') && this.isTextSelected() && this.isSquaresSelected())\n\t\t\t{\n\t\t\t\tclearTimeout(this.timeout);\n\n\t\t\t\tif (this.parent.getParam('VALUE_REQUIRED'))\n\t\t\t\t{\n\t\t\t\t\tvar isPinned = this.parent.getPreset().isPinned(\n\t\t\t\t\t\tthis.parent.getPreset().getCurrentPresetId()\n\t\t\t\t\t);\n\n\t\t\t\t\tif (isPinned)\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.removeSquares();\n\t\t\t\t\t\tthis.parent.showPopup();\n\t\t\t\t\t\tthis.adjustPlaceholder();\n\t\t\t\t\t\tthis.hideClearButton();\n\t\t\t\t\t\tthis.parent.getPreset().deactivateAllPresets();\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tif (this.parent.getParam('RESET_TO_DEFAULT_MODE'))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tthis.lastPromise = this.parent.getPreset().applyPinnedPreset();\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tthis.parent.resetFilter();\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tthis.parent.closePopup();\n\t\t\t\t\t\tthis.adjustFocus();\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.clearInput();\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tif (this.parent.getParam('RESET_TO_DEFAULT_MODE'))\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.lastPromise = this.parent.getPreset().applyPinnedPreset();\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.lastPromise = this.parent.resetFilter();\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.parent.closePopup();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (utils.isKey(event, 'backspace') && this.isSelectionStart())\n\t\t\t{\n\t\t\t\tclearTimeout(this.timeout);\n\t\t\t\tvar square = this.getLastSquare();\n\n\t\t\t\tthis.isSquareSelected(square) ? this.complexSquareRemove(square) : this.selectSquare(square);\n\t\t\t}\n\n\t\t\tif (!utils.isKey(event, 'backspace') && !event.metaKey && this.isSquaresSelected())\n\t\t\t{\n\t\t\t\tthis.unselectSquares();\n\t\t\t}\n\t\t},\n\n\t\tgetSearchString: function()\n\t\t{\n\t\t\tvar input = this.getInput();\n\t\t\treturn !!input ? input.value : '';\n\t\t},\n\n\t\tgetSquares: function()\n\t\t{\n\t\t\treturn BX.Filter.Utils.getByClass(this.getContainer(), this.parent.settings.classSquare, true);\n\t\t},\n\n\t\tadjustPlaceholder: function()\n\t\t{\n\t\t\tif (this.parent.getParam(\"LIMITS_ENABLED\"))\n\t\t\t{\n\t\t\t\tthis.setInputPlaceholder(this.parent.getParam('MAIN_UI_FILTER__PLACEHOLDER_LIMITS_EXCEEDED'));\n\t\t\t}\n\t\t\telse if (this.parent.getParam(\"DISABLE_SEARCH\") || !this.parent.settings.get('SEARCH'))\n\t\t\t{\n\t\t\t\tthis.setInputPlaceholder(this.parent.getParam('MAIN_UI_FILTER__PLACEHOLDER'));\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.setInputPlaceholder(this.parent.getParam('MAIN_UI_FILTER__PLACEHOLDER_DEFAULT'));\n\t\t\t}\n\t\t},\n\n\t\tisResolvedRequest: function()\n\t\t{\n\t\t\treturn !this.lastPromise || !!this.lastPromise && this.lastPromise.state;\n\t\t},\n\n\t\t/**\n\t\t * Calls BX.Main.Filter.applyFilter\n\t\t * @return {BX.Promise}\n\t\t */\n\t\tapply: function()\n\t\t{\n\t\t\tif (this.isResolvedRequest())\n\t\t\t{\n\t\t\t\tthis.lastPromise = this.parent._onFindButtonClick();\n\t\t\t}\n\n\t\t\treturn this.lastPromise;\n\t\t},\n\n\t\t/**\n\t\t * Calls BX.Main.Filter.resetFilter()\n\t\t * @return {BX.Promise}\n\t\t */\n\t\treset: function()\n\t\t{\n\t\t\tif (this.isResolvedRequest())\n\t\t\t{\n\t\t\t\tthis.parent.getSearch().removePreset();\n\t\t\t\tthis.parent.getPreset().deactivateAllPresets();\n\t\t\t\tthis.parent.getPreset().resetPreset(true);\n\n\t\t\t\tthis.timeout = setTimeout(BX.delegate(function() {\n\t\t\t\t\tthis.lastPromise = this.parent.resetFilter();\n\t\t\t\t}, this), this.delay);\n\t\t\t}\n\n\t\t\treturn this.lastPromise;\n\t\t},\n\n\t\t_onInputWithoutDebounce: function()\n\t\t{\n\t\t\tclearTimeout(this.timeout);\n\n\t\t\tvar searchString = this.getSearchString();\n\t\t\tthis.lastSearchString = !!this.lastSearchString ? this.lastSearchString : searchString;\n\n\t\t\tif (searchString !== this.lastSearchString &&\n\t\t\t\t(!this.parent.isIe() || !this.firstInit))\n\t\t\t{\n\t\t\t\tif (this.parent.getParam('ENABLE_LIVE_SEARCH'))\n\t\t\t\t{\n\t\t\t\t\tthis.parent.showGridAnimation();\n\t\t\t\t\tBX.onCustomEvent(window, 'BX.Filter.Search:input', [this.parent.params.FILTER_ID, searchString]);\n\t\t\t\t}\n\n\t\t\t\tthis.parent.getPopup().isShown() && this.parent.closePopup();\n\t\t\t}\n\n\t\t\tif (searchString)\n\t\t\t{\n\t\t\t\tthis.showClearButton();\n\t\t\t\tthis.parent.setIsSetOutsideState(false);\n\t\t\t\tthis.parent.setDefaultPresetAppliedState(false);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tif (!this.getSquares().length && this.lastSearchString !== searchString)\n\t\t\t\t{\n\t\t\t\t\tthis.hideClearButton();\n\t\t\t\t\tthis.adjustPlaceholder();\n\t\t\t\t}\n\n\t\t\t\tif (this.parent.isAppliedDefaultPreset())\n\t\t\t\t{\n\t\t\t\t\tthis.parent.setDefaultPresetAppliedState(true);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (this.parent.isAppliedUserFilter())\n\t\t\t{\n\t\t\t\tBX.Dom.addClass(this.container, 'main-ui-filter-search--active');\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tBX.Dom.removeClass(this.container, 'main-ui-filter-search--active');\n\t\t\t}\n\t\t},\n\n\t\t_onInput: function()\n\t\t{\n\t\t\tvar searchString = this.getSearchString();\n\n\t\t\tif (searchString !== this.lastSearchString && (!this.parent.isIe() || !this.firstInit))\n\t\t\t{\n\t\t\t\tthis.apply();\n\t\t\t}\n\n\t\t\tthis.firstInit = false;\n\t\t\tthis.lastSearchString = searchString;\n\t\t},\n\n\t\tgetButtonsContainer: function()\n\t\t{\n\t\t\tif (!BX.type.isDomNode(this.buttonsContainer))\n\t\t\t{\n\t\t\t\tthis.buttonsContainer = BX.Filter.Utils.getByClass(this.getContainer(), this.parent.settings.classSearchButtonsContainer);\n\t\t\t}\n\n\t\t\treturn this.buttonsContainer;\n\t\t},\n\n\t\tshowClearButton: function()\n\t\t{\n\t\t\tBX.addClass(this.getButtonsContainer(), this.parent.settings.classShow);\n\t\t},\n\n\t\thideClearButton: function()\n\t\t{\n\t\t\tBX.removeClass(this.getButtonsContainer(), this.parent.settings.classShow);\n\t\t},\n\n\t\tgetInput: function()\n\t\t{\n\t\t\tvar inputId;\n\n\t\t\tif (!BX.type.isDomNode(this.input))\n\t\t\t{\n\t\t\t\tinputId = [this.parent.getParam('FILTER_ID', ''), '_search'].join('');\n\t\t\t\tthis.input = BX(inputId);\n\t\t\t}\n\n\t\t\treturn this.input;\n\t\t},\n\n\t\tgetContainer: function()\n\t\t{\n\t\t\tvar containerId;\n\n\t\t\tif (!BX.type.isDomNode(this.container))\n\t\t\t{\n\t\t\t\tcontainerId = [this.parent.getParam('FILTER_ID'), '_search_container'].join('');\n\t\t\t\tthis.container = BX(containerId);\n\t\t\t}\n\n\t\t\treturn this.container;\n\t\t},\n\n\t\tsetInputPlaceholder: function(text)\n\t\t{\n\t\t\tvar input = this.getInput();\n\t\t\tinput.placeholder = text;\n\t\t},\n\n\t\tclearInput: function()\n\t\t{\n\t\t\tvar form = this.getInput();\n\n\t\t\tif (BX.type.isDomNode(form))\n\t\t\t{\n\t\t\t\tform.value = null;\n\t\t\t}\n\t\t},\n\n\t\tclearForm: function()\n\t\t{\n\t\t\tthis.clearInput();\n\t\t\tthis.removePreset();\n\t\t},\n\n\t\tmakeSquares: function(squaresData, depth, additional)\n\t\t{\n\t\t\tvar square;\n\t\t\tvar tmpSquare = null;\n\t\t\tvar container = this.getContainer();\n\t\t\tvar result = {squares: [], moreSquares: []};\n\n\t\t\tsquaresData.forEach(function(current, index) {\n\t\t\t\tif (index < depth)\n\t\t\t\t{\n\t\t\t\t\tsquare = BX.decl(current);\n\t\t\t\t\ttmpSquare = tmpSquare || square;\n\n\t\t\t\t\tif (!additional)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (index === 0)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tBX.prepend(square, container);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tBX.insertAfter(square, tmpSquare);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tvar lastSquare = BX.Filter.Utils.getByClass(this.getContainer(), this.parent.settings.classSquare);\n\t\t\t\t\t\tif (lastSquare)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tBX.insertAfter(square, lastSquare);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tBX.prepend(square, container);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\ttmpSquare = square;\n\t\t\t\t\tresult.squares.push(square);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tresult.moreSquares.push({type: 'control', name: current.value, title: current.title, icon: current.icon});\n\t\t\t\t}\n\t\t\t}, this);\n\n\t\t\treturn result;\n\t\t},\n\n\t\tsquares: function(fields, depth, additional)\n\t\t{\n\t\t\tvar squaresData, moreSquares, square, squaresWidth, result;\n\t\t\tvar squares = BX.Filter.Utils.getByClass(this.getContainer(), this.parent.settings.classSquare, true);\n\n\t\t\tif (additional)\n\t\t\t{\n\t\t\t\tsquares.forEach(function(current) {\n\t\t\t\t\tvar item = BX.data(current, 'item');\n\n\t\t\t\t\tif (item)\n\t\t\t\t\t{\n\t\t\t\t\t\tBX.remove(current);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tsquares.forEach(BX.remove);\n\t\t\t}\n\n\t\t\tsquaresData = this.prepareSquaresData(fields);\n\t\t\tmoreSquares = this.makeSquares(squaresData, depth, additional);\n\t\t\tsquaresWidth = 0;\n\t\t\tresult = {squaresData: squaresData, width: 0};\n\n\t\t\tif (moreSquares.moreSquares.length)\n\t\t\t{\n\t\t\t\tsquare = {\n\t\t\t\t\tblock: 'main-ui-search-square',\n\t\t\t\t\tname: this.parent.getParam('MAIN_UI_FILTER__AND') + ' ' + this.parent.getParam('MAIN_UI_FILTER__MORE') + ' ' + moreSquares.moreSquares.length,\n\t\t\t\t\titem: moreSquares.moreSquares,\n\t\t\t\t\ttitle: moreSquares.moreSquares\n\t\t\t\t\t\t.map(\n\t\t\t\t\t\t\tfunction(curr) {\n\t\t\t\t\t\t\t\tlet title = curr.title;\n\t\t\t\t\t\t\t\tif ('icon' in curr && BX.Type.isPlainObject(curr.icon))\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tlet iconTitle = curr.icon.title;\n\t\t\t\t\t\t\t\t\ttitle = title.length ? (iconTitle + ': ' + title) : '';\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\treturn title;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.join(', \\n')\n\t\t\t\t};\n\n\t\t\t\tsquare = BX.decl(square);\n\t\t\t\tmoreSquares.squares.push(square);\n\t\t\t\tBX.insertAfter(square, moreSquares.squares[moreSquares.squares.length-2]);\n\n\t\t\t\tsquaresWidth = moreSquares.squares.reduce(function(prev, curr) {\n\t\t\t\t\treturn prev + BX.width(curr) + (parseFloat(BX.style(curr, 'margin-right')) || 0);\n\t\t\t\t}, 0);\n\t\t\t}\n\n\t\t\tresult.width = squaresWidth;\n\n\t\t\treturn result;\n\t\t},\n\n\t\tsetPreset: function(presetData)\n\t\t{\n\t\t\tvar container = this.getContainer();\n\t\t\tvar square, squares;\n\t\t\tvar squaresResult;\n\n\t\t\tif (BX.type.isPlainObject(presetData))\n\t\t\t{\n\t\t\t\tsquares = BX.Filter.Utils.getByClass(container, this.parent.settings.classSquare, true);\n\t\t\t\tsquares.forEach(BX.remove);\n\n\t\t\t\tpresetData = BX.clone(presetData);\n\t\t\t\tpresetData.ADDITIONAL = presetData.ADDITIONAL || [];\n\t\t\t\tBX.onCustomEvent(window, 'BX.Filter.Search:beforeSquaresUpdate', [presetData, this]);\n\n\t\t\t\tif (presetData.ID !== 'default_filter' && presetData.ID !== 'tmp_filter')\n\t\t\t\t{\n\t\t\t\t\tsquare = BX.decl({\n\t\t\t\t\t\tblock: 'main-ui-search-square',\n\t\t\t\t\t\tname: presetData.TITLE,\n\t\t\t\t\t\tvalue: presetData.ID,\n\t\t\t\t\t\tisPreset: true\n\t\t\t\t\t});\n\n\t\t\t\t\tBX.prepend(square, container);\n\n\t\t\t\t\tif ('ADDITIONAL' in presetData && BX.type.isArray(presetData.ADDITIONAL) && presetData.ADDITIONAL.length)\n\t\t\t\t\t{\n\t\t\t\t\t\tsquaresResult = this.squares(presetData.ADDITIONAL, 1, true);\n\n\t\t\t\t\t\tif ((BX.width(container) - squaresResult.width) < 100)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tsquaresResult = this.squares(presetData.ADDITIONAL, 0, true);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tif ('ADDITIONAL' in presetData && BX.type.isArray(presetData.ADDITIONAL) && presetData.ADDITIONAL.length)\n\t\t\t\t\t{\n\t\t\t\t\t\tpresetData.ADDITIONAL.forEach(function(current, index) {\n\t\t\t\t\t\t\tif (!('ID' in current))\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tcurrent.ID = 'ADDITIONAL_ID_'+index;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (!('NAME' in current))\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tcurrent.NAME = 'ADDITIONAL_NAME_'+index;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (!('TYPE' in current))\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tcurrent.TYPE = 'STRING';\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ('LABEL' in current && 'LABEL' in current)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tpresetData.FIELDS.push(current);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tif (BX.type.isArray(presetData.FIELDS) && presetData.FIELDS.length)\n\t\t\t\t\t{\n\t\t\t\t\t\tsquaresResult = this.squares(presetData.FIELDS, 2);\n\n\t\t\t\t\t\tif ((BX.width(container) - squaresResult.width) < 100)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tsquaresResult = this.squares(presetData.FIELDS, 1);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (squaresResult && BX.type.isArray(squaresResult.squaresData) && squaresResult.squaresData.length || (presetData.ID !== 'default_filter' && presetData.ID !== 'tmp_filter'))\n\t\t\t\t{\n\t\t\t\t\tif (this.parent.getParam(\"LIMITS_ENABLED\"))\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.setInputPlaceholder(this.parent.getParam('MAIN_UI_FILTER__PLACEHOLDER_LIMITS_EXCEEDED'));\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.setInputPlaceholder(this.parent.getParam('MAIN_UI_FILTER__PLACEHOLDER_WITH_FILTER'));\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.showClearButton();\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tthis.adjustPlaceholder();\n\t\t\t\t}\n\n\t\t\t\tif (BX.type.isNotEmptyString(this.parent.getSearch().getInput().value))\n\t\t\t\t{\n\t\t\t\t\tthis.showClearButton();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tprepareSquaresData: function(fields)\n\t\t{\n\t\t\tvar value, tmpValues, title, control;\n\t\t\tvar result = [];\n\n\t\t\tfields = fields.filter(function(current) {\n\t\t\t\treturn (\n\t\t\t\t\t!!current\n\t\t\t\t\t&& this.parent.params.FIELDS.some(function(currentField) {\n\t\t\t\t\t\treturn current.NAME === currentField.NAME;\n\t\t\t\t\t})\n\t\t\t\t);\n\t\t\t}, this);\n\n\t\t\tfields.map(function(current) {\n\t\t\t\tvalue = null;\n\n\t\t\t\tif (!BX.Type.isStringFilled(current.ADDITIONAL_FILTER))\n\t\t\t\t{\n\t\t\t\t\tswitch (current.TYPE)\n\t\t\t\t\t{\n\t\t\t\t\t\tcase this.parent.types.DATE : {\n\t\t\t\t\t\t\tvalue = current.LABEL + ': ' + current.SUB_TYPE.NAME;\n\n\t\t\t\t\t\t\tif (current.SUB_TYPE.VALUE === this.parent.dateTypes.QUARTER &&\n\t\t\t\t\t\t\t\tBX.type.isNotEmptyString(current.VALUES._quarter))\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tvar quarter = current.QUARTERS.filter(function(curr) {\n\t\t\t\t\t\t\t\t\treturn curr.VALUE == current.VALUES._quarter;\n\t\t\t\t\t\t\t\t}).map(function(curr) {\n\t\t\t\t\t\t\t\t\treturn curr.NAME;\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tquarter = quarter.length ? quarter.join('') : '';\n\n\t\t\t\t\t\t\t\tvalue = current.LABEL + ': ' + quarter + ' ' +\n\t\t\t\t\t\t\t\t\tthis.parent.getParam('MAIN_UI_FILTER__QUARTER').toLocaleLowerCase() + ' ' +\n\t\t\t\t\t\t\t\t\tcurrent.VALUES._year;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (current.SUB_TYPE.VALUE === this.parent.dateTypes.YEAR &&\n\t\t\t\t\t\t\t\tBX.type.isNotEmptyString(current.VALUES._year))\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tvalue = current.LABEL + ': ' + current.VALUES._year;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (current.SUB_TYPE.VALUE === this.parent.dateTypes.MONTH &&\n\t\t\t\t\t\t\t\tBX.type.isNotEmptyString(current.VALUES._month))\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tvar month = current.MONTHS.filter(function(curr) {\n\t\t\t\t\t\t\t\t\treturn curr.VALUE == current.VALUES._month;\n\t\t\t\t\t\t\t\t}).map(function(curr) {\n\t\t\t\t\t\t\t\t\treturn curr.NAME;\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tmonth = month.length ? month.join('') : '';\n\n\t\t\t\t\t\t\t\tvalue = current.LABEL + ': ' + month + ' ' + current.VALUES._year;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (current.SUB_TYPE.VALUE === this.parent.dateTypes.EXACT &&\n\t\t\t\t\t\t\t\tBX.type.isNotEmptyString(current.VALUES._from))\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tvalue = current.LABEL + ': ' + current.VALUES._from;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (current.SUB_TYPE.VALUE === this.parent.dateTypes.RANGE)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tif (BX.type.isNotEmptyString(current.VALUES._from) && BX.type.isNotEmptyString(current.VALUES._to))\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tvalue = current.LABEL + ': ' + current.VALUES._from + '-' + current.VALUES._to;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse if (!BX.type.isNotEmptyString(current.VALUES._from) && BX.type.isNotEmptyString(current.VALUES._to))\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tvalue = current.LABEL + ': ' + this.parent.getParam('MAIN_UI_FILTER__BEFORE') + ' ' + current.VALUES._to;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse if (BX.type.isNotEmptyString(current.VALUES._from) && !BX.type.isNotEmptyString(current.VALUES._to))\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tvalue = current.LABEL + ': ' + this.parent.getParam('MAIN_UI_FILTER__AFTER') + ' ' + current.VALUES._from;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\n\t\t\t\t\t\t\tif ((current.SUB_TYPE.VALUE === this.parent.dateTypes.NEXT_DAYS ||\n\t\t\t\t\t\t\t\tcurrent.SUB_TYPE.VALUE === this.parent.dateTypes.PREV_DAYS) &&\n\t\t\t\t\t\t\t\t!BX.type.isNumber(parseInt(current.VALUES._days)))\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tvalue = null;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (current.SUB_TYPE.VALUE === this.parent.dateTypes.NEXT_DAYS &&\n\t\t\t\t\t\t\t\tBX.type.isNumber(parseInt(current.VALUES._days)))\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tvalue = current.LABEL + ': ' + this.parent.getParam('MAIN_UI_FILTER__DATE_NEXT_DAYS_LABEL').replace('#N#', current.VALUES._days);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (current.SUB_TYPE.VALUE === this.parent.dateTypes.PREV_DAYS &&\n\t\t\t\t\t\t\t\tBX.type.isNumber(parseInt(current.VALUES._days)))\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tvalue = current.LABEL + ': ' + this.parent.getParam('MAIN_UI_FILTER__DATE_PREV_DAYS_LABEL').replace('#N#', current.VALUES._days);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (current.SUB_TYPE.VALUE === this.parent.dateTypes.NONE)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tvalue = null;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcase this.parent.types.CUSTOM_DATE : {\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t(BX.type.isArray(current.VALUE.days) && current.VALUE.days.length) ||\n\t\t\t\t\t\t\t\t(BX.type.isArray(current.VALUE.months) && current.VALUE.months.length) ||\n\t\t\t\t\t\t\t\t(BX.type.isArray(current.VALUE.years) && current.VALUE.years.length)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tvalue = current.LABEL;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcase this.parent.types.SELECT : {\n\t\t\t\t\t\t\tif ((BX.type.isPlainObject(current.VALUE) && current.VALUE.VALUE) || current.STRICT)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tvalue = current.LABEL + ': ' + current.VALUE.NAME;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcase this.parent.types.MULTI_SELECT : {\n\t\t\t\t\t\t\tif (BX.type.isArray(current.VALUE) && current.VALUE.length)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttmpValues = [];\n\t\t\t\t\t\t\t\tvalue = current.LABEL + ': ';\n\t\t\t\t\t\t\t\tcurrent.VALUE.forEach(function(val, index) {\n\t\t\t\t\t\t\t\t\tif (index < 2)\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\ttmpValues.push(val.NAME);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tvalue += tmpValues.join(', ');\n\n\t\t\t\t\t\t\t\tif (current.VALUE.length > 2)\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\ttitle = [];\n\n\t\t\t\t\t\t\t\t\tcurrent.VALUE.forEach(function(val) {\n\t\t\t\t\t\t\t\t\t\ttitle.push(val.NAME);\n\t\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\t\tvalue = title.join(', ');\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcase this.parent.types.NUMBER : {\n\t\t\t\t\t\t\tif (current.SUB_TYPE.VALUE === 'exact')\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tif (BX.type.isNotEmptyString(current.VALUES._from))\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tvalue = current.LABEL + ': ' + current.VALUES._from;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tvalue = null;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (current.SUB_TYPE.VALUE === 'range')\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tif (BX.type.isNotEmptyString(current.VALUES._from) && BX.type.isNotEmptyString(current.VALUES._to))\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tvalue = current.LABEL + ': ' + current.VALUES._from + '-' + current.VALUES._to;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse if (!BX.type.isNotEmptyString(current.VALUES._from) && BX.type.isNotEmptyString(current.VALUES._to))\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tvalue = current.LABEL + ': ' + this.parent.getParam('MAIN_UI_FILTER__NUMBER_LESS') + ' ' + current.VALUES._to;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse if (BX.type.isNotEmptyString(current.VALUES._from) && !BX.type.isNotEmptyString(current.VALUES._to))\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tvalue = current.LABEL + ': ' + this.parent.getParam('MAIN_UI_FILTER__NUMBER_MORE') + ' ' + current.VALUES._from;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tvalue = null;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (current.SUB_TYPE.VALUE === 'more')\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tif (BX.type.isNotEmptyString(current.VALUES._from))\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tvalue = current.LABEL + ': > ';\n\t\t\t\t\t\t\t\t\tvalue += current.VALUES._from;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (current.SUB_TYPE.VALUE === 'less')\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tif (BX.type.isNotEmptyString(current.VALUES._to))\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tvalue = current.LABEL + ': < ';\n\t\t\t\t\t\t\t\t\tvalue += current.VALUES._to;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (current.SUB_TYPE.VALUE === 'before_n')\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tif (BX.type.isNotEmptyString(current.VALUES._to))\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tvalue = current.LABEL + ': < ';\n\t\t\t\t\t\t\t\t\tvalue += current.VALUES._to;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcase this.parent.types.CUSTOM_ENTITY :\n\t\t\t\t\t\tcase this.parent.types.DEST_SELECTOR :\n\t\t\t\t\t\tcase this.parent.types.ENTITY_SELECTOR : {\n\t\t\t\t\t\t\tif (current.MULTIPLE)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tvar label = !!current.VALUES._label ? current.VALUES._label : [];\n\n\t\t\t\t\t\t\t\tif (BX.type.isPlainObject(label))\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tlabel = Object.keys(label).map(function(key) {\n\t\t\t\t\t\t\t\t\t\treturn label[key];\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tif (!BX.type.isArray(label))\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tlabel = [ label ];\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tif (label.length > 0)\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tvalue = current.LABEL + ': ';\n\t\t\t\t\t\t\t\t\tvalue += label.join(', ');\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tif (BX.type.isNotEmptyString(current.VALUES._value) &&\n\t\t\t\t\t\t\t\t\tBX.type.isNotEmptyString(current.VALUES._label))\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tvalue = current.LABEL + ': ';\n\t\t\t\t\t\t\t\t\tvalue += current.VALUES._label;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcase this.parent.types.CUSTOM : {\n\t\t\t\t\t\t\tvalue = '_VALUE' in current && BX.type.isNotEmptyString(current._VALUE) ? current.LABEL : null;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tdefault : {\n\t\t\t\t\t\t\tif (BX.type.isNotEmptyString(current.VALUE))\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tvalue = current.LABEL + ': ' + current.VALUE;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tvar squareItem = {\n\t\t\t\t\t\tblock: 'main-ui-search-square',\n\t\t\t\t\t\tname: current.LABEL + ': ' + BX.Loc.getMessage('MAIN_UI_FILTER__ADDITIONAL_FILTER_PLACEHOLDER_IS_EMPTY'),\n\t\t\t\t\t\tvalue: current.NAME,\n\t\t\t\t\t\ticon: ('ICON' in current ? current.ICON : null),\n\t\t\t\t\t\titem: {type: 'control', name: current.NAME},\n\t\t\t\t\t\ttitle: current.LABEL + ': ' + BX.Loc.getMessage('MAIN_UI_FILTER__ADDITIONAL_FILTER_PLACEHOLDER_IS_EMPTY')\n\t\t\t\t\t};\n\n\t\t\t\t\tif (current.ADDITIONAL_FILTER === BX.Filter.AdditionalFilter.Type.HAS_ANY_VALUE)\n\t\t\t\t\t{\n\t\t\t\t\t\tsquareItem.name = current.LABEL + ': ' + BX.Loc.getMessage('MAIN_UI_FILTER__ADDITIONAL_FILTER_PLACEHOLDER_HAS_ANY_VALUE');\n\t\t\t\t\t\tsquareItem.title = current.LABEL + ': ' + BX.Loc.getMessage('MAIN_UI_FILTER__ADDITIONAL_FILTER_PLACEHOLDER_HAS_ANY_VALUE');\n\t\t\t\t\t}\n\n\t\t\t\t\tresult.push(squareItem);\n\t\t\t\t}\n\n\t\t\t\tif (value !== null)\n\t\t\t\t{\n\t\t\t\t\tresult.push({\n\t\t\t\t\t\tblock: 'main-ui-search-square',\n\t\t\t\t\t\tname: value,\n\t\t\t\t\t\tvalue: current.NAME,\n\t\t\t\t\t\ticon: ('ICON' in current ? current.ICON : null),\n\t\t\t\t\t\titem: {type: 'control', name: current.NAME},\n\t\t\t\t\t\ttitle: value\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}, this);\n\n\t\t\treturn result;\n\t\t},\n\n\t\tgetPreset: function()\n\t\t{\n\t\t\tvar container = this.getContainer();\n\t\t\tvar presetClass = this.parent.settings.classSquare;\n\t\t\tvar preset = null;\n\n\t\t\tif (BX.type.isDomNode(container))\n\t\t\t{\n\t\t\t\tpreset = BX.Filter.Utils.getByClass(container,presetClass);\n\t\t\t}\n\n\t\t\treturn preset;\n\t\t},\n\n\t\tremovePreset: function()\n\t\t{\n\t\t\tvar preset = this.getPreset();\n\n\t\t\tif (BX.type.isDomNode(preset))\n\t\t\t{\n\t\t\t\tBX.remove(preset);\n\n\t\t\t\tthis.adjustPlaceholder();\n\t\t\t}\n\n\t\t\tthis.hideClearButton();\n\t\t},\n\n\t\tupdatePreset: function(presetData)\n\t\t{\n\t\t\tthis.removePreset();\n\t\t\tthis.setPreset(presetData);\n\t\t}\n\t};\n\n})();\n",";(function() {\n\t'use strict';\n\n\tBX.namespace('BX.Filter');\n\n\t/**\n\t * Filter settings class\n\t * @param options\n\t * @param parent\n\t * @constructor\n\t */\n\tBX.Filter.Settings = function(options, parent)\n\t{\n\t\t/**\n\t\t * Field\n\t\t * @type {string}\n\t\t */\n\t\tthis.classField = 'main-ui-control-field';\n\t\tthis.classFieldGroup = 'main-ui-control-field-group';\n\t\tthis.classFieldLine = 'main-ui-filter-field-line';\n\t\tthis.classFieldDelete = 'main-ui-filter-field-delete';\n\t\tthis.classFieldLabel = 'main-ui-control-field-label';\n\t\tthis.classFieldWithLabel = 'main-ui-filter-wield-with-label';\n\t\tthis.classPresetName = 'main-ui-filter-sidebar-item-text';\n\t\tthis.classControl = 'main-ui-control';\n\t\tthis.classDateInput = 'main-ui-date-input';\n\t\tthis.classHide = 'main-ui-hide';\n\t\tthis.classNumberInput = 'main-ui-number-input';\n\t\tthis.classSelect = 'main-ui-select';\n\t\tthis.classMultiSelect = 'main-ui-multi-select';\n\t\tthis.classValueDelete = 'main-ui-control-value-delete';\n\t\tthis.classStringInput = 'main-ui-control-string';\n\t\tthis.classAddField = 'main-ui-filter-field-add-item';\n\t\tthis.classAddPresetField = 'main-ui-filter-new-filter';\n\t\tthis.classAddPresetFieldInput = 'main-ui-filter-sidebar-edit-control';\n\t\tthis.classAddPresetButton = 'main-ui-filter-add-item';\n\t\tthis.classButtonsContainer = 'main-ui-filter-field-button-container';\n\t\tthis.classSaveButton = 'main-ui-filter-save';\n\t\tthis.classCancelButton = 'main-ui-filter-cancel';\n\t\tthis.classMenuItem = 'main-ui-select-inner-item';\n\t\tthis.classMenuItemText = 'main-ui-select-inner-item-element';\n\t\tthis.classMenuMultiItemText = 'main-ui-select-inner-label';\n\t\tthis.classMenuItemChecked = 'main-ui-checked';\n\t\tthis.classSearchContainer = 'main-ui-filter-search';\n\t\tthis.classDefaultPopup = 'popup-window';\n\t\tthis.classPopupFieldList = 'main-ui-filter-popup-field-list';\n\t\tthis.classPopupFieldList1Column = 'main-ui-filter-field-list-1-column';\n\t\tthis.classPopupFieldList2Column = 'main-ui-filter-field-list-2-column';\n\t\tthis.classPopupFieldList3Column = 'main-ui-filter-field-list-3-column';\n\t\tthis.classPopupFieldList4Column = 'main-ui-filter-field-list-4-column';\n\t\tthis.classPopupFieldList5Column = 'main-ui-filter-field-list-5-column';\n\t\tthis.classPopupFieldList6Column = 'main-ui-filter-field-list-6-column';\n\t\tthis.classFieldListItem = 'main-ui-filter-field-list-item';\n\t\tthis.classEditButton = 'main-ui-filter-add-edit';\n\t\tthis.classPresetEdit = 'main-ui-filter-edit';\n\t\tthis.classPresetNameEdit = 'main-ui-filter-edit-text';\n\t\tthis.classPresetDeleteButton = 'main-ui-delete';\n\t\tthis.classPresetDragButton = 'main-ui-filter-icon-grab';\n\t\tthis.classPresetEditButton = 'main-ui-filter-icon-edit';\n\t\tthis.classPresetEditInput = 'main-ui-filter-sidebar-item-input';\n\t\tthis.classPresetOndrag = 'main-ui-filter-sidebar-item-ondrag';\n\t\tthis.classSquare = 'main-ui-square';\n\t\tthis.classSquareDelete = 'main-ui-square-delete';\n\t\tthis.classSquareSelected = 'main-ui-square-selected';\n\t\tthis.classPresetsContainer = 'main-ui-filter-sidebar-item-container';\n\t\tthis.classPreset = 'main-ui-filter-sidebar-item';\n\t\tthis.classPresetCurrent = 'main-ui-filter-current-item';\n\t\tthis.classFilterContainer = 'main-ui-filter-wrapper';\n\t\tthis.classFileldControlList = 'main-ui-filter-field-container-list';\n\t\tthis.classRestoreFieldsButton = 'main-ui-filter-field-restore-items';\n\t\tthis.classClearSearchValueButton = 'main-ui-delete';\n\t\tthis.classSearchButtonsContainer = 'main-ui-item-icon-block';\n\t\tthis.classSearchButton = 'main-ui-search';\n\t\tthis.classDisabled = 'main-ui-disable';\n\t\tthis.classAnimationShow = 'main-ui-popup-show-animation';\n\t\tthis.classAnimationClose = 'main-ui-popup-close-animation';\n\t\tthis.classLimitsAnimation = 'main-ui-filter-field-limits-animate';\n\t\tthis.classSidebarControlsContainer = 'main-ui-filter-add-container';\n\t\tthis.searchContainerPostfix = '_search_container';\n\t\tthis.classPresetButtonsContainer = 'main-ui-filter-field-preset-button-container';\n\t\tthis.classFindButton = 'main-ui-filter-find';\n\t\tthis.classResetButton = 'main-ui-filter-reset';\n\t\tthis.classDefaultFilter = 'main-ui-filter-default-preset';\n\t\tthis.classRestoreButton = 'main-ui-filter-reset-link';\n\t\tthis.classPinButton = 'main-ui-filter-icon-pin';\n\t\tthis.classPopupOverlay = 'popup-window-overlay';\n\t\tthis.classSidePanelContainer = 'side-panel-container';\n\t\tthis.classPinnedPreset = 'main-ui-item-pin';\n\t\tthis.classWaitButtonClass = 'ui-btn-clock';\n\t\tthis.classForAllCheckbox = 'main-ui-filter-save-for-all';\n\t\tthis.classShow = 'main-ui-show';\n\t\tthis.classFocus = 'main-ui-focus';\n\t\tthis.classPresetField = 'main-ui-filter-preset-field';\n\t\tthis.classPopupSearchFieldListItemHidden = 'main-ui-filter-field-list-item-hidden';\n\t\tthis.classPopupSearchFieldListItemVisible = 'main-ui-filter-field-list-item-visible';\n\t\tthis.classPopupSearchSectionItem = 'main-ui-filter-popup-search-section-input';\n\t\tthis.classPopupSearchSectionItemIcon = 'main-ui-filter-popup-search-section-item-icon';\n\t\tthis.classPopupSearchSectionItemIconActive = 'main-ui-filter-popup-search-section-item-icon-active';\n\t\tthis.numberPostfix = '_numsel';\n\t\tthis.datePostfix = '_datesel';\n\t\tthis.toPostfix = '_to';\n\t\tthis.fromPostfix = '_from';\n\t\tthis.daysPostfix = '_days';\n\t\tthis.monthPostfix = '_month';\n\t\tthis.quarterPostfix = '_quarter';\n\t\tthis.yearPostfix = '_year';\n\t\tthis.generalTemplateId = '';\n\t\tthis.maxPopupColumnCount = 6;\n\t\tthis.popupWidth = 630;\n\t\tthis.init(options, parent);\n\t};\n\n\tBX.Filter.Settings.prototype = {\n\t\tinit: function(options, parent)\n\t\t{\n\t\t\tthis.generalTemplateId = parent.getParam('FILTER_ID') + '_GENERAL_template';\n\t\t\tthis.mergeSettings(options);\n\t\t},\n\n\t\tget: function(name, defaultValue)\n\t\t{\n\t\t\treturn (name && name in this && !BX.type.isFunction(this[name])) ? this[name] : defaultValue;\n\t\t},\n\n\t\tmergeSettings: function(options)\n\t\t{\n\t\t\tif (BX.type.isPlainObject(options))\n\t\t\t{\n\t\t\t\tObject.keys(options).forEach(function(key) {\n\t\t\t\t\tif (!BX.type.isFunction(this[key]))\n\t\t\t\t\t{\n\t\t\t\t\t\tthis[key] = options[key];\n\t\t\t\t\t}\n\t\t\t\t}, this);\n\t\t\t}\n\t\t}\n\t};\n\n})();\n","import {EventEmitter} from 'main.core.events';\nimport {Cache, Tag, Event, Dom, Loc, Type} from 'main.core';\nimport {Menu} from 'main.popup';\n\n/**\n * @memberOf BX.Filter\n */\nexport class AdditionalFilter extends EventEmitter\n{\n\tstatic Type = {\n\t\tIS_EMPTY: 'isEmpty',\n\t\tHAS_ANY_VALUE: 'hasAnyValue',\n\t}\n\n\tstatic getInstance(): AdditionalFilter\n\t{\n\t\treturn AdditionalFilter.cache.remember('instance', () => {\n\t\t\treturn new AdditionalFilter();\n\t\t});\n\t}\n\n\tstatic fetchAdditionalFilter(name: string, fields: {[key: string]: any}): ?string\n\t{\n\t\tif (Type.isStringFilled(name) && Type.isPlainObject(fields))\n\t\t{\n\t\t\tif (`${name}_${AdditionalFilter.Type.IS_EMPTY}` in fields)\n\t\t\t{\n\t\t\t\treturn AdditionalFilter.Type.IS_EMPTY;\n\t\t\t}\n\n\t\t\tif (`${name}_${AdditionalFilter.Type.HAS_ANY_VALUE}` in fields)\n\t\t\t{\n\t\t\t\treturn AdditionalFilter.Type.HAS_ANY_VALUE;\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tstatic cache = new Cache.MemoryCache();\n\tcache = new Cache.MemoryCache();\n\n\tconstructor(options = {})\n\t{\n\t\tsuper();\n\t\tthis.setEventNamespace('BX.Main.Filter.AdditionalFilter');\n\t\tthis.options = {...options};\n\n\t\tEvent.bind(document, 'click', this.onDocumentClick.bind(this));\n\t}\n\n\tgetAdditionalFilterMenu(): Menu\n\t{\n\t\treturn this.cache.remember('menu', () => {\n\t\t\treturn new Menu({\n\t\t\t\tid: 'additional_filter_menu',\n\t\t\t\tautoHide: false,\n\t\t\t\titems: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: 'isEmpty',\n\t\t\t\t\t\ttext: Loc.getMessage('MAIN_UI_FILTER__ADDITIONAL_FILTER_MENU_IS_EMPTY'),\n\t\t\t\t\t\tonclick: this.onAdditionalFilterMenuItemClick.bind(\n\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\tAdditionalFilter.Type.IS_EMPTY,\n\t\t\t\t\t\t),\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: 'hasAnyValue',\n\t\t\t\t\t\ttext: Loc.getMessage('MAIN_UI_FILTER__ADDITIONAL_FILTER_MENU_HAS_ANY_VALUE'),\n\t\t\t\t\t\tonclick: this.onAdditionalFilterMenuItemClick.bind(\n\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\tAdditionalFilter.Type.HAS_ANY_VALUE,\n\t\t\t\t\t\t),\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: 'delimiter',\n\t\t\t\t\t\tdelimiter: true,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: 'helper',\n\t\t\t\t\t\thtml:  Loc.getMessage('MAIN_UI_FILTER__ADDITIONAL_FILTER_PLACEHOLDER_HOW') + '<span class=\"ui-hint\"><span class=\"ui-hint-icon\"></span></span>',\n\t\t\t\t\t\tonclick: function() {\n\t\t\t\t\t\t\tif(top.BX.Helper)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttop.BX.Helper.show(\"redirect=detail&code=14006190\");\n\t\t\t\t\t\t\t\tevent.preventDefault();\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],\n\t\t\t});\n\t\t});\n\t}\n\n\tonAdditionalFilterMenuItemClick(typeId: $Values<AdditionalFilter.Type>)\n\t{\n\t\tconst node = this.getCurrentFieldNode();\n\t\tthis.initAdditionalFilter(node, typeId);\n\t}\n\n\tonDocumentClick()\n\t{\n\t\tthis.getAdditionalFilterMenu().close();\n\t}\n\n\tsetCurrentFieldId(fieldId: string)\n\t{\n\t\tthis.cache.set('currentFieldId', fieldId);\n\t}\n\n\tgetCurrentFieldId(): string\n\t{\n\t\treturn this.cache.get('currentFieldId', '');\n\t}\n\n\tsetCurrentFieldNode(node: HTMLDivElement)\n\t{\n\t\tthis.cache.set('currentFieldNode', node);\n\t}\n\n\tgetCurrentFieldNode(): HTMLDivElement\n\t{\n\t\treturn this.cache.get('currentFieldNode');\n\t}\n\n\tonAdditionalFilterButtonClick(fieldId: string, event: MouseEvent)\n\t{\n\t\tevent.stopPropagation();\n\t\tconst {currentTarget} = event;\n\n\t\tthis.setCurrentFieldId(fieldId);\n\t\tthis.setCurrentFieldNode(currentTarget.parentElement);\n\n\t\tconst menu = this.getAdditionalFilterMenu();\n\t\tconst allowedItems = String(Dom.attr(currentTarget, 'data-allowed-types')).split(',');\n\t\tmenu.getMenuItems().forEach((menuItem) => {\n\t\t\tlet menuItemId = menuItem.getId();\n\t\t\tif (allowedItems.includes(menuItemId) || (menuItemId === 'helper') || (menuItemId === 'delimiter'))\n\t\t\t{\n\t\t\t\tDom.removeClass(menuItem.layout.item, 'main-ui-disable');\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tDom.addClass(menuItem.layout.item, 'main-ui-disable');\n\t\t\t}\n\t\t});\n\n\t\tif (menu.getPopupWindow().isShown())\n\t\t{\n\t\t\tif (menu.getPopupWindow().bindElement !== currentTarget)\n\t\t\t{\n\t\t\t\tmenu.getPopupWindow().setBindElement(currentTarget);\n\t\t\t\tmenu.getPopupWindow().adjustPosition();\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tmenu.close();\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tmenu.getPopupWindow().setBindElement(currentTarget);\n\t\t\tmenu.show();\n\t\t}\n\t}\n\n\tgetAdditionalFilterButton({fieldId, enabled}): HTMLDivElement\n\t{\n\t\treturn this.cache.remember(`field_${fieldId}`, () => {\n\t\t\tconst disabled = !Type.isArrayFilled(enabled) && enabled !== true;\n\t\t\tconst allowedTypes = (() => {\n\t\t\t\tif (Type.isArrayFilled(enabled))\n\t\t\t\t{\n\t\t\t\t\treturn enabled.join(',');\n\t\t\t\t}\n\n\t\t\t\tif (!disabled)\n\t\t\t\t{\n\t\t\t\t\treturn [\n\t\t\t\t\t\tAdditionalFilter.Type.IS_EMPTY,\n\t\t\t\t\t\tAdditionalFilter.Type.HAS_ANY_VALUE,\n\t\t\t\t\t].join(',');\n\t\t\t\t}\n\n\t\t\t\treturn '';\n\t\t\t})();\n\n\t\t\treturn Tag.render`\n\t\t\t\t<span \n\t\t\t\t\tclass=\"ui-icon ui-icon-service-light-other main-ui-filter-additional-filters-button${disabled ? ' main-ui-disable' : ''}\"\n\t\t\t\t\tonclick=\"${this.onAdditionalFilterButtonClick.bind(this, fieldId)}\"\n\t\t\t\t\tdata-allowed-types=\"${allowedTypes}\"\n\t\t\t\t>\n\t\t\t\t\t<i></i>\n\t\t\t\t</span>\n\t\t\t`;\n\t\t});\n\t}\n\n\tinitAdditionalFilter(fieldNode: HTMLDivElement, typeId: $Values<AdditionalFilter.Type>)\n\t{\n\t\tlet currentFieldId = this.getCurrentFieldId();\n\t\tif (currentFieldId === '')\n\t\t{\n\t\t\tcurrentFieldId = fieldNode.attributes[1].value;\n\t\t}\n\t\tconst placeholder = this.getAdditionalFilterPlaceholderField(currentFieldId, typeId);\n\n\t\tDom.addClass(fieldNode, 'main-ui-filter-field-with-additional-filter');\n\n\t\tconst currentPlaceholder = fieldNode.querySelector('.main-ui-filter-additional-filter-placeholder');\n\t\tif (currentPlaceholder)\n\t\t{\n\t\t\tDom.replace(currentPlaceholder, placeholder);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tDom.append(placeholder, fieldNode);\n\t\t}\n\t}\n\n\trestoreField(fieldNode: HTMLDivElement)\n\t{\n\t\tif (Type.isDomNode(fieldNode))\n\t\t{\n\t\t\tconst placeholder = fieldNode.querySelector('.main-ui-filter-additional-filter-placeholder');\n\t\t\tif (placeholder)\n\t\t\t{\n\t\t\t\tDom.remove(placeholder);\n\t\t\t}\n\n\t\t\tDom.removeClass(fieldNode, 'main-ui-filter-field-with-additional-filter');\n\t\t}\n\t}\n\n\tgetAdditionalFilterPlaceholderField(fieldId: string, typeId: $Values<AdditionalFilter.Type>): HTMLDivElement\n\t{\n\t\treturn this.cache.remember(`placeholder_${fieldId}_${typeId}`, () => {\n\t\t\tconst message = (() => {\n\t\t\t\tif (typeId === AdditionalFilter.Type.HAS_ANY_VALUE)\n\t\t\t\t{\n\t\t\t\t\treturn Loc.getMessage('MAIN_UI_FILTER__ADDITIONAL_FILTER_PLACEHOLDER_HAS_ANY_VALUE');\n\t\t\t\t}\n\n\t\t\t\treturn Loc.getMessage('MAIN_UI_FILTER__ADDITIONAL_FILTER_PLACEHOLDER_IS_EMPTY');\n\t\t\t})();\n\n\t\t\tconst onRemoveClick = (event: MouseEvent) => {\n\t\t\t\tthis.restoreField(\n\t\t\t\t\tevent.currentTarget.closest('.main-ui-filter-field-with-additional-filter'),\n\t\t\t\t);\n\t\t\t};\n\n\t\t\treturn Tag.render`\n\t\t\t\t<div class=\"main-ui-control main-ui-filter-additional-filter-placeholder\" data-type=\"${typeId}\">\n\t\t\t\t\t<div class=\"main-ui-square\">\n\t\t\t\t\t\t<div class=\"main-ui-square-item\">${message}</div>\n\t\t\t\t\t\t<div class=\"main-ui-item-icon main-ui-square-delete\" onclick=\"${onRemoveClick}\"></div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t`;\n\t\t});\n\t}\n\n\tgetFilter(fieldNode: HTMLDivElement): ?{[key: string]: any}\n\t{\n\t\tif (Type.isDomNode(fieldNode))\n\t\t{\n\t\t\tconst placeholder = fieldNode.querySelector('.main-ui-filter-additional-filter-placeholder');\n\t\t\tif (Type.isDomNode(placeholder))\n\t\t\t{\n\t\t\t\tconst type = Dom.attr(placeholder, 'data-type');\n\t\t\t\tconst fieldId = Dom.attr(fieldNode, 'data-name');\n\n\t\t\t\treturn {[`${fieldId}_${type}`]: 'y'};\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t}\n}","/* eslint-disable no-underscore-dangle */\n/* eslint-disable class-methods-use-this */\nimport { Dom, Event, Runtime, Text, Type } from 'main.core';\nimport 'ui.icons.service';\nimport { AdditionalFilter } from './additional-filter';\n\nexport class Presets\n{\n\tconstructor(parent)\n\t{\n\t\tthis.parent = null;\n\t\tthis.presets = null;\n\t\tthis.container = null;\n\t\tthis.init(parent);\n\t}\n\n\tinit(parent)\n\t{\n\t\tthis.parent = parent;\n\t}\n\n\tbindOnPresetClick()\n\t{\n\t\t(this.getPresets() || []).forEach((current) => {\n\t\t\tEvent.bind(current, 'click', BX.delegate(this._onPresetClick, this));\n\t\t});\n\t}\n\n\t/**\n\t * Gets add preset field\n\t * @return {?HTMLElement}\n\t */\n\tgetAddPresetField()\n\t{\n\t\treturn this.getContainer().querySelector('.main-ui-filter-new-filter');\n\t}\n\n\n\t/**\n\t * Gets add preset name input\n\t * @return {?HTMLInputElement}\n\t */\n\tgetAddPresetFieldInput()\n\t{\n\t\treturn this.getAddPresetField().querySelector('.main-ui-filter-sidebar-edit-control');\n\t}\n\n\n\t/**\n\t * Clears add preset input value\n\t */\n\tclearAddPresetFieldInput()\n\t{\n\t\tconst input = this.getAddPresetFieldInput();\n\n\t\tif (Type.isDomNode(input))\n\t\t{\n\t\t\tinput.value = '';\n\t\t}\n\t}\n\n\n\t/**\n\t * Finds preset node by child node\n\t * @param {?HTMLElement} node\n\t * @return {?HTMLElement}\n\t */\n\tnormalizePreset(node)\n\t{\n\t\treturn node.closest('.main-ui-filter-sidebar-item');\n\t}\n\n\n\t/**\n\t * Deactivates all presets\n\t */\n\tdeactivateAllPresets()\n\t{\n\t\tthis.getPresets().forEach((current) => {\n\t\t\tDom.removeClass(current, 'main-ui-filter-current-item');\n\t\t});\n\t}\n\n\t/**\n\t * Creates sidebar preset item\n\t * @param {string} id - Preset id\n\t * @param {string} title - Preset title\n\t * @param {boolean} [isPinned] - Pass true is preset pinned\n\t */\n\tcreateSidebarItem(id, title, isPinned)\n\t{\n\t\treturn BX.decl({\n\t\t\tblock: 'sidebar-item',\n\t\t\ttext: Text.decode(title),\n\t\t\tid,\n\t\t\tpinned: isPinned,\n\t\t\tnoEditPinTitle: this.parent.getParam('MAIN_UI_FILTER__IS_SET_AS_DEFAULT_PRESET'),\n\t\t\teditNameTitle: this.parent.getParam('MAIN_UI_FILTER__EDIT_PRESET_TITLE'),\n\t\t\tremoveTitle: this.parent.getParam('MAIN_UI_FILTER__REMOVE_PRESET'),\n\t\t\teditPinTitle: this.parent.getParam('MAIN_UI_FILTER__SET_AS_DEFAULT_PRESET'),\n\t\t\tdragTitle: this.parent.getParam('MAIN_UI_FILTER__DRAG_TITLE'),\n\t\t});\n\t}\n\n\n\t/**\n\t * Highlights preset node as active\n\t * @param {?HTMLElement|string} preset - preset node or preset id\n\t */\n\tactivatePreset(preset)\n\t{\n\t\tthis.deactivateAllPresets();\n\n\t\tconst presetNode = (() => {\n\t\t\tif (Type.isString(preset))\n\t\t\t{\n\t\t\t\treturn this.getPresetNodeById(preset);\n\t\t\t}\n\n\t\t\treturn preset;\n\t\t})();\n\n\t\tif (Type.isDomNode(presetNode))\n\t\t{\n\t\t\tDom.addClass(presetNode, 'main-ui-filter-current-item');\n\t\t}\n\t}\n\n\n\t/**\n\t * Gets preset node by preset id\n\t * @param {string} id\n\t * @return {?HTMLElement}\n\t */\n\tgetPresetNodeById(id)\n\t{\n\t\treturn this.getPresets().find((current) => {\n\t\t\treturn Dom.attr(current, 'data-id') === id;\n\t\t});\n\t}\n\n\n\t/**\n\t * Gets preset id by preset node\n\t * @param {?HTMLElement} preset\n\t */\n\tgetPresetId(preset)\n\t{\n\t\treturn Dom.attr(preset, 'data-id');\n\t}\n\n\n\t/**\n\t * Updates preset name\n\t * @param {?HTMLElement} presetNode\n\t * @param {string} name\n\t */\n\tupdatePresetName(presetNode, name)\n\t{\n\t\tif (Type.isDomNode(presetNode) && Type.isString(name) && name !== '')\n\t\t{\n\t\t\tconst nameNode = this.getPresetNameNode(presetNode);\n\n\t\t\tif (Type.isDomNode(nameNode))\n\t\t\t{\n\t\t\t\tRuntime.html(nameNode, name);\n\t\t\t}\n\t\t}\n\t}\n\n\n\t/**\n\t * Removes preset\n\t * @param {HTMLElement} presetNode\n\t * @param {string} presetId\n\t * @param {boolean} isDefault\n\t */\n\tremovePreset(presetNode, presetId, isDefault)\n\t{\n\t\tconst currentPresetId = this.getCurrentPresetId();\n\t\tlet newPresets = [];\n\t\tconst postData = {\n\t\t\tpreset_id: presetId,\n\t\t\tis_default: isDefault,\n\t\t};\n\n\t\tconst getData = {\n\t\t\tFILTER_ID: this.parent.getParam('FILTER_ID'),\n\t\t\taction: 'REMOVE_FILTER',\n\t\t};\n\n\t\tthis.parent.saveOptions(postData, getData);\n\t\tBX.remove(presetNode);\n\n\t\tif (BX.type.isArray(this.parent.params.PRESETS))\n\t\t{\n\t\t\tnewPresets = this.parent.params.PRESETS.filter((current) => {\n\t\t\t\treturn current.ID !== presetId;\n\t\t\t}, this);\n\n\t\t\tthis.parent.params.PRESETS = newPresets;\n\t\t}\n\n\t\tif (BX.type.isArray(this.parent.editablePresets))\n\t\t{\n\t\t\tnewPresets = this.parent.editablePresets.filter((current) => {\n\t\t\t\treturn current.ID !== presetId;\n\t\t\t}, this);\n\n\t\t\tthis.parent.editablePresets = newPresets;\n\t\t}\n\n\t\tif (presetId === currentPresetId)\n\t\t{\n\t\t\tthis.parent.getSearch().removePreset();\n\t\t\tthis.resetPreset();\n\t\t}\n\t}\n\n\n\t/**\n\t * Pin preset (Sets as default preset)\n\t * @param {string} presetId\n\t */\n\tpinPreset(presetId)\n\t{\n\t\tif (!BX.type.isNotEmptyString(presetId))\n\t\t{\n\t\t\tpresetId = 'default_filter';\n\t\t}\n\n\t\tconst presetNode = this.getPresetNodeById(presetId);\n\n\t\tif (this.parent.getParam('VALUE_REQUIRED_MODE'))\n\t\t{\n\t\t\tif (presetId === 'default_filter')\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tconst params = {FILTER_ID: this.parent.getParam('FILTER_ID'), GRID_ID: this.parent.getParam('GRID_ID'), action: 'PIN_PRESET'};\n\t\tconst data = {preset_id: presetId};\n\n\t\tthis.getPresets().forEach(function(current) {\n\t\t\tDom.removeClass(current, this.parent.settings.classPinnedPreset);\n\t\t}, this);\n\n\t\tBX.addClass(presetNode, this.parent.settings.classPinnedPreset);\n\n\t\tthis.parent.saveOptions(data, params);\n\t}\n\n\t_onPresetClick(event) {\n\t\tlet presetNode; let presetId; let presetData; let isDefault; let target; let settings; let\n\t\t\tparent;\n\n\t\tevent.preventDefault();\n\n\t\tparent = this.parent;\n\t\tsettings = parent.settings;\n\t\ttarget = event.target;\n\t\tpresetNode = event.currentTarget;\n\t\tpresetId = this.getPresetId(presetNode);\n\t\tpresetData = this.getPreset(presetId);\n\n\t\tif (Dom.hasClass(target, settings.classPinButton))\n\t\t{\n\t\t\tif (this.parent.isEditEnabled())\n\t\t\t{\n\t\t\t\tif (Dom.hasClass(presetNode, settings.classPinnedPreset))\n\t\t\t\t{\n\t\t\t\t\tthis.pinPreset('default_filter');\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tthis.pinPreset(presetId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (Dom.hasClass(target, settings.classPresetEditButton))\n\t\t{\n\t\t\tthis.enableEditPresetName(presetNode);\n\t\t}\n\n\t\tif (Dom.hasClass(target, settings.classPresetDeleteButton))\n\t\t{\n\t\t\tisDefault = 'IS_DEFAULT' in presetData ? presetData.IS_DEFAULT : false;\n\t\t\tthis.removePreset(presetNode, presetId, isDefault);\n\t\t\treturn false;\n\t\t}\n\n\t\tif (!Dom.hasClass(target, settings.classPresetDragButton)\n\t\t\t&& !Dom.hasClass(target, settings.classAddPresetFieldInput))\n\t\t{\n\t\t\tif (this.parent.isEditEnabled())\n\t\t\t{\n\t\t\t\tthis.updateEditablePreset(this.getCurrentPresetId());\n\t\t\t}\n\n\t\t\tconst currentPreset = this.getPreset(this.getCurrentPresetId());\n\t\t\tconst preset = this.getPreset(presetId);\n\t\t\tcurrentPreset.ADDITIONAL = [];\n\t\t\tpreset.ADDITIONAL = [];\n\n\t\t\tthis.activatePreset(presetNode);\n\t\t\tthis.applyPreset(presetId);\n\n\t\t\tif (!this.parent.isEditEnabled())\n\t\t\t{\n\t\t\t\tparent.applyFilter(null, true);\n\n\t\t\t\tif (event.isTrusted)\n\t\t\t\t{\n\t\t\t\t\tparent.closePopup();\n\t\t\t\t}\n\n\t\t\t\tif (parent.isAddPresetEnabled())\n\t\t\t\t{\n\t\t\t\t\tparent.disableAddPreset();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\n\t/**\n\t * Applies default preset\n\t * @return {BX.Promise}\n\t */\n\tapplyPinnedPreset()\n\t{\n\t\tconst Filter = this.parent;\n\t\tconst isPinned = this.isPinned(this.getCurrentPresetId());\n\t\tlet promise;\n\n\t\tif (this.parent.getParam('VALUE_REQUIRED')\n\t\t\t&& this.getPinnedPresetId() === 'default_filter')\n\t\t{\n\t\t\tthis.applyPreset('default_filter');\n\t\t\tthis.deactivateAllPresets();\n\t\t\tpromise = this.parent.applyFilter();\n\t\t}\n\t\telse\n\t\tif (!isPinned)\n\t\t{\n\t\t\tconst pinnedPresetId = this.getPinnedPresetId();\n\t\t\tconst presetData = this.getPreset(pinnedPresetId);\n\t\t\tpresetData.ADDITIONAL = [];\n\n\t\t\tconst pinnedPresetNode = this.getPinnedPresetNode();\n\t\t\tconst clear = false;\n\t\t\tconst applyPreset = true;\n\n\t\t\tthis.deactivateAllPresets();\n\t\t\tthis.activatePreset(pinnedPresetNode);\n\t\t\tthis.applyPreset(pinnedPresetId);\n\t\t\tpromise = Filter.applyFilter(clear, applyPreset);\n\t\t\tFilter.closePopup();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tpromise = Filter.resetFilter();\n\t\t}\n\n\n\t\treturn promise;\n\t}\n\n\n\t/**\n\t * Updates editable presets\n\t * @param {string} presetId\n\t */\n\tupdateEditablePreset(presetId)\n\t{\n\t\tconst fields = this.parent.getFilterFieldsValues();\n\t\tconst presetRows = this.getFields().map((curr) => { return BX.data(curr, 'name'); });\n\t\tconst presetFields = this.parent.preparePresetFields(fields, presetRows);\n\t\tconst preset = this.getPreset(presetId);\n\n\t\tpreset.FIELDS = presetFields;\n\t\tpreset.TITLE = this.getPresetInput(this.getPresetNodeById(presetId)).value;\n\t\tpreset.ROWS = presetRows;\n\t}\n\n\n\t/**\n\t * Gets preset input node\n\t * @param presetNode\n\t * @return {?HTMLInputElement}\n\t */\n\tgetPresetInput(presetNode)\n\t{\n\t\treturn BX.Filter.Utils.getByClass(presetNode, this.parent.settings.classPresetEditInput);\n\t}\n\n\n\t/**\n\t * Enable edit preset name\n\t * @param {HTMLElement} presetNode\n\t */\n\tenableEditPresetName(presetNode)\n\t{\n\t\tconst input = this.getPresetInput(presetNode);\n\n\t\tBX.addClass(presetNode, this.parent.settings.classPresetNameEdit);\n\t\tinput.select();\n\t\t// noinspection SillyAssignmentJS\n\t\tinput.value = BX.util.htmlspecialcharsback(input.value);\n\t\tEvent.bind(input, 'input', BX.delegate(this._onPresetNameInput, this));\n\t}\n\n\t_onPresetNameInput(event)\n\t{\n\t\tconst Search = this.parent.getSearch();\n\t\tconst inputValue = event.currentTarget.value;\n\t\tconst presetNode = BX.findParent(event.currentTarget, {className: this.parent.settings.classPreset}, true, false);\n\t\tconst presetId = this.getPresetId(presetNode);\n\t\tconst currentPresetId = this.getCurrentPresetId();\n\t\tconst data = {ID: presetId, TITLE: inputValue};\n\n\t\tif (presetId === currentPresetId)\n\t\t{\n\t\t\tSearch.updatePreset(data);\n\t\t}\n\t}\n\n\n\t/**\n\t * Gets preset name node element\n\t * @param {HTMLElement} presetNode\n\t * @return {?HTMLElement}\n\t */\n\tgetPresetNameNode(presetNode)\n\t{\n\t\treturn BX.Filter.Utils.getByClass(presetNode, this.parent.settings.classPresetName);\n\t}\n\n\n\t/**\n\t * Disable edit name for preset\n\t * @param {HTMLElement} presetNode\n\t */\n\tdisableEditPresetName(presetNode)\n\t{\n\t\tconst input = this.getPresetInput(presetNode);\n\n\t\tDom.removeClass(presetNode, this.parent.settings.classPresetNameEdit);\n\n\t\tif (BX.type.isDomNode(input))\n\t\t{\n\t\t\tinput.blur();\n\t\t\tBX.unbind(input, 'input', BX.delegate(this._onPresetNameInput, this));\n\t\t}\n\t}\n\n\n\t/**\n\t * Gets preset object\n\t * @param {string} presetId\n\t * @param {boolean} [isDefault = false] - gets from default presets collection\n\t * @return {?object}\n\t */\n\tgetPreset(presetId, isDefault)\n\t{\n\t\tlet presets = this.parent.getParam(isDefault ? 'DEFAULT_PRESETS' : 'PRESETS', []);\n\n\t\tif (this.parent.isEditEnabled() && !isDefault)\n\t\t{\n\t\t\tpresets = this.parent.editablePresets;\n\t\t}\n\n\t\tconst filtered = presets.filter((current) => {\n\t\t\treturn current.ID === presetId;\n\t\t});\n\n\t\tif (presetId === 'tmp_filter' && !filtered.length)\n\t\t{\n\t\t\tconst tmpPreset = BX.clone(this.getPreset('default_filter'));\n\t\t\ttmpPreset.ID = 'tmp_filter';\n\t\t\tpresets.push(tmpPreset);\n\t\t\tfiltered.push(tmpPreset);\n\t\t}\n\n\t\treturn filtered.length !== 0 ? filtered[0] : null;\n\t}\n\n\n\t/**\n\t * Gets preset field by preset name (id)\n\t * @param {string} presetId\n\t * @param {string} fieldName\n\t * @return {?object}\n\t */\n\tgetPresetField(presetId, fieldName)\n\t{\n\t\tconst preset = this.getPreset(presetId);\n\t\tlet field = null;\n\n\t\tif (BX.type.isPlainObject(preset) && 'FIELDS' in preset && BX.type.isArray(preset.FIELDS))\n\t\t{\n\t\t\tfield = preset.FIELDS.filter((current) => {\n\t\t\t\treturn current.NAME === fieldName;\n\t\t\t});\n\n\t\t\tfield = field.length ? field[0] : null;\n\t\t}\n\n\t\treturn field;\n\t}\n\n\n\t/**\n\t * Applies preset by id\n\t * @param {string} presetId\n\t * @param {boolean} [noValues = false]\n\t */\n\tapplyPreset(presetId, noValues)\n\t{\n\t\tpresetId = noValues ? 'default_filter' : presetId || 'default_filter';\n\n\t\tlet preset = this.getPreset(presetId);\n\n\t\tif (presetId !== 'default_preset')\n\t\t{\n\t\t\tpreset = this.extendPreset(preset);\n\t\t}\n\n\t\tthis.parent.getSearch().updatePreset(preset);\n\t\tthis.updatePresetFields(preset, noValues);\n\n\t\tBX.onCustomEvent('BX.Main.Filter:onApplyPreset', [presetId]);\n\t}\n\n\n\t/**\n\t * Extends preset\n\t * @param {object} preset\n\t * @return {object}\n\t */\n\textendPreset(preset)\n\t{\n\t\tconst defaultPreset = BX.clone(this.getPreset('default_filter'));\n\n\t\tif (BX.type.isPlainObject(preset))\n\t\t{\n\t\t\tpreset = BX.clone(preset);\n\t\t\tpreset.FIELDS.forEach(function(curr) {\n\t\t\t\tlet index;\n\t\t\t\tconst someField = defaultPreset.FIELDS.some((defCurr, defIndex) => {\n\t\t\t\t\tlet result = false;\n\n\t\t\t\t\tif (defCurr.NAME === curr.NAME)\n\t\t\t\t\t{\n\t\t\t\t\t\tindex = defIndex;\n\t\t\t\t\t\tresult = true;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn result;\n\t\t\t\t}, this);\n\n\t\t\t\tif (someField && index || someField && index === 0)\n\t\t\t\t{\n\t\t\t\t\tdefaultPreset.FIELDS[index] = curr;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\tif (!this.isEmptyField(curr))\n\t\t\t\t{\n\t\t\t\t\tdefaultPreset.FIELDS.push(curr);\n\t\t\t\t}\n\t\t\t}, this);\n\n\t\t\tpreset.FIELDS = defaultPreset.FIELDS;\n\t\t}\n\n\t\treturn preset;\n\t}\n\n\n\t/**\n\t * Checks field is empty\n\t * @param {object} field\n\t * @return {boolean}\n\t */\n\tisEmptyField(field)\n\t{\n\t\tlet result = true;\n\n\t\tif (Type.isStringFilled(field.ADDITIONAL_FILTER))\n\t\t{\n\t\t\treturn false;\n\t\t}\n\n\t\tif (field.TYPE === this.parent.types.STRING)\n\t\t{\n\t\t\tif (field.VALUE && field.VALUE.length)\n\t\t\t{\n\t\t\t\tresult = false;\n\t\t\t}\n\t\t}\n\n\t\tif (field.TYPE === this.parent.types.SELECT)\n\t\t{\n\t\t\tif (BX.type.isPlainObject(field.VALUE) && 'VALUE' in field.VALUE && field.VALUE.VALUE)\n\t\t\t{\n\t\t\t\tresult = false;\n\t\t\t}\n\t\t}\n\n\t\tif (field.TYPE === this.parent.types.MULTI_SELECT)\n\t\t{\n\t\t\tif (BX.type.isArray(field.VALUE) && field.VALUE.length)\n\t\t\t{\n\t\t\t\tresult = false;\n\t\t\t}\n\t\t}\n\n\t\tif (field.TYPE === this.parent.types.CUSTOM_DATE)\n\t\t{\n\t\t\tif (\n\t\t\t\t(BX.type.isArray(field.VALUE.days) && field.VALUE.days.length)\n\t\t\t\t|| (BX.type.isArray(field.VALUE.months) && field.VALUE.months.length)\n\t\t\t\t|| (BX.type.isArray(field.VALUE.years) && field.VALUE.years.length)\n\t\t\t)\n\t\t\t{\n\t\t\t\tresult = false;\n\t\t\t}\n\t\t}\n\n\t\tif (\n\t\t\tfield.TYPE === this.parent.types.CUSTOM_ENTITY\n\t\t\t|| field.TYPE === this.parent.types.DEST_SELECTOR\n\t\t\t|| field.TYPE === this.parent.types.ENTITY_SELECTOR\n\t\t)\n\t\t{\n\t\t\tif (BX.type.isPlainObject(field.VALUES))\n\t\t\t{\n\t\t\t\tif (BX.type.isNotEmptyString(field.VALUES._label) && BX.type.isNotEmptyString(field.VALUES._value))\n\t\t\t\t{\n\t\t\t\t\tresult = false;\n\t\t\t\t}\n\n\t\t\t\tif (BX.type.isPlainObject(field.VALUES._label)\n\t\t\t\t\t&& BX.type.isPlainObject(field.VALUES._value)\n\t\t\t\t\t&& Object.keys(field.VALUES._label).length\n\t\t\t\t\t&& Object.keys(field.VALUES._value).length)\n\t\t\t\t{\n\t\t\t\t\tresult = false;\n\t\t\t\t}\n\n\t\t\t\tif (BX.type.isArray(field.VALUES._label)\n\t\t\t\t\t&& BX.type.isArray(field.VALUES._value)\n\t\t\t\t\t&& field.VALUES._label.length\n\t\t\t\t\t&& field.VALUES._value.length)\n\t\t\t\t{\n\t\t\t\t\tresult = false;\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\t(\n\t\t\t\t\t\t(BX.type.isArray(field.VALUES._label) && field.VALUES._label.length)\n\t\t\t\t\t\t|| (BX.type.isPlainObject(field.VALUES._label) && Object.keys(field.VALUES._label).length)\n\t\t\t\t\t)\n\t\t\t\t\t&& (\n\t\t\t\t\t\t(BX.type.isArray(field.VALUES._value) && field.VALUES._value.length)\n\t\t\t\t\t\t|| (BX.type.isPlainObject(field.VALUES._value) && Object.keys(field.VALUES._value).length)\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t\t{\n\t\t\t\t\tresult = false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (field.TYPE === this.parent.types.DATE)\n\t\t{\n\t\t\tconst datesel = '_datesel' in field.VALUES ? field.VALUES._datesel : field.SUB_TYPE.VALUE;\n\n\t\t\tif (BX.type.isPlainObject(field.VALUES)\n\t\t\t\t&& (field.VALUES._from || field.VALUES._to || field.VALUES._quarter\n\t\t\t\t|| (field.VALUES._month && !BX.type.isArray(field.VALUES._month))\n\t\t\t\t|| (field.VALUES._year && !BX.type.isArray(field.VALUES._year))\n\t\t\t\t|| (field.VALUES._days) && !BX.type.isArray(field.VALUES._days))\n\t\t\t\t|| (BX.type.isArray(field.VALUES._days) && field.VALUES._days.length)\n\t\t\t\t|| (BX.type.isArray(field.VALUES._month) && field.VALUES._month.length)\n\t\t\t\t|| (BX.type.isArray(field.VALUES._year) && field.VALUES._year.length)\n\t\t\t\t|| (\n\t\t\t\t\tdatesel === this.parent.dateTypes.CURRENT_DAY\n\t\t\t\t\t|| datesel === this.parent.dateTypes.CURRENT_WEEK\n\t\t\t\t\t|| datesel === this.parent.dateTypes.CURRENT_MONTH\n\t\t\t\t\t|| datesel === this.parent.dateTypes.CURRENT_QUARTER\n\t\t\t\t\t|| datesel === this.parent.dateTypes.LAST_7_DAYS\n\t\t\t\t\t|| datesel === this.parent.dateTypes.LAST_30_DAYS\n\t\t\t\t\t|| datesel === this.parent.dateTypes.LAST_60_DAYS\n\t\t\t\t\t|| datesel === this.parent.dateTypes.LAST_90_DAYS\n\t\t\t\t\t|| datesel === this.parent.dateTypes.LAST_WEEK\n\t\t\t\t\t|| datesel === this.parent.dateTypes.LAST_MONTH\n\t\t\t\t\t|| datesel === this.parent.dateTypes.TOMORROW\n\t\t\t\t\t|| datesel === this.parent.dateTypes.YESTERDAY\n\t\t\t\t\t|| datesel === this.parent.dateTypes.NEXT_WEEK\n\t\t\t\t\t|| datesel === this.parent.dateTypes.NEXT_MONTH\n\t\t\t\t)\n\t\t\t)\n\t\t\t{\n\t\t\t\tresult = false;\n\t\t\t}\n\t\t}\n\n\t\tif (field.TYPE === this.parent.types.NUMBER)\n\t\t{\n\t\t\tif (BX.type.isPlainObject(field.VALUES) && (field.VALUES._from || field.VALUES._to))\n\t\t\t{\n\t\t\t\tresult = false;\n\t\t\t}\n\t\t}\n\n\t\tif (field.TYPE === this.parent.types.CHECKBOX)\n\t\t{\n\t\t\tif (BX.type.isPlainObject(field.VALUE) && field.VALUE.VALUE)\n\t\t\t{\n\t\t\t\tresult = false;\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t}\n\n\n\t/**\n\t * Resets preset\n\t * @param {boolean} [noValues]\n\t */\n\tresetPreset(noValues)\n\t{\n\t\tthis.applyPreset('', noValues);\n\t}\n\n\n\t/**\n\t * Gets preset fields elements\n\t * @return {?HTMLElement[]}\n\t */\n\tgetFields()\n\t{\n\t\tconst container = this.parent.getFieldListContainer();\n\t\tlet fields = null;\n\n\t\tif (BX.type.isDomNode(container))\n\t\t{\n\t\t\tfields = BX.Filter.Utils.getBySelector(container.parentNode, `.${this.parent.settings.classFileldControlList} > div`, true);\n\t\t}\n\n\t\treturn fields;\n\t}\n\n\n\t/**\n\t * Gets field element by field object\n\t * @param {object} fieldData\n\t * @return {?HTMLElement}\n\t */\n\tgetField(fieldData)\n\t{\n\t\tconst fields = this.getFields();\n\t\tlet field = null;\n\t\tlet tmpName; let\n\t\t\tfiltered;\n\n\t\tif (BX.type.isArray(fields) && fields.length)\n\t\t{\n\t\t\tfiltered = fields.filter((current) => {\n\t\t\t\tif (BX.type.isDomNode(current))\n\t\t\t\t{\n\t\t\t\t\ttmpName = BX.data(current, 'name');\n\t\t\t\t}\n\t\t\t\treturn tmpName === fieldData.NAME;\n\t\t\t}, this);\n\n\t\t\tfield = filtered.length > 0 ? filtered[0] : null;\n\t\t}\n\n\t\treturn field;\n\t}\n\n\n\t/**\n\t * Removes field element by field object\n\t * @param {object} field\n\t * @param {boolean} disableSaveFieldsSort\n\t */\n\tremoveField(field, disableSaveFieldsSort = false)\n\t{\n\t\tlet index; let\n\t\t\tfieldName;\n\t\tdisableSaveFieldsSort = disableSaveFieldsSort || false;\n\n\t\tif (BX.type.isPlainObject(field))\n\t\t{\n\t\t\tfieldName = field.NAME;\n\t\t\tfield = this.getField(field);\n\n\t\t\tif (BX.type.isArray(this.parent.fieldsList))\n\t\t\t{\n\t\t\t\tindex = this.parent.fieldsList.indexOf(field);\n\n\t\t\t\tif (index !== -1)\n\t\t\t\t{\n\t\t\t\t\tdelete this.parent.fieldsList[index];\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.parent.unregisterDragItem(field);\n\t\t}\n\n\t\tif (BX.type.isDomNode(field))\n\t\t{\n\t\t\tfieldName = BX.data(field, 'name');\n\t\t\tthis.parent.getFields().deleteField(field);\n\t\t}\n\n\t\tif (!this.parent.isEditEnabled() && !this.parent.isAddPresetEnabled())\n\t\t{\n\t\t\tconst currentPresetId = this.getCurrentPresetId();\n\t\t\tconst currentPresetField = this.getPresetField(currentPresetId, fieldName);\n\n\t\t\tif (currentPresetField && !this.isEmptyField(currentPresetField))\n\t\t\t{\n\t\t\t\tthis.deactivateAllPresets();\n\t\t\t\tthis.parent.applyFilter();\n\t\t\t}\n\t\t}\n\n\t\tif (!disableSaveFieldsSort)\n\t\t{\n\t\t\tthis.parent.saveFieldsSort();\n\t\t}\n\t}\n\n\t/**\n\t * Removes field elements by field objects.\n\t * @param {object[]} fields\n\t */\n\tremoveFields(fields)\n\t{\n\t\tfields.forEach(function(field) {\n\t\t\tthis.removeField(field, true);\n\t\t}, this);\n\n\t\tthis.parent.saveFieldsSort();\n\t}\n\n\t/**\n\t * Adds field into filter field list by field object\n\t * @param {object} fieldData\n\t */\n\taddField(fieldData, disableSaveFieldsSort = false)\n\t{\n\t\tlet container; let control; let\n\t\t\tcontrols;\n\n\t\tif (BX.type.isPlainObject(fieldData))\n\t\t{\n\t\t\tcontainer = this.parent.getFieldListContainer();\n\t\t\tcontrols = this.parent.getControls();\n\t\t\tcontrol = BX.type.isArray(controls) ? controls[controls.length - 1] : null;\n\n\t\t\tif (BX.type.isDomNode(control))\n\t\t\t{\n\t\t\t\tif (control.nodeName !== 'INPUT')\n\t\t\t\t{\n\t\t\t\t\tcontrol = BX.Filter.Utils.getByTag(control, 'input');\n\t\t\t\t}\n\n\t\t\t\tif (BX.type.isDomNode(control))\n\t\t\t\t{\n\t\t\t\t\tfieldData.TABINDEX = parseInt(control.getAttribute('tabindex')) + 1;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tfieldData.TABINDEX = 2;\n\t\t\t}\n\n\t\t\tif (BX.type.isDomNode(container))\n\t\t\t{\n\t\t\t\tcontrol = this.createControl(fieldData);\n\n\t\t\t\tif (BX.type.isDomNode(control))\n\t\t\t\t{\n\t\t\t\t\tBX.append(control, container);\n\t\t\t\t\tif (BX.type.isArray(this.parent.fieldsList))\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.parent.fieldsList.push(control);\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.parent.registerDragItem(control);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (!this.parent.isEditEnabled() && !this.parent.isAddPresetEnabled())\n\t\t{\n\t\t\tconst currentPresetId = this.getCurrentPresetId();\n\t\t\tconst currentPresetField = this.getPresetField(currentPresetId, fieldData.NAME);\n\n\t\t\tif (currentPresetField && !this.isEmptyField(currentPresetField))\n\t\t\t{\n\t\t\t\tthis.parent.updatePreset('tmp_filter');\n\t\t\t\tthis.deactivateAllPresets();\n\t\t\t\tthis.parent.getSearch().updatePreset(this.getPreset('tmp_filter'));\n\t\t\t}\n\t\t}\n\n\t\tif (!disableSaveFieldsSort)\n\t\t{\n\t\t\tthis.parent.saveFieldsSort();\n\t\t}\n\t}\n\n\n\t/**\n\t * Creates field control by field object\n\t * @param {object} fieldData\n\t * @return {?HTMLElement}\n\t */\n\tcreateControl(fieldData)\n\t{\n\t\tlet control;\n\n\t\tswitch (fieldData.TYPE)\n\t\t{\n\t\t\tcase this.parent.types.STRING: {\n\t\t\t\tcontrol = this.parent.getFields().createInputText(fieldData);\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase this.parent.types.TEXTAREA: {\n\t\t\t\tcontrol = this.parent.getFields().createTextarea(fieldData);\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase this.parent.types.SELECT: {\n\t\t\t\tcontrol = this.parent.getFields().createSelect(fieldData);\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase this.parent.types.MULTI_SELECT: {\n\t\t\t\tcontrol = this.parent.getFields().createMultiSelect(fieldData);\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase this.parent.types.NUMBER: {\n\t\t\t\tcontrol = this.parent.getFields().createNumber(fieldData);\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase this.parent.types.DATE: {\n\t\t\t\tcontrol = this.parent.getFields().createDate(fieldData);\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase this.parent.types.CUSTOM_DATE: {\n\t\t\t\tcontrol = this.parent.getFields().createCustomDate(fieldData);\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase this.parent.types.DEST_SELECTOR: {\n\t\t\t\tcontrol = this.parent.getFields().createDestSelector(fieldData);\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase this.parent.types.ENTITY_SELECTOR: {\n\t\t\t\tcontrol = this.parent.getFields().createEntitySelector(fieldData);\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase this.parent.types.CUSTOM: {\n\t\t\t\tcontrol = this.parent.getFields().createCustom(fieldData);\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase this.parent.types.CUSTOM_ENTITY: {\n\t\t\t\tcontrol = this.parent.getFields().createCustomEntity(fieldData);\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tdefault: {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tif (this.parent.getParam('ENABLE_ADDITIONAL_FILTERS'))\n\t\t{\n\t\t\tconst additionalFilterInstance = AdditionalFilter.getInstance();\n\t\t\tconst button = additionalFilterInstance.getAdditionalFilterButton({\n\t\t\t\tfieldId: fieldData.NAME,\n\t\t\t\tenabled: fieldData.ADDITIONAL_FILTER_ALLOWED,\n\t\t\t});\n\t\t\tDom.append(button, control);\n\t\t\tif (!fieldData.ADDITIONAL_FILTER_ALLOWED)\n\t\t\t{\n\t\t\t\tBX.Dom.addClass(control, 'main-ui-filter-additional-filters-hide');\n\t\t\t}\n\n\t\t\tif (Type.isStringFilled(fieldData.ADDITIONAL_FILTER))\n\t\t\t{\n\t\t\t\tadditionalFilterInstance.initAdditionalFilter(control, fieldData.ADDITIONAL_FILTER);\n\t\t\t}\n\t\t}\n\n\t\tif (BX.type.isDomNode(control))\n\t\t{\n\t\t\tcontrol.dataset.name = fieldData.NAME;\n\t\t\tcontrol.FieldController = new BX.Filter.FieldController(control, this.parent);\n\n\t\t\tif (fieldData.REQUIRED)\n\t\t\t{\n\t\t\t\tconst removeButton = control.querySelector('.main-ui-filter-field-delete');\n\n\t\t\t\tif (removeButton)\n\t\t\t\t{\n\t\t\t\t\tBX.remove(removeButton);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn control;\n\t}\n\n\n\t/**\n\t * Removes not compared properties\n\t * @param {object} fields\n\t * @param {boolean} [noClean]\n\t */\n\tremoveNotCompareVariables(fields, noClean)\n\t{\n\t\tif (BX.type.isPlainObject(fields))\n\t\t{\n\t\t\tconst dateType = this.parent.dateTypes;\n\t\t\tconst {additionalDateTypes} = this.parent;\n\n\t\t\tif ('FIND' in fields)\n\t\t\t{\n\t\t\t\tdelete fields.FIND;\n\t\t\t}\n\n\t\t\tif (!noClean)\n\t\t\t{\n\t\t\t\tObject.keys(fields).forEach(function(key) {\n\t\t\t\t\tif (key.indexOf('_numsel') !== -1)\n\t\t\t\t\t{\n\t\t\t\t\t\tdelete fields[key];\n\t\t\t\t\t}\n\n\t\t\t\t\tif (key.indexOf('_datesel') !== -1)\n\t\t\t\t\t{\n\t\t\t\t\t\tconst datesel = fields[key];\n\n\t\t\t\t\t\tif (datesel === dateType.EXACT\n\t\t\t\t\t\t\t|| datesel === dateType.RANGE\n\t\t\t\t\t\t\t|| datesel === additionalDateTypes.PREV_DAY\n\t\t\t\t\t\t\t|| datesel === additionalDateTypes.NEXT_DAY\n\t\t\t\t\t\t\t|| datesel === additionalDateTypes.MORE_THAN_DAYS_AGO\n\t\t\t\t\t\t\t|| datesel === additionalDateTypes.AFTER_DAYS\n\t\t\t\t\t\t\t|| datesel === dateType.PREV_DAYS\n\t\t\t\t\t\t\t|| datesel === dateType.NEXT_DAYS\n\t\t\t\t\t\t\t|| datesel === dateType.YEAR\n\t\t\t\t\t\t\t|| datesel === dateType.MONTH\n\t\t\t\t\t\t\t|| datesel === dateType.QUARTER\n\t\t\t\t\t\t\t|| datesel === dateType.NONE\n\t\t\t\t\t\t\t|| datesel === dateType.CUSTOM_DATE)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tdelete fields[key];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tconst field = this.parent.getFieldByName(key);\n\n\t\t\t\t\tif (fields[key] === '' && (!field || !field.STRICT))\n\t\t\t\t\t{\n\t\t\t\t\t\tdelete fields[key];\n\t\t\t\t\t}\n\t\t\t\t}, this);\n\t\t\t}\n\t\t}\n\t}\n\n\n\t/**\n\t * Checks is modified preset field values\n\t * @param {string} presetId\n\t * @returns {boolean}\n\t */\n\tisPresetValuesModified(presetId)\n\t{\n\t\tconst currentPresetData = this.getPreset(presetId);\n\t\tconst presetFields = this.parent.preparePresetSettingsFields(currentPresetData.FIELDS);\n\t\tconst currentFields = this.parent.getFilterFieldsValues();\n\n\t\tthis.removeNotCompareVariables(presetFields);\n\t\tthis.removeNotCompareVariables(currentFields);\n\n\t\tconst comparedPresetFields = BX.Filter.Utils.sortObject(presetFields);\n\t\tconst comparedCurrentFields = BX.Filter.Utils.sortObject(currentFields);\n\n\t\treturn !Object.keys(comparedPresetFields).every((key) => {\n\t\t\treturn (\n\t\t\t\tcomparedPresetFields[key] === comparedCurrentFields[key]\n\t\t\t\t|| ((BX.type.isPlainObject(comparedPresetFields[key]) || BX.type.isArray(comparedPresetFields[key]))\n\t\t\t\t && BX.Filter.Utils.objectsIsEquals(comparedPresetFields[key], comparedCurrentFields[key]))\n\t\t\t);\n\t\t});\n\t}\n\n\n\t/**\n\t * Gets additional preset values\n\t * @param {string} presetId\n\t * @return {?object}\n\t */\n\tgetAdditionalValues(presetId)\n\t{\n\t\tconst currentPresetData = this.getPreset(presetId);\n\t\tconst notEmptyFields = currentPresetData.FIELDS.filter(function(field) {\n\t\t\treturn !this.isEmptyField(field);\n\t\t}, this);\n\t\tconst presetFields = this.parent.preparePresetSettingsFields(notEmptyFields);\n\t\tconst currentFields = this.parent.getFilterFieldsValues();\n\n\t\tthis.removeNotCompareVariables(presetFields, true);\n\t\tthis.removeNotCompareVariables(currentFields, true);\n\n\t\tthis.removeSameProperties(currentFields, presetFields);\n\n\t\treturn currentFields;\n\t}\n\n\n\t/**\n\t * Removes same object properties\n\t * @param {object} object1\n\t * @param {object} object2\n\t */\n\tremoveSameProperties(object1, object2)\n\t{\n\t\tif (BX.type.isPlainObject(object1) && BX.type.isPlainObject(object2))\n\t\t{\n\t\t\tObject.keys(object2).forEach((key) => {\n\t\t\t\tif (key in object1)\n\t\t\t\t{\n\t\t\t\t\tdelete object1[key];\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\n\t/**\n\t * Removes additional field by field name\n\t * @param {string} name\n\t */\n\tremoveAdditionalField(name)\n\t{\n\t\tconst preset = this.getPreset(this.getCurrentPresetId());\n\n\t\tif (BX.type.isArray(preset.ADDITIONAL))\n\t\t{\n\t\t\tpreset.ADDITIONAL = preset.ADDITIONAL.filter((field) => {\n\t\t\t\treturn field.NAME !== name;\n\t\t\t});\n\t\t}\n\t}\n\n\n\t/**\n\t * Updates preset fields list\n\t * @param {object} preset\n\t * @param {boolean} [noValues = false]\n\t */\n\tupdatePresetFields(preset, noValues)\n\t{\n\t\tlet fields; let\n\t\t\tfieldListContainer;\n\t\tconst fieldNodes = [];\n\n\t\tif (BX.type.isPlainObject(preset) && ('FIELDS' in preset))\n\t\t{\n\t\t\tfields = preset.FIELDS;\n\n\t\t\tif (BX.type.isArray(preset.ADDITIONAL))\n\t\t\t{\n\t\t\t\tpreset.ADDITIONAL\n\t\t\t\t\t.filter((field) => {\n\t\t\t\t\t\treturn this.parent.params.FIELDS.some((currentField) => {\n\t\t\t\t\t\t\treturn field.NAME === currentField.NAME;\n\t\t\t\t\t\t});\n\t\t\t\t\t})\n\t\t\t\t\t.forEach((field) => {\n\t\t\t\t\t\tlet replaced = false;\n\t\t\t\t\t\tfield.IS_PRESET_FIELD = true;\n\t\t\t\t\t\tfields.forEach((presetField, index) => {\n\t\t\t\t\t\t\tif (field.NAME === presetField.NAME)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tfields[index] = field;\n\t\t\t\t\t\t\t\treplaced = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tif (!replaced)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tfields.push(field);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t}\n\n\t\t\t(fields || [])\n\t\t\t\t.filter((field) => {\n\t\t\t\t\treturn this.parent.params.FIELDS.some((currentField) => {\n\t\t\t\t\t\treturn field.NAME === currentField.NAME;\n\t\t\t\t\t});\n\t\t\t\t})\n\t\t\t\t.forEach(function(fieldData, index) {\n\t\t\t\t\tfieldData.TABINDEX = index + 1;\n\t\t\t\t\tif (noValues)\n\t\t\t\t\t{\n\t\t\t\t\t\tswitch (fieldData.TYPE)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcase this.parent.types.SELECT: {\n\t\t\t\t\t\t\t\tfieldData.VALUE = fieldData.ITEMS[0];\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tcase this.parent.types.MULTI_SELECT: {\n\t\t\t\t\t\t\t\tfieldData.VALUE = [];\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tcase this.parent.types.DATE: {\n\t\t\t\t\t\t\t\tfieldData.SUB_TYPE = fieldData.SUB_TYPES[0];\n\t\t\t\t\t\t\t\tfieldData.VALUES = {\n\t\t\t\t\t\t\t\t\t_from: '',\n\t\t\t\t\t\t\t\t\t_to: '',\n\t\t\t\t\t\t\t\t\t_days: '',\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tcase this.parent.types.CUSTOM_DATE: {\n\t\t\t\t\t\t\t\tfieldData.VALUE = {\n\t\t\t\t\t\t\t\t\tdays: [],\n\t\t\t\t\t\t\t\t\tmonths: [],\n\t\t\t\t\t\t\t\t\tyears: [],\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tcase this.parent.types.NUMBER: {\n\t\t\t\t\t\t\t\tfieldData.SUB_TYPE = fieldData.SUB_TYPES[0];\n\t\t\t\t\t\t\t\tfieldData.VALUES = {\n\t\t\t\t\t\t\t\t\t_from: '',\n\t\t\t\t\t\t\t\t\t_to: '',\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tcase this.parent.types.CUSTOM_ENTITY: {\n\t\t\t\t\t\t\t\tfieldData.VALUES = {\n\t\t\t\t\t\t\t\t\t_label: '',\n\t\t\t\t\t\t\t\t\t_value: '',\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tcase this.parent.types.CUSTOM: {\n\t\t\t\t\t\t\t\tfieldData._VALUE = '';\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\t\tif ('VALUE' in fieldData)\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tif (BX.type.isArray(fieldData.VALUE))\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tfieldData.VALUE = [];\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tfieldData.VALUE = '';\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tfieldNodes.push(this.createControl(fieldData));\n\t\t\t\t}, this);\n\n\t\t\tthis.parent.disableFieldsDragAndDrop();\n\t\t\tfieldListContainer = this.parent.getFieldListContainer();\n\t\t\tBX.cleanNode(fieldListContainer);\n\n\t\t\tif (fieldNodes.length)\n\t\t\t{\n\t\t\t\tfieldNodes.forEach(function(current, index) {\n\t\t\t\t\tif (BX.type.isDomNode(current))\n\t\t\t\t\t{\n\t\t\t\t\t\tif (preset.ID !== 'tmp_filter'\n\t\t\t\t\t\t\t&& preset.ID !== 'default_filter'\n\t\t\t\t\t\t\t&& !('IS_PRESET_FIELD' in fields[index])\n\t\t\t\t\t\t\t&& !this.isEmptyField(fields[index]))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tBX.addClass(current, this.parent.settings.classPresetField);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tBX.append(current, fieldListContainer);\n\n\t\t\t\t\t\tif (BX.type.isString(fields[index].HTML))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tconst wrap = BX.create('div');\n\t\t\t\t\t\t\tthis.parent.getHiddenElement().appendChild(wrap);\n\t\t\t\t\t\t\tBX.html(wrap, fields[index].HTML);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}, this);\n\n\t\t\t\tthis.parent.enableFieldsDragAndDrop();\n\t\t\t}\n\t\t}\n\t}\n\n\n\t/**\n\t * Shows current preset fields\n\t */\n\tshowCurrentPresetFields()\n\t{\n\t\tconst preset = this.getCurrentPresetData();\n\t\tthis.updatePresetFields(preset);\n\t}\n\n\n\t/**\n\t * Gets current preset element\n\t * @return {?HTMLElement}\n\t */\n\tgetCurrentPreset()\n\t{\n\t\treturn BX.Filter.Utils.getByClass(this.getContainer(), this.parent.settings.classPresetCurrent);\n\t}\n\n\n\t/**\n\t * Gets current preset id\n\t * @return {*}\n\t */\n\tgetCurrentPresetId()\n\t{\n\t\tconst current = this.getCurrentPreset();\n\t\tlet currentId = null;\n\n\t\tif (BX.type.isDomNode(current))\n\t\t{\n\t\t\tcurrentId = this.getPresetId(current);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tcurrentId = 'tmp_filter';\n\t\t}\n\n\t\treturn currentId;\n\t}\n\n\n\t/**\n\t * Gets current preset data\n\t * @return {?object}\n\t */\n\tgetCurrentPresetData()\n\t{\n\t\tconst currentId = this.getCurrentPresetId();\n\t\tlet currentData = null;\n\n\t\tif (BX.type.isNotEmptyString(currentId))\n\t\t{\n\t\t\tcurrentData = this.getPreset(currentId);\n\t\t\tcurrentData = this.extendPreset(currentData);\n\t\t}\n\n\t\treturn currentData;\n\t}\n\n\n\t/**\n\t * Gets presets container element\n\t * @return {?HTMLElement}\n\t */\n\tgetContainer()\n\t{\n\t\treturn BX.Filter.Utils.getByClass(this.parent.getFilter(), this.parent.settings.classPresetsContainer);\n\t}\n\n\n\t/**\n\t * Gets preset nodes\n\t * @return {?HTMLElement[]}\n\t */\n\tgetPresets()\n\t{\n\t\treturn BX.Filter.Utils.getByClass(this.getContainer(), this.parent.settings.classPreset, true);\n\t}\n\n\n\t/**\n\t * Gets default presets elements\n\t * @return {?HTMLElement[]}\n\t */\n\tgetDefaultPresets()\n\t{\n\t\treturn BX.Filter.Utils.getByClass(this.getContainer(), this.parent.settings.classDefaultFilter, true);\n\t}\n\n\n\t/**\n\t * Gets default preset element\n\t * @return {?HTMLElement}\n\t */\n\tgetPinnedPresetNode()\n\t{\n\t\treturn BX.Filter.Utils.getByClass(this.getContainer(), this.parent.settings.classPinnedPreset);\n\t}\n\n\n\t/**\n\t * Checks preset is pinned (default)\n\t * @param presetId\n\t * @return {boolean}\n\t */\n\tisPinned(presetId)\n\t{\n\t\treturn this.getPinnedPresetId() === presetId;\n\t}\n\n\n\t/**\n\t * Gets pinned (default) preset id\n\t * @return {string}\n\t */\n\tgetPinnedPresetId()\n\t{\n\t\tconst node = this.getPinnedPresetNode();\n\t\tlet id = 'default_filter';\n\n\t\tif (node)\n\t\t{\n\t\t\tconst dataId = BX.data(node, 'id');\n\t\t\tid = dataId || id;\n\t\t}\n\n\t\treturn id;\n\t}\n}","/* eslint-disable */\nimport { Loc, Type } from 'main.core';\nimport { UI } from 'ui.notification';\nimport { Presets } from './presets';\n\n;(function() {\n\t'use strict';\n\n\tBX.namespace('BX.Main');\n\n\n\t/**\n\t * General filter class\n\t * @param {object} params Component params\n\t * @param {object} options Extends BX.Filter.Settings\n\t * @param {object} types Field types from Bitrix\\Main\\UI\\Filter\\Type\n\t * @param types.STRING\n\t * @param types.SELECT\n\t * @param types.DATE\n\t * @param types.CUSTOM_DATE\n\t * @param types.MULTI_SELECT\n\t * @param types.NUMBER\n\t * @param types.DEST_SELECTOR\n\t * @param types.ENTITY_SELECTOR\n\t * @param types.CUSTOM_ENTITY\n\t * @param types.CHECKBOX\n\t * @param types.CUSTOM\n\t * @param types.ENTITY\n\t * @param {object} dateTypes Date field types from Bitrix\\Main\\UI\\Filter\\DateType\n\t * @param dateTypes.NONE\n\t * @param dateTypes.YESTERDAY\n\t * @param dateTypes.CURRENT_DAY\n\t * @param dateTypes.CURRENT_WEEK\n\t * @param dateTypes.CURRENT_MONTH\n\t * @param dateTypes.CURRENT_QUARTER\n\t * @param dateTypes.LAST_7_DAYS\n\t * @param dateTypes.LAST_30_DAYS\n\t * @param dateTypes.LAST_60_DAYS\n\t * @param dateTypes.LAST_90_DAYS\n\t * @param dateTypes.MONTH\n\t * @param dateTypes.QUARTER\n\t * @param dateTypes.YEAR\n\t * @param dateTypes.EXACT\n\t * @param dateTypes.LAST_WEEK\n\t * @param dateTypes.LAST_MONTH\n\t * @param dateTypes.RANGE\n\t * @param dateTypes.NEXT_DAYS\n\t * @param dateTypes.PREV_DAYS\n\t * @param dateTypes.TOMORROW\n\t * @param dateTypes.NEXT_MONTH\n\t * @param dateTypes.NEXT_WEEK\n\t * @param {object} numberTypes Number field types from Bitrix\\Main\\UI\\Filter\\NumberType\n\t * @memberOf {BX.Main}\n\t */\n\tBX.Main.Filter = function(params, options, types, dateTypes, numberTypes, additionalDateTypes, additionalNumberTypes)\n\t{\n\t\tthis.params = params;\n\t\tthis.search = null;\n\t\tthis.popup = null;\n\t\tthis.checkboxListPopup = null;\n\t\tthis.presets = null;\n\t\tthis.fields = null;\n\t\tthis.types = types;\n\t\tthis.dateTypes = dateTypes;\n\t\tthis.additionalDateTypes = additionalDateTypes;\n\t\tthis.additionalNumberTypes = additionalNumberTypes;\n\t\tthis.numberTypes = numberTypes;\n\t\tthis.settings = new BX.Filter.Settings(options, this);\n\t\tthis.filter = null;\n\t\tthis.api = null;\n\t\tthis.isAddPresetModeState = false;\n\t\tthis.firstInit = true;\n\t\tthis.analyticsLabel = null;\n\t\tthis.emitter = new BX.Event.EventEmitter();\n\t\tthis.emitter.setEventNamespace('BX.Filter.Field');\n\t\tthis.emitter.subscribe = function(eventName, listener) {\n\t\t\tBX.Event.EventEmitter.subscribe(\n\t\t\t\tthis.emitter,\n\t\t\t\teventName.replace('BX.Filter.Field:', ''),\n\t\t\t\tlistener\n\t\t\t);\n\t\t}.bind(this);\n\t\tthis.enableFieldsSearch = null;\n\t\tthis.enableHeadersSections = null;\n\n\t\tthis.init();\n\t};\n\n\t/**\n\t * Converts string to camel case\n\t * @param {string} string\n\t * @return {*}\n\t */\n\tfunction toCamelCase(string)\n\t{\n\t\tif (BX.type.isString(string))\n\t\t{\n\t\t\tstring = string.toLowerCase();\n\t\t\tstring = string.replace(/[\\-_\\s]+(.)?/g, function(match, chr) {\n\t\t\t\treturn chr ? chr.toUpperCase() : '';\n\t\t\t});\n\t\t\treturn string.substr(0, 1).toLowerCase() + string.substr(1);\n\t\t}\n\n\t\treturn string;\n\t}\n\n\t//noinspection JSUnusedGlobalSymbols\n\tBX.Main.Filter.prototype = {\n\t\tinit: function()\n\t\t{\n\t\t\tBX.bind(document, 'mousedown', BX.delegate(this._onDocumentClick, this));\n\t\t\tBX.bind(document, 'keydown', BX.delegate(this._onDocumentKeydown, this));\n\t\t\tBX.bind(window, 'load', BX.delegate(this.onWindowLoad, this));\n\t\t\tBX.addCustomEvent('Grid::ready', BX.delegate(this._onGridReady, this));\n\n\t\t\tthis.getSearch().updatePreset(this.getParam('CURRENT_PRESET'));\n\n\t\t\tthis.enableFieldsSearch = this.getParam('ENABLE_FIELDS_SEARCH', false);\n\t\t\tthis.enableHeadersSections = this.getParam('HEADERS_SECTIONS', false);\n\n\t\t\tif (this.isAppliedDefaultPreset())\n\t\t\t{\n\t\t\t\tthis.setDefaultPresetAppliedState(true);\n\t\t\t}\n\t\t},\n\n\t\tgetEmitter: function()\n\t\t{\n\t\t\treturn this.emitter;\n\t\t},\n\n\n\t\tonWindowLoad: function()\n\t\t{\n\t\t\tthis.settings.get('AUTOFOCUS') && this.adjustFocus();\n\t\t},\n\n\n\t\t/**\n\t\t * Removes apply_filter param from url\n\t\t */\n\t\tclearGet: function()\n\t\t{\n\t\t\tif ('history' in window)\n\t\t\t{\n\t\t\t\tvar url = window.location.toString();\n\t\t\t\tvar clearUrl = BX.util.remove_url_param(url, 'apply_filter');\n\t\t\t\twindow.history.replaceState(null, '', clearUrl);\n\t\t\t}\n\t\t},\n\n\n\t\t/**\n\t\t * Adjusts focus on search field\n\t\t */\n\t\tadjustFocus: function()\n\t\t{\n\t\t\tthis.getSearch().adjustFocus();\n\t\t},\n\n\t\t_onAddPresetKeydown: function(event)\n\t\t{\n\t\t\tif (BX.Filter.Utils.isKey(event, 'enter'))\n\t\t\t{\n\t\t\t\tthis._onSaveButtonClick();\n\t\t\t}\n\t\t},\n\n\t\t_onDocumentKeydown: function(event)\n\t\t{\n\t\t\tif (BX.Filter.Utils.isKey(event, 'escape'))\n\t\t\t{\n\t\t\t\tif (this.getPopup().isShown())\n\t\t\t\t{\n\t\t\t\t\tBX.onCustomEvent(window, 'BX.Main.Filter:blur', [this]);\n\t\t\t\t\tthis.closePopup();\n\n\t\t\t\t\tif (this.getParam('VALUE_REQUIRED_MODE'))\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.restoreRemovedPreset();\n\t\t\t\t\t}\n\n\t\t\t\t\tif (this.getParam('VALUE_REQUIRED'))\n\t\t\t\t\t{\n\t\t\t\t\t\tif (!this.getSearch().getSquares().length)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tthis.getPreset().applyPinnedPreset();\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\n\t\t/**\n\t\t * Gets BX.Filter.Api instance\n\t\t * @return {BX.Filter.Api}\n\t\t */\n\t\tgetApi: function()\n\t\t{\n\t\t\tif (!(this.api instanceof BX.Filter.Api))\n\t\t\t{\n\t\t\t\tthis.api = new BX.Filter.Api(this);\n\t\t\t}\n\n\t\t\treturn this.api;\n\t\t},\n\n\n\t\t/**\n\t\t * Adds sidebar item\n\t\t * @param {string} id\n\t\t * @param {string} name\n\t\t * @param {boolean} [pinned = false]\n\t\t */\n\t\taddSidebarItem: function(id, name, pinned)\n\t\t{\n\t\t\tvar Presets = this.getPreset();\n\t\t\tvar presetsContainer = Presets.getContainer();\n\t\t\tvar sidebarItem = Presets.createSidebarItem(id, name, pinned);\n\t\t\tvar preset = Presets.getPresetNodeById(id);\n\n\t\t\tif (BX.type.isDomNode(preset))\n\t\t\t{\n\t\t\t\tBX.remove(preset);\n\t\t\t\tpresetsContainer.insertBefore(sidebarItem, Presets.getAddPresetField());\n\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tpresetsContainer && presetsContainer.insertBefore(sidebarItem, Presets.getAddPresetField());\n\t\t\t}\n\n\t\t\tBX.bind(sidebarItem, 'click', BX.delegate(Presets._onPresetClick, Presets));\n\t\t},\n\n\n\t\t/**\n\t\t * Saves user settings\n\t\t * @param {boolean} [forAll = false]\n\t\t */\n\t\tsaveUserSettings: function(forAll)\n\t\t{\n\t\t\tvar optionsParams = {'FILTER_ID': this.getParam('FILTER_ID'), 'GRID_ID': this.getParam('GRID_ID'), 'action': 'SET_FILTER_ARRAY'};\n\t\t\tvar Presets = this.getPreset();\n\t\t\tvar currentPresetId = Presets.getCurrentPresetId();\n\t\t\tvar presetsSettings = {};\n\n\t\t\tthis.params['PRESETS'] = BX.clone(this.editablePresets);\n\t\t\tpresetsSettings.current_preset = currentPresetId;\n\n\t\t\tPresets.getPresets().forEach(function(current, index) {\n\t\t\t\tvar presetId = Presets.getPresetId(current);\n\n\t\t\t\tif (presetId && presetId !== 'tmp_filter')\n\t\t\t\t{\n\t\t\t\t\tvar presetData = Presets.getPreset(presetId);\n\n\t\t\t\t\tpresetData.TITLE = BX.util.htmlspecialchars(BX.util.htmlspecialcharsback(presetData.TITLE));\n\t\t\t\t\tpresetData.SORT = index;\n\t\t\t\t\tPresets.updatePresetName(current, presetData.TITLE);\n\n\t\t\t\t\tpresetsSettings[presetId] = {\n\t\t\t\t\t\tsort: index,\n\t\t\t\t\t\tname: presetData.TITLE,\n\t\t\t\t\t\tfields: this.preparePresetSettingsFields(presetData.FIELDS),\n\t\t\t\t\t\trows: presetData.FIELDS.map((field) => field.NAME),\n\t\t\t\t\t\tfor_all: (\n\t\t\t\t\t\t\t(forAll && !BX.type.isBoolean(presetData.FOR_ALL)) ||\n\t\t\t\t\t\t\t(forAll && presetData.FOR_ALL === true)\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}, this);\n\n\t\t\tthis.saveOptions(presetsSettings, optionsParams, null, forAll);\n\t\t},\n\n\n\t\t/**\n\t\t * Checks is for all\n\t\t * @return {boolean}\n\t\t */\n\t\tisForAll: function(forAll)\n\t\t{\n\t\t\tvar checkbox = this.getForAllCheckbox();\n\t\t\treturn (\n\t\t\t\t(BX.type.isBoolean(forAll) && forAll) ||\n\t\t\t\t(!!checkbox && !!checkbox.checked)\n\t\t\t);\n\t\t},\n\n\n\t\t/**\n\t\t * Gets for all checkbox\n\t\t * @return {?HTMLElement}\n\t\t */\n\t\tgetForAllCheckbox: function()\n\t\t{\n\t\t\tif (!this.forAllCheckbox)\n\t\t\t{\n\t\t\t\tthis.forAllCheckbox = BX.Filter.Utils.getByClass(this.getFilter(), this.settings.classForAllCheckbox);\n\t\t\t}\n\n\t\t\treturn this.forAllCheckbox;\n\t\t},\n\n\n\t\t/**\n\t\t * Prepares preset settings fields\n\t\t * @param fields\n\t\t * @return {?object}\n\t\t */\n\t\tpreparePresetSettingsFields: function(fields)\n\t\t{\n\t\t\tvar result = {};\n\t\t\tvar valuesKeys;\n\n\t\t\t(fields || []).forEach(function(current) {\n\t\t\t\tswitch (current.TYPE)\n\t\t\t\t{\n\t\t\t\t\tcase this.types.STRING : {\n\t\t\t\t\t\tresult[current.NAME] = current.VALUE;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tcase this.types.TEXTAREA : {\n\t\t\t\t\t\tresult[current.NAME] = current.VALUE;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tcase this.types.SELECT : {\n\t\t\t\t\t\tresult[current.NAME] = 'VALUE' in current.VALUE ? current.VALUE.VALUE : '';\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tcase this.types.MULTI_SELECT : {\n\t\t\t\t\t\tif (BX.type.isArray(current.VALUE) && current.VALUE.length)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcurrent.VALUE.forEach(function(curr, index) {\n\t\t\t\t\t\t\t\tresult[current.NAME] = BX.type.isPlainObject(result[current.NAME]) ? result[current.NAME] : {};\n\t\t\t\t\t\t\t\tresult[current.NAME][index] = curr.VALUE;\n\t\t\t\t\t\t\t}, this);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tcase this.types.CHECKBOX : {\n\t\t\t\t\t\tif (BX.type.isArray(current.VALUE) && current.VALUE.length)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcurrent.VALUE.forEach(function(curr, index) {\n\t\t\t\t\t\t\t\tresult[current.NAME] = BX.type.isPlainObject(result[current.NAME]) ? result[current.NAME] : {};\n\t\t\t\t\t\t\t\tresult[current.NAME][index] = curr.VALUE;\n\t\t\t\t\t\t\t}, this);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tcase this.types.DATE : {\n\t\t\t\t\t\tif (BX.type.isPlainObject(current.VALUES))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvaluesKeys = Object.keys(current.VALUES);\n\t\t\t\t\t\t\tresult[current.NAME + '_datesel'] = current.SUB_TYPE.VALUE;\n\t\t\t\t\t\t\tvaluesKeys.forEach(function(curr) {\n\t\t\t\t\t\t\t\tresult[current.NAME + curr] = current.VALUES[curr];\n\t\t\t\t\t\t\t}, this);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tcase this.types.NUMBER : {\n\t\t\t\t\t\tif (BX.type.isPlainObject(current.VALUES))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvaluesKeys = Object.keys(current.VALUES);\n\t\t\t\t\t\t\tresult[current.NAME + '_numsel'] = current.SUB_TYPE.VALUE;\n\t\t\t\t\t\t\tvaluesKeys.forEach(function(curr) {\n\t\t\t\t\t\t\t\tresult[current.NAME + curr] = current.VALUES[curr];\n\t\t\t\t\t\t\t}, this);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tcase this.types.DEST_SELECTOR : {\n\t\t\t\t\t\tif (BX.type.isPlainObject(current.VALUES))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tresult[current.NAME] = current.VALUES._value;\n\t\t\t\t\t\t\tresult[current.NAME + '_label'] = current.VALUES._label;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tcase this.types.DEST_SELECTOR:\n\t\t\t\t\tcase this.types.ENTITY_SELECTOR:\n\t\t\t\t\tcase this.types.CUSTOM_ENTITY: {\n\t\t\t\t\t\tif (BX.type.isPlainObject(current.VALUES))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tresult[current.NAME] = current.VALUES._value;\n\t\t\t\t\t\t\tresult[current.NAME + '_label'] = current.VALUES._label;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tdefault : {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}, this);\n\n\t\t\treturn result;\n\t\t},\n\n\n\t\t/**\n\t\t * Saves preset\n\t\t */\n\t\tsavePreset: function()\n\t\t{\n\t\t\tvar presetId = 'filter_' + (+new Date());\n\t\t\tvar presetName = BX.util.htmlspecialcharsback(this.getPreset().getAddPresetFieldInput().value);\n\n\t\t\tthis.updatePreset(presetId, presetName, null, true, null, null, true);\n\t\t\tthis.addSidebarItem(presetId, presetName);\n\t\t\tthis.getPreset().applyPreset(presetId);\n\t\t\tthis.getPreset().activatePreset(presetId);\n\t\t\tthis.applyFilter();\n\t\t},\n\n\n\t\t/**\n\t\t * Updates preset\n\t\t * @param {string} presetId\n\t\t * @param {?string} [presetName]\n\t\t * @param {?boolean} [reset]\n\t\t * @param {?boolean} [sort]\n\t\t * @param {?function} [beforeLoad]\n\t\t * @param {?function} [afterLoad]\n\t\t * @param {boolean} [isNew]\n\t\t * @return {BX.Promise}\n\t\t */\n\t\tupdatePreset: function(presetId, presetName, reset, sort, beforeLoad, afterLoad, isNew)\n\t\t{\n\t\t\tvar fields = this.getFilterFieldsValues();\n\t\t\tvar sourceFields = this.getPreset().getFields().map(function(curr) { return BX.data(curr, 'name'); });\n\t\t\tvar preset = this.getPreset().getCurrentPresetData();\n\t\t\tvar params = {'FILTER_ID': this.getParam('FILTER_ID'), 'GRID_ID': this.getParam('GRID_ID'), 'action': 'SET_FILTER'};\n\t\t\tvar rows, value, tmpPresetNode, tmpPresetInput, presets;\n\t\t\tvar data = {};\n\n\t\t\tdata.additional = {};\n\n\t\t\tif (presetId !== 'tmp_filter' && presetId !== 'default_filter' && !isNew)\n\t\t\t{\n\t\t\t\tvar additional = BX.type.isArray(preset.ADDITIONAL) ? preset.ADDITIONAL : [];\n\n\t\t\t\tadditional.forEach(function(field) {\n\t\t\t\t\tObject.keys(fields).forEach(function(key) {\n\t\t\t\t\t\tif (key.indexOf(field.NAME) !== -1)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tdata.additional[key] = fields[key];\n\t\t\t\t\t\t\tdelete fields[key];\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\n\t\t\trows = Object.keys(fields);\n\n\t\t\tif (!reset)\n\t\t\t{\n\t\t\t\tdata.apply_filter = 'Y';\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tdata.clear_filter = 'Y';\n\t\t\t}\n\n\t\t\tdata.save = 'Y';\n\t\t\tdata.fields = fields;\n\t\t\tdata.rows = sourceFields.join(',');\n\n\t\t\tdata.preset_id = presetId || preset.ID;\n\n\t\t\tif (BX.type.isNotEmptyString(presetName))\n\t\t\t{\n\t\t\t\tdata.name = BX.util.htmlspecialchars(presetName);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\ttmpPresetNode = this.getPreset().getPresetNodeById(data.preset_id);\n\t\t\t\ttmpPresetInput = this.getPreset().getPresetInput(tmpPresetNode);\n\n\t\t\t\tif (BX.type.isDomNode(tmpPresetInput) && BX.type.isNotEmptyString(tmpPresetInput.value))\n\t\t\t\t{\n\t\t\t\t\tdata.name = tmpPresetInput.value;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tdata.name = preset.TITLE;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ((!('sort' in data) || !BX.type.isNumber(data.sort)) && sort)\n\t\t\t{\n\t\t\t\tpresets = this.getParam('PRESETS');\n\t\t\t\tdata.sort = presets.length + 2;\n\t\t\t}\n\n\t\t\tif (!reset)\n\t\t\t{\n\t\t\t\trows.forEach(function(key) {\n\t\t\t\t\tif (BX.type.isArray(data.fields[key]))\n\t\t\t\t\t{\n\t\t\t\t\t\tvalue = data.fields[key].length ? {} : '';\n\n\t\t\t\t\t\tdata.fields[key].forEach(function(val, index) {\n\t\t\t\t\t\t\tvalue[index] = val;\n\t\t\t\t\t\t}, this);\n\n\t\t\t\t\t\tif (value || BX.type.isNumber(value) || BX.type.isBoolean(value))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tdata.fields[key] = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}, this);\n\t\t\t}\n\n\t\t\tif (data.preset_id === 'tmp_filter' || this.isAddPresetEnabled() || reset)\n\t\t\t{\n\t\t\t\tthis.updateParams(data);\n\t\t\t}\n\n\t\t\tif (BX.type.isFunction(beforeLoad))\n\t\t\t{\n\t\t\t\tbeforeLoad();\n\t\t\t}\n\n\t\t\tvar promise = new BX.Promise(null, this);\n\t\t\tpromise.setAutoResolve('fulfill', 0);\n\n\t\t\tpromise.then(function() {\n\t\t\t\tvar afterPromise = new BX.Promise(null, this);\n\t\t\t\tthis.saveOptions(data, params, BX.proxy(afterPromise.fulfill, afterPromise));\n\t\t\t\treturn afterPromise;\n\t\t\t})\n\t\t\t.then(function() {\n\t\t\t\t!!afterLoad && afterLoad();\n\t\t\t});\n\n\t\t\treturn promise;\n\t\t},\n\n\n\t\t/**\n\t\t * Saves fields sort\n\t\t */\n\t\tsaveFieldsSort: function()\n\t\t{\n\t\t\tvar params = {'FILTER_ID': this.getParam('FILTER_ID'), 'GRID_ID': this.getParam('GRID_ID'), 'action': 'SET_FILTER'};\n\t\t\tvar fields = this.getPreset().getFields();\n\t\t\tvar data = {};\n\n\t\t\tdata.preset_id = 'default_filter';\n\n\t\t\tif (BX.type.isArray(fields))\n\t\t\t{\n\t\t\t\tdata.rows = fields.map(function(current) {\n\t\t\t\t\treturn BX.data(current, 'name');\n\t\t\t\t});\n\t\t\t\tdata.rows = data.rows.join(',');\n\t\t\t}\n\n\t\t\tthis.updateParams(data);\n\t\t\tthis.saveOptions(data, params);\n\t\t},\n\n\n\t\t/**\n\t\t * Updates params\n\t\t * @param {object} data\n\t\t */\n\t\tupdateParams: function(data)\n\t\t{\n\t\t\tvar preset, presets;\n\t\t\tvar fields = [];\n\n\t\t\tif (BX.type.isPlainObject(data) && 'preset_id' in data)\n\t\t\t{\n\t\t\t\tpreset = this.getPreset().getPreset(data.preset_id);\n\n\t\t\t\tif (BX.type.isPlainObject(preset))\n\t\t\t\t{\n\t\t\t\t\tif ('name' in data && BX.type.isNotEmptyString(data.name))\n\t\t\t\t\t{\n\t\t\t\t\t\tpreset.TITLE = data.name;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ('rows' in data && !('fields' in data))\n\t\t\t\t\t{\n\t\t\t\t\t\tdata.fields = {};\n\n\t\t\t\t\t\tdata.rows.split(',').forEach(function(curr) {\n\t\t\t\t\t\t\tdata.fields[curr] = '';\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tif ('fields' in data)\n\t\t\t\t\t{\n\t\t\t\t\t\tpreset.FIELDS = this.preparePresetFields(data.fields, data.rows);\n\t\t\t\t\t}\n\n\t\t\t\t\tif ('additional' in data && preset.ID !== 'tmp_filter')\n\t\t\t\t\t{\n\t\t\t\t\t\tpreset.ADDITIONAL = this.preparePresetFields(data.additional, data.rows);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tpresets = this.getParam('PRESETS');\n\t\t\t\t\tpreset = {\n\t\t\t\t\t\tID: data.preset_id,\n\t\t\t\t\t\tTITLE: data.name,\n\t\t\t\t\t\tSORT: (presets.length + 2),\n\t\t\t\t\t\tFIELDS: this.preparePresetFields(data.fields, data.rows)\n\t\t\t\t\t};\n\n\t\t\t\t\tpresets.push(preset);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\n\t\t/**\n\t\t * Prepares preset fields\n\t\t * @param {object[]} dataFields\n\t\t * @param rows\n\t\t * @return {object[]}\n\t\t */\n\t\tpreparePresetFields: function(dataFields, rows)\n\t\t{\n\t\t\tvar fieldKeys, field;\n\t\t\tvar fields = [];\n\n\t\t\tif (BX.type.isPlainObject(dataFields))\n\t\t\t{\n\t\t\t\trows = BX.type.isNotEmptyString(rows) ? rows.split(',') : [];\n\t\t\t\tfieldKeys = rows.length ? rows : Object.keys(dataFields);\n\t\t\t\tfieldKeys.forEach(function(current) {\n\t\t\t\t\tcurrent = current\n\t\t\t\t\t\t.replace('_datesel', '')\n\t\t\t\t\t\t.replace('_numsel', '')\n\t\t\t\t\t\t.replace('_' + BX.Filter.AdditionalFilter.Type.IS_EMPTY, '')\n\t\t\t\t\t\t.replace('_' + BX.Filter.AdditionalFilter.Type.HAS_ANY_VALUE, '');\n\t\t\t\t\tfield = BX.clone(this.getFieldByName(current));\n\n\t\t\t\t\tif (BX.type.isPlainObject(field))\n\t\t\t\t\t{\n\t\t\t\t\t\tfield.ADDITIONAL_FILTER = BX.Filter.AdditionalFilter.fetchAdditionalFilter(current, dataFields);\n\t\t\t\t\t\tif (!BX.Type.isStringFilled(field.ADDITIONAL_FILTER))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif (field.TYPE === this.types.STRING)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tfield.VALUE = dataFields[current];\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (field.TYPE === this.types.TEXTAREA)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tfield.VALUE = dataFields[current];\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (field.TYPE === this.types.MULTI_SELECT)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tfield.VALUE = this.prepareMultiSelectValue(dataFields[current], field.ITEMS);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (field.TYPE === this.types.SELECT || field.TYPE === this.types.CHECKBOX)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tfield.VALUE = this.prepareSelectValue(dataFields[current], field.ITEMS);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (field.TYPE === this.types.DATE)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tfield.SUB_TYPE = this.prepareSelectValue(dataFields[current + '_datesel'], field.SUB_TYPES);\n\n\t\t\t\t\t\t\t\tfield.VALUES = {\n\t\t\t\t\t\t\t\t\t'_from': dataFields[current + '_from'],\n\t\t\t\t\t\t\t\t\t'_to': dataFields[current + '_to'],\n\t\t\t\t\t\t\t\t\t'_days': dataFields[current + '_days'],\n\t\t\t\t\t\t\t\t\t'_month': dataFields[current + '_month'],\n\t\t\t\t\t\t\t\t\t'_quarter': dataFields[current + '_quarter'],\n\t\t\t\t\t\t\t\t\t'_year': dataFields[current + '_year'],\n\t\t\t\t\t\t\t\t\t'_allow_year': dataFields[current + '_allow_year']\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (field.TYPE === this.types.CUSTOM_DATE)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tfield.VALUE = {\n\t\t\t\t\t\t\t\t\t'days': Object.keys(dataFields[current + '_days'] || {}).map(function(index) {\n\t\t\t\t\t\t\t\t\t\treturn dataFields[current + '_days'][index];\n\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t\t'months': Object.keys(dataFields[current + '_months'] || {}).map(function(index) {\n\t\t\t\t\t\t\t\t\t\treturn dataFields[current + '_months'][index];\n\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t\t'years': Object.keys(dataFields[current + '_years'] || {}).map(function(index) {\n\t\t\t\t\t\t\t\t\t\treturn dataFields[current + '_years'][index];\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (field.TYPE === this.types.NUMBER)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tfield.SUB_TYPE = this.prepareSelectValue(dataFields[current + '_numsel'], field.SUB_TYPES);\n\t\t\t\t\t\t\t\tfield.VALUES = {\n\t\t\t\t\t\t\t\t\t'_from': dataFields[current + '_from'],\n\t\t\t\t\t\t\t\t\t'_to': dataFields[current + '_to']\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tfield.TYPE === this.types.DEST_SELECTOR\n\t\t\t\t\t\t\t\t|| field.TYPE === this.types.ENTITY_SELECTOR\n\t\t\t\t\t\t\t\t||field.TYPE === this.types.CUSTOM_ENTITY\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tif (typeof dataFields[current + '_label'] !== 'undefined')\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tfield.VALUES._label = dataFields[current + '_label'];\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tif (typeof dataFields[current] !== 'undefined')\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tfield.VALUES._value = dataFields[current];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (field.TYPE === this.types.CUSTOM)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tfield._VALUE = dataFields[current];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfields.push(field);\n\t\t\t\t\t}\n\t\t\t\t}, this);\n\t\t\t}\n\n\t\t\treturn fields;\n\t\t},\n\n\n\t\t/**\n\t\t * Prepares select values\n\t\t * @param value\n\t\t * @param items\n\t\t * @return {object}\n\t\t */\n\t\tprepareSelectValue: function(value, items)\n\t\t{\n\t\t\tvar result = {};\n\t\t\tvar tmpResult;\n\n\t\t\tif (BX.type.isNotEmptyString(value) && BX.type.isArray(items))\n\t\t\t{\n\t\t\t\ttmpResult = this.prepareMultiSelectValue({0: value}, items);\n\t\t\t\tresult = tmpResult.length > 0 ? tmpResult[0] : {};\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tresult = items[0];\n\t\t\t}\n\n\t\t\treturn result;\n\t\t},\n\n\n\t\t/**\n\t\t * Prepares multiselect value\n\t\t * @param values\n\t\t * @param items\n\t\t * @return {Array}\n\t\t */\n\t\tprepareMultiSelectValue: function(values, items)\n\t\t{\n\t\t\tvar result = [];\n\n\t\t\tif (BX.type.isPlainObject(values) && BX.type.isArray(items))\n\t\t\t{\n\t\t\t\tvar valuesKeys = Object.keys(values);\n\t\t\t\tvar valuesValues = valuesKeys.map(function(curr) { return values[curr]; });\n\n\t\t\t\tresult = items.filter(function(current) {\n\t\t\t\t\treturn valuesValues.some(function(val) { return val === current.VALUE});\n\t\t\t\t}, this);\n\t\t\t}\n\n\t\t\treturn result;\n\t\t},\n\n\n\t\t/**\n\t\t * Get field by name\n\t\t * @param {string} name\n\t\t * @return {?object}\n\t\t */\n\t\tgetFieldByName: function(name)\n\t\t{\n\t\t\tvar fields = this.getParam('FIELDS');\n\n\t\t\tvar field = fields.find(function(current) {\n\t\t\t\treturn current.NAME === name;\n\t\t\t});\n\n\t\t\tif (field)\n\t\t\t{\n\t\t\t\treturn field;\n\t\t\t}\n\n\t\t\tvar node = this.getFieldListContainer()\n\t\t\t\t.querySelector('[data-name=\"' + name + '\"]');\n\n\t\t\tfield = BX.Filter.Field.instances.get(node);\n\n\t\t\tif (field)\n\t\t\t{\n\t\t\t\treturn field.options;\n\t\t\t}\n\n\t\t\treturn null;\n\t\t},\n\n\n\t\t/**\n\t\t * @private\n\t\t * @return {Promise}\n\t\t */\n\t\tconfirmSaveForAll: function()\n\t\t{\n\t\t\treturn new Promise(function(resolve) {\n\t\t\t\tvar action = {\n\t\t\t\t\tCONFIRM: true,\n\t\t\t\t\tCONFIRM_MESSAGE: this.getParam('MAIN_UI_FILTER__CONFIRM_MESSAGE_FOR_ALL'),\n\t\t\t\t\tCONFIRM_APPLY_BUTTON: this.getParam('MAIN_UI_FILTER__CONFIRM_APPLY_FOR_ALL'),\n\t\t\t\t\tCONFIRM_CANCEL_BUTTON: this.getParam('CONFIRM_CANCEL')\n\t\t\t\t};\n\t\t\t\tthis.confirmDialog(action, resolve);\n\t\t\t}.bind(this));\n\t\t},\n\n\n\t\t/**\n\t\t * Save options\n\t\t * @param {object} data\n\t\t * @param {object} [params]\n\t\t * @param {function} [callback]\n\t\t * @param {boolean} [forAll = false]\n\t\t */\n\t\tsaveOptions: function(data, params, callback, forAll)\n\t\t{\n\t\t\tparams.action = toCamelCase(params.action);\n\t\t\tparams.forAll = this.isForAll(forAll);\n\t\t\tparams.commonPresetsId = this.getParam('COMMON_PRESETS_ID');\n\t\t\tparams.apply_filter = data.apply_filter || \"N\";\n\t\t\tparams.clear_filter = data.clear_filter || \"N\";\n\t\t\tparams.with_preset = data.with_preset || \"N\";\n\t\t\tparams.save = data.save || \"N\";\n\t\t\tparams.isSetOutside = this.isSetOutside();\n\n\t\t\tvar requestData = {\n\t\t\t\tparams: params,\n\t\t\t\tdata: data\n\t\t\t};\n\n\t\t\tdelete data.apply_filter;\n\t\t\tdelete data.save;\n\t\t\tdelete data.clear_filter;\n\t\t\tdelete data.with_preset;\n\n\t\t\tif (params.forAll && params.action === 'setFilterArray')\n\t\t\t{\n\t\t\t\treturn this.confirmSaveForAll()\n\t\t\t\t\t.then(function() {\n\t\t\t\t\t\treturn this.backend(params.action, requestData);\n\t\t\t\t\t}.bind(this))\n\t\t\t\t\t.then(function() {\n\t\t\t\t\t\tthis.disableEdit();\n\t\t\t\t\t\tthis.disableAddPreset();\n\t\t\t\t\t}.bind(this))\n\t\t\t}\n\n\t\t\treturn this.backend(params.action, requestData)\n\t\t\t\t.then(function() {\n\t\t\t\t\tBX.removeClass(this.getFindButton(), this.settings.classWaitButtonClass);\n\t\t\t\t\tBX.type.isFunction(callback) && callback();\n\t\t\t\t}.bind(this));\n\t\t},\n\n\n\t\t/**\n\t\t *\n\t\t * @param {string} action\n\t\t * @param data\n\t\t */\n\t\tbackend: function(action, data)\n\t\t{\n\t\t\tconst analyticsLabel = this.analyticsLabel || {};\n\t\t\tthis.analyticsLabel = {};\n\n\t\t\treturn BX.ajax.runComponentAction(\n\t\t\t\t'bitrix:main.ui.filter',\n\t\t\t\taction,\n\t\t\t\t{\n\t\t\t\t\tmode: 'ajax',\n\t\t\t\t\tdata: data,\n\t\t\t\t\tanalyticsLabel: {\n\t\t\t\t\t\tFILTER_ID: this.getParam('FILTER_ID'),\n\t\t\t\t\t\tGRID_ID: this.getParam('GRID_ID'),\n\t\t\t\t\t\tPRESET_ID: data['data']['preset_id'],\n\t\t\t\t\t\tFIND: data['data'].hasOwnProperty('fields')\n\t\t\t\t\t\t\t&& data['data']['fields'].hasOwnProperty('FIND')\n\t\t\t\t\t\t\t&& !!data['data']['fields']['FIND'] ? \"Y\" : \"N\",\n\t\t\t\t\t\tROWS: BX.Type.isObject(data['data']['additional'])\n\t\t\t\t\t\t\t&& Object.keys(data['data']['additional']).length == 0 ? \"N\" : \"Y\",\n\t\t\t\t\t\t...analyticsLabel\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t);\n\t\t},\n\n\t\t/**\n\t\t * Sends analytics when limit is enabled\n\t\t */\n\t\tlimitAnalyticsSend: function ()\n\t\t{\n\t\t\tBX.ajax.runComponentAction(\n\t\t\t\t'bitrix:main.ui.filter',\n\t\t\t\t'limitAnalytics',\n\t\t\t\t{\n\t\t\t\t\tmode: 'ajax',\n\t\t\t\t\tdata: {},\n\t\t\t\t\tanalyticsLabel: {\n\t\t\t\t\t\tFILTER_ID: this.getParam('FILTER_ID'),\n\t\t\t\t\t\tLIMIT: this.getParam('FILTER_ID')\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t);\n\t\t},\n\n\t\t/**\n\t\t * Prepares event.path\n\t\t * @param event\n\t\t * @return {*}\n\t\t */\n\t\tprepareEvent: function(event)\n\t\t{\n\t\t\tvar i, x;\n\n\t\t\tif (!('path' in event) || !event.path.length)\n\t\t\t{\n\t\t\t\tevent.path = [event.target];\n\t\t\t\ti = 0;\n\n\t\t\t\twhile ((x = event.path[i++].parentNode) !== null)\n\t\t\t\t{\n\t\t\t\t\tevent.path.push(x);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn event;\n\t\t},\n\n\n\t\t/**\n\t\t * Restores removed preset values\n\t\t * VALUE_REQUIRED_MODE = true only\n\t\t */\n\t\trestoreRemovedPreset: function()\n\t\t{\n\t\t\tif (this.getParam('VALUE_REQUIRED_MODE'))\n\t\t\t{\n\t\t\t\tvar currentPreset = this.getParam('CURRENT_PRESET');\n\t\t\t\tif (BX.type.isPlainObject(currentPreset))\n\t\t\t\t{\n\t\t\t\t\tvar currentPresetId = currentPreset.ID;\n\t\t\t\t\tvar presetNode = this.getPreset().getPresetNodeById(currentPresetId);\n\t\t\t\t\tthis.getPreset().applyPreset(currentPresetId);\n\t\t\t\t\tthis.getPreset().activatePreset(presetNode);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\n\t\t/**\n\t\t * Checks that the event occurred on the scroll bar\n\t\t * @param {MouseEvent} event\n\t\t * @return {boolean}\n\t\t */\n\t\thasScrollClick: function(event)\n\t\t{\n\t\t\tvar x = 'clientX' in event ? event.clientX : 'x' in event ? event.x : 0;\n\t\t\treturn x >= document.documentElement.offsetWidth;\n\t\t},\n\n\n\t\t/**\n\t\t * Checks whether to use common presets\n\t\t * @return {boolean}\n\t\t */\n\t\tisUseCommonPresets: function()\n\t\t{\n\t\t\treturn !!this.getParam('COMMON_PRESETS_ID');\n\t\t},\n\n\n\t\t/**\n\t\t * Checks whether event is inside filter\n\t\t * @param {MouseEvent} event\n\t\t * @returns {boolean}\n\t\t */\n\t\tisInsideFilterEvent: function(event)\n\t\t{\n\t\t\tevent = this.prepareEvent(event);\n\t\t\treturn (event.path || []).some(function(current) {\n\t\t\t\treturn (\n\t\t\t\t\tBX.type.isDomNode(current) && (\n\t\t\t\t\t\tBX.hasClass(current, this.settings.classFilterContainer) ||\n\t\t\t\t\t\tBX.hasClass(current, this.settings.classSearchContainer) ||\n\t\t\t\t\t\tBX.hasClass(current, this.settings.classDefaultPopup) ||\n\t\t\t\t\t\tBX.hasClass(current, this.settings.classPopupOverlay) ||\n\t\t\t\t\t\tBX.hasClass(current, this.settings.classSidePanelContainer)\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t}, this);\n\t\t},\n\n\t\t_onDocumentClick: function(event)\n\t\t{\n\t\t\tvar popup = this.getPopup();\n\n\t\t\tif (!this.isInsideFilterEvent(event) && !this.hasScrollClick(event))\n\t\t\t{\n\t\t\t\tif (popup && popup.isShown())\n\t\t\t\t{\n\t\t\t\t\tthis.closePopup();\n\n\t\t\t\t\tif (this.getParam('VALUE_REQUIRED_MODE'))\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.restoreRemovedPreset();\n\t\t\t\t\t}\n\n\t\t\t\t\tif (this.getParam('VALUE_REQUIRED'))\n\t\t\t\t\t{\n\t\t\t\t\t\tif (!this.getSearch().getSquares().length)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tthis.getPreset().applyPinnedPreset();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tBX.onCustomEvent(window, 'BX.Main.Filter:blur', [this]);\n\t\t\t}\n\t\t},\n\n\t\t_onAddFieldClick: function(event)\n\t\t{\n\t\t\tevent.stopPropagation();\n\t\t\tevent.preventDefault();\n\n\t\t\tif (this.getParam('USE_CHECKBOX_LIST_FOR_SETTINGS_POPUP'))\n\t\t\t{\n\t\t\t\tBX.Runtime.loadExtension('ui.dialogs.checkbox-list').then(() => {\n\t\t\t\t\tif (BX.UI && BX.Type.isFunction(BX.UI.CheckboxList))\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.showFieldsSettingsCheckboxList();\n\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.showFieldsSettingsPopup();\n\t\t\t\t});\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.showFieldsSettingsPopup();\n\t\t},\n\n\t\tshowFieldsSettingsPopup: function(): void\n\t\t{\n\t\t\tconst popup = this.getFieldsPopup();\n\n\t\t\tif (popup && !popup.isShown())\n\t\t\t{\n\t\t\t\tthis.showFieldsPopup();\n\t\t\t\tthis.syncFields();\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.closeFieldListPopup();\n\t\t},\n\n\t\tshowFieldsSettingsCheckboxList: function(): void\n\t\t{\n\t\t\tif (this.checkboxListPopup)\n\t\t\t{\n\t\t\t\tthis.checkboxListPopup.show();\n\t\t\t\tthis.syncCheckboxFields();\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.getFieldsListPopupContent().then((content) => {\n\t\t\t\tconst { sections, categories, options } = this.getPreparedCheckboxListData(content);\n\t\t\t\tconst { enableFieldsSearch, enableHeadersSections } = this;\n\t\t\t\tconst context = {\n\t\t\t\t\tparentType: 'filter',\n\t\t\t\t}\n\n\t\t\t\tthis.checkboxListPopup = new BX.UI.CheckboxList({\n\t\t\t\t\tpopupOptions: {\n\t\t\t\t\t\twidth: this.settings.popupWidth,\n\t\t\t\t\t},\n\t\t\t\t\tlang: {\n\t\t\t\t\t\ttitle: Loc.getMessage('MAIN_UI_FILTER__FIELDS_SETTINGS_TITLE'),\n\t\t\t\t\t\tplaceholder: Loc.getMessage('MAIN_UI_FILTER__FIELD_SEARCH_PLACEHOLDER'),\n\t\t\t\t\t\temptyStateTitle: Loc.getMessage('MAIN_UI_FILTER__FIELD_EMPTY_STATE_TITLE'),\n\t\t\t\t\t\temptyStateDescription: Loc.getMessage('MAIN_UI_FILTER__FIELD_EMPTY_STATE_DESCRIPTION'),\n\t\t\t\t\t\tallSectionsDisabledTitle: Loc.getMessage('MAIN_UI_FILTER__FIELD_ALL_SECTIONS_DISABLED'),\n\t\t\t\t\t},\n\t\t\t\t\tsections,\n\t\t\t\t\tcategories,\n\t\t\t\t\toptions,\n\t\t\t\t\tevents: {\n\t\t\t\t\t\tonApply: (event) => this.onCheckboxListApply(event.data.fields),\n\t\t\t\t\t},\n\t\t\t\t\tparams: {\n\t\t\t\t\t\tdestroyPopupAfterClose: false,\n\t\t\t\t\t\tuseSearch: enableFieldsSearch,\n\t\t\t\t\t\tuseSectioning: enableHeadersSections,\n\t\t\t\t\t},\n\t\t\t\t\tcontext,\n\t\t\t\t});\n\n\t\t\t\tthis.checkboxListPopup.show();\n\t\t\t});\n\t\t},\n\n\t\tsyncCheckboxFields: function(): void\n\t\t{\n\t\t\tconst fields = this.getPreset().getFields();\n\t\t\tconst checkedFields = this.checkboxListPopup.getSelectedOptions();\n\n\t\t\tcheckedFields.forEach((fieldName: string) => {\n\t\t\t\tif (!fields.some((field) => field.dataset.name === fieldName))\n\t\t\t\t{\n\t\t\t\t\tthis.checkboxListPopup.handleOptionToggled(fieldName);\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\n\t\t/**\n\t\t * @param content\n\t\t * @returns {{options: [], categories: [], sections: []}}\n\t\t */\n\t\tgetPreparedCheckboxListData: function(content: Object[]): Object\n\t\t{\n\t\t\tconst defaultHeaderSection = this.getDefaultHeaderSection();\n\t\t\tconst sectionIds: Set<string> = new Set();\n\t\t\tconst headerSections = this.getHeadersSections();\n\n\t\t\tconst sections = [];\n\t\t\tconst categories = [];\n\t\t\tconst options = [];\n\n\t\t\tconst preset = this.getPreset();\n\t\t\tconst checkedFields = preset.getFields();\n\t\t\tconst defaultPresetFields = preset.parent.getParam('CURRENT_PRESET')?.FIELDS ?? [];\n\t\t\tconst restrictedFields = this.getParam('RESTRICTED_FIELDS', []);\n\n\t\t\tcontent.forEach((item: Object) => {\n\t\t\t\tconst sectionId = (item.sectionId.length ? item.sectionId : defaultHeaderSection?.id);\n\t\t\t\tif (this.enableHeadersSections && !sectionIds.has(sectionId))\n\t\t\t\t{\n\t\t\t\t\tconst title = headerSections[sectionId].name;\n\t\t\t\t\tsectionIds.add(sectionId);\n\t\t\t\t\tsections.push({\n\t\t\t\t\t\ttitle,\n\t\t\t\t\t\tkey: sectionId,\n\t\t\t\t\t\tvalue: true,\n\t\t\t\t\t});\n\t\t\t\t\tcategories.push({\n\t\t\t\t\t\ttitle,\n\t\t\t\t\t\tsectionKey: sectionId,\n\t\t\t\t\t\tkey: sectionId,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tconst { name } = item;\n\n\t\t\t\toptions.push({\n\t\t\t\t\ttitle: item.label,\n\t\t\t\t\tvalue: checkedFields.some((field: HTMLElement) => {\n\t\t\t\t\t\treturn field.dataset.name === name;\n\t\t\t\t\t}),\n\t\t\t\t\tcategoryKey: sectionId,\n\t\t\t\t\tdefaultValue: defaultPresetFields.some((defaultField) => defaultField.NAME === name),\n\t\t\t\t\tid: name,\n\t\t\t\t\tlocked: restrictedFields.includes(name),\n\t\t\t\t});\n\t\t\t});\n\n\t\t\treturn {\n\t\t\t\tsections,\n\t\t\t\tcategories,\n\t\t\t\toptions,\n\t\t\t};\n\t\t},\n\n\t\t/**\n\t\t * Synchronizes field list in popup and filter field list\n\t\t * @param {?{cache: boolean}} [options]\n\t\t */\n\t\tsyncFields: function(options)\n\t\t{\n\t\t\tif (BX.type.isPlainObject(options))\n\t\t\t{\n\t\t\t\tif (options.cache === false)\n\t\t\t\t{\n\t\t\t\t\tthis.fieldsPopupItems = null;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar fields = this.getPreset().getFields();\n\t\t\tvar items = this.getFieldsPopupItems();\n\t\t\tvar currentId, isNeedCheck;\n\n\t\t\tif (BX.type.isArray(items) && items.length)\n\t\t\t{\n\t\t\t\titems.forEach(function(current) {\n\t\t\t\t\tcurrentId = BX.data(current, 'name').replace('_datesel', '').replace('_numsel', '');\n\t\t\t\t\tisNeedCheck = fields.some(function(field) {\n\t\t\t\t\t\treturn BX.data(field, 'name') === currentId;\n\t\t\t\t\t});\n\t\t\t\t\tif (isNeedCheck)\n\t\t\t\t\t{\n\t\t\t\t\t\tBX.addClass(current, this.settings.classMenuItemChecked);\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tBX.removeClass(current, this.settings.classMenuItemChecked);\n\t\t\t\t\t}\n\t\t\t\t}, this);\n\t\t\t}\n\t\t},\n\n\n\t\t/**\n\t\t * Gets items of popup window with a list of available fields\n\t\t * @return {?HTMLElement[]}\n\t\t */\n\t\tgetFieldsPopupItems: function()\n\t\t{\n\t\t\tif (!BX.type.isArray(this.fieldsPopupItems))\n\t\t\t{\n\t\t\t\tvar popup = this.getFieldsPopup();\n\n\t\t\t\tif ('contentContainer' in popup && BX.type.isDomNode(popup.contentContainer))\n\t\t\t\t{\n\t\t\t\t\tthis.fieldsPopupItems = BX.Filter.Utils.getByClass(popup.contentContainer, this.settings.classMenuItem, true);\n\t\t\t\t}\n\n\t\t\t\tthis.prepareAnimation();\n\t\t\t}\n\n\t\t\treturn this.fieldsPopupItems;\n\t\t},\n\n\n\t\t/**\n\t\t * Gets popup container class name by popup items count\n\t\t * @param {int|string} itemsCount\n\t\t * @return {string}\n\t\t */\n\t\tgetFieldListContainerClassName: function(itemsCount)\n\t\t{\n\t\t\tvar popupColumnsCount = parseInt(this.settings.get('popupColumnsCount', 0), 10);\n\t\t\tif (popupColumnsCount > 0 && popupColumnsCount <= this.settings.maxPopupColumnCount)\n\t\t\t{\n\t\t\t\treturn this.settings.get('classPopupFieldList' + popupColumnsCount + 'Column');\n\t\t\t}\n\n\t\t\tvar containerClass = this.settings.classPopupFieldList1Column;\n\n\t\t\tif (itemsCount > 6 && itemsCount < 12)\n\t\t\t{\n\t\t\t\tcontainerClass = this.settings.classPopupFieldList2Column;\n\t\t\t}\n\n\t\t\tif (itemsCount > 12)\n\t\t\t{\n\t\t\t\tcontainerClass = this.settings.classPopupFieldList3Column;\n\t\t\t}\n\n\t\t\treturn containerClass;\n\t\t},\n\n\n\t\t/**\n\t\t * Prepares fields declarations\n\t\t * @param {object[]} fields\n\t\t * @return {object[]}\n\t\t */\n\t\tprepareFieldsDecl: function(fields)\n\t\t{\n\t\t\treturn (fields || []).map(function(item) {\n\t\t\t\treturn {\n\t\t\t\t\tblock: 'main-ui-filter-field-list-item',\n\t\t\t\t\tlabel: 'LABEL' in item ? item.LABEL : '',\n\t\t\t\t\tid: 'ID' in item ? item.ID : '',\n\t\t\t\t\tname: 'NAME' in item ? item.NAME : '',\n\t\t\t\t\titem: item,\n\t\t\t\t\tsectionId: 'SECTION_ID' in item ? item.SECTION_ID : '',\n\t\t\t\t\tonClick: BX.delegate(this._clickOnFieldListItem, this)\n\t\t\t\t};\n\t\t\t}, this);\n\t\t},\n\n\n\t\t/**\n\t\t * Gets lazy load field list\n\t\t * @return {BX.Promise}\n\t\t */\n\t\tgetLazyLoadFields: function()\n\t\t{\n\t\t\tconst listUrl = this.getParam('LAZY_LOAD')['GET_LIST'];\n\t\t\tconst p = new BX.Promise();\n\n\t\t\tif (BX.Type.isPlainObject(listUrl))\n\t\t\t{\n\t\t\t\tconst { component, action, data } = listUrl;\n\n\t\t\t\tBX.ajax.runComponentAction(component, action, { mode : 'ajax', data })\n\t\t\t\t\t.then((response) => {\n\t\t\t\t\t\tp.fulfill(response.data.fields ?? []);\n\t\t\t\t\t})\n\t\t\t\t;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tBX.ajax({\n\t\t\t\t\tmethod: 'GET',\n\t\t\t\t\turl: listUrl,\n\t\t\t\t\tdataType: 'json',\n\t\t\t\t\tonsuccess: (response) => p.fulfill(response),\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn p;\n\t\t},\n\n\n\t\t/**\n\t\t * Gets fields list popup content\n\t\t * @return {BX.Promise}\n\t\t */\n\t\tgetFieldsListPopupContent: function()\n\t\t{\n\t\t\tvar p = new BX.Promise();\n\t\t\tvar fields = this.getParam('FIELDS');\n\t\t\tvar fieldsCount = BX.type.isArray(fields) ? fields.length : 0;\n\n\t\t\tif (this.getParam('LAZY_LOAD'))\n\t\t\t{\n\t\t\t\tconst callback = function(response) {\n\t\t\t\t\tp.fulfill(this.getPopupContent(\n\t\t\t\t\t\tthis.settings.classPopupFieldList,\n\t\t\t\t\t\tthis.getFieldListContainerClassName(response.length),\n\t\t\t\t\t\tthis.prepareFieldsDecl(response)\n\t\t\t\t\t));\n\t\t\t\t}.bind(this);\n\n\t\t\t\tif (BX.type.isNotEmptyObject(this.getParam('LAZY_LOAD')['CONTROLLER']))\n\t\t\t\t{\n\t\t\t\t\tvar sourceComponentName = this.getParam('LAZY_LOAD')['CONTROLLER']['componentName'];\n\t\t\t\t\tvar sourceComponentSignedParameters = this.getParam('LAZY_LOAD')['CONTROLLER']['signedParameters'];\n\n\t\t\t\t\tBX.ajax.runAction(this.getParam('LAZY_LOAD')['CONTROLLER']['getList'], {\n\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\tfilterId: this.getParam('FILTER_ID'),\n\t\t\t\t\t\t\tcomponentName: (BX.type.isNotEmptyString(sourceComponentName) ? sourceComponentName : ''),\n\t\t\t\t\t\t\tsignedParameters: (BX.type.isNotEmptyString(sourceComponentSignedParameters) ? sourceComponentSignedParameters : '')\n\t\t\t\t\t\t}\n\t\t\t\t\t}).then(function(response) {\n\t\t\t\t\t\tcallback(response.data);\n\t\t\t\t\t}.bind(this), function (response) {\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tthis.getLazyLoadFields().then(callback);\n\t\t\t\t}\n\n\t\t\t\treturn p;\n\t\t\t}\n\n\t\t\tp.fulfill(this.getPopupContent(\n\t\t\t\tthis.settings.classPopupFieldList,\n\t\t\t\tthis.getFieldListContainerClassName(fieldsCount),\n\t\t\t\tthis.prepareFieldsDecl(fields)\n\t\t\t));\n\t\t\treturn p;\n\t\t},\n\n\t\tgetPopupContent: function(block: string, mix: string, content: Object[]): HTMLElement\n\t\t{\n\t\t\tif (\n\t\t\t\tthis.getParam('USE_CHECKBOX_LIST_FOR_SETTINGS_POPUP')\n\t\t\t\t&& BX.UI\n\t\t\t\t&& BX.Type.isFunction(BX.UI.CheckboxList)\n\t\t\t)\n\t\t\t{\n\t\t\t\treturn content;\n\t\t\t}\n\n\t\t\tconst wrapper = BX.Tag.render`<div></div>`;\n\t\t\tif (!this.enableHeadersSections)\n\t\t\t{\n\t\t\t\tconst fieldsContent = BX.decl({\n\t\t\t\t\tcontent: content,\n\t\t\t\t\tblock: block,\n\t\t\t\t\tmix: mix,\n\t\t\t\t});\n\t\t\t\tthis.setPopupElementWidthFromSettings(fieldsContent);\n\t\t\t\twrapper.appendChild(fieldsContent);\n\n\t\t\t\tif (this.enableFieldsSearch)\n\t\t\t\t{\n\t\t\t\t\tthis.preparePopupContentHeader(wrapper);\n\t\t\t\t}\n\n\t\t\t\treturn wrapper;\n\t\t\t}\n\n\t\t\tconst defaultHeaderSection = this.getDefaultHeaderSection();\n\t\t\tconst sections = {};\n\n\t\t\tcontent.forEach((item: Object) => {\n\t\t\t\tconst sectionId = (item.sectionId.length ? item.sectionId : defaultHeaderSection.id);\n\t\t\t\tif (sections[sectionId] === undefined)\n\t\t\t\t{\n\t\t\t\t\tsections[sectionId] = [];\n\t\t\t\t}\n\t\t\t\tsections[sectionId].push(item);\n\t\t\t});\n\n\t\t\tthis.preparePopupContentHeader(wrapper);\n\t\t\tthis.preparePopupContentFields(wrapper, sections, block, mix);\n\n\t\t\treturn wrapper;\n\t\t},\n\n\t\tasync onCheckboxListApply(selectedFields: string[]): void\n\t\t{\n\t\t\tconst presetFields = this.getPreset().getFields();\n\t\t\tconst oldFields = [];\n\n\t\t\tpresetFields.forEach((field) => {\n\t\t\t\toldFields.push(field.dataset.name);\n\t\t\t});\n\n\t\t\tif (this.isFieldsChangePrevented(selectedFields, oldFields))\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst fieldsData = await this.fetchFields(selectedFields, oldFields);\n\t\t\tif (!Type.isArray(fieldsData))\n\t\t\t{\n\t\t\t\tif (Type.isPlainObject(fieldsData) && fieldsData?.ERROR)\n\t\t\t\t{\n\t\t\t\t\tUI.Notification.Center.notify({\n\t\t\t\t\t\tcontent: fieldsData.ERROR\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfieldsData.forEach((field) => this.params.FIELDS.push(field));\n\n\t\t\tconst fieldsForAdd = selectedFields.filter((field) => !oldFields.includes(field));\n\t\t\tconst fieldsForRemove: string[] = oldFields.filter((field) => !selectedFields.includes(field));\n\n\t\t\tconst disableSaveFieldsSort = true;\n\n\t\t\tfieldsForAdd.forEach((fieldId) => {\n\t\t\t\tconst field = fieldsData.find((item) => item.NAME === fieldId);\n\t\t\t\tif (field)\n\t\t\t\t{\n\t\t\t\t\tthis.getPreset().addField(field, disableSaveFieldsSort);\n\n\t\t\t\t\t// // @todo check this\n\t\t\t\t\tif (Type.isString(field.HTML))\n\t\t\t\t\t{\n\t\t\t\t\t\tconst wrap = BX.create('div');\n\t\t\t\t\t\tthis.getHiddenElement().appendChild(wrap);\n\t\t\t\t\t\tBX.html(wrap, field.HTML);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tfieldsForRemove.forEach((fieldId: string) => {\n\t\t\t\tconst field = fieldsData.find((item) => item.NAME === fieldId);\n\t\t\t\tif (field)\n\t\t\t\t{\n\t\t\t\t\tthis.getPreset().removeField(field, disableSaveFieldsSort);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.saveFieldsSort();\n\t\t},\n\n\t\tasync fetchFields(fields: string[], oldFields: string[]): Promise\n\t\t{\n\t\t\tif (!this.getParam('LAZY_LOAD'))\n\t\t\t{\n\t\t\t\treturn this.getParam('FIELDS');\n\t\t\t}\n\n\t\t\t// @todo show loader ?\n\n\t\t\tconst ids: string[] = [...new Set([...fields, ...oldFields])];\n\t\t\tconst controller = this.getParam('LAZY_LOAD')['CONTROLLER'];\n\t\t\tif (controller)\n\t\t\t{\n\t\t\t\tconst {\n\t\t\t\t\tcomponentName,\n\t\t\t\t\tsignedParameters,\n\t\t\t\t\tgetFields,\n\t\t\t\t} = controller;\n\n\t\t\t\treturn new Promise((resolve) => {\n\t\t\t\t\tBX.ajax.runAction(\n\t\t\t\t\t\tgetFields,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\tfilterId: this.getParam('FILTER_ID'),\n\t\t\t\t\t\t\t\tids,\n\t\t\t\t\t\t\t\tcomponentName: (BX.type.isNotEmptyString(componentName) ? componentName : ''),\n\t\t\t\t\t\t\t\tsignedParameters: (BX.type.isNotEmptyString(signedParameters) ? signedParameters : ''),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t}).then((response) => resolve(response.data))\n\t\t\t\t\t;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn this.getLazyLoadFieldsByIds(ids);\n\t\t},\n\n\t\tasync getLazyLoadFieldsByIds(ids: string[]): Promise\n\t\t{\n\t\t\tconst getFieldsUrl = this.getParam('LAZY_LOAD')['GET_FIELDS'];\n\t\t\tconst url = BX.Uri.addParam(getFieldsUrl, { ids });\n\n\t\t\treturn new Promise((resolve) => {\n\t\t\t\tBX.ajax({\n\t\t\t\t\tmethod: 'get',\n\t\t\t\t\turl,\n\t\t\t\t\tdataType: 'json',\n\t\t\t\t\tonsuccess: (response) => resolve(response),\n\t\t\t\t});\n\t\t\t});\n\t\t},\n\n\t\tisFieldsChangePrevented: function(fields: string[], oldFields: string[]): boolean\n\t\t{\n\t\t\tconst event = new BX.Event.BaseEvent({\n\t\t\t\tdata: {\n\t\t\t\t\tfields,\n\t\t\t\t\toldFields,\n\t\t\t\t},\n\t\t\t});\n\n\t\t\tthis.emitter.emit('onBeforeChangeFilterItems', event);\n\n\t\t\treturn event.isDefaultPrevented();\n\t\t},\n\n\t\tpreparePopupContentHeader: function(wrapper: HTMLElement): void\n\t\t{\n\t\t\tconst headerWrapper = BX.Tag.render`\n\t\t\t\t<div class=\"main-ui-filter-popup-search-header-wrapper\">\n\t\t\t\t\t<div class=\"ui-form-row-inline\"></div>\n\t\t\t\t</div>\n\t\t\t`;\n\n\t\t\twrapper.prepend(headerWrapper);\n\n\t\t\tthis.preparePopupContentHeaderSections(headerWrapper);\n\t\t\tthis.preparePopupContentHeaderSearch(headerWrapper);\n\t\t},\n\n\t\tpreparePopupContentHeaderSections: function(headerWrapper): void\n\t\t{\n\t\t\tif (!this.enableHeadersSections)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst headerSectionsWrapper = BX.Tag.render`\n\t\t\t\t<div class=\"ui-form-row\">\n\t\t\t\t\t<div class=\"ui-form-content main-ui-filter-popup-search-section-wrapper\"></div>\n\t\t\t\t</div>\n\t\t\t`;\n\n\t\t\theaderWrapper.firstElementChild.appendChild(headerSectionsWrapper);\n\n\t\t\tconst headersSections = this.getHeadersSections();\n\t\t\tfor (let key in headersSections)\n\t\t\t{\n\t\t\t\tconst itemClass = this.settings.classPopupSearchSectionItemIcon\n\t\t\t\t + (headersSections[key].selected ? ` ${this.settings.classPopupSearchSectionItemIconActive}` : '');\n\n\t\t\t\tconst headerSectionItem = BX.Tag.render`\n\t\t\t\t\t<div class=\"main-ui-filter-popup-search-section-item\" data-ui-popup-filter-section-button=\"${key}\">\n\t\t\t\t\t\t<div class=\"${itemClass}\">\n\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t${BX.Text.encode(headersSections[key].name)}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t`;\n\t\t\t\tBX.bind(headerSectionItem, 'click', this.onFilterSectionClick.bind(this, headerSectionItem));\n\n\t\t\t\theaderSectionsWrapper.firstElementChild.appendChild(headerSectionItem);\n\t\t\t}\n\t\t},\n\n\t\tonFilterSectionClick: function(item: HTMLElement): void\n\t\t{\n\t\t\tconst activeClass = this.settings.classPopupSearchSectionItemIconActive;\n\t\t\tconst sectionId = item.dataset.uiPopupFilterSectionButton;\n\t\t\tconst section = document.querySelectorAll(\"[data-ui-popup-filter-section='\"+sectionId+\"']\");\n\t\t\tif (BX.Dom.hasClass(item.firstElementChild, activeClass))\n\t\t\t{\n\t\t\t\tBX.Dom.removeClass(item.firstElementChild, activeClass);\n\t\t\t\tBX.Dom.hide(section[0]);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tBX.Dom.addClass(item.firstElementChild, activeClass);\n\t\t\t\tBX.Dom.show(section[0]);\n\t\t\t}\n\t\t},\n\n\t\tpreparePopupContentHeaderSearch: function(headerWrapper: HTMLElement): void\n\t\t{\n\t\t\tif (!this.enableFieldsSearch)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst searchForm = BX.Tag.render`\n\t\t\t\t<div class=\"ui-form-row\">\n\t\t\t\t\t<div class=\"ui-form-content main-ui-filter-popup-search-input-wrapper\">\n\t\t\t\t\t\t<div class=\"ui-ctl ui-ctl-textbox ui-ctl-before-icon ui-ctl-after-icon\">\n\t\t\t\t\t\t\t<div class=\"ui-ctl-before ui-ctl-icon-search\"></div>\n\t\t\t\t\t\t\t<button class=\"ui-ctl-after ui-ctl-icon-clear\"></button>\n\t\t\t\t\t\t\t<input type=\"text\" class=\"ui-ctl-element ${this.settings.classPopupSearchSectionItem}\">\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t`;\n\t\t\theaderWrapper.firstElementChild.appendChild(searchForm);\n\t\t\tconst inputs = searchForm.getElementsByClassName(this.settings.classPopupSearchSectionItem);\n\t\t\tif (inputs.length)\n\t\t\t{\n\t\t\t\tconst input = inputs[0];\n\t\t\t\tBX.bind(input, 'input', this.onFilterSectionSearchInput.bind(this, input));\n\t\t\t\tBX.bind(input.previousElementSibling, 'click', this.onFilterSectionSearchInputClear.bind(this, input));\n\t\t\t}\n\t\t},\n\n\t\tpreparePopupContentFields: function(wrapper: HTMLElement, sections, block: string, mix): void\n\t\t{\n\t\t\tif (!this.enableHeadersSections)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst sectionsWrapper = BX.Tag.render`<div class=\"main-ui-filter-popup-search-sections-wrapper\"></div>`;\n\t\t\twrapper.appendChild(sectionsWrapper);\n\n\t\t\tfor (let key in sections)\n\t\t\t{\n\t\t\t\tconst sectionWrapper = BX.Tag.render`\n\t\t\t\t\t<div class=\"main-ui-filter-popup-section-wrapper\" data-ui-popup-filter-section=\"${key}\"></div>\n\t\t\t\t`;\n\t\t\t\tthis.setPopupElementWidthFromSettings(sectionWrapper);\n\n\t\t\t\tif (!this.getHeadersSectionParam(key, 'selected'))\n\t\t\t\t{\n\t\t\t\t\tsectionWrapper.setAttribute('hidden', '');\n\t\t\t\t}\n\n\t\t\t\tconst sectionTitle = BX.Tag.render`\n\t\t\t\t\t<h3 class=\"main-ui-filter-popup-title\">\n\t\t\t\t\t\t${BX.Text.encode(this.getHeadersSectionParam(key, 'name'))}\n\t\t\t\t\t</h3>\n\t\t\t\t`;\n\n\t\t\t\tconst fieldsBlock = BX.decl({\n\t\t\t\t\tblock: block,\n\t\t\t\t\tmix: mix,\n\t\t\t\t\tcontent: sections[key]\n\t\t\t\t});\n\n\t\t\t\tsectionWrapper.appendChild(sectionTitle);\n\t\t\t\tsectionWrapper.appendChild(fieldsBlock);\n\n\t\t\t\tsectionsWrapper.appendChild(sectionWrapper);\n\t\t\t}\n\t\t},\n\n\t\tprepareAnimation: function(): void\n\t\t{\n\t\t\tif (this.enableFieldsSearch)\n\t\t\t{\n\t\t\t\tthis.fieldsPopupItems.forEach(item =>\n\t\t\t\t{\n\t\t\t\t\tBX.bind(item, 'animationend', this.onAnimationEnd.bind(this, item));\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\n\t\tonAnimationEnd: function(item: HTMLElement): void\n\t\t{\n\t\t\titem.style.display = (\n\t\t\t\tBX.Dom.hasClass(item, this.settings.classPopupSearchFieldListItemHidden)\n\t\t\t\t? 'none'\n\t\t\t\t: 'inline-block'\n\t\t\t);\n\t\t},\n\n\t\tonFilterSectionSearchInput: function(input: HTMLElement): void\n\t\t{\n\t\t\tlet search = input.value;\n\t\t\tif (search.length)\n\t\t\t{\n\t\t\t\tsearch = search.toLowerCase();\n\t\t\t}\n\n\t\t\tthis.getFieldsPopupItems().forEach(function (item){\n\t\t\t\tconst title = item.innerText.toLowerCase();\n\n\t\t\t\tif (search.length && title.indexOf(search) === -1)\n\t\t\t\t{\n\t\t\t\t\tBX.Dom.removeClass(item,this.settings.classPopupSearchFieldListItemVisible);\n\t\t\t\t\tBX.Dom.addClass(item,this.settings.classPopupSearchFieldListItemHidden);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tBX.Dom.removeClass(item, this.settings.classPopupSearchFieldListItemHidden);\n\t\t\t\t\tBX.Dom.addClass(item, this.settings.classPopupSearchFieldListItemVisible);\n\t\t\t\t\titem.style.display = 'inline-block';\n\t\t\t\t}\n\t\t\t}.bind(this));\n\t\t},\n\n\t\tonFilterSectionSearchInputClear: function(input: HTMLElement): void\n\t\t{\n\t\t\tif (input.value.length)\n\t\t\t{\n\t\t\t\tinput.value = '';\n\t\t\t\tthis.onFilterSectionSearchInput(input);\n\t\t\t}\n\t\t},\n\n\t\tgetDefaultHeaderSection: function(): Object|null\n\t\t{\n\t\t\tconst headersSections = this.getHeadersSections();\n\n\t\t\tfor (let key in headersSections)\n\t\t\t{\n\t\t\t\tif ('selected' in headersSections[key] && headersSections[key].selected)\n\t\t\t\t{\n\t\t\t\t\treturn headersSections[key];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn null;\n\t\t},\n\n\t\tgetHeadersSections: function(): Array\n\t\t{\n\t\t\treturn this.getParam('HEADERS_SECTIONS');\n\t\t},\n\n\t\tgetHeadersSectionParam: function(sectionId: string, paramName: string, defaultValue: any): any\n\t\t{\n\t\t\tif (\n\t\t\t\tthis.getHeadersSections()[sectionId] !== undefined\n\t\t\t\t&& this.getHeadersSections()[sectionId][paramName] !== undefined\n\t\t\t)\n\t\t\t{\n\t\t\t\treturn this.getHeadersSections()[sectionId][paramName];\n\t\t\t}\n\t\t\treturn defaultValue;\n\t\t},\n\n\t\t/**\n\t\t * Gets field loader\n\t\t * @return {BX.Loader}\n\t\t */\n\t\tgetFieldLoader: function()\n\t\t{\n\t\t\tif (!this.fieldLoader)\n\t\t\t{\n\t\t\t\tthis.fieldLoader = new BX.Loader({mode: \"custom\", size: 18, offset: {left: \"5px\", top: \"5px\"}});\n\t\t\t}\n\n\t\t\treturn this.fieldLoader;\n\t\t},\n\n\t\t_clickOnFieldListItem: function(event)\n\t\t{\n\t\t\tvar target = event.target;\n\t\t\tvar data;\n\n\t\t\tif (!BX.hasClass(target, this.settings.classFieldListItem))\n\t\t\t{\n\t\t\t\ttarget = BX.findParent(target, {className: this.settings.classFieldListItem}, true, false);\n\t\t\t}\n\n\t\t\tif (BX.type.isDomNode(target))\n\t\t\t{\n\t\t\t\ttry {\n\t\t\t\t\tdata = JSON.parse(BX.data(target, 'item'));\n\t\t\t\t} catch (err) {}\n\n\t\t\t\tif (this.isFieldChangePrevented(\n\t\t\t\t\tdata,\n\t\t\t\t\tBX.hasClass(target, this.settings.classMenuItemChecked)\n\t\t\t\t))\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar p = new BX.Promise();\n\n\t\t\t\tif (this.getParam(\"LAZY_LOAD\"))\n\t\t\t\t{\n\t\t\t\t\tthis.getFieldLoader().show(target);\n\t\t\t\t\tvar label = target.querySelector(\".main-ui-select-inner-label\");\n\n\t\t\t\t\tif (label)\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel.classList.add(\"main-ui-no-before\");\n\t\t\t\t\t}\n\n\t\t\t\t\tvar callback = function(response) {\n\t\t\t\t\t\tp.fulfill(response);\n\t\t\t\t\t\tthis.getFieldLoader().hide();\n\t\t\t\t\t\tif (label)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel.classList.remove(\"main-ui-no-before\");\n\t\t\t\t\t\t}\n\t\t\t\t\t}.bind(this);\n\n\t\t\t\t\tif (BX.type.isNotEmptyObject(this.getParam('LAZY_LOAD')['CONTROLLER']))\n\t\t\t\t\t{\n\t\t\t\t\t\tvar sourceComponentName = this.getParam('LAZY_LOAD')['CONTROLLER']['componentName'];\n\t\t\t\t\t\tvar sourceComponentSignedParameters = this.getParam('LAZY_LOAD')['CONTROLLER']['signedParameters'];\n\n\t\t\t\t\t\tBX.ajax.runAction(this.getParam('LAZY_LOAD')['CONTROLLER']['getField'], {\n\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\tfilterId: this.getParam('FILTER_ID'),\n\t\t\t\t\t\t\t\tid: data.NAME,\n\t\t\t\t\t\t\t\tcomponentName: (BX.type.isNotEmptyString(sourceComponentName) ? sourceComponentName : ''),\n\t\t\t\t\t\t\t\tsignedParameters: (BX.type.isNotEmptyString(sourceComponentSignedParameters) ? sourceComponentSignedParameters : '')\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}).then(function(response) {\n\t\t\t\t\t\t\tcallback(response.data);\n\t\t\t\t\t\t}.bind(this), function (response) {\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.getLazyLoadField(data.NAME).then(callback);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tp.fulfill(data);\n\t\t\t\t}\n\n\t\t\t\tp.then(function(response) {\n\t\t\t\t\tthis.params.FIELDS.push(response);\n\n\t\t\t\t\tif (BX.hasClass(target, this.settings.classMenuItemChecked))\n\t\t\t\t\t{\n\t\t\t\t\t\tBX.removeClass(target, this.settings.classMenuItemChecked);\n\t\t\t\t\t\tthis.getPreset().removeField(response);\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tif (BX.type.isPlainObject(response))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tthis.getPreset().addField(response);\n\t\t\t\t\t\t\tBX.addClass(target, this.settings.classMenuItemChecked);\n\n\t\t\t\t\t\t\tif (BX.type.isString(response.HTML))\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tvar wrap = BX.create(\"div\");\n\t\t\t\t\t\t\t\tthis.getHiddenElement().appendChild(wrap);\n\t\t\t\t\t\t\t\tBX.html(wrap, response.HTML);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.syncFields();\n\t\t\t\t}.bind(this));\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * @return {boolean}\n\t\t */\n\t\tisFieldChangePrevented: function(data, isChecked)\n\t\t{\n\t\t\tlet eventParams;\n\t\t\tif (isChecked)\n\t\t\t{\n\t\t\t\teventParams = {\n\t\t\t\t\tfields: [],\n\t\t\t\t\toldFields: [data.NAME],\n\t\t\t\t};\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\teventParams = {\n\t\t\t\t\tfields: [data.NAME],\n\t\t\t\t\toldFields: [],\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tconst event = new BX.Event.BaseEvent({\n\t\t\t\tdata: eventParams,\n\t\t\t});\n\n\t\t\tthis.emitter.emit('onBeforeChangeFilterItems', event);\n\n\t\t\treturn event.isDefaultPrevented();\n\t\t},\n\n\t\tgetHiddenElement: function()\n\t\t{\n\t\t\tif (!this.hiddenElement)\n\t\t\t{\n\t\t\t\tthis.hiddenElement = BX.create(\"div\");\n\t\t\t\tdocument.body.appendChild(this.hiddenElement);\n\t\t\t}\n\n\t\t\treturn this.hiddenElement;\n\t\t},\n\n\n\t\t/**\n\t\t * Gets lazy load fields\n\t\t * @param id\n\t\t * @return {BX.Promise}\n\t\t */\n\t\tgetLazyLoadField: function(id)\n\t\t{\n\t\t\tconst fieldUrl = this.getParam('LAZY_LOAD')['GET_FIELD'];\n\t\t\tconst p = new BX.Promise();\n\n\t\t\tif (BX.Type.isPlainObject(fieldUrl))\n\t\t\t{\n\t\t\t\tconst { component, action, data } = fieldUrl;\n\t\t\t\tdata.fieldId = id;\n\n\t\t\t\tBX.ajax.runComponentAction(component, action, { mode: 'ajax', data })\n\t\t\t\t\t.then((response) => {\n\t\t\t\t\t\tp.fulfill(response.data.field ?? []);\n\t\t\t\t\t})\n\t\t\t\t;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tBX.ajax({\n\t\t\t\t\tmethod: 'get',\n\t\t\t\t\turl: BX.util.add_url_param(fieldUrl, { id }),\n\t\t\t\t\tdataType: 'json',\n\t\t\t\t\tonsuccess: (response) => p.fulfill(response),\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn p;\n\t\t},\n\n\n\t\t/**\n\t\t * Shows fields list popup\n\t\t */\n\t\tshowFieldsPopup: function()\n\t\t{\n\t\t\tvar popup = this.getFieldsPopup();\n\t\t\tthis.adjustFieldListPopupPosition();\n\t\t\tpopup.show();\n\t\t},\n\n\n\t\t/**\n\t\t * Closes fields list popup\n\t\t */\n\t\tcloseFieldListPopup: function()\n\t\t{\n\t\t\tif (\n\t\t\t\tthis.getParam('USE_CHECKBOX_LIST_FOR_SETTINGS_POPUP')\n\t\t\t\t&& BX.UI\n\t\t\t\t&& BX.Type.isFunction(BX.UI.CheckboxList)\n\t\t\t)\n\t\t\t{\n\t\t\t\tif (this.checkboxListPopup)\n\t\t\t\t{\n\t\t\t\t\tthis.checkboxListPopup.destroy();\n\t\t\t\t\tthis.checkboxListPopup = null;\n\t\t\t\t}\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst popup = this.getFieldsPopup();\n\t\t\tpopup.close();\n\t\t},\n\n\n\t\t/**\n\t\t * Adjusts field list popup position\n\t\t */\n\t\tadjustFieldListPopupPosition: function()\n\t\t{\n\t\t\tvar popup = this.getFieldsPopup();\n\t\t\tvar pos = BX.pos(this.getAddField());\n\t\t\tpos.forceBindPosition = true;\n\t\t\tpopup.adjustPosition(pos);\n\t\t},\n\n\n\t\t/**\n\t\t * Gets field list popup instance\n\t\t * @return {BX.PopupWindow}\n\t\t */\n\t\tgetFieldsPopup: function()\n\t\t{\n\t\t\tvar bindElement = (this.settings.get('showPopupInCenter', false) ? null : this.getAddField());\n\n\t\t\tif (!this.fieldsPopup)\n\t\t\t{\n\t\t\t\tthis.fieldsPopup = new BX.PopupWindow(\n\t\t\t\t\tthis.getParam('FILTER_ID') + '_fields_popup',\n\t\t\t\t\tbindElement,\n\t\t\t\t\t{\n\t\t\t\t\t\tautoHide : true,\n\t\t\t\t\t\toffsetTop : 4,\n\t\t\t\t\t\toffsetLeft : 0,\n\t\t\t\t\t\tlightShadow : true,\n\t\t\t\t\t\tcloseIcon : (bindElement === null),\n\t\t\t\t\t\tcloseByEsc : (bindElement === null),\n\t\t\t\t\t\tnoAllPaddings: true,\n\t\t\t\t\t\tzIndex: 13\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\tthis.fieldsPopupLoader = new BX.Loader({target: this.fieldsPopup.contentContainer});\n\t\t\t\tthis.fieldsPopupLoader.show();\n\t\t\t\tthis.setPopupElementWidthFromSettings(this.fieldsPopup.contentContainer);\n\t\t\t\tthis.fieldsPopup.contentContainer.style.height = \"330px\";\n\t\t\t\tthis.getFieldsListPopupContent().then(function(res) {\n\t\t\t\t\tthis.fieldsPopup.contentContainer.removeAttribute(\"style\");\n\t\t\t\t\tthis.fieldsPopupLoader.hide();\n\t\t\t\t\tthis.fieldsPopup.setContent(res);\n\t\t\t\t\tthis.syncFields({cache: false});\n\t\t\t\t\tthis.adjustFieldListPopupPosition();\n\t\t\t\t}.bind(this));\n\t\t\t}\n\n\t\t\treturn this.fieldsPopup;\n\t\t},\n\n\t\tsetPopupElementWidthFromSettings: function(element: HTMLElement): void\n\t\t{\n\t\t\telement.style.width = this.settings.popupWidth + 'px';\n\t\t},\n\n\t\t_onAddPresetClick: function()\n\t\t{\n\t\t\tthis.enableAddPreset();\n\t\t},\n\n\n\t\t/**\n\t\t * Enables shows wait spinner for button\n\t\t * @param {HTMLElement} button\n\t\t */\n\t\tenableWaitSate: function(button)\n\t\t{\n\t\t\t!!button && BX.addClass(button, this.settings.classWaitButtonClass);\n\t\t},\n\n\n\t\t/**\n\t\t * Disables shows wait spinner for button\n\t\t * @param {HTMLElement} button\n\t\t */\n\t\tdisableWaitState: function(button)\n\t\t{\n\t\t\t!!button && BX.removeClass(button, this.settings.classWaitButtonClass);\n\t\t},\n\n\t\t_onSaveButtonClick: function()\n\t\t{\n\t\t\tvar forAll = !!this.getSaveForAllCheckbox() && this.getSaveForAllCheckbox().checked;\n\t\t\tvar input = this.getPreset().getAddPresetFieldInput();\n\t\t\tvar mask = input.parentNode.querySelector(\".main-ui-filter-edit-mask\");\n\t\t\tvar presetName;\n\n\t\t\tfunction onAnimationEnd(event)\n\t\t\t{\n\t\t\t\tif (event.animationName === \"fieldError\")\n\t\t\t\t{\n\t\t\t\t\tevent.currentTarget.removeEventListener(\"animationend\", onAnimationEnd);\n\t\t\t\t\tevent.currentTarget.removeEventListener(\"oAnimationEnd\", onAnimationEnd);\n\t\t\t\t\tevent.currentTarget.removeEventListener(\"webkitAnimationEnd\", onAnimationEnd);\n\t\t\t\t\tevent.currentTarget.classList.remove(\"main-ui-filter-error\");\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction showLengthError(mask)\n\t\t\t{\n\t\t\t\tmask.addEventListener(\"animationend\", onAnimationEnd);\n\t\t\t\tmask.addEventListener(\"oAnimationEnd\", onAnimationEnd);\n\t\t\t\tmask.addEventListener(\"webkitAnimationEnd\", onAnimationEnd);\n\t\t\t\tmask.classList.add(\"main-ui-filter-error\");\n\t\t\t\tvar promise = new BX.Promise();\n\t\t\t\tpromise.fulfill(true);\n\t\t\t\treturn promise;\n\t\t\t}\n\n\t\t\tthis.enableWaitSate(this.getFindButton());\n\n\t\t\tif (this.isAddPresetEnabled() && !forAll)\n\t\t\t{\n\t\t\t\tpresetName = input.value;\n\n\t\t\t\tif (presetName.length)\n\t\t\t\t{\n\t\t\t\t\tthis.savePreset();\n\t\t\t\t\tthis.disableAddPreset();\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tshowLengthError(mask).then(function() {\n\t\t\t\t\t\tinput.focus();\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (this.isEditEnabled())\n\t\t\t{\n\t\t\t\tvar preset = this.getPreset();\n\t\t\t\tvar currentPresetId = preset.getCurrentPresetId();\n\t\t\t\tvar presetNode = preset.getPresetNodeById(currentPresetId);\n\t\t\t\tvar presetNameInput = preset.getPresetInput(presetNode);\n\n\t\t\t\tif (\n\t\t\t\t\tpresetNameInput.value.length === 0\n\t\t\t\t\t&& currentPresetId === 'default_filter'\n\t\t\t\t)\n\t\t\t\t{\n\t\t\t\t\tvar currentPresetData = preset.getCurrentPresetData();\n\t\t\t\t\tif (currentPresetData)\n\t\t\t\t\t{\n\t\t\t\t\t\tBX.Dom.attr(presetNameInput, 'value', currentPresetData.TITLE);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (presetNameInput.value.length > 0)\n\t\t\t\t{\n\t\t\t\t\tpreset.updateEditablePreset(currentPresetId);\n\t\t\t\t\tthis.saveUserSettings(forAll);\n\n\t\t\t\t\tif (!forAll)\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.disableEdit();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tvar presetMask = presetNode.querySelector(\".main-ui-filter-edit-mask\");\n\t\t\t\t\tshowLengthError(presetMask).then(function() {\n\t\t\t\t\t\tpresetNameInput.focus();\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t_onCancelButtonClick: function()\n\t\t{\n\t\t\tthis.setIsSetOutsideState(false);\n\t\t\tthis.disableAddPreset();\n\t\t\tthis.getPreset().clearAddPresetFieldInput();\n\t\t\tthis.disableEdit();\n\t\t\t!!this.getSaveForAllCheckbox() && (this.getSaveForAllCheckbox().checked = null);\n\t\t},\n\n\t\t_onGridReady: function(grid)\n\t\t{\n\t\t\tif (!this.grid && grid.getContainerId() === this.getParam('GRID_ID'))\n\t\t\t{\n\t\t\t\tthis.grid = grid;\n\t\t\t}\n\t\t},\n\n\t\t_onFilterMousedown: function(event)\n\t\t{\n\t\t\tvar target = event.target;\n\n\t\t\tif (this.getFields().isDragButton(target))\n\t\t\t{\n\t\t\t\tvar inputs = BX.Filter.Utils.getByTag(target.parentNode, 'input', true);\n\n\t\t\t\t(inputs || []).forEach(function(item) {\n\t\t\t\t\tBX.fireEvent(item, 'blur');\n\t\t\t\t});\n\n\t\t\t\tBX.fireEvent(this.getFilter(), 'click');\n\t\t\t}\n\t\t},\n\n\t\t_onFilterClick: function(event)\n\t\t{\n\t\t\tvar Fields = this.getFields();\n\t\t\tvar Presets = this.getPreset();\n\t\t\tvar field;\n\n\t\t\tif (Fields.isFieldDelete(event.target))\n\t\t\t{\n\t\t\t\tfield = Fields.getField(event.target);\n\t\t\t\tPresets.removeField(field);\n\t\t\t}\n\n\t\t\tif (Fields.isFieldValueDelete(event.target))\n\t\t\t{\n\t\t\t\tfield = Fields.getField(event.target);\n\t\t\t\tFields.clearFieldValue(field);\n\t\t\t}\n\t\t},\n\n\n\t\t/**\n\t\t * Gets filter buttons container\n\t\t * @return {?HTMLElement}\n\t\t */\n\t\tgetButtonsContainer: function()\n\t\t{\n\t\t\treturn BX.Filter.Utils.getByClass(this.getFilter(), this.settings.classButtonsContainer);\n\t\t},\n\n\n\t\t/**\n\t\t * Gets save button element\n\t\t * @return {?HTMLElement}\n\t\t */\n\t\tgetSaveButton: function()\n\t\t{\n\t\t\treturn BX.Filter.Utils.getByClass(this.getFilter(), this.settings.classSaveButton);\n\t\t},\n\n\n\t\t/**\n\t\t * Gets cancel element\n\t\t * @return {?HTMLElement}\n\t\t */\n\t\tgetCancelButton: function()\n\t\t{\n\t\t\treturn BX.Filter.Utils.getByClass(this.getFilter(), this.settings.classCancelButton);\n\t\t},\n\n\n\t\t/**\n\t\t * Gets find button element\n\t\t * @return {?HTMLElement}\n\t\t */\n\t\tgetFindButton: function()\n\t\t{\n\t\t\treturn BX.Filter.Utils.getByClass(this.getFilter(), this.settings.classFindButton);\n\t\t},\n\n\n\t\t/**\n\t\t * Gets reset button element\n\t\t * @return {?HTMLElement}\n\t\t */\n\t\tgetResetButton: function()\n\t\t{\n\t\t\treturn BX.Filter.Utils.getByClass(this.getFilter(), this.settings.classResetButton);\n\t\t},\n\n\n\t\t/**\n\t\t * Gets add preset button\n\t\t * @return {?HTMLElement}\n\t\t */\n\t\tgetAddPresetButton: function()\n\t\t{\n\t\t\treturn BX.Filter.Utils.getByClass(this.getFilter(), this.settings.classAddPresetButton);\n\t\t},\n\n\n\t\t/**\n\t\t * Checks that add preset mode enabled\n\t\t * @return {boolean}\n\t\t */\n\t\tisAddPresetEnabled: function()\n\t\t{\n\t\t\treturn this.isAddPresetModeState;\n\t\t},\n\n\n\t\t/**\n\t\t * Enables add preset mode\n\t\t */\n\t\tenableAddPreset: function()\n\t\t{\n\t\t\tvar Preset = this.getPreset();\n\t\t\tvar addPresetField = Preset.getAddPresetField();\n\t\t\tvar addPresetFieldInput = Preset.getAddPresetFieldInput();\n\t\t\tvar buttonsContainer = this.getButtonsContainer();\n\n\t\t\tBX.show(addPresetField);\n\t\t\tBX.show(buttonsContainer);\n\t\t\tBX.hide(this.getPresetButtonsContainer());\n\t\t\tthis.hideForAllCheckbox();\n\n\t\t\tif (BX.type.isDomNode(addPresetFieldInput))\n\t\t\t{\n\t\t\t\taddPresetFieldInput.focus();\n\t\t\t}\n\n\t\t\tBX.addClass(this.getSidebarControlsContainer(), this.settings.classDisabled);\n\n\t\t\tthis.isAddPresetModeState = true;\n\t\t},\n\n\n\t\t/**\n\t\t * Disables add preset mode\n\t\t */\n\t\tdisableAddPreset: function()\n\t\t{\n\t\t\tvar Preset = this.getPreset();\n\t\t\tvar addPresetField = Preset.getAddPresetField();\n\t\t\tvar buttonsContainer = this.getButtonsContainer();\n\n\t\t\tBX.hide(addPresetField);\n\t\t\tBX.hide(buttonsContainer);\n\t\t\tBX.show(this.getPresetButtonsContainer());\n\t\t\tthis.showForAllCheckbox();\n\n\t\t\tPreset.getAddPresetFieldInput().value = '';\n\n\t\t\tBX.removeClass(this.getSidebarControlsContainer(), this.settings.classDisabled);\n\n\t\t\tthis.isAddPresetModeState = false;\n\t\t},\n\n\n\t\t/**\n\t\t * Gets control from field list\n\t\t * @return {?HTMLElement[]}\n\t\t */\n\t\tgetControls: function()\n\t\t{\n\t\t\tvar container = this.getFieldListContainer();\n\t\t\tvar controls = null;\n\n\t\t\tif (BX.type.isDomNode(container))\n\t\t\t{\n\t\t\t\tcontrols = BX.Filter.Utils.getByClass(container, this.settings.classControl, true);\n\t\t\t}\n\n\t\t\treturn controls;\n\t\t},\n\n\n\t\t/**\n\t\t * Gets filter fields\n\t\t * @return {?HTMLElement[]}\n\t\t */\n\t\tgetFilterFields: function()\n\t\t{\n\t\t\tvar container = this.getFieldListContainer();\n\t\t\tvar fields = [];\n\t\t\tvar groups = [];\n\n\t\t\tif (BX.type.isDomNode(container))\n\t\t\t{\n\t\t\t\tfields = BX.Filter.Utils.getByClass(container, this.settings.classField, true);\n\t\t\t\tgroups = BX.Filter.Utils.getByClass(container, this.settings.classFieldGroup, true);\n\n\t\t\t\tif (!BX.type.isArray(fields))\n\t\t\t\t{\n\t\t\t\t\tfields = [];\n\t\t\t\t}\n\n\t\t\t\tif (BX.type.isArray(groups))\n\t\t\t\t{\n\t\t\t\t\tgroups.forEach(function(current) {\n\t\t\t\t\t\tfields.push(current);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn fields;\n\t\t},\n\n\n\t\t/**\n\t\t * Gets filter fields values\n\t\t * @return {object}\n\t\t */\n\t\tgetFilterFieldsValues: function()\n\t\t{\n\t\t\tvar fields = this.getPreset().getFields();\n\t\t\tvar Search = this.getSearch();\n\t\t\tvar values = {};\n\t\t\tvar type, name;\n\n\t\t\tvalues['FIND'] = Search.getInput().value;\n\n\t\t\tif (BX.type.isArray(fields) && fields.length)\n\t\t\t{\n\t\t\t\tfields.forEach(function(current) {\n\t\t\t\t\tvar additionalFilter = BX.Filter.AdditionalFilter.getInstance().getFilter(current);\n\t\t\t\t\tif (additionalFilter)\n\t\t\t\t\t{\n\t\t\t\t\t\tObject.assign(values, additionalFilter);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\ttype = BX.data(current, 'type');\n\t\t\t\t\tname = BX.data(current, 'name');\n\n\t\t\t\t\tswitch (type) {\n\t\t\t\t\t\tcase this.types.STRING : {\n\t\t\t\t\t\t\tthis.prepareControlStringValue(values, current);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcase this.types.TEXTAREA : {\n\t\t\t\t\t\t\tthis.prepareControlTextareaValue(values, current);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcase this.types.NUMBER : {\n\t\t\t\t\t\t\tthis.prepareControlNumberValue(values, name, current);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcase this.types.DATE : {\n\t\t\t\t\t\t\tthis.prepareControlDateValue(values, name, current);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcase this.types.CUSTOM_DATE : {\n\t\t\t\t\t\t\tthis.prepareControlCustomDateValue(values, name, current);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcase this.types.SELECT : {\n\t\t\t\t\t\t\tthis.prepareControlSelectValue(values, name, current);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcase this.types.MULTI_SELECT : {\n\t\t\t\t\t\t\tthis.prepareControlMultiselectValue(values, name, current);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcase this.types.DEST_SELECTOR:\n\t\t\t\t\t\tcase this.types.CUSTOM_ENTITY:\n\t\t\t\t\t\tcase this.types.ENTITY_SELECTOR: {\n\t\t\t\t\t\t\tthis.prepareControlCustomEntityValue(values, name, current);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcase this.types.CUSTOM : {\n\t\t\t\t\t\t\tthis.prepareControlCustomValue(values, name, current);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tdefault : {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}, this);\n\t\t\t}\n\n\t\t\treturn values;\n\t\t},\n\n\n\t\t/**\n\t\t * @param values\n\t\t * @param name\n\t\t * @param field\n\t\t */\n\t\tprepareControlCustomEntityValue: function(values, name, field)\n\t\t{\n\t\t\tvar squares = this.fetchSquares(field);\n\t\t\tvar squaresData = this.fetchSquaresData(squares);\n\t\t\tvar isMultiple = BX.Main.ui.CustomEntity.isMultiple(field);\n\n\t\t\tvalues[name] = '';\n\t\t\tvalues[name + '_label'] = '';\n\n\t\t\tif (isMultiple)\n\t\t\t{\n\t\t\t\tvalues[name] = [];\n\t\t\t\tvalues[name + '_label'] = [];\n\n\t\t\t\t!!squaresData && squaresData.forEach(function(item) {\n\t\t\t\t\tvalues[name].push(item._value.toString());\n\t\t\t\t\tvalues[name + '_label'].push(item._label.toString());\n\t\t\t\t});\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tif (squaresData.length)\n\t\t\t\t{\n\t\t\t\t\tvalues[name] = squaresData[0]._value.toString();\n\t\t\t\t\tvalues[name + '_label'] = squaresData[0]._label.toString();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\n\t\t/**\n\t\t * @param {HTMLElement} field\n\t\t * @return {HTMLElement[]}\n\t\t */\n\t\tfetchSquares: function(field)\n\t\t{\n\t\t\treturn !!field ? BX.Filter.Utils.getByClass(field, this.settings.classSquare, true) : [];\n\t\t},\n\n\n\t\t/**\n\t\t * @param {HTMLElement[]} squares\n\t\t * @return {object[]}\n\t\t */\n\t\tfetchSquaresData: function(squares)\n\t\t{\n\t\t\treturn squares.map(function(square) {\n\t\t\t\treturn JSON.parse(BX.data(square, 'item'));\n\t\t\t}, this);\n\t\t},\n\n\n\t\t/**\n\t\t * @param {object} values\n\t\t * @param {string} name\n\t\t * @param {HTMLElement} field\n\t\t */\n\t\tprepareControlCustomValue: function(values, name, field)\n\t\t{\n\t\t\tvar stringFields = BX.Filter.Utils.getByTag(field, 'input', true);\n\n\t\t\tvalues[name] = '';\n\n\t\t\tif (BX.type.isArray(stringFields))\n\t\t\t{\n\t\t\t\tstringFields.forEach(function(current) {\n\t\t\t\t\tif (BX.type.isNotEmptyString(current.name))\n\t\t\t\t\t{\n\t\t\t\t\t\tvalues[current.name] = current.value;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\n\t\tprepareControlMultiselectValue: function(values, name, field)\n\t\t{\n\t\t\tvar select = BX.Filter.Utils.getByClass(field, this.settings.classMultiSelect);\n\t\t\tvar value = JSON.parse(BX.data(select, 'value'));\n\n\t\t\tvalues[name] = '';\n\n\t\t\tif (BX.type.isArray(value) && value.length)\n\t\t\t{\n\t\t\t\tvalues[name] = {};\n\t\t\t\tvalue.forEach(function(current, index) {\n\t\t\t\t\tvalues[name][index] = current.VALUE;\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\n\t\tprepareControlSelectValue: function(values, name, field)\n\t\t{\n\t\t\tvar select = BX.Filter.Utils.getByClass(field, this.settings.classSelect);\n\t\t\tvar value = JSON.parse(BX.data(select, 'value'));\n\n\t\t\tvalues[name] = value.VALUE;\n\t\t},\n\n\t\tprepareControlCustomDateValue: function(values, name, field)\n\t\t{\n\t\t\tvar daysControl = field.querySelector(\"[data-name=\\\"\"+name + '_days'+\"\\\"]\");\n\n\t\t\tif (daysControl)\n\t\t\t{\n\t\t\t\tvar daysValue = JSON.parse(daysControl.dataset.value);\n\n\t\t\t\tvalues[name + '_days'] = daysValue.map(function(item) {\n\t\t\t\t\treturn item.VALUE;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tvar monthsControl = field.querySelector(\"[data-name=\\\"\"+name + '_months'+\"\\\"]\");\n\n\t\t\tif (monthsControl)\n\t\t\t{\n\t\t\t\tvar monthsValue = JSON.parse(monthsControl.dataset.value);\n\n\t\t\t\tvalues[name + '_months'] = monthsValue.map(function(item) {\n\t\t\t\t\treturn item.VALUE;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tvar yearsControl = field.querySelector(\"[data-name=\\\"\"+name + '_years'+\"\\\"]\");\n\n\t\t\tif (yearsControl)\n\t\t\t{\n\t\t\t\tvar yearsValue = JSON.parse(yearsControl.dataset.value);\n\n\t\t\t\tvalues[name + '_years'] = yearsValue.map(function(item) {\n\t\t\t\t\treturn item.VALUE;\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\n\t\tprepareControlDateValue: function(values, name, field, withAdditional)\n\t\t{\n\t\t\tvar additionalFieldsContainer = field.querySelector('.main-ui-filter-additional-fields-container');\n\n\t\t\tif (additionalFieldsContainer && !withAdditional)\n\t\t\t{\n\t\t\t\tBX.remove(additionalFieldsContainer);\n\t\t\t}\n\n\t\t\tvar select = BX.Filter.Utils.getByClass(field, this.settings.classSelect);\n\t\t\tvar yearsSwitcher = field.querySelector(\".main-ui-select[data-name*=\\\"_allow_year\\\"]\");\n\t\t\tvar selectName = name + this.settings.datePostfix;\n\t\t\tvar fromName = name + this.settings.fromPostfix;\n\t\t\tvar toName = name + this.settings.toPostfix;\n\t\t\tvar daysName = name + this.settings.daysPostfix;\n\t\t\tvar monthName = name + this.settings.monthPostfix;\n\t\t\tvar quarterName = name + this.settings.quarterPostfix;\n\t\t\tvar yearName = name + this.settings.yearPostfix;\n\t\t\tvar yearsSwitcherName = name + \"_allow_year\";\n\t\t\tvar selectValue, stringFields, controls, controlName, yearsSwitcherValue;\n\n\t\t\tvalues[selectName] = '';\n\t\t\tvalues[fromName] = '';\n\t\t\tvalues[toName] = '';\n\t\t\tvalues[daysName] = '';\n\t\t\tvalues[monthName] = '';\n\t\t\tvalues[quarterName] = '';\n\t\t\tvalues[yearName] = '';\n\n\t\t\tvar input = field.querySelector(\".main-ui-date-input\");\n\n\t\t\tif (input && input.dataset.isValid === \"false\")\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tselectValue = JSON.parse(BX.data(select, 'value'));\n\t\t\tvalues[selectName] = selectValue.VALUE;\n\n\t\t\tif (yearsSwitcher)\n\t\t\t{\n\t\t\t\tyearsSwitcherValue = JSON.parse(BX.data(yearsSwitcher, 'value'));\n\t\t\t\tvalues[yearsSwitcherName] = yearsSwitcherValue.VALUE;\n\t\t\t}\n\n\t\t\tswitch (selectValue.VALUE) {\n\t\t\t\tcase this.dateTypes.EXACT : {\n\t\t\t\t\tstringFields = BX.Filter.Utils.getByClass(field, this.settings.classDateInput);\n\t\t\t\t\tvalues[fromName] = stringFields.value;\n\t\t\t\t\tvalues[toName] = stringFields.value;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tcase this.dateTypes.QUARTER : {\n\t\t\t\t\tcontrols = BX.Filter.Utils.getByClass(field, this.settings.classControl, true);\n\n\t\t\t\t\tif (BX.type.isArray(controls))\n\t\t\t\t\t{\n\t\t\t\t\t\tcontrols.forEach(function(current) {\n\t\t\t\t\t\t\tcontrolName = BX.data(current, 'name');\n\n\t\t\t\t\t\t\tif (controlName && controlName.indexOf('_quarter') !== -1)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tvalues[quarterName] = JSON.parse(BX.data(current, 'value')).VALUE;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tcontrolName\n\t\t\t\t\t\t\t\t&& controlName.endsWith('_year')\n\t\t\t\t\t\t\t\t&& !controlName.endsWith('_allow_year')\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tvalues[yearName] = JSON.parse(BX.data(current, 'value')).VALUE;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}, this);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tcase this.dateTypes.YEAR : {\n\t\t\t\t\tcontrols = BX.Filter.Utils.getByClass(field, this.settings.classControl, true);\n\n\t\t\t\t\tif (BX.type.isArray(controls))\n\t\t\t\t\t{\n\t\t\t\t\t\tcontrols.forEach(function(current) {\n\t\t\t\t\t\t\tcontrolName = BX.data(current, 'name');\n\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tcontrolName\n\t\t\t\t\t\t\t\t&& controlName.endsWith('_year')\n\t\t\t\t\t\t\t\t&& !controlName.endsWith('_allow_year')\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tvalues[yearName] = JSON.parse(BX.data(current, 'value')).VALUE;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}, this);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tcase this.dateTypes.MONTH : {\n\t\t\t\t\tcontrols = BX.Filter.Utils.getByClass(field, this.settings.classControl, true);\n\n\t\t\t\t\tif (BX.type.isArray(controls))\n\t\t\t\t\t{\n\t\t\t\t\t\tcontrols.forEach(function(current) {\n\t\t\t\t\t\t\tcontrolName = BX.data(current, 'name');\n\n\t\t\t\t\t\t\tif (controlName && controlName.indexOf('_month') !== -1)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tvalues[monthName] = JSON.parse(BX.data(current, 'value')).VALUE;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tcontrolName\n\t\t\t\t\t\t\t\t&& controlName.endsWith('_year')\n\t\t\t\t\t\t\t\t&& !controlName.endsWith('_allow_year')\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tvalues[yearName] = JSON.parse(BX.data(current, 'value')).VALUE;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}, this);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tcase this.additionalDateTypes.PREV_DAY :\n\t\t\t\tcase this.additionalDateTypes.NEXT_DAY :\n\t\t\t\tcase this.additionalDateTypes.MORE_THAN_DAYS_AGO :\n\t\t\t\tcase this.additionalDateTypes.AFTER_DAYS :\n\t\t\t\tcase this.dateTypes.NEXT_DAYS :\n\t\t\t\tcase this.dateTypes.PREV_DAYS : {\n\t\t\t\t\tvar control = BX.Filter.Utils.getByClass(field, this.settings.classNumberInput);\n\n\t\t\t\t\tif (!!control && control.name === daysName)\n\t\t\t\t\t{\n\t\t\t\t\t\tvalues[daysName] = control.value;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tcase this.dateTypes.RANGE : {\n\t\t\t\t\tstringFields = BX.Filter.Utils.getByClass(field, this.settings.classDateInput, true);\n\t\t\t\t\tstringFields.forEach(function(current) {\n\t\t\t\t\t\tif (current.name === fromName)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvalues[fromName] = current.value;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (current.name === toName)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvalues[toName] = current.value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}, this);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tcase \"CUSTOM_DATE\" : {\n\t\t\t\t\tvar customValues = {};\n\t\t\t\t\tthis.prepareControlCustomDateValue(customValues, name, field);\n\t\t\t\t\tvalues[name + '_days'] = customValues[name + '_days'];\n\t\t\t\t\tvalues[monthName] = customValues[name + '_months'];\n\t\t\t\t\tvalues[yearName] = customValues[name + '_years'];\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tdefault : {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (additionalFieldsContainer && !withAdditional)\n\t\t\t{\n\t\t\t\tBX.append(additionalFieldsContainer, field);\n\t\t\t}\n\n\t\t\tvar additionalFields = Array.from(\n\t\t\t\tfield.querySelectorAll(\n\t\t\t\t\t'.main-ui-filter-additional-fields-container > [data-type=\"DATE\"]',\n\t\t\t\t)\n\t\t\t);\n\n\t\t\tif (additionalFields)\n\t\t\t{\n\t\t\t\tadditionalFields.forEach(function(additionalField) {\n\t\t\t\t\tvar name = additionalField.dataset.name;\n\t\t\t\t\tthis.prepareControlDateValue(values, name, additionalField, true);\n\t\t\t\t}, this);\n\t\t\t}\n\t\t},\n\n\t\tprepareControlNumberValue: function(values, name, field)\n\t\t{\n\t\t\tvar stringFields = BX.Filter.Utils.getByClass(field, this.settings.classNumberInput, true);\n\t\t\tvar select = BX.Filter.Utils.getByClass(field, this.settings.classSelect);\n\t\t\tvar selectName = name + this.settings.numberPostfix;\n\t\t\tvar fromName = name + this.settings.fromPostfix;\n\t\t\tvar toName = name + this.settings.toPostfix;\n\t\t\tvar selectValue;\n\n\t\t\tvalues[fromName] = '';\n\t\t\tvalues[toName] = '';\n\n\t\t\tselectValue = JSON.parse(BX.data(select, 'value'));\n\t\t\tvalues[selectName] = selectValue.VALUE;\n\n\t\t\tstringFields.forEach(function(current) {\n\t\t\t\tif (current.name.indexOf(this.settings.fromPostfix) !== -1)\n\t\t\t\t{\n\t\t\t\t\tvalues[fromName] = current.value || '';\n\n\t\t\t\t\tif (values[selectName] === 'exact')\n\t\t\t\t\t{\n\t\t\t\t\t\tvalues[toName] = current.value || '';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse if (current.name.indexOf(this.settings.toPostfix) !== -1)\n\t\t\t\t{\n\t\t\t\t\tvalues[toName] = current.value || '';\n\t\t\t\t}\n\t\t\t}, this);\n\t\t},\n\n\t\tprepareControlStringValue: function(values, field)\n\t\t{\n\t\t\tvar control = BX.Filter.Utils.getByClass(field, this.settings.classStringInput);\n\t\t\tvar name;\n\n\t\t\tif (BX.type.isDomNode(control))\n\t\t\t{\n\t\t\t\tname = control.name;\n\t\t\t\tvalues[name] = control.value;\n\t\t\t}\n\t\t},\n\n\t\tprepareControlTextareaValue: function(values, field)\n\t\t{\n\t\t\tvar control = BX.Filter.Utils.getByClass(field, this.settings.classStringInput);\n\t\t\tvar name;\n\n\t\t\tif (BX.type.isDomNode(control))\n\t\t\t{\n\t\t\t\tname = control.name;\n\t\t\t\tvalues[name] = control.value;\n\t\t\t}\n\t\t},\n\n\n\t\t/**\n\t\t * Shows grid animation\n\t\t */\n\t\tshowGridAnimation: function()\n\t\t{\n\t\t\tthis.grid && this.grid.tableFade();\n\t\t},\n\n\n\t\t/**\n\t\t * Hides grid animations\n\t\t */\n\t\thideGridAnimation: function()\n\t\t{\n\t\t\tthis.grid && this.grid.tableUnfade();\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t * @param {?Boolean} clear - is need reset filter\n\t\t * @param {?Boolean} applyPreset - is need apply preset\n\t\t * @return {String}\n\t\t */\n\t\tgetPresetId: function(clear, applyPreset)\n\t\t{\n\t\t\tvar presetId = this.getPreset().getCurrentPresetId();\n\n\t\t\tif ((!this.isEditEnabled() && !this.isAddPresetEnabled() && !applyPreset) ||\n\t\t\t\t(presetId === 'default_filter' && !clear))\n\t\t\t{\n\t\t\t\tpresetId = 'tmp_filter';\n\t\t\t}\n\n\t\t\treturn presetId;\n\t\t},\n\n\t\tisAppliedUserFilter: function()\n\t\t{\n\t\t\tconst presetOptions = this.getPreset().getCurrentPresetData();\n\t\t\tif (BX.Type.isPlainObject(presetOptions))\n\t\t\t{\n\t\t\t\tconst hasFields = (\n\t\t\t\t\tBX.Type.isArrayFilled(presetOptions.FIELDS)\n\t\t\t\t\t&& presetOptions.FIELDS.some((field) => {\n\t\t\t\t\t\treturn !this.getPreset().isEmptyField(field);\n\t\t\t\t\t})\n\t\t\t\t);\n\n\t\t\t\tconst hasAdditional = (\n\t\t\t\t\tBX.Type.isArrayFilled(presetOptions.ADDITIONAL)\n\t\t\t\t\t&& presetOptions.ADDITIONAL.some((field) => {\n\t\t\t\t\t\treturn !this.getPreset().isEmptyField(field);\n\t\t\t\t\t})\n\t\t\t\t);\n\n\t\t\t\treturn (\n\t\t\t\t\t(\n\t\t\t\t\t\t!presetOptions.IS_PINNED\n\t\t\t\t\t\t&& (\n\t\t\t\t\t\t\thasFields\n\t\t\t\t\t\t\t|| hasAdditional\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t\t|| (\n\t\t\t\t\t\tpresetOptions.IS_PINNED\n\t\t\t\t\t\t&& BX.Type.isArrayFilled(presetOptions.ADDITIONAL)\n\t\t\t\t\t)\n\t\t\t\t\t|| BX.Type.isStringFilled(this.getSearch().getSearchString())\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn false;\n\t\t},\n\n\t\tisAppliedDefaultPreset: function()\n\t\t{\n\t\t\tconst presetData = this.getPreset().getCurrentPresetData();\n\t\t\tif (!presetData.IS_PINNED)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (BX.Type.isArrayFilled(presetData.ADDITIONAL))\n\t\t\t{\n\t\t\t\tconst hasAdditional = presetData.ADDITIONAL.some((field) => {\n\t\t\t\t\treturn !this.getPreset().isEmptyField(field);\n\t\t\t\t});\n\n\t\t\t\tif (hasAdditional)\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (BX.Type.isStringFilled(this.getSearch().getSearchString()))\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn true;\n\t\t},\n\n\t\t/**\n\t\t * Applies filter\n\t\t * @param {?Boolean} [clear] - is need reset filter\n\t\t * @param {?Boolean} [applyPreset] - is need apply preset\n\t\t * @param {?Boolean} [isSetOutside] - is filter sets from outside\n\t\t * @return {BX.Promise}\n\t\t */\n\t\tapplyFilter: function(clear, applyPreset, isSetOutside)\n\t\t{\n\t\t\tthis.setIsSetOutsideState(isSetOutside);\n\n\t\t\tvar filterId = this.getParam('FILTER_ID');\n\t\t\tvar promise = new BX.Promise(null, this);\n\t\t\tvar Preset = this.getPreset();\n\t\t\tvar Search = this.getSearch();\n\t\t\tvar applyParams = {autoResolve: !this.grid};\n\t\t\tvar self = this;\n\n\t\t\tthis.setDefaultPresetAppliedState(this.isAppliedDefaultPreset());\n\n\t\t\tif (this.isAppliedUserFilter())\n\t\t\t{\n\t\t\t\tBX.Dom.addClass(this.getSearch().container, 'main-ui-filter-search--active');\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tBX.Dom.removeClass(this.getSearch().container, 'main-ui-filter-search--active');\n\t\t\t}\n\n\t\t\tthis.clearGet();\n\t\t\tthis.showGridAnimation();\n\n\t\t\tvar action = clear ? \"clear\" : \"apply\";\n\n\t\t\tBX.onCustomEvent(window, 'BX.Main.Filter:beforeApply', [filterId, {action: action}, this, promise]);\n\t\t\t// presetId defined  after `beforeApply` because current preset may be changed by the event's handlers\n\t\t\tconst presetId = this.getPresetId(clear, applyPreset);\n\n\t\t\tthis.updatePreset(presetId, null, clear, null).then(function() {\n\t\t\t\tSearch.updatePreset(Preset.getPreset(presetId));\n\n\t\t\t\tif (self.getParam('VALUE_REQUIRED'))\n\t\t\t\t{\n\t\t\t\t\tif (!Search.getSquares().length)\n\t\t\t\t\t{\n\t\t\t\t\t\tself.lastPromise = Preset.applyPinnedPreset();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}).then(function() {\n\t\t\t\tvar params = {apply_filter: 'Y', clear_nav: 'Y'};\n\t\t\t\tvar fulfill = BX.delegate(promise.fulfill, promise);\n\t\t\t\tvar reject = BX.delegate(promise.reject, promise);\n\t\t\t\tself.grid && self.grid.reloadTable('POST', params, fulfill, reject);\n\t\t\t\tBX.onCustomEvent(window, 'BX.Main.Filter:apply', [filterId, {action: action}, self, promise, applyParams]);\n\t\t\t\tapplyParams.autoResolve && promise.fulfill();\n\t\t\t});\n\n\t\t\treturn promise;\n\t\t},\n\n\n\t\t/**\n\t\t * Gets add field buttons\n\t\t * @return {?HTMLElement}\n\t\t */\n\t\tgetAddField: function()\n\t\t{\n\t\t\treturn BX.Filter.Utils.getByClass(this.getFilter(), this.settings.classAddField);\n\t\t},\n\n\n\t\t/**\n\t\t * Gets fields list container\n\t\t * @return {?HTMLElement}\n\t\t */\n\t\tgetFieldListContainer: function()\n\t\t{\n\t\t\treturn BX.Filter.Utils.getByClass(this.getFilter(), this.settings.classFileldControlList);\n\t\t},\n\n\n\t\t/**\n\t\t * @return {BX.Filter.Fields}\n\t\t */\n\t\tgetFields: function()\n\t\t{\n\t\t\tif (!(this.fields instanceof BX.Filter.Fields))\n\t\t\t{\n\t\t\t\tthis.fields = new BX.Filter.Fields(this);\n\t\t\t}\n\n\t\t\treturn this.fields;\n\t\t},\n\n\n\t\tgetPreset: function(): Presets\n\t\t{\n\t\t\tif (!(this.presets instanceof Presets))\n\t\t\t{\n\t\t\t\tthis.presets = new Presets(this);\n\t\t\t}\n\n\t\t\treturn this.presets;\n\t\t},\n\n\n\t\t/**\n\t\t * @param controlData\n\t\t * @return {*}\n\t\t */\n\t\tresetControlData: function(controlData)\n\t\t{\n\t\t\tif (BX.type.isPlainObject(controlData))\n\t\t\t{\n\t\t\t\tswitch (controlData.TYPE)\n\t\t\t\t{\n\t\t\t\t\tcase this.types.MULTI_SELECT : {\n\t\t\t\t\t\tcontrolData.VALUE = [];\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tcase this.types.SELECT : {\n\t\t\t\t\t\tcontrolData.VALUE = controlData.ITEMS[0];\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tcase this.types.DATE : {\n\t\t\t\t\t\tcontrolData.SUB_TYPE = controlData.SUB_TYPES[0];\n\t\t\t\t\t\tcontrolData.VALUES = {\n\t\t\t\t\t\t\t'_from': '',\n\t\t\t\t\t\t\t'_to': '',\n\t\t\t\t\t\t\t'_days': '',\n\t\t\t\t\t\t\t'_quarter': '',\n\t\t\t\t\t\t\t'_year': ''\n\t\t\t\t\t\t};\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tcase this.types.CUSTOM_DATE : {\n\t\t\t\t\t\tcontrolData.VALUES = {\n\t\t\t\t\t\t\t'days': [],\n\t\t\t\t\t\t\t'months': [],\n\t\t\t\t\t\t\t'years': []\n\t\t\t\t\t\t};\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tcase this.types.NUMBER : {\n\t\t\t\t\t\tcontrolData.SUB_TYPE = controlData.SUB_TYPES[0];\n\t\t\t\t\t\tcontrolData.VALUES = {\n\t\t\t\t\t\t\t'_from': '',\n\t\t\t\t\t\t\t'_to': ''\n\t\t\t\t\t\t};\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tcase this.types.DEST_SELECTOR:\n\t\t\t\t\tcase this.types.ENTITY_SELECTOR:\n\t\t\t\t\tcase this.types.CUSTOM_ENTITY: {\n\t\t\t\t\t\tcontrolData.VALUES = {\n\t\t\t\t\t\t\t'_label': '',\n\t\t\t\t\t\t\t'_value': ''\n\t\t\t\t\t\t};\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tcase this.types.CUSTOM : {\n\t\t\t\t\t\tcontrolData._VALUE = '';\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tdefault : {\n\t\t\t\t\t\tcontrolData.VALUE = '';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn controlData;\n\t\t},\n\n\n\t\tclearControl: function(name)\n\t\t{\n\t\t\tvar control = this.getPreset().getField({NAME: name});\n\t\t\tvar controlData, newControl;\n\n\t\t\tif (BX.type.isDomNode(control))\n\t\t\t{\n\t\t\t\tcontrolData = this.getFieldByName(name);\n\t\t\t\tcontrolData = this.resetControlData(controlData);\n\n\t\t\t\tnewControl = this.getPreset().createControl(controlData);\n\t\t\t\tBX.insertAfter(newControl, control);\n\t\t\t\tBX.remove(control);\n\t\t\t}\n\t\t},\n\n\t\tclearControls: function(squareData)\n\t\t{\n\t\t\tif (BX.type.isArray(squareData))\n\t\t\t{\n\t\t\t\tsquareData.forEach(function(item) {\n\t\t\t\t\t'name' in item && this.clearControl(item.name);\n\t\t\t\t}, this);\n\t\t\t}\n\n\t\t\telse if (BX.type.isPlainObject(squareData) && 'name' in squareData)\n\t\t\t{\n\t\t\t\tthis.clearControl(squareData.name);\n\t\t\t}\n\t\t},\n\n\n\t\t/**\n\t\t * Gets filter popup template\n\t\t * @return {?string}\n\t\t */\n\t\tgetTemplate: function()\n\t\t{\n\t\t\treturn BX.html(BX(this.settings.generalTemplateId));\n\t\t},\n\n\t\tisIe: function()\n\t\t{\n\t\t\tif (!BX.type.isBoolean(this.ie))\n\t\t\t{\n\t\t\t\tthis.ie = BX.hasClass(document.documentElement, 'bx-ie');\n\t\t\t}\n\n\t\t\treturn this.ie;\n\t\t},\n\n\n\t\t/**\n\t\t * Closes filter popup\n\t\t */\n\t\tclosePopup: function()\n\t\t{\n\t\t\tvar popup = this.getPopup();\n\t\t\tvar popupContainer = popup.popupContainer;\n\t\t\tvar configCloseDelay = this.settings.get('FILTER_CLOSE_DELAY');\n\t\t\tvar closeDelay;\n\n\t\t\tBX.Dom.removeClass(this.getSearch().container, 'main-ui-filter-search--showed');\n\n\t\t\tsetTimeout(BX.delegate(function() {\n\n\t\t\t\tif (!this.isIe())\n\t\t\t\t{\n\t\t\t\t\tBX.removeClass(popupContainer, this.settings.classAnimationShow);\n\t\t\t\t\tBX.addClass(popupContainer, this.settings.classAnimationClose);\n\n\t\t\t\t\tcloseDelay = parseFloat(BX.style(popupContainer, 'animation-duration'));\n\n\t\t\t\t\tif (BX.type.isNumber(closeDelay))\n\t\t\t\t\t{\n\t\t\t\t\t\tcloseDelay = closeDelay * 1000;\n\t\t\t\t\t}\n\n\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\tpopup.close();\n\t\t\t\t\t}, closeDelay);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tpopup.close();\n\t\t\t\t}\n\t\t\t}, this), configCloseDelay);\n\n\t\t\tif (this.getParam(\"LIMITS_ENABLED\"))\n\t\t\t{\n\t\t\t\tBX.removeClass(this.getFilter(), this.settings.classLimitsAnimation);\n\t\t\t}\n\n\t\t\tthis.closeFieldListPopup();\n\t\t\tthis.adjustFocus();\n\t\t},\n\n\n\t\t/**\n\t\t * Shows filter popup\n\t\t */\n\t\tshowPopup: function()\n\t\t{\n\t\t\tvar popup = this.getPopup();\n\t\t\tvar popupContainer;\n\n\t\t\tif (!popup.isShown())\n\t\t\t{\n\t\t\t\tBX.Dom.addClass(this.getSearch().container, 'main-ui-filter-search--showed');\n\n\t\t\t\tthis.isOpened = true;\n\t\t\t\tvar showDelay = this.settings.get('FILTER_SHOW_DELAY');\n\n\t\t\t\tif (this.getParam('LIMITS_ENABLED') === true)\n\t\t\t\t{\n\t\t\t\t\tthis.limitAnalyticsSend();\n\t\t\t\t}\n\n\t\t\t\tsetTimeout(BX.delegate(function() {\n\t\t\t\t\tpopup.show();\n\n\t\t\t\t\tif (!this.isIe())\n\t\t\t\t\t{\n\t\t\t\t\t\tpopupContainer = popup.popupContainer;\n\t\t\t\t\t\tBX.removeClass(popupContainer, this.settings.classAnimationClose);\n\t\t\t\t\t\tBX.addClass(popupContainer, this.settings.classAnimationShow);\n\t\t\t\t\t\tBX.onCustomEvent(window, \"BX.Main.Filter:show\", [this]);\n\t\t\t\t\t}\n\n\t\t\t\t\tvar textareas = [].slice.call(\n\t\t\t\t\t\tthis.getFieldListContainer().querySelectorAll('textarea')\n\t\t\t\t\t);\n\n\t\t\t\t\ttextareas.forEach(function(item) {\n\t\t\t\t\t\tBX.style(item, 'height', item.scrollHeight + 'px');\n\t\t\t\t\t});\n\t\t\t\t}, this), showDelay);\n\t\t\t}\n\t\t},\n\n\n\t\t/**\n\t\t * Gets save for all checkbox element\n\t\t * @return {?HTMLInputElement}\n\t\t */\n\t\tgetSaveForAllCheckbox: function()\n\t\t{\n\t\t\tif (!this.saveForAllCheckbox && !!this.getSaveForAllCheckboxContainer())\n\t\t\t{\n\t\t\t\tthis.saveForAllCheckbox = BX.Filter.Utils.getBySelector(this.getSaveForAllCheckboxContainer(), 'input[type=\"checkbox\"]');\n\t\t\t}\n\n\t\t\treturn this.saveForAllCheckbox;\n\t\t},\n\n\n\t\t/**\n\t\t * Gets save for all checkbox container\n\t\t * @return {?HTMLElement}\n\t\t */\n\t\tgetSaveForAllCheckboxContainer: function()\n\t\t{\n\t\t\tif (!this.saveForAllCheckboxContainer)\n\t\t\t{\n\t\t\t\tthis.saveForAllCheckboxContainer = BX.Filter.Utils.getByClass(this.getFilter(), this.settings.classForAllCheckbox);\n\t\t\t}\n\n\t\t\treturn this.saveForAllCheckboxContainer;\n\t\t},\n\n\n\t\t/**\n\t\t * Shows for all checkbox\n\t\t */\n\t\tshowForAllCheckbox: function()\n\t\t{\n\t\t\t!!this.getSaveForAllCheckboxContainer() &&\n\t\t\t\tBX.removeClass(this.getSaveForAllCheckboxContainer(), this.settings.classHide);\n\t\t},\n\n\n\t\t/**\n\t\t * Hides for all checkbox\n\t\t */\n\t\thideForAllCheckbox: function()\n\t\t{\n\t\t\t!!this.getSaveForAllCheckboxContainer() &&\n\t\t\t\tBX.addClass(this.getSaveForAllCheckboxContainer(), this.settings.classHide);\n\t\t},\n\n\n\t\t/**\n\t\t * Gets popup bind element\n\t\t * @return {?HTMLElement}\n\t\t */\n\t\tgetPopupBindElement: function()\n\t\t{\n\t\t\tif (!this.popupBindElement)\n\t\t\t{\n\t\t\t\tvar selector = this.settings.get('POPUP_BIND_ELEMENT_SELECTOR');\n\t\t\t\tvar result = null;\n\n\t\t\t\tif (BX.type.isNotEmptyString(selector))\n\t\t\t\t{\n\t\t\t\t\tresult = BX.Filter.Utils.getBySelector(document, selector);\n\t\t\t\t}\n\n\t\t\t\tthis.popupBindElement = !!result ? result : this.getSearch().getContainer();\n\t\t\t}\n\n\t\t\treturn this.popupBindElement;\n\t\t},\n\n\n\t\t/**\n\t\t * Gets filter popup window instance\n\t\t * @return {BX.PopupWindow}\n\t\t */\n\t\tgetPopup: function()\n\t\t{\n\t\t\tif (!(this.popup instanceof BX.PopupWindow))\n\t\t\t{\n\t\t\t\tthis.popup =  new BX.PopupWindow(\n\t\t\t\t\tthis.getParam('FILTER_ID') + this.settings.searchContainerPostfix,\n\t\t\t\t\tthis.getPopupBindElement(),\n\t\t\t\t\t{\n\t\t\t\t\t\tautoHide : false,\n\t\t\t\t\t\toffsetTop : parseInt(this.settings.get('POPUP_OFFSET_TOP')),\n\t\t\t\t\t\toffsetLeft : parseInt(this.settings.get('POPUP_OFFSET_LEFT')),\n\t\t\t\t\t\tlightShadow : true,\n\t\t\t\t\t\tcloseIcon : false,\n\t\t\t\t\t\tcloseByEsc : false,\n\t\t\t\t\t\tnoAllPaddings: true,\n\t\t\t\t\t\tzIndex: 12\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\tthis.popup.setContent(this.getTemplate());\n\t\t\t\tBX.bind(this.getFieldListContainer(), 'keydown', BX.delegate(this._onFieldsContainerKeydown, this));\n\t\t\t\tBX.bind(this.getFilter(), 'click', BX.delegate(this._onFilterClick, this));\n\t\t\t\tBX.bind(this.getAddPresetButton(), 'click', BX.delegate(this._onAddPresetClick, this));\n\t\t\t\tBX.bind(this.getPreset().getAddPresetFieldInput(), 'keydown', BX.delegate(this._onAddPresetKeydown, this));\n\t\t\t\tBX.bind(this.getPreset().getContainer(), 'keydown', BX.delegate(this._onPresetInputKeydown, this));\n\t\t\t\tBX.bind(this.getSaveButton(), 'click', BX.delegate(this._onSaveButtonClick, this));\n\t\t\t\tBX.bind(this.getCancelButton(), 'click', BX.delegate(this._onCancelButtonClick, this));\n\t\t\t\tBX.bind(this.getFindButton(), 'click', BX.delegate(this._onFindButtonClick, this));\n\t\t\t\tBX.bind(this.getResetButton(), 'click', BX.delegate(this._onResetButtonClick, this));\n\t\t\t\tBX.bind(this.getAddField(), 'click', BX.delegate(this._onAddFieldClick, this));\n\t\t\t\tBX.bind(this.getEditButton(), 'click', BX.delegate(this._onEditButtonClick, this));\n\t\t\t\tBX.bind(this.getRestoreButton(), 'click', BX.delegate(this._onRestoreButtonClick, this));\n\t\t\t\tBX.bind(this.getRestoreFieldsButton(), 'click', BX.delegate(this._onRestoreFieldsButtonClick, this));\n\t\t\t\tthis.getFilter().addEventListener('mousedown', BX.delegate(this._onFilterMousedown, this), true);\n\t\t\t\tthis.getPreset().showCurrentPresetFields();\n\t\t\t\tthis.getPreset().bindOnPresetClick();\n\t\t\t}\n\n\t\t\treturn this.popup;\n\t\t},\n\n\t\t_onRestoreFieldsButtonClick: function()\n\t\t{\n\t\t\tthis.restoreDefaultFields();\n\t\t},\n\n\n\t\t/**\n\t\t * Restores default fields list\n\t\t */\n\t\trestoreDefaultFields: function()\n\t\t{\n\t\t\tvar defaultPreset = this.getPreset().getPreset('default_filter', true);\n\t\t\tvar presets = this.getParam('PRESETS');\n\t\t\tvar currentPresetId = this.getPreset().getCurrentPresetId();\n\t\t\tvar params = {'FILTER_ID': this.getParam('FILTER_ID'), 'GRID_ID': this.getParam('GRID_ID'), 'action': 'SET_FILTER'};\n\t\t\tvar fields = defaultPreset.FIELDS.map(function(curr) { return curr.NAME; });\n\t\t\tvar rows = fields.join(',');\n\n\t\t\tpresets.forEach(function(current, index) {\n\t\t\t\tif (current.ID === 'default_filter')\n\t\t\t\t{\n\t\t\t\t\tpresets[index] = BX.clone(defaultPreset);\n\t\t\t\t}\n\t\t\t}, this);\n\n\t\t\tif (BX.type.isArray(this.editablePresets))\n\t\t\t{\n\t\t\t\tthis.editablePresets.forEach(function(current, index) {\n\t\t\t\t\tif (current.ID === 'default_filter')\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.editablePresets[index] = BX.clone(defaultPreset);\n\t\t\t\t\t}\n\t\t\t\t}, this);\n\t\t\t}\n\n\t\t\tthis.getPreset().applyPreset(currentPresetId);\n\t\t\tthis.updatePreset(currentPresetId);\n\t\t\tthis.saveOptions({preset_id: \"default_filter\", rows: rows, save: \"Y\", apply_filter: \"N\"}, params);\n\t\t},\n\n\n\t\t/**\n\t\t * Gets restore default fields button\n\t\t * @return {?HTMLElement}\n\t\t */\n\t\tgetRestoreFieldsButton: function()\n\t\t{\n\t\t\tif (!this.restoreFieldsButton)\n\t\t\t{\n\t\t\t\tthis.restoreFieldsButton = BX.Filter.Utils.getByClass(this.getFilter(), this.settings.classRestoreFieldsButton);\n\t\t\t}\n\n\t\t\treturn this.restoreFieldsButton;\n\t\t},\n\n\n\t\t/**\n\t\t * Restores filter\n\t\t */\n\t\trestoreFilter: function()\n\t\t{\n\t\t\tvar defaultPresets = this.getParam('DEFAULT_PRESETS');\n\t\t\tvar allPresets = this.getParam('PRESETS');\n\t\t\tvar isReplace = false;\n\t\t\tvar replaceIndex, applyPresetId, presetNode;\n\n\t\t\tif (BX.type.isArray(defaultPresets))\n\t\t\t{\n\t\t\t\tdefaultPresets.sort(function(a, b) {\n\t\t\t\t\treturn a.SORT - b.SORT;\n\t\t\t\t});\n\n\t\t\t\tdefaultPresets.forEach(function(defPreset) {\n\t\t\t\t\tisReplace = allPresets.some(function(current, index) {\n\t\t\t\t\t\tif (current.ID === defPreset.ID)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\treplaceIndex = index;\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\tif (isReplace)\n\t\t\t\t\t{\n\t\t\t\t\t\tallPresets[replaceIndex] = BX.clone(defPreset);\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tallPresets.push(BX.clone(defPreset));\n\t\t\t\t\t}\n\n\t\t\t\t\tif (defPreset.ID !== 'default_filter')\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.addSidebarItem(defPreset.ID, defPreset.TITLE, defPreset.IS_PINNED);\n\n\t\t\t\t\t\tif (defPreset.IS_PINNED)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tapplyPresetId = defPreset.ID;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}, this);\n\t\t\t}\n\n\t\t\tthis.saveRestoreFilter();\n\t\t\tthis.disableAddPreset();\n\t\t\tthis.disableEdit();\n\n\t\t\tif (!applyPresetId)\n\t\t\t{\n\t\t\t\tapplyPresetId = \"default_filter\";\n\t\t\t}\n\n\t\t\tpresetNode = this.getPreset().getPresetNodeById(applyPresetId);\n\n\t\t\tif (presetNode)\n\t\t\t{\n\t\t\t\tBX.fireEvent(presetNode, 'click');\n\t\t\t}\n\t\t},\n\n\t\tsaveRestoreFilter: function()\n\t\t{\n\t\t\tvar params = {'FILTER_ID': this.getParam('FILTER_ID'), 'GRID_ID': this.getParam('GRID_ID'), 'action': 'RESTORE_FILTER'};\n\t\t\tvar presets = this.getParam('PRESETS');\n\t\t\tvar data = {};\n\t\t\tvar rows;\n\n\t\t\tif (BX.type.isArray(presets))\n\t\t\t{\n\t\t\t\tpresets.forEach(function(current) {\n\t\t\t\t\trows = current.FIELDS.map(function(field) {\n\t\t\t\t\t\treturn field.NAME;\n\t\t\t\t\t});\n\t\t\t\t\trows = rows.join(',');\n\t\t\t\t\tdata[current.ID] = {\n\t\t\t\t\t\tname: current.TITLE || null,\n\t\t\t\t\t\tsort: current.SORT,\n\t\t\t\t\t\tpreset_id: current.ID,\n\t\t\t\t\t\tfields:  this.prepareFields(current.FIELDS),\n\t\t\t\t\t\trows: rows,\n\t\t\t\t\t\tfor_all: current.FOR_ALL\n\t\t\t\t\t};\n\t\t\t\t}, this);\n\n\t\t\t\tthis.saveOptions(data, params);\n\t\t\t}\n\t\t},\n\n\n\t\t/**\n\t\t * Prepares fields\n\t\t * @param {object[]} fields\n\t\t * @return {object}\n\t\t */\n\t\tprepareFields: function(fields)\n\t\t{\n\t\t\tvar result = {};\n\t\t\tvar valuesKeys;\n\n\t\t\tif (BX.type.isArray(fields))\n\t\t\t{\n\t\t\t\tfields.forEach(function(current) {\n\t\t\t\t\tif (current.TYPE === this.types.SELECT)\n\t\t\t\t\t{\n\t\t\t\t\t\tresult[current.NAME] = 'VALUE' in current.VALUE ? current.VALUE.VALUE : '';\n\t\t\t\t\t}\n\n\t\t\t\t\tif (current.TYPE === this.types.MULTI_SELECT)\n\t\t\t\t\t{\n\t\t\t\t\t\tcurrent.VALUE.forEach(function(val, i) {\n\t\t\t\t\t\t\tresult[current.NAME] = result[current.NAME] || {};\n\t\t\t\t\t\t\tresult[current.NAME][i] = val.VALUE;\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tresult[current.NAME] = result[current.NAME] || '';\n\t\t\t\t\t}\n\n\t\t\t\t\tif (current.TYPE === this.types.DATE ||\n\t\t\t\t\t\tcurrent.TYPE === this.types.NUMBER)\n\t\t\t\t\t{\n\t\t\t\t\t\tvaluesKeys = Object.keys(current.VALUES);\n\n\t\t\t\t\t\tvaluesKeys.forEach(function(key) {\n\t\t\t\t\t\t\tresult[current.NAME + key] = current.VALUES[key];\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tif (current.TYPE === this.types.DATE)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tresult[current.NAME + '_datesel'] = 'VALUE' in current.SUB_TYPE ?\n\t\t\t\t\t\t\t\tcurrent.SUB_TYPE.VALUE : current.SUB_TYPES[0].VALUE;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (current.TYPE === this.types.NUMBER)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tresult[current.NAME + '_numsel'] = 'VALUE' in current.SUB_TYPE ?\n\t\t\t\t\t\t\t\tcurrent.SUB_TYPE.VALUE : current.SUB_TYPES[0].VALUE;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (\n\t\t\t\t\t\tcurrent.TYPE === this.types.DEST_SELECTOR\n\t\t\t\t\t\t|| current.TYPE === this.types.ENTITY_SELECTOR\n\t\t\t\t\t\t|| current.TYPE === this.types.CUSTOM_ENTITY\n\t\t\t\t\t)\n\t\t\t\t\t{\n\t\t\t\t\t\tresult[current.NAME + '_label'] = current.VALUES._label;\n\t\t\t\t\t\tresult[current.NAME + '_value'] = current.VALUES._value;\n\t\t\t\t\t}\n\t\t\t\t}, this);\n\t\t\t}\n\n\t\t\treturn result;\n\t\t},\n\n\n\t\t/**\n\t\t * Gets restore button\n\t\t * @return {?HTMLElement}\n\t\t */\n\t\tgetRestoreButton: function()\n\t\t{\n\t\t\tif (!BX.type.isDomNode(this.restoreButton))\n\t\t\t{\n\t\t\t\tthis.restoreButton = BX.Filter.Utils.getByClass(this.getFilter(), this.settings.classRestoreButton);\n\t\t\t}\n\n\t\t\treturn this.restoreButton;\n\t\t},\n\n\t\t_onPresetInputKeydown: function(event)\n\t\t{\n\t\t\tif (BX.Filter.Utils.isKey(event, 'enter') && event.target.tagName === 'INPUT')\n\t\t\t{\n\t\t\t\tBX.fireEvent(this.getSaveButton(), 'click');\n\t\t\t}\n\t\t},\n\n\t\t_onFieldsContainerKeydown: function(event)\n\t\t{\n\t\t\tif (BX.Filter.Utils.isKey(event, 'enter') && event.target.tagName === 'INPUT')\n\t\t\t{\n\t\t\t\tBX.fireEvent(this.getFindButton(), 'click');\n\t\t\t}\n\t\t},\n\n\t\t_onFindButtonClick: function()\n\t\t{\n\t\t\tthis.setIsSetOutsideState(false);\n\t\t\tvar presets = this.getPreset();\n\t\t\tvar currentPresetId = presets.getCurrentPresetId();\n\t\t\tvar promise;\n\n\t\t\tif (\n\t\t\t\tcurrentPresetId !== 'tmp_filter'\n\t\t\t\t&& currentPresetId !== 'default_filter'\n\t\t\t\t&& !presets.isPresetValuesModified(currentPresetId)\n\t\t\t)\n\t\t\t{\n\t\t\t\tvar preset = presets.getPreset(currentPresetId);\n\t\t\t\tvar additional = presets.getAdditionalValues(currentPresetId);\n\t\t\t\tvar rows = presets.getFields().map(function(current) {\n\t\t\t\t\treturn BX.data(current, 'name');\n\t\t\t\t});\n\n\t\t\t\tpreset.ADDITIONAL = this.preparePresetFields(additional, rows);\n\t\t\t\tpreset.ADDITIONAL = preset.ADDITIONAL.filter(function(field) {\n\t\t\t\t\treturn !this.getPreset().isEmptyField(field);\n\t\t\t\t}, this);\n\n\t\t\t\tpromise = this.applyFilter(false, currentPresetId);\n\t\t\t\tthis.closePopup();\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tpresets.deactivateAllPresets();\n\t\t\t\tpromise = this.applyFilter();\n\t\t\t\tthis.closePopup();\n\t\t\t}\n\n\t\t\treturn promise;\n\t\t},\n\n\t\t_onResetButtonClick: function()\n\t\t{\n\t\t\tif (this.getParam('VALUE_REQUIRED'))\n\t\t\t{\n\t\t\t\tvar preset = this.getPreset().getCurrentPresetData();\n\n\t\t\t\tif (preset.ADDITIONAL.length)\n\t\t\t\t{\n\t\t\t\t\tthis.closePopup();\n\t\t\t\t}\n\n\t\t\t\tBX.fireEvent(this.getSearch().getClearButton(), 'click');\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tif (this.getParam('RESET_TO_DEFAULT_MODE'))\n\t\t\t\t{\n\t\t\t\t\tthis.getSearch().clearInput();\n\t\t\t\t\tthis.getPreset().applyPinnedPreset();\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tthis.resetFilter();\n\t\t\t\t}\n\n\t\t\t\tthis.closePopup();\n\t\t\t}\n\t\t},\n\n\n\t\t/**\n\t\t * @param withoutSearch\n\t\t * @return {BX.Promise}\n\t\t */\n\t\tresetFilter: function(withoutSearch)\n\t\t{\n\t\t\tvar Search = this.getSearch();\n\t\t\tvar Presets = this.getPreset();\n\n\t\t\tif (!withoutSearch)\n\t\t\t{\n\t\t\t\tSearch.clearInput();\n\t\t\t}\n\n\t\t\tSearch.removePreset();\n\t\t\tPresets.deactivateAllPresets();\n\t\t\tPresets.resetPreset(true);\n\t\t\tSearch.hideClearButton();\n\t\t\tSearch.adjustPlaceholder();\n\t\t\treturn this.applyFilter(true, true);\n\t\t},\n\n\t\t_onEditButtonClick: function()\n\t\t{\n\t\t\tif (!this.isEditEnabled())\n\t\t\t{\n\t\t\t\tthis.enableEdit();\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.disableEdit();\n\t\t\t}\n\t\t},\n\n\n\t\t/**\n\t\t * Enables fields drag and drop\n\t\t */\n\t\tenableFieldsDragAndDrop: function()\n\t\t{\n\t\t\tvar fields = this.getPreset().getFields();\n\n\t\t\tthis.fieldsList = [];\n\n\t\t\tif (BX.type.isArray(fields))\n\t\t\t{\n\t\t\t\tthis.fieldsList = fields.map(this.registerDragItem, this);\n\t\t\t}\n\t\t},\n\n\n\t\t/**\n\t\t * Register drag item\n\t\t * @param {HTMLElement} item\n\t\t * @return {HTMLElement}\n\t\t */\n\t\tregisterDragItem: function(item)\n\t\t{\n\t\t\tvar dragButton = this.getDragButton(item);\n\n\t\t\tif (dragButton)\n\t\t\t{\n\t\t\t\tdragButton.onbxdragstart = BX.delegate(this._onFieldDragStart, this);\n\t\t\t\tdragButton.onbxdragstop = BX.delegate(this._onFieldDragStop, this);\n\t\t\t\tdragButton.onbxdrag = BX.delegate(this._onFieldDrag, this);\n\t\t\t\tjsDD.registerObject(dragButton);\n\t\t\t\tjsDD.registerDest(dragButton);\n\t\t\t}\n\n\t\t\treturn item;\n\t\t},\n\n\n\t\t/**\n\t\t * Unregister drag item\n\t\t * @param {HTMLElement} item\n\t\t */\n\t\tunregisterDragItem: function(item)\n\t\t{\n\t\t\tvar dragButton = this.getDragButton(item);\n\n\t\t\tif (dragButton)\n\t\t\t{\n\t\t\t\tjsDD.unregisterObject(dragButton);\n\t\t\t\tjsDD.unregisterDest(dragButton);\n\t\t\t}\n\t\t},\n\n\t\t_onFieldDragStart: function()\n\t\t{\n\t\t\tthis.dragItem = this.getFields().getField(jsDD.current_node);\n\t\t\tthis.dragIndex = BX.Filter.Utils.getIndex(this.fieldsList, this.dragItem);\n\t\t\tthis.dragRect = this.dragItem.getBoundingClientRect();\n\t\t\tthis.offset = this.dragRect.height;\n\t\t\tthis.dragStartOffset = (jsDD.start_y - (this.dragRect.top + BX.scrollTop(window)));\n\n\t\t\tBX.Filter.Utils.styleForEach(this.fieldsList, {'transition': '100ms'});\n\t\t\tBX.addClass(this.dragItem, this.settings.classPresetOndrag);\n\t\t\tBX.bind(document, 'mousemove', BX.delegate(this._onMouseMove, this));\n\t\t},\n\n\t\t_onFieldDragStop: function()\n\t\t{\n\t\t\tBX.unbind(document, 'mousemove', BX.delegate(this._onMouseMove, this));\n\t\t\tBX.removeClass(this.dragItem, this.settings.classPresetOndrag);\n\n\t\t\tBX.Filter.Utils.styleForEach(this.fieldsList, {'transition': '', 'transform': ''});\n\t\t\tBX.Filter.Utils.collectionSort(this.dragItem, this.targetItem);\n\n\t\t\tthis.fieldsList = this.getPreset().getFields();\n\n\t\t\tthis.saveFieldsSort();\n\t\t},\n\n\t\t_onFieldDrag: function()\n\t\t{\n\t\t\tvar self = this;\n\t\t\tvar currentRect, currentMiddle;\n\n\t\t\tthis.dragOffset = (this.realY - this.dragRect.top - this.dragStartOffset);\n\t\t\tthis.sortOffset = self.realY + BX.scrollTop(window);\n\n\t\t\tBX.Filter.Utils.styleForEach([this.dragItem], {\n\t\t\t\t'transition': '0ms',\n\t\t\t\t'transform': 'translate3d(0px, '+this.dragOffset+'px, 0px)'\n\t\t\t});\n\n\t\t\tthis.fieldsList.forEach(function(current, index) {\n\t\t\t\tif (current)\n\t\t\t\t{\n\t\t\t\t\tcurrentRect = current.getBoundingClientRect();\n\t\t\t\t\tcurrentMiddle = currentRect.top + BX.scrollTop(window) + (currentRect.height / 2);\n\n\t\t\t\t\tif (index > self.dragIndex && self.sortOffset > currentMiddle &&\n\t\t\t\t\t\tcurrent.style.transform !== 'translate3d(0px, '+(-self.offset)+'px, 0px)' &&\n\t\t\t\t\t\tcurrent.style.transform !== '')\n\t\t\t\t\t{\n\t\t\t\t\t\tself.targetItem = current;\n\t\t\t\t\t\tBX.style(current, 'transform', 'translate3d(0px, '+(-self.offset)+'px, 0px)');\n\t\t\t\t\t\tBX.style(current, 'transition', '300ms');\n\t\t\t\t\t}\n\n\t\t\t\t\tif (index < self.dragIndex && self.sortOffset < currentMiddle &&\n\t\t\t\t\t\tcurrent.style.transform !== 'translate3d(0px, '+(self.offset)+'px, 0px)' &&\n\t\t\t\t\t\tcurrent.style.transform !== '')\n\t\t\t\t\t{\n\t\t\t\t\t\tself.targetItem = current;\n\t\t\t\t\t\tBX.style(current, 'transform', 'translate3d(0px, '+(self.offset)+'px, 0px)');\n\t\t\t\t\t\tBX.style(current, 'transition', '300ms');\n\t\t\t\t\t}\n\n\t\t\t\t\tif (((index < self.dragIndex && self.sortOffset > currentMiddle) ||\n\t\t\t\t\t\t(index > self.dragIndex && self.sortOffset < currentMiddle)) &&\n\t\t\t\t\t\tcurrent.style.transform !== 'translate3d(0px, 0px, 0px)')\n\t\t\t\t\t{\n\t\t\t\t\t\tif (current.style.transform !== '')\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tself.targetItem = current;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tBX.style(current, 'transform', 'translate3d(0px, 0px, 0px)');\n\t\t\t\t\t\tBX.style(current, 'transition', '300ms');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n\t\t * Disables fields drag and drop\n\t\t */\n\t\tdisableFieldsDragAndDrop: function()\n\t\t{\n\t\t\tif (BX.type.isArray(this.fieldsList) && this.fieldsList.length)\n\t\t\t{\n\t\t\t\tthis.fieldsList.map(this.unregisterDragItem, this);\n\t\t\t}\n\t\t},\n\n\n\t\t/**\n\t\t * Enables presets drag and drop\n\t\t */\n\t\tenablePresetsDragAndDrop: function()\n\t\t{\n\t\t\tvar Preset, presets, dragButton, presetId;\n\n\t\t\tPreset = this.getPreset();\n\t\t\tpresets = Preset.getPresets();\n\t\t\tthis.presetsList = [];\n\n\t\t\tif (BX.type.isArray(presets) && presets.length)\n\t\t\t{\n\t\t\t\tpresets.forEach(function(current) {\n\t\t\t\t\tpresetId = Preset.getPresetId(current);\n\n\t\t\t\t\tif (!BX.hasClass(current, this.settings.classAddPresetField) &&\n\t\t\t\t\t\tpresetId !== 'default_filter' &&\n\t\t\t\t\t\t!BX.hasClass(current, this.settings.classDefaultFilter))\n\t\t\t\t\t{\n\t\t\t\t\t\tdragButton = this.getDragButton(current);\n\t\t\t\t\t\tdragButton.onbxdragstart = BX.delegate(this._onDragStart, this);\n\t\t\t\t\t\tdragButton.onbxdragstop = BX.delegate(this._onDragStop, this);\n\t\t\t\t\t\tdragButton.onbxdrag = BX.delegate(this._onDrag, this);\n\t\t\t\t\t\tjsDD.registerObject(dragButton);\n\t\t\t\t\t\tjsDD.registerDest(dragButton);\n\t\t\t\t\t\tthis.presetsList.push(current);\n\t\t\t\t\t}\n\t\t\t\t}, this);\n\t\t\t}\n\t\t},\n\n\n\t\t/**\n\t\t * Gets drag button\n\t\t * @param {HTMLElement} presetNode\n\t\t * @return {?HTMLElement}\n\t\t */\n\t\tgetDragButton: function(presetNode)\n\t\t{\n\t\t\treturn BX.Filter.Utils.getByClass(presetNode, this.settings.classPresetDragButton);\n\t\t},\n\n\n\t\t/**\n\t\t * Disables presets drag and drop\n\t\t */\n\t\tdisablePresetsDragAndDrop: function()\n\t\t{\n\t\t\tif (BX.type.isArray(this.presetsList) && this.presetsList.length)\n\t\t\t{\n\t\t\t\tthis.presetsList.forEach(function(current) {\n\t\t\t\t\tif (!BX.hasClass(current, this.settings.classAddPresetField))\n\t\t\t\t\t{\n\t\t\t\t\t\tjsDD.unregisterObject(current);\n\t\t\t\t\t\tjsDD.unregisterDest(current);\n\t\t\t\t\t}\n\t\t\t\t}, this);\n\t\t\t}\n\t\t},\n\n\t\t_onDragStart: function()\n\t\t{\n\t\t\tthis.dragItem = this.getPreset().normalizePreset(jsDD.current_node);\n\t\t\tthis.dragIndex = BX.Filter.Utils.getIndex(this.presetsList, this.dragItem);\n\t\t\tthis.dragRect = this.dragItem.getBoundingClientRect();\n\t\t\tthis.offset = this.dragRect.height;\n\t\t\tthis.dragStartOffset = (jsDD.start_y - (this.dragRect.top + BX.scrollTop(window)));\n\n\t\t\tBX.Filter.Utils.styleForEach(this.list, {'transition': '100ms'});\n\t\t\tBX.addClass(this.dragItem, this.settings.classPresetOndrag);\n\t\t\tBX.bind(document, 'mousemove', BX.delegate(this._onMouseMove, this));\n\t\t},\n\n\t\t_onMouseMove: function(event)\n\t\t{\n\t\t\tthis.realX = event.clientX;\n\t\t\tthis.realY = event.clientY;\n\t\t},\n\n\n\t\t/**\n\t\t * Gets drag offset\n\t\t * @return {number}\n\t\t */\n\t\tgetDragOffset: function()\n\t\t{\n\t\t\treturn (jsDD.x - this.startDragOffset - this.dragRect.left);\n\t\t},\n\n\t\t_onDragStop: function()\n\t\t{\n\t\t\tvar Preset, presets;\n\n\t\t\tBX.unbind(document, 'mousemove', BX.delegate(this._onMouseMove, this));\n\t\t\tBX.removeClass(this.dragItem, this.settings.classPresetOndrag);\n\n\t\t\tBX.Filter.Utils.styleForEach(this.presetsList, {'transition': '', 'transform': ''});\n\t\t\tBX.Filter.Utils.collectionSort(this.dragItem, this.targetItem);\n\n\t\t\tPreset = this.getPreset();\n\t\t\tpresets = Preset.getPresets();\n\t\t\tthis.presetsList = [];\n\n\t\t\tif (BX.type.isArray(presets) && presets.length)\n\t\t\t{\n\t\t\t\tpresets.forEach(function(current) {\n\t\t\t\t\tif (!BX.hasClass(current, this.settings.classAddPresetField) &&\n\t\t\t\t\t\t!BX.hasClass(current, this.settings.classDefaultFilter))\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.presetsList.push(current);\n\t\t\t\t\t}\n\t\t\t\t}, this);\n\t\t\t}\n\n\t\t},\n\n\t\t_onDrag: function()\n\t\t{\n\t\t\tvar self = this;\n\t\t\tvar currentRect, currentMiddle;\n\n\t\t\tthis.dragOffset = (this.realY - this.dragRect.top - this.dragStartOffset);\n\t\t\tthis.sortOffset = self.realY + BX.scrollTop(window);\n\n\t\t\tBX.Filter.Utils.styleForEach([this.dragItem], {\n\t\t\t\t'transition': '0ms',\n\t\t\t\t'transform': 'translate3d(0px, '+this.dragOffset+'px, 0px)'\n\t\t\t});\n\n\t\t\tthis.presetsList.forEach(function(current, index) {\n\t\t\t\tif (current)\n\t\t\t\t{\n\t\t\t\t\tcurrentRect = current.getBoundingClientRect();\n\t\t\t\t\tcurrentMiddle = currentRect.top + BX.scrollTop(window) + (currentRect.height / 2);\n\n\t\t\t\t\tif (index > self.dragIndex && self.sortOffset > currentMiddle &&\n\t\t\t\t\t\tcurrent.style.transform !== 'translate3d(0px, '+(-self.offset)+'px, 0px)' &&\n\t\t\t\t\t\tcurrent.style.transform !== '')\n\t\t\t\t\t{\n\t\t\t\t\t\tself.targetItem = current;\n\t\t\t\t\t\tBX.style(current, 'transform', 'translate3d(0px, '+(-self.offset)+'px, 0px)');\n\t\t\t\t\t\tBX.style(current, 'transition', '300ms');\n\t\t\t\t\t}\n\n\t\t\t\t\tif (index < self.dragIndex && self.sortOffset < currentMiddle &&\n\t\t\t\t\t\tcurrent.style.transform !== 'translate3d(0px, '+(self.offset)+'px, 0px)' &&\n\t\t\t\t\t\tcurrent.style.transform !== '')\n\t\t\t\t\t{\n\t\t\t\t\t\tself.targetItem = current;\n\t\t\t\t\t\tBX.style(current, 'transform', 'translate3d(0px, '+(self.offset)+'px, 0px)');\n\t\t\t\t\t\tBX.style(current, 'transition', '300ms');\n\t\t\t\t\t}\n\n\t\t\t\t\tif (((index < self.dragIndex && self.sortOffset > currentMiddle) ||\n\t\t\t\t\t\t(index > self.dragIndex && self.sortOffset < currentMiddle)) &&\n\t\t\t\t\t\tcurrent.style.transform !== 'translate3d(0px, 0px, 0px)')\n\t\t\t\t\t{\n\t\t\t\t\t\tif (current.style.transform !== '')\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tself.targetItem = current;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tBX.style(current, 'transform', 'translate3d(0px, 0px, 0px)');\n\t\t\t\t\t\tBX.style(current, 'transition', '300ms');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n\t\t * Gets sidebar controls container\n\t\t * @return {?HTMLElement}\n\t\t */\n\t\tgetSidebarControlsContainer: function()\n\t\t{\n\t\t\tif (!BX.type.isDomNode(this.sidebarControlsContainer))\n\t\t\t{\n\t\t\t\tthis.sidebarControlsContainer = BX.Filter.Utils.getByClass(this.getFilter(), this.settings.classSidebarControlsContainer);\n\t\t\t}\n\n\t\t\treturn this.sidebarControlsContainer;\n\t\t},\n\n\n\t\t/**\n\t\t * Enables edit mode\n\t\t */\n\t\tenableEdit: function()\n\t\t{\n\t\t\tvar Preset = this.getPreset();\n\t\t\tvar presets = Preset.getPresets();\n\t\t\tvar presetId;\n\n\t\t\tif (BX.type.isArray(presets) && presets.length)\n\t\t\t{\n\t\t\t\tpresets.forEach(function(current) {\n\t\t\t\t\tpresetId = Preset.getPresetId(current);\n\t\t\t\t\tif (!BX.hasClass(current, this.settings.classAddPresetField) && presetId !== 'default_filter')\n\t\t\t\t\t{\n\t\t\t\t\t\tBX.addClass(current, this.settings.classPresetEdit);\n\t\t\t\t\t}\n\t\t\t\t}, this);\n\t\t\t}\n\n\t\t\tthis.enablePresetsDragAndDrop();\n\t\t\tBX.show(this.getButtonsContainer());\n\t\t\tBX.hide(this.getPresetButtonsContainer());\n\t\t\tBX.addClass(this.getSidebarControlsContainer(), this.settings.classDisabled);\n\t\t\tthis.editablePresets = BX.clone(this.getParam('PRESETS'));\n\t\t\tthis.isEditEnabledState = true;\n\t\t},\n\n\n\t\t/**\n\t\t * Disables edit mode\n\t\t */\n\t\tdisableEdit: function()\n\t\t{\n\t\t\tvar Preset = this.getPreset();\n\t\t\tvar presets = Preset.getPresets();\n\n\t\t\tif (BX.type.isArray(presets) && presets.length)\n\t\t\t{\n\t\t\t\tpresets.forEach(function(current) {\n\t\t\t\t\tif (!BX.hasClass(current, this.settings.classAddPresetField))\n\t\t\t\t\t{\n\t\t\t\t\t\tBX.removeClass(current, this.settings.classPresetEdit);\n\t\t\t\t\t\tthis.getPreset().disableEditPresetName(current);\n\t\t\t\t\t}\n\t\t\t\t}, this);\n\t\t\t}\n\n\t\t\tthis.disablePresetsDragAndDrop();\n\n\t\t\tif (!this.isAddPresetEnabled())\n\t\t\t{\n\t\t\t\tBX.style(this.getButtonsContainer(), 'display', '');\n\t\t\t}\n\n\t\t\tBX.show(this.getPresetButtonsContainer());\n\t\t\tBX.removeClass(this.getSidebarControlsContainer(), this.settings.classDisabled);\n\t\t\tthis.editablePresets = null;\n\t\t\tthis.isEditEnabledState = false;\n\t\t\tthis.applyFilter(null, true);\n\t\t},\n\n\n\t\t/**\n\t\t * Get preset buttons container\n\t\t * @return {?HTMLElement}\n\t\t */\n\t\tgetPresetButtonsContainer: function()\n\t\t{\n\t\t\tif (!BX.type.isDomNode(this.presetButtonsContainer))\n\t\t\t{\n\t\t\t\tthis.presetButtonsContainer = BX.Filter.Utils.getByClass(this.getFilter(), this.settings.classPresetButtonsContainer);\n\t\t\t}\n\n\t\t\treturn this.presetButtonsContainer;\n\t\t},\n\n\n\t\t/**\n\t\t * Checks is edit mode enabled\n\t\t * @return {boolean}\n\t\t */\n\t\tisEditEnabled: function()\n\t\t{\n\t\t\treturn this.isEditEnabledState;\n\t\t},\n\n\n\t\t/**\n\t\t * Gets edit button element\n\t\t * @return {?HTMLElement}\n\t\t */\n\t\tgetEditButton: function()\n\t\t{\n\t\t\treturn BX.Filter.Utils.getByClass(this.getFilter(), this.settings.classEditButton);\n\t\t},\n\n\n\t\t/**\n\t\t * Gets component param by param name\n\t\t * @param {string} paramName\n\t\t * @param {*} [defaultValue] - Be returns if param with paramName not set\n\t\t * @returns {*}\n\t\t */\n\t\tgetParam: function(paramName, defaultValue)\n\t\t{\n\t\t\treturn paramName in this.params ? this.params[paramName] : defaultValue;\n\t\t},\n\n\n\t\t/**\n\t\t * Gets container of filter popup\n\t\t * @returns {HTMLElement|null}\n\t\t */\n\t\tgetFilter: function()\n\t\t{\n\t\t\treturn BX.Filter.Utils.getByClass(this.getPopup().contentContainer, this.settings.classFilterContainer);\n\t\t},\n\n\n\t\t/**\n\t\t * @returns {BX.Filter.Search}\n\t\t */\n\t\tgetSearch: function()\n\t\t{\n\t\t\tif (!(this.search instanceof BX.Filter.Search))\n\t\t\t{\n\t\t\t\tthis.search = new BX.Filter.Search(this);\n\t\t\t}\n\n\t\t\treturn this.search;\n\t\t},\n\n\t\t_onRestoreButtonClick: function()\n\t\t{\n\t\t\tvar action = {\n\t\t\t\tCONFIRM: true,\n\t\t\t\tCONFIRM_MESSAGE: this.getParam('CONFIRM_MESSAGE'),\n\t\t\t\tCONFIRM_APPLY_BUTTON: this.getParam('CONFIRM_APPLY'),\n\t\t\t\tCONFIRM_CANCEL_BUTTON: this.getParam('CONFIRM_CANCEL')\n\t\t\t};\n\n\t\t\tthis.confirmDialog(action, BX.delegate(this.restoreFilter, this));\n\t\t},\n\n\n\t\t/**\n\t\t * Shows confirmation popup\n\t\t * @param {object} action - Popup properties\n\t\t * @param {boolean} action.CONFIRM - true If the user must confirm the action\n\t\t * @param {string} action.CONFIRM_MESSAGE - Message of confirm popup\n\t\t * @param {string} action.CONFIRM_APPLY_BUTTON - Text of apply button\n\t\t * @param {string} action.CONFIRM_CANCEL_BUTTON - Text of cancel button\n\t\t * @param {string} [action.CONFIRM_TITLE] - Title of confirm popup\n\t\t * @param {function} then - Callback after a successful confirmation\n\t\t * @param {function} [cancel] - callback after cancel confirmation\n\t\t */\n\t\tconfirmDialog: function(action, then, cancel)\n\t\t{\n\t\t\tif ('CONFIRM' in action && action.CONFIRM)\n\t\t\t{\n\t\t\t\tvar dialogId = this.getParam('FILTER_ID') + '-confirm-dialog';\n\t\t\t\tvar popupMessage = '<div class=\"main-ui-filter-confirm-content\">'+action.CONFIRM_MESSAGE+'</div>';\n\t\t\t\tvar popupTitle = 'CONFIRM_TITLE' in action ? action.CONFIRM_TITLE : '';\n\n\t\t\t\tvar applyButton = new BX.PopupWindowButton({\n\t\t\t\t\ttext: action.CONFIRM_APPLY_BUTTON,\n\t\t\t\t\tevents: {\n\t\t\t\t\t\tclick: function()\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tBX.type.isFunction(then) ? then() : null;\n\t\t\t\t\t\t\tthis.popupWindow.close();\n\t\t\t\t\t\t\tthis.popupWindow.destroy();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tvar cancelButton = new BX.PopupWindowButtonLink({\n\t\t\t\t\ttext: action.CONFIRM_CANCEL_BUTTON,\n\t\t\t\t\tevents: {\n\t\t\t\t\t\tclick: function()\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tBX.type.isFunction(cancel) ? cancel() : null;\n\t\t\t\t\t\t\tthis.popupWindow.close();\n\t\t\t\t\t\t\tthis.popupWindow.destroy();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tvar dialog = new BX.PopupWindow(\n\t\t\t\t\tdialogId,\n\t\t\t\t\tnull,\n\t\t\t\t\t{\n\t\t\t\t\t\tcontent: popupMessage,\n\t\t\t\t\t\ttitleBar: popupTitle,\n\t\t\t\t\t\tautoHide: false,\n\t\t\t\t\t\tzIndex: 9999,\n\t\t\t\t\t\toverlay: 0.4,\n\t\t\t\t\t\toffsetTop: -100,\n\t\t\t\t\t\tcloseIcon : true,\n\t\t\t\t\t\tcloseByEsc : true,\n\t\t\t\t\t\tbuttons: [applyButton, cancelButton]\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\tBX.addCustomEvent(dialog, 'onPopupClose', BX.delegate(function() {\n\t\t\t\t\t!!this.getSaveForAllCheckbox() && (this.getSaveForAllCheckbox().checked = null);\n\t\t\t\t}, this));\n\n\t\t\t\tif (!dialog.isShown())\n\t\t\t\t{\n\t\t\t\t\tdialog.show();\n\t\t\t\t\tvar popupContainer = dialog.popupContainer;\n\t\t\t\t\tBX.removeClass(popupContainer, this.settings.classAnimationShow);\n\t\t\t\t\tBX.addClass(popupContainer, this.settings.classAnimationShow);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tBX.type.isFunction(then) ? then() : null;\n\t\t\t}\n\t\t},\n\n\t\tgetInitialValue: function(name)\n\t\t{\n\t\t\tif (BX.type.isString(name))\n\t\t\t{\n\t\t\t\tvar values = this.params.INITIAL_FILTER;\n\n\t\t\t\tif (BX.type.isPlainObject(values))\n\t\t\t\t{\n\t\t\t\t\tvar filteredEntries = Object.entries(values).reduce(function(acc, item) {\n\t\t\t\t\t\tif (item[0].startsWith(name))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tacc.push(item);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn acc;\n\t\t\t\t\t}, []);\n\n\t\t\t\t\tif (filteredEntries.length === 1)\n\t\t\t\t\t{\n\t\t\t\t\t\treturn filteredEntries[0][1];\n\t\t\t\t\t}\n\n\t\t\t\t\tif (filteredEntries.length > 1)\n\t\t\t\t\t{\n\t\t\t\t\t\treturn filteredEntries.reduce(function(acc, item) {\n\t\t\t\t\t\t\tacc[item[0].replace(name, '')] = item[1];\n\t\t\t\t\t\t\treturn acc;\n\t\t\t\t\t\t}, {});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn '';\n\t\t},\n\n\t\tgetField: function(name)\n\t\t{\n\t\t\tvar node = this.getFieldListContainer()\n\t\t\t\t.querySelector('[data-name=\"' + name + '\"]');\n\n\t\t\treturn BX.Filter.Field.instances.get(node);\n\t\t},\n\n\t\tisSetOutside: function()\n\t\t{\n\t\t\treturn BX.Text.toBoolean(this.isSetOutsideState);\n\t\t},\n\n\t\tsetIsSetOutsideState: function(state)\n\t\t{\n\t\t\tthis.isSetOutsideState = BX.Text.toBoolean(state);\n\t\t\tconst searchContainer = this.getSearch().getContainer();\n\t\t\tif (this.isSetOutsideState)\n\t\t\t{\n\t\t\t\tBX.Dom.addClass(searchContainer, 'main-ui-filter-set-outside');\n\t\t\t\tBX.Dom.removeClass(searchContainer, 'main-ui-filter-set-inside');\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tBX.Dom.addClass(searchContainer, 'main-ui-filter-set-inside');\n\t\t\t\tBX.Dom.removeClass(searchContainer, 'main-ui-filter-set-outside');\n\t\t\t}\n\t\t},\n\n\t\tsetDefaultPresetAppliedState: function(state)\n\t\t{\n\t\t\tthis.isDefaultPresetAppliedState = BX.Text.toBoolean(state);\n\t\t\tconst searchContainer = this.getSearch().getContainer();\n\t\t\tif (this.isDefaultPresetAppliedState)\n\t\t\t{\n\t\t\t\tBX.Dom.addClass(searchContainer, 'main-ui-filter-default-applied');\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tBX.Dom.removeClass(searchContainer, 'main-ui-filter-default-applied');\n\t\t\t}\n\t\t}\n\t};\n})();\n\n\n(function() {\n\tBX.Main.filterManager = {\n\t\tdata: {},\n\n\t\tpush: function(id, instance)\n\t\t{\n\t\t\tif (BX.type.isNotEmptyString(id) && instance)\n\t\t\t{\n\t\t\t\tthis.data[id] = instance;\n\t\t\t}\n\t\t},\n\n\t\tgetById: function(id)\n\t\t{\n\t\t\tvar result = null;\n\n\t\t\tif (id in this.data)\n\t\t\t{\n\t\t\t\tresult = this.data[id];\n\t\t\t}\n\n\t\t\treturn result;\n\t\t},\n\n\t\tgetList: function()\n\t\t{\n\t\t\treturn Object.values(this.data);\n\t\t}\n\t};\n})();\n","import {Event, Dom, Cache, Tag, Type} from 'main.core';\n\nconst onValueChange = Symbol('onValueChange');\n\nexport class Field extends Event.EventEmitter\n{\n\tstatic instances = new WeakMap();\n\n\tconstructor(options)\n\t{\n\t\tsuper(options);\n\t\tthis.setEventNamespace('BX.Filter.Field');\n\n\t\tthis.id = options.options.NAME;\n\t\tthis.parent = options.parent;\n\t\tthis.node = options.node;\n\t\tthis.options = {...options.options};\n\t\tthis.cache = new Cache.MemoryCache();\n\t\tthis[onValueChange] = this[onValueChange].bind(this);\n\n\t\tEvent.bind(this.node, 'input', this[onValueChange]);\n\t\tEvent.bind(this.node, 'change', this[onValueChange]);\n\n\t\tconst clearButtons = [\n\t\t\t...this.node.querySelectorAll('.main-ui-control-value-delete'),\n\t\t];\n\n\t\tclearButtons.forEach((button) => {\n\t\t\tbutton.addEventListener('click', () => {\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis[onValueChange]();\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\n\t\tconst MO = new MutationObserver(() => {\n\t\t\tthis[onValueChange]();\n\t\t});\n\n\t\tconst selects = [\n\t\t\t...this.node.querySelectorAll('.main-ui-select'),\n\t\t];\n\n\t\tselects.forEach((select) => {\n\t\t\tMO.observe(select, {\n\t\t\t\tattributes: true,\n\t\t\t\tattributeFilter: ['data-value'],\n\t\t\t});\n\t\t});\n\n\t\tField.instances.set(this.node, this);\n\t}\n\n\tsubscribe(eventName, listener)\n\t{\n\t\tEvent.EventEmitter.subscribe(\n\t\t\tthis,\n\t\t\teventName.replace('BX.Filter.Field:', ''),\n\t\t\tlistener,\n\t\t);\n\t}\n\n\t[onValueChange]()\n\t{\n\t\tthis.emit('change', {\n\t\t\tfield: this,\n\t\t\tvalue: this.getValue(),\n\t\t});\n\t}\n\n\t/**\n\t * @private\n\t * @return {HTMLDivElement}\n\t */\n\tgetAdditionalFieldContainer(): HTMLDivElement\n\t{\n\t\treturn this.cache.remember('additionalFieldsContainer', () => {\n\t\t\treturn Tag.render`\n\t\t\t\t<div class=\"main-ui-filter-additional-fields-container\"></div>\n\t\t\t`;\n\t\t});\n\t}\n\n\t/**\n\t * @private\n\t * @return {boolean}\n\t */\n\thasAdditional(): boolean\n\t{\n\t\treturn Dom.hasClass(this.node, 'main-ui-filter-field-with-additional-fields');\n\t}\n\n\taddAdditionalField(field): Field\n\t{\n\t\tif (!this.hasAdditional())\n\t\t{\n\t\t\tDom.addClass(this.node, 'main-ui-filter-field-with-additional-fields');\n\t\t\tDom.append(this.getAdditionalFieldContainer(), this.node);\n\t\t}\n\n\t\tconst preset = this.parent.getPreset();\n\t\tconst options = this.prepareFieldOptions(field);\n\t\tconst renderedField = preset.createControl(options);\n\t\tthis.appendRenderedField(renderedField);\n\n\t\treturn Field.instances.get(renderedField);\n\t}\n\n\t// eslint-disable-next-line class-methods-use-this\n\tprepareListItems(items = {})\n\t{\n\t\tif (Type.isPlainObject(items))\n\t\t{\n\t\t\treturn Object.entries(items).map(([VALUE, NAME]) => {\n\t\t\t\treturn {NAME, VALUE};\n\t\t\t});\n\t\t}\n\n\t\treturn {};\n\t}\n\n\t/**\n\t * @private\n\t * @return {object}\n\t */\n\tprepareFieldOptions(options): {[key: string]: any}\n\t{\n\t\tif (Type.isPlainObject(options))\n\t\t{\n\t\t\tconst stubs = this.parent.params.FIELDS_STUBS;\n\t\t\tconst {type = 'string'} = options;\n\t\t\tconst stub = stubs.find((item) => item.NAME === type);\n\n\t\t\tif (Type.isPlainObject(stub))\n\t\t\t{\n\t\t\t\tconst baseField = {\n\t\t\t\t\t...stub,\n\t\t\t\t\tNAME: options.id,\n\t\t\t\t\tLABEL: options.name,\n\t\t\t\t\tTYPE: type === 'checkbox' ? 'SELECT' : stub.TYPE,\n\t\t\t\t\tVALUE_REQUIRED: options.valueRequired === true,\n\t\t\t\t};\n\n\t\t\t\tif (type === 'list')\n\t\t\t\t{\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...baseField,\n\t\t\t\t\t\tITEMS: [\n\t\t\t\t\t\t\t...baseField.ITEMS,\n\t\t\t\t\t\t\tthis.prepareListItems(options.items),\n\t\t\t\t\t\t],\n\t\t\t\t\t\tparams: {\n\t\t\t\t\t\t\tisMulti: (() => {\n\t\t\t\t\t\t\t\tif (Type.isPlainObject(options.params))\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\treturn options.params === true;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\treturn false;\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}\n\n\t\t\t\tif (type === 'date')\n\t\t\t\t{\n\t\t\t\t\tconst subType = (() => {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tType.isPlainObject(options.value)\n\t\t\t\t\t\t\t&& Reflect.has(options.value, '_datesel')\n\t\t\t\t\t\t)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t// eslint-disable-next-line no-underscore-dangle\n\t\t\t\t\t\t\treturn options.value._datesel;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn this.parent.dateTypes.NONE;\n\t\t\t\t\t})();\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...baseField,\n\t\t\t\t\t\tSUB_TYPES: (() => {\n\t\t\t\t\t\t\tif (Type.isArray(options.exclude))\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\treturn baseField.SUB_TYPES.filter((item) => {\n\t\t\t\t\t\t\t\t\treturn !options.exclude.includes(item.VALUE);\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn baseField.SUB_TYPES;\n\t\t\t\t\t\t})(),\n\t\t\t\t\t\tSUB_TYPE: (() => {\n\t\t\t\t\t\t\treturn baseField.SUB_TYPES.find((item) => {\n\t\t\t\t\t\t\t\treturn item.VALUE === subType;\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t})(),\n\t\t\t\t\t\tVALUES: (() => {\n\t\t\t\t\t\t\tif (Type.isPlainObject(options.value))\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\treturn {...options.value};\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn baseField.VALUES;\n\t\t\t\t\t\t})(),\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\ttype === 'string'\n\t\t\t\t\t|| type === 'custom_date'\n\t\t\t\t\t|| type === 'number'\n\t\t\t\t\t|| type === 'checkbox'\n\t\t\t\t\t|| type === 'custom_entity'\n\t\t\t\t)\n\t\t\t\t{\n\t\t\t\t\treturn baseField;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn options;\n\t}\n\n\t/**\n\t * @private\n\t */\n\tappendRenderedField(field: HTMLElement)\n\t{\n\t\tif (Type.isDomNode(field))\n\t\t{\n\t\t\tconst additionalFieldsContainer = this.getAdditionalFieldContainer();\n\t\t\tDom.append(field, additionalFieldsContainer);\n\t\t}\n\t}\n\n\tgetValue(): {[key: string]: any} | string | number\n\t{\n\t\tconst allValues = this.parent.getFilterFieldsValues();\n\t\tconst {TYPE, NAME} = this.options;\n\n\t\tif (TYPE === 'DATE' || TYPE === 'NUMBER')\n\t\t{\n\t\t\treturn Object.entries(allValues).reduce((acc, [key, value]) => {\n\t\t\t\tif (key.startsWith(NAME))\n\t\t\t\t{\n\t\t\t\t\tacc[key.replace(NAME, '')] = value;\n\t\t\t\t}\n\n\t\t\t\treturn acc;\n\t\t\t}, {});\n\t\t}\n\n\t\tif (NAME in allValues)\n\t\t{\n\t\t\treturn allValues[NAME];\n\t\t}\n\n\t\treturn '';\n\t}\n\n\tsetValue(value)\n\t{\n\t\tconst {TYPE: type} = this.options;\n\n\t\tif (type === 'DATE' || type === 'NUMBER')\n\t\t{\n\t\t\tif (Type.isPlainObject(value))\n\t\t\t{\n\t\t\t\tconst container = this.parent.getFieldListContainer();\n\n\t\t\t\tObject.entries(value).forEach(([key, fieldValue]) => {\n\t\t\t\t\tconst fieldNode = container.querySelector(`[data-name=\"${this.id}\"] [data-name=\"${this.id}${key}\"], [data-name=\"${this.id}\"] [name=\"${this.id}${key}\"]`);\n\n\t\t\t\t\tif (fieldNode)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (Dom.hasClass(fieldNode, 'main-ui-select'))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tconst items = Dom.attr(fieldNode, 'data-items');\n\n\t\t\t\t\t\t\tif (Type.isArray(items))\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tconst item = items.find((currentItem) => currentItem.VALUE === fieldValue);\n\n\t\t\t\t\t\t\t\tif (Type.isPlainObject(item))\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tDom.attr(fieldNode, 'data-value', item);\n\n\t\t\t\t\t\t\t\t\tconst nameNode = fieldNode.querySelector('.main-ui-select-name');\n\t\t\t\t\t\t\t\t\tif (nameNode)\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tnameNode.innerText = item.NAME;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tlet result = BX.Main.ui.Factory.get(fieldNode);\n\n\t\t\t\t\t\t\t\t\tif (!result)\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tresult = {node: fieldNode, instance: new BX.Main.ui.select(fieldNode)};\n\t\t\t\t\t\t\t\t\t\tBX.Main.ui.Factory.data.push(result);\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tif (Type.isPlainObject(result))\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tBX.onCustomEvent(window, 'UI::Select::Change', [result.instance, item]);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (fieldNode.tagName === 'INPUT')\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tfieldNode.value = fieldValue;\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\t}\n}","import {Event, Type} from 'main.core';\n\nexport class Api\n{\n\tconstructor(parent)\n\t{\n\t\t/**\n\t\t * @var {BX.Main.Filter}\n\t\t */\n\t\tthis.parent = parent;\n\t}\n\n\tsetFields(fields)\n\t{\n\t\tif (Type.isPlainObject(fields))\n\t\t{\n\t\t\tthis.parent.getPopup();\n\t\t\tconst preset = this.parent.getPreset();\n\t\t\tpreset.deactivateAllPresets();\n\t\t\tconst data = {preset_id: 'tmp_filter', fields};\n\t\t\tthis.parent.updateParams(data);\n\t\t\tpreset.applyPreset('tmp_filter');\n\t\t}\n\t}\n\n\tsetFilter(filter, analyticsLabel = null)\n\t{\n\t\tthis.setAnalyticsLabel(analyticsLabel);\n\n\t\tif (Type.isObject(filter))\n\t\t{\n\t\t\tthis.parent.updateParams(filter);\n\t\t\tthis.parent.getPreset().deactivateAllPresets();\n\t\t\tthis.parent.getPreset().activatePreset(filter.preset_id);\n\t\t\tthis.parent.getPreset().applyPreset(filter.preset_id);\n\n\t\t\tif (!filter.checkFields || !this.parent.getPreset().isPresetValuesModified(filter.preset_id))\n\t\t\t{\n\t\t\t\tconst isSetOutside = true;\n\t\t\t\tthis.parent.applyFilter(false, filter.preset_id, isSetOutside);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tlet newFields = {};\n\n\t\t\t\tif (Type.isPlainObject(filter.fields))\n\t\t\t\t{\n\t\t\t\t\tnewFields = Object.assign({}, filter.fields);\n\t\t\t\t}\n\n\t\t\t\tif (Type.isPlainObject(filter.additional))\n\t\t\t\t{\n\t\t\t\t\tnewFields = Object.assign({}, filter.additional);\n\t\t\t\t}\n\n\t\t\t\tthis.parent.getPreset().deactivateAllPresets();\n\t\t\t\tthis.setFields(newFields);\n\t\t\t\tthis.apply();\n\t\t\t}\n\t\t}\n\t}\n\n\n\t/**\n\t * Extends current applied filter\n\t * @param {Object.<String, *>} fields\n\t * @param {boolean} [force = false]\n\t */\n\textendFilter(fields, force = false, analyticsLabel= null)\n\t{\n\t\tthis.setAnalyticsLabel(analyticsLabel);\n\n\t\tif (Type.isObject(fields))\n\t\t{\n\t\t\tObject.keys(fields).forEach((key) => {\n\t\t\t\tif (Type.isNumber(fields[key]))\n\t\t\t\t{\n\t\t\t\t\tfields[key] = String(fields[key]);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tconst currentPresetId = this.parent.getPreset().getCurrentPresetId();\n\n\t\t\tif (\n\t\t\t\tforce\n\t\t\t\t|| currentPresetId === 'tmp_filter'\n\t\t\t\t|| currentPresetId === 'default_filter'\n\t\t\t)\n\t\t\t{\n\t\t\t\tconst newFields = Object.assign({}, this.parent.getFilterFieldsValues(), fields);\n\n\t\t\t\tthis.setFields(newFields);\n\t\t\t\tthis.apply();\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst previewsAdditionalValues = this.parent.getPreset().getAdditionalValues(currentPresetId);\n\n\t\t\tif (Type.isPlainObject(previewsAdditionalValues)\n\t\t\t\t&& Object.keys(previewsAdditionalValues).length)\n\t\t\t{\n\t\t\t\tfields = Object.assign({}, previewsAdditionalValues, fields);\n\t\t\t}\n\n\t\t\tthis.setFilter({\n\t\t\t\tpreset_id: currentPresetId,\n\t\t\t\tadditional: fields,\n\t\t\t\tcheckFields: true,\n\t\t\t});\n\t\t}\n\t}\n\n\tapply(analyticsLabel= null)\n\t{\n\t\tthis.setAnalyticsLabel(analyticsLabel);\n\n\t\tif (!this.parent.isEditEnabled())\n\t\t{\n\t\t\tif (!this.parent.isEditEnabled())\n\t\t\t{\n\t\t\t\tconst clear = false;\n\t\t\t\tconst applyPreset = false;\n\t\t\t\tconst isSetOutside = true;\n\t\t\t\tthis.parent.applyFilter(clear, applyPreset, isSetOutside);\n\t\t\t}\n\n\t\t\tthis.parent.closePopup();\n\n\t\t\tif (this.parent.isAddPresetEnabled())\n\t\t\t{\n\t\t\t\tthis.parent.disableAddPreset();\n\t\t\t}\n\t\t}\n\t}\n\n\tgetEmitter(): Event.EventEmitter\n\t{\n\t\treturn this.parent.emitter;\n\t}\n\n\tsetAnalyticsLabel(analyticsLabel = null)\n\t{\n\t\tif (Type.isObject(analyticsLabel))\n\t\t{\n\t\t\tthis.parent.analyticsLabel = analyticsLabel;\n\t\t}\n\t}\n}","export default function createDateInputDecl(options)\n{\n\treturn {\n\t\tblock: 'main-ui-control-field',\n\t\ttype: options.type,\n\t\tdragButton: false,\n\t\tcontent: {\n\t\t\tblock: 'main-ui-date',\n\t\t\tmix: ['filter-type-single'],\n\t\t\tcalendarButton: true,\n\t\t\tvalueDelete: true,\n\t\t\tplaceholder: options.placeholder,\n\t\t\tname: options.name,\n\t\t\ttabindex: options.tabindex,\n\t\t\tvalue: options.value,\n\t\t\tenableTime: options.enableTime,\n\t\t},\n\t};\n}","export default function createNumberInputDecl(options)\n{\n\treturn {\n\t\tblock: 'main-ui-control-field',\n\t\ttype: options.type,\n\t\tdragButton: false,\n\t\tcontent: {\n\t\t\tblock: 'main-ui-number',\n\t\t\tmix: ['filter-type-single'],\n\t\t\tvalueDelete: true,\n\t\t\tplaceholder: options.placeholder,\n\t\t\tname: options.name,\n\t\t\ttabindex: options.tabindex,\n\t\t\tvalue: options.value,\n\t\t},\n\t};\n}","export default function createLineDecl()\n{\n\treturn {\n\t\tblock: 'main-ui-filter-field-line',\n\t\tcontent: {\n\t\t\tblock: 'main-ui-filter-field-line-item',\n\t\t\ttag: 'span',\n\t\t},\n\t};\n}","export default function createSelectDecl(options)\n{\n\treturn {\n\t\tblock: 'main-ui-control-field',\n\t\tdragButton: false,\n\t\tcontent: {\n\t\t\tblock: 'main-ui-select',\n\t\t\ttabindex: options.tabindex,\n\t\t\tvalue: options.value,\n\t\t\titems: options.items,\n\t\t\tname: options.name,\n\t\t\tvalueDelete: false,\n\t\t},\n\t};\n}","/* eslint-disable no-underscore-dangle */\n/* eslint-disable class-methods-use-this */\nimport {Dom, Event, Runtime, Type, Text, Loc, Tag} from 'main.core';\nimport createDateInputDecl from './fields/create-date-input-decl';\nimport createNumberInputDecl from './fields/create-number-input-decl';\nimport createLineDecl from './fields/create-line-decl';\nimport createSelectDecl from './fields/create-select-decl';\nimport {Field} from './field/field';\nimport {AdditionalFilter} from './additional-filter';\n\nconst errorMessages = new WeakMap();\nconst errorMessagesTypes = new WeakMap();\nconst values = new WeakMap();\n\nexport class Fields\n{\n\tconstructor(parent)\n\t{\n\t\tthis.parent = null;\n\t\tthis.init(parent);\n\t}\n\n\tinit(parent)\n\t{\n\t\tthis.parent = parent;\n\t\tBX.addCustomEvent(window, 'UI::Select::change', this._onDateTypeChange.bind(this));\n\t}\n\n\tdeleteField(node)\n\t{\n\t\tDom.remove(node);\n\t}\n\n\tisFieldDelete(node)\n\t{\n\t\treturn Dom.hasClass(node, this.parent.settings.classFieldDelete);\n\t}\n\n\tisFieldValueDelete(node)\n\t{\n\t\treturn (\n\t\t\tDom.hasClass(node, this.parent.settings.classValueDelete)\n\t\t\t|| Dom.hasClass(node.parentNode, this.parent.settings.classValueDelete)\n\t\t);\n\t}\n\n\tisDragButton(node)\n\t{\n\t\treturn node && Dom.hasClass(node, this.parent.settings.classPresetDragButton);\n\t}\n\n\t/**\n\t * Clears values of filter field node\n\t * @param {HTMLElement} field\n\t */\n\tclearFieldValue(field)\n\t{\n\t\tif (field)\n\t\t{\n\t\t\tconst controls = [...field.querySelectorAll('.main-ui-control')];\n\t\t\tconst squares = [...field.querySelectorAll('.main-ui-square')];\n\n\t\t\tsquares.forEach((square) => Dom.remove(square));\n\t\t\tcontrols.forEach((control) => {\n\t\t\t\tif (Reflect.has(control, 'value'))\n\t\t\t\t{\n\t\t\t\t\tcontrol.value = '';\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tgetField(node)\n\t{\n\t\tif (Type.isDomNode(node))\n\t\t{\n\t\t\treturn node.closest('.main-ui-control-field, .main-ui-control-field-group');\n\t\t}\n\n\t\treturn null;\n\t}\n\n\trender(template, data)\n\t{\n\t\tif (Type.isString(template) && Type.isPlainObject(data))\n\t\t{\n\t\t\tconst html = Object.entries(data).reduce((acc, [key, value]) => {\n\t\t\t\treturn acc.replace(new RegExp(`{{${key}}}`, 'g'), value);\n\t\t\t}, template);\n\n\t\t\tconst wrapped = Dom.create('div', {html});\n\n\t\t\tconst fieldGroup = wrapped.querySelector('.main-ui-control-field-group');\n\t\t\tif (fieldGroup)\n\t\t\t{\n\t\t\t\treturn fieldGroup;\n\t\t\t}\n\n\t\t\tconst field = wrapped.querySelector('.main-ui-control-field');\n\t\t\tif (field)\n\t\t\t{\n\t\t\t\treturn field;\n\t\t\t}\n\n\t\t\tconst fieldLine = wrapped.querySelector('.main-ui-filter-field-line');\n\t\t\tif (fieldLine)\n\t\t\t{\n\t\t\t\treturn fieldLine;\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tcreateInputText(fieldData)\n\t{\n\t\tconst field = {\n\t\t\tblock: 'main-ui-control-field',\n\t\t\tmix: this.parent.getParam('ENABLE_LABEL') ? [this.parent.settings.classFieldWithLabel] : null,\n\t\t\tdeleteButton: true,\n\t\t\tvalueDelete: true,\n\t\t\tname: fieldData.NAME,\n\t\t\ttype: fieldData.TYPE,\n\t\t\tlabel: this.parent.getParam('ENABLE_LABEL') ? fieldData.LABEL : '',\n\t\t\ticon: (this.parent.getParam('ENABLE_LABEL') && fieldData.ICON) ? fieldData.ICON : null,\n\t\t\tdragTitle: this.parent.getParam('MAIN_UI_FILTER__DRAG_FIELD_TITLE'),\n\t\t\tdeleteTitle: this.parent.getParam('MAIN_UI_FILTER__REMOVE_FIELD'),\n\t\t\tcontent: [\n\t\t\t\t{\n\t\t\t\t\tblock: 'main-ui-control-string',\n\t\t\t\t\tname: fieldData.NAME,\n\t\t\t\t\tplaceholder: fieldData.PLACEHOLDER || '',\n\t\t\t\t\tvalue: (Type.isString(fieldData.VALUE)\n\t\t\t\t\t\t\t|| Type.isNumber(fieldData.VALUE) ? fieldData.VALUE : ''),\n\t\t\t\t\ttabindex: fieldData.TABINDEX,\n\t\t\t\t},\n\t\t\t],\n\t\t};\n\n\t\tconst renderedField = BX.decl(field);\n\n\t\tthis.parent.getEmitter().emit(\n\t\t\t'init',\n\t\t\t{\n\t\t\t\tfield: new Field({\n\t\t\t\t\tparent: this.parent,\n\t\t\t\t\toptions: {...fieldData},\n\t\t\t\t\tnode: renderedField,\n\t\t\t\t}),\n\t\t\t},\n\t\t);\n\n\t\treturn renderedField;\n\t}\n\n\tcreateTextarea(fieldData)\n\t{\n\t\tconst field = BX.decl({\n\t\t\tblock: 'main-ui-control-field',\n\t\t\tmix: this.parent.getParam('ENABLE_LABEL') ? [this.parent.settings.classFieldWithLabel] : null,\n\t\t\tdeleteButton: true,\n\t\t\tvalueDelete: true,\n\t\t\tname: fieldData.NAME,\n\t\t\ttype: fieldData.TYPE,\n\t\t\tlabel: this.parent.getParam('ENABLE_LABEL') ? fieldData.LABEL : '',\n\t\t\ticon: (this.parent.getParam('ENABLE_LABEL') && fieldData.ICON) ? fieldData.ICON : null,\n\t\t\tdragTitle: this.parent.getParam('MAIN_UI_FILTER__DRAG_FIELD_TITLE'),\n\t\t\tdeleteTitle: this.parent.getParam('MAIN_UI_FILTER__REMOVE_FIELD'),\n\t\t\tcontent: [\n\t\t\t\t{\n\t\t\t\t\tblock: 'main-ui-control-textarea',\n\t\t\t\t\tname: fieldData.NAME,\n\t\t\t\t\tplaceholder: fieldData.PLACEHOLDER || '',\n\t\t\t\t\tvalue: (Type.isString(fieldData.VALUE)\n\t\t\t\t\t|| Type.isNumber(fieldData.VALUE) ? fieldData.VALUE : ''),\n\t\t\t\t\ttabindex: fieldData.TABINDEX,\n\t\t\t\t},\n\t\t\t],\n\t\t});\n\n\t\tconst textarea = field.querySelector('textarea');\n\t\tconst onChange = () => {\n\t\t\tDom.style(textarea, 'height', '1px');\n\t\t\tDom.style(textarea, 'height', `${textarea.scrollHeight}px`);\n\t\t};\n\n\t\tEvent.bind(textarea, 'input', onChange);\n\t\tEvent.bind(textarea, 'change', onChange);\n\t\tEvent.bind(textarea, 'keyup', onChange);\n\t\tEvent.bind(textarea, 'cut', onChange);\n\t\tEvent.bind(textarea, 'paste', onChange);\n\n\t\tthis.parent.getEmitter().emit(\n\t\t\t'init',\n\t\t\t{\n\t\t\t\tfield: new Field({\n\t\t\t\t\tparent: this.parent,\n\t\t\t\t\toptions: {...fieldData},\n\t\t\t\t\tnode: field,\n\t\t\t\t}),\n\t\t\t},\n\t\t);\n\n\t\treturn field;\n\t}\n\n\tcreateCustomEntityFieldLayout(fieldData)\n\t{\n\t\tlet field = {\n\t\t\tblock: 'main-ui-control-field',\n\t\t\tmix: this.parent.getParam('ENABLE_LABEL') ? [this.parent.settings.classFieldWithLabel] : null,\n\t\t\tdeleteButton: true,\n\t\t\tvalueDelete: true,\n\t\t\tname: fieldData.NAME,\n\t\t\ttype: fieldData.TYPE,\n\t\t\tlabel: this.parent.getParam('ENABLE_LABEL') ? fieldData.LABEL : '',\n\t\t\ticon: (this.parent.getParam('ENABLE_LABEL') && fieldData.ICON) ? fieldData.ICON : null,\n\t\t\tdragTitle: this.parent.getParam('MAIN_UI_FILTER__DRAG_FIELD_TITLE'),\n\t\t\tdeleteTitle: this.parent.getParam('MAIN_UI_FILTER__REMOVE_FIELD'),\n\t\t\tcontent: {\n\t\t\t\tblock: 'main-ui-control-entity',\n\t\t\t\tmix: 'main-ui-control',\n\t\t\t\tattrs: {\n\t\t\t\t\t'data-multiple': JSON.stringify(fieldData.MULTIPLE),\n\t\t\t\t},\n\t\t\t\tcontent: [],\n\t\t\t},\n\t\t};\n\n\t\tif ('_label' in fieldData.VALUES && !!fieldData.VALUES._label)\n\t\t{\n\t\t\tif (fieldData.MULTIPLE)\n\t\t\t{\n\t\t\t\tlet label = fieldData.VALUES._label ? fieldData.VALUES._label : [];\n\n\t\t\t\tif (Type.isPlainObject(label))\n\t\t\t\t{\n\t\t\t\t\tlabel = Object.keys(label).map((key) => {\n\t\t\t\t\t\treturn label[key];\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif (!Type.isArray(label))\n\t\t\t\t{\n\t\t\t\t\tlabel = [label];\n\t\t\t\t}\n\n\t\t\t\tlet value = fieldData.VALUES._value ? fieldData.VALUES._value : [];\n\t\t\t\tif (Type.isPlainObject(value))\n\t\t\t\t{\n\t\t\t\t\tvalue = Object.keys(value).map((key) => {\n\t\t\t\t\t\treturn value[key];\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif (!Type.isArray(value))\n\t\t\t\t{\n\t\t\t\t\tvalue = [value];\n\t\t\t\t}\n\n\t\t\t\tlabel.forEach((currentLabel, index) => {\n\t\t\t\t\tfield.content.content.push({\n\t\t\t\t\t\tblock: 'main-ui-square',\n\t\t\t\t\t\ttag: 'span',\n\t\t\t\t\t\tname: currentLabel,\n\t\t\t\t\t\titem: {_label: currentLabel, _value: value[index]},\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tfield.content.content.push({\n\t\t\t\t\tblock: 'main-ui-square',\n\t\t\t\t\ttag: 'span',\n\t\t\t\t\tname: '_label' in fieldData.VALUES ? fieldData.VALUES._label : '',\n\t\t\t\t\titem: fieldData.VALUES,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tfield.content.content.push(\n\t\t\t{\n\t\t\t\tblock: 'main-ui-square-search',\n\t\t\t\ttag: 'span',\n\t\t\t\tcontent: {\n\t\t\t\t\tblock: 'main-ui-control-string',\n\t\t\t\t\tname: `${fieldData.NAME}_label`,\n\t\t\t\t\ttabindex: fieldData.TABINDEX,\n\t\t\t\t\ttype: 'text',\n\t\t\t\t\tplaceholder: fieldData.PLACEHOLDER || '',\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tblock: 'main-ui-control-string',\n\t\t\t\tname: fieldData.NAME,\n\t\t\t\ttype: 'hidden',\n\t\t\t\tplaceholder: fieldData.PLACEHOLDER || '',\n\t\t\t\tvalue: '_value' in fieldData.VALUES ? fieldData.VALUES._value : '',\n\t\t\t\ttabindex: fieldData.TABINDEX,\n\t\t\t},\n\t\t);\n\n\t\tfield = BX.decl(field);\n\n\t\tconst input = BX.Filter.Utils.getBySelector(field, '.main-ui-control-string[type=\"text\"]');\n\t\tBX.addClass(input, 'main-ui-square-search-item');\n\t\tinput.autocomplete = 'off';\n\n\t\tEvent.bind(input, 'focus', BX.proxy(this._onCustomEntityInputFocus, this));\n\t\tEvent.bind(input, 'click', BX.proxy(this._onCustomEntityInputClick, this));\n\n\t\tif (!this.bindDocument)\n\t\t{\n\t\t\tEvent.bind(document, 'click', BX.proxy(this._onCustomEntityBlur, this));\n\t\t\tdocument.addEventListener('focus', BX.proxy(this._onDocumentFocus, this), true);\n\t\t\tthis.bindDocument = true;\n\t\t}\n\n\t\tEvent.bind(input, 'keydown', BX.proxy(this._onCustomEntityKeydown, this));\n\t\tEvent.bind(field, 'click', BX.proxy(this._onCustomEntityFieldClick, this));\n\n\t\treturn field;\n\t}\n\n\tcreateDestSelector(fieldData)\n\t{\n\t\tconst field = this.createCustomEntityFieldLayout(fieldData);\n\n\t\tBX.ready(BX.proxy(function() {\n\t\t\tBX.Filter.DestinationSelector.create(\n\t\t\t\tfieldData.NAME,\n\t\t\t\t{\n\t\t\t\t\tfilterId: this.parent.getParam('FILTER_ID'),\n\t\t\t\t\tfieldId: fieldData.NAME,\n\t\t\t\t},\n\t\t\t);\n\t\t}, this));\n\n\t\tthis.parent.getEmitter().emit(\n\t\t\t'init',\n\t\t\t{\n\t\t\t\tfield: new Field({\n\t\t\t\t\tparent: this.parent,\n\t\t\t\t\toptions: {...fieldData},\n\t\t\t\t\tnode: field,\n\t\t\t\t}),\n\t\t\t},\n\t\t);\n\n\t\treturn field;\n\t}\n\n\tcreateEntitySelector(fieldData)\n\t{\n\t\tconst field = this.createCustomEntityFieldLayout(fieldData);\n\n\t\tBX.Filter.EntitySelector.create(\n\t\t\tfieldData.NAME,\n\t\t\t{\n\t\t\t\tfilter: this.parent,\n\t\t\t\tisMultiple: fieldData.MULTIPLE,\n\t\t\t\taddEntityIdToResult: fieldData.ADD_ENTITY_ID_TO_RESULT,\n\t\t\t\tshowDialogOnEmptyInput: fieldData.SHOW_DIALOG_ON_EMPTY_INPUT,\n\t\t\t\tdialogOptions: fieldData.DIALOG_OPTIONS\n\t\t\t},\n\t\t);\n\n\t\tthis.parent.getEmitter().emit(\n\t\t\t'init',\n\t\t\t{\n\t\t\t\tfield: new Field({\n\t\t\t\t\tparent: this.parent,\n\t\t\t\t\toptions: {...fieldData},\n\t\t\t\t\tnode: field,\n\t\t\t\t}),\n\t\t\t},\n\t\t);\n\n\t\treturn field;\n\t}\n\n\tcreateCustomEntity(fieldData)\n\t{\n\t\tconst field = this.createCustomEntityFieldLayout(fieldData);\n\n\t\tthis.parent.getEmitter().emit(\n\t\t\t'init',\n\t\t\t{\n\t\t\t\tfield: new Field({\n\t\t\t\t\tparent: this.parent,\n\t\t\t\t\toptions: {...fieldData},\n\t\t\t\t\tnode: field,\n\t\t\t\t}),\n\t\t\t},\n\t\t);\n\n\t\treturn field;\n\t}\n\n\t_onCustomEntityInputFocus(event)\n\t{\n\t\tBX.fireEvent(event.currentTarget, 'click');\n\t}\n\n\t_onCustomEntityInputClick(event)\n\t{\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\n\t\tif (event.isTrusted)\n\t\t{\n\t\t\tthis.trustTimestamp = event.timeStamp;\n\t\t\tthis.notTrustTimestamp = this.notTrustTimestamp || event.timeStamp;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.notTrustTimestamp = event.timeStamp;\n\t\t}\n\n\t\tconst trustDate = new Date(this.trustTimestamp);\n\t\tconst notTrustDate = new Date(this.notTrustTimestamp);\n\t\tconst trustTime = `${trustDate.getMinutes()}:${trustDate.getSeconds()}`;\n\t\tconst notTrustTime = `${notTrustDate.getMinutes()}:${notTrustDate.getSeconds()}`;\n\n\t\tif (trustTime !== notTrustTime)\n\t\t{\n\t\t\tthis._onCustomEntityFocus(event);\n\t\t}\n\t}\n\n\t_onDocumentFocus(event)\n\t{\n\t\tconst CustomEntity = this.getCustomEntityInstance();\n\t\tconst popupContainer = CustomEntity.getPopupContainer();\n\t\tconst isOnInputField = CustomEntity.getLabelNode() === event.target;\n\t\tconst isInsidePopup = !!popupContainer && popupContainer.contains(event.target);\n\n\t\tif (!isOnInputField && !isInsidePopup)\n\t\t{\n\t\t\tthis._onCustomEntityBlur(event);\n\t\t}\n\t}\n\n\t_onCustomEntityKeydown(event)\n\t{\n\t\tconst {target, currentTarget} = event;\n\t\tconst {parentNode} = target.parentNode;\n\n\t\tconst squares = parentNode.querySelectorAll('.main-ui-square');\n\t\tconst square = squares[squares.length - 1];\n\n\t\tif (!Type.isDomNode(square))\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tif (\n\t\t\tBX.Filter.Utils.isKey(event, 'backspace')\n\t\t\t&& currentTarget.selectionStart === 0\n\t\t)\n\t\t{\n\t\t\tif (Dom.hasClass(square, 'main-ui-square-selected'))\n\t\t\t{\n\t\t\t\tconst input = parentNode.querySelector('input[type=\"hidden\"]');\n\n\t\t\t\tif (Type.isDomNode(input))\n\t\t\t\t{\n\t\t\t\t\tinput.value = '';\n\t\t\t\t\tBX.fireEvent(input, 'input');\n\t\t\t\t}\n\n\t\t\t\tDom.remove(square);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tDom.addClass(square, 'main-ui-square-selected');\n\t\t\treturn;\n\t\t}\n\n\t\tDom.removeClass(square, 'main-ui-square-selected');\n\t}\n\n\t_onCustomEntityFieldClick({target})\n\t{\n\t\tif (Dom.hasClass(target, 'main-ui-square-delete'))\n\t\t{\n\t\t\tconst square = target.closest('.main-ui-square');\n\n\t\t\tif (Type.isDomNode(square))\n\t\t\t{\n\t\t\t\tconst CustomEntity = this.getCustomEntityInstance();\n\t\t\t\tBX.onCustomEvent(window, 'BX.Main.Filter:customEntityRemove', [CustomEntity]);\n\t\t\t\tDom.remove(square);\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst input = target.querySelector('input[type=\"text\"]');\n\n\t\tif (Type.isDomNode(input))\n\t\t{\n\t\t\tBX.fireEvent(input, 'focus');\n\t\t}\n\t}\n\n\t_onCustomEntityBlur(event)\n\t{\n\t\tconst eventData = {\n\t\t\tstopBlur: false,\n\t\t};\n\n\t\tBX.onCustomEvent(window, 'BX.Main.Filter:onGetStopBlur', [event, eventData]);\n\n\t\tif (\n\t\t\ttypeof eventData.stopBlur === 'undefined'\n\t\t\t|| !eventData.stopBlur\n\t\t)\n\t\t{\n\t\t\tconst CustomEntity = this.getCustomEntityInstance();\n\t\t\tBX.onCustomEvent(window, 'BX.Main.Filter:customEntityBlur', [CustomEntity]);\n\n\t\t\tEvent.unbind(CustomEntity.getPopupContainer(), 'click', this._stopPropagation);\n\t\t\tDom.removeClass(CustomEntity.getField(), 'main-ui-focus');\n\t\t}\n\t}\n\n\t_stopPropagation(event)\n\t{\n\t\tevent.stopPropagation();\n\t}\n\n\tgetCustomEntityInstance()\n\t{\n\t\tif (!(this.customEntityInstance instanceof BX.Main.ui.CustomEntity))\n\t\t{\n\t\t\tthis.customEntityInstance = new BX.Main.ui.CustomEntity();\n\t\t}\n\n\t\treturn this.customEntityInstance;\n\t}\n\n\t_onCustomEntityFocus(event)\n\t{\n\t\tevent.stopPropagation();\n\n\t\tconst {currentTarget} = event;\n\t\tconst field = currentTarget.closest('.main-ui-control-entity');\n\n\t\tconst CustomEntity = this.getCustomEntityInstance();\n\t\tCustomEntity.setField(field);\n\t\tBX.onCustomEvent('BX.Main.Filter:customEntityFocus', [CustomEntity]);\n\n\t\tconst popupContainer = CustomEntity.getPopupContainer();\n\t\tif (Type.isElementNode(popupContainer))\n\t\t{\n\t\t\tEvent.bind(popupContainer, 'click', this._stopPropagation);\n\t\t}\n\n\t\tDom.addClass(field, 'main-ui-focus');\n\t}\n\n\tcreateCustom(fieldData)\n\t{\n\t\tconst field = BX.decl({\n\t\t\tblock: 'main-ui-control-field',\n\t\t\tmix: this.parent.getParam('ENABLE_LABEL') ? [this.parent.settings.classFieldWithLabel] : null,\n\t\t\tname: fieldData.NAME,\n\t\t\ttype: fieldData.TYPE,\n\t\t\tdeleteButton: true,\n\t\t\tlabel: this.parent.getParam('ENABLE_LABEL') ? fieldData.LABEL : '',\n\t\t\ticon: (this.parent.getParam('ENABLE_LABEL') && fieldData.ICON) ? fieldData.ICON : null,\n\t\t\tdragTitle: this.parent.getParam('MAIN_UI_FILTER__DRAG_FIELD_TITLE'),\n\t\t\tdeleteTitle: this.parent.getParam('MAIN_UI_FILTER__REMOVE_FIELD'),\n\t\t\tcontent: {\n\t\t\t\tblock: 'main-ui-custom',\n\t\t\t\tmix: [\n\t\t\t\t\t'main-ui-control',\n\t\t\t\t\t'main-ui-custom-style',\n\t\t\t\t],\n\t\t\t\tattrs: {\n\t\t\t\t\t'data-name': fieldData.NAME,\n\t\t\t\t},\n\t\t\t\tcontent: '',\n\t\t\t},\n\t\t});\n\n\t\tif (Type.isString(fieldData.VALUE))\n\t\t{\n\t\t\tconst fieldValue = (() => {\n\t\t\t\tif (Reflect.has(fieldData, '_VALUE'))\n\t\t\t\t{\n\t\t\t\t\treturn fieldData._VALUE;\n\t\t\t\t}\n\n\t\t\t\treturn '';\n\t\t\t})();\n\n\t\t\tconst html = Text\n\t\t\t\t.decode(fieldData.VALUE)\n\t\t\t\t.replace(\n\t\t\t\t\t`name=\"${fieldData.NAME}\"`,\n\t\t\t\t\t`name=\"${fieldData.NAME}\" value=\"${fieldValue}\"`,\n\t\t\t\t);\n\n\t\t\tconst control = field.querySelector('.main-ui-custom');\n\t\t\tRuntime.html(control, html);\n\t\t}\n\n\t\tthis.parent.getEmitter().emit(\n\t\t\t'init',\n\t\t\t{\n\t\t\t\tfield: new Field({\n\t\t\t\t\tparent: this.parent,\n\t\t\t\t\toptions: {...fieldData},\n\t\t\t\t\tnode: field,\n\t\t\t\t}),\n\t\t\t},\n\t\t);\n\n\t\treturn field;\n\t}\n\n\tcreateSelect(fieldData)\n\t{\n\t\tconst field = BX.decl({\n\t\t\tblock: 'main-ui-control-field',\n\t\t\tmix: this.parent.getParam('ENABLE_LABEL') ? [this.parent.settings.classFieldWithLabel] : null,\n\t\t\tname: fieldData.NAME,\n\t\t\ttype: fieldData.TYPE,\n\t\t\tdeleteButton: true,\n\t\t\tlabel: this.parent.getParam('ENABLE_LABEL') ? fieldData.LABEL : '',\n\t\t\ticon: (this.parent.getParam('ENABLE_LABEL') && fieldData.ICON) ? fieldData.ICON : null,\n\t\t\tdragTitle: this.parent.getParam('MAIN_UI_FILTER__DRAG_FIELD_TITLE'),\n\t\t\tdeleteTitle: this.parent.getParam('MAIN_UI_FILTER__REMOVE_FIELD'),\n\t\t\tcontent: {\n\t\t\t\tblock: this.parent.settings.classSelect,\n\t\t\t\tname: fieldData.NAME,\n\t\t\t\titems: fieldData.ITEMS,\n\t\t\t\tvalue: 'VALUE' in fieldData ? fieldData.VALUE : fieldData.ITEMS[0],\n\t\t\t\tparams: fieldData.PARAMS,\n\t\t\t\ttabindex: fieldData.TABINDEX,\n\t\t\t\tvalueDelete: false,\n\t\t\t},\n\t\t});\n\n\t\tthis.parent.getEmitter().emit(\n\t\t\t'init',\n\t\t\t{\n\t\t\t\tfield: new Field({\n\t\t\t\t\tparent: this.parent,\n\t\t\t\t\toptions: {...fieldData},\n\t\t\t\t\tnode: field,\n\t\t\t\t}),\n\t\t\t},\n\t\t);\n\n\t\treturn field;\n\t}\n\n\tcreateMultiSelect(fieldData)\n\t{\n\t\tconst field = BX.decl({\n\t\t\tblock: 'main-ui-control-field',\n\t\t\tmix: this.parent.getParam('ENABLE_LABEL') ? [this.parent.settings.classFieldWithLabel] : null,\n\t\t\tname: fieldData.NAME,\n\t\t\ttype: fieldData.TYPE,\n\t\t\tdeleteButton: true,\n\t\t\tlabel: this.parent.getParam('ENABLE_LABEL') ? fieldData.LABEL : '',\n\t\t\ticon: (this.parent.getParam('ENABLE_LABEL') && fieldData.ICON) ? fieldData.ICON : null,\n\t\t\tdragTitle: this.parent.getParam('MAIN_UI_FILTER__DRAG_FIELD_TITLE'),\n\t\t\tdeleteTitle: this.parent.getParam('MAIN_UI_FILTER__REMOVE_FIELD'),\n\t\t\tcontent: {\n\t\t\t\tblock: 'main-ui-multi-select',\n\t\t\t\tname: fieldData.NAME,\n\t\t\t\ttabindex: 'TABINDEX' in fieldData ? fieldData.TABINDEX : '',\n\t\t\t\tplaceholder: !this.parent.getParam('ENABLE_LABEL') && 'PLACEHOLDER' in fieldData ? fieldData.PLACEHOLDER : '',\n\t\t\t\titems: 'ITEMS' in fieldData ? fieldData.ITEMS : [],\n\t\t\t\tvalue: 'VALUE' in fieldData ? fieldData.VALUE : [],\n\t\t\t\tparams: 'PARAMS' in fieldData ? fieldData.PARAMS : {isMulti: true},\n\t\t\t\tvalueDelete: true,\n\t\t\t},\n\t\t});\n\n\t\tthis.parent.getEmitter().emit(\n\t\t\t'init',\n\t\t\t{\n\t\t\t\tfield: new Field({\n\t\t\t\t\tparent: this.parent,\n\t\t\t\t\toptions: {...fieldData},\n\t\t\t\t\tnode: field,\n\t\t\t\t}),\n\t\t\t},\n\t\t);\n\n\t\treturn field;\n\t}\n\n\n\tcreateCustomDate(fieldData)\n\t{\n\t\tconst group = {\n\t\t\tblock: 'main-ui-control-field-group',\n\t\t\ttype: fieldData.TYPE,\n\t\t\tmix: this.parent.getParam('ENABLE_LABEL') ? [this.parent.settings.classFieldWithLabel, 'main-ui-filter-date-group'] : ['main-ui-filter-date-group'],\n\t\t\tlabel: this.parent.getParam('ENABLE_LABEL') ? fieldData.LABEL : '',\n\t\t\ticon: (this.parent.getParam('ENABLE_LABEL') && fieldData.ICON) ? fieldData.ICON : null,\n\t\t\tdragTitle: this.parent.getParam('MAIN_UI_FILTER__DRAG_FIELD_TITLE'),\n\t\t\tdeleteTitle: this.parent.getParam('MAIN_UI_FILTER__REMOVE_FIELD'),\n\t\t\ttabindex: 'TABINDEX' in fieldData ? fieldData.TABINDEX : '',\n\t\t\tname: 'NAME' in fieldData ? fieldData.NAME : '',\n\t\t\tdeleteButton: true,\n\t\t\tcontent: [],\n\t\t};\n\n\t\tif (Type.isPlainObject(fieldData.VALUE.days))\n\t\t{\n\t\t\tfieldData.VALUE.days = Object.keys(fieldData.VALUE.days).map((index) => {\n\t\t\t\treturn fieldData.VALUE.days[index];\n\t\t\t});\n\t\t}\n\n\t\tconst daysValue = fieldData.DAYS.filter((item) => {\n\t\t\treturn fieldData.VALUE.days.some((value) => {\n\t\t\t\treturn value === item.VALUE;\n\t\t\t});\n\t\t});\n\n\t\tconst days = {\n\t\t\tblock: 'main-ui-control-field',\n\t\t\tmix: ['main-ui-control-custom-date'],\n\t\t\tplaceholder: fieldData.DAYS_PLACEHOLDER,\n\t\t\tdragButton: false,\n\t\t\tcontent: {\n\t\t\t\tblock: 'main-ui-multi-select',\n\t\t\t\tname: `${fieldData.NAME}_days`,\n\t\t\t\ttabindex: 'TABINDEX' in fieldData ? fieldData.TABINDEX : '',\n\t\t\t\titems: fieldData.DAYS,\n\t\t\t\tvalue: daysValue,\n\t\t\t\tparams: 'PARAMS' in fieldData ? fieldData.PARAMS : {isMulti: true},\n\t\t\t\tvalueDelete: true,\n\t\t\t\tattrs: {'data-placeholder': fieldData.DAYS_PLACEHOLDER},\n\t\t\t},\n\t\t};\n\n\n\t\tif (Type.isPlainObject(fieldData.VALUE.months))\n\t\t{\n\t\t\tfieldData.VALUE.months = Object.keys(fieldData.VALUE.months).map((index) => {\n\t\t\t\treturn fieldData.VALUE.months[index];\n\t\t\t});\n\t\t}\n\n\t\tconst monthsValue = fieldData.MONTHS.filter((item) => {\n\t\t\treturn fieldData.VALUE.months.some((value) => {\n\t\t\t\treturn value === item.VALUE;\n\t\t\t});\n\t\t});\n\n\t\tconst months = {\n\t\t\tblock: 'main-ui-control-field',\n\t\t\tmix: ['main-ui-control-custom-date'],\n\t\t\tdragButton: false,\n\t\t\tcontent: {\n\t\t\t\tblock: 'main-ui-multi-select',\n\t\t\t\tname: `${fieldData.NAME}_months`,\n\t\t\t\ttabindex: 'TABINDEX' in fieldData ? fieldData.TABINDEX : '',\n\t\t\t\titems: fieldData.MONTHS,\n\t\t\t\tvalue: monthsValue,\n\t\t\t\tparams: 'PARAMS' in fieldData ? fieldData.PARAMS : {isMulti: true},\n\t\t\t\tvalueDelete: true,\n\t\t\t\tattrs: {'data-placeholder': fieldData.MONTHS_PLACEHOLDER},\n\t\t\t},\n\t\t};\n\n\n\t\tif (Type.isPlainObject(fieldData.VALUE.years))\n\t\t{\n\t\t\tfieldData.VALUE.years = Object.keys(fieldData.VALUE.years).map((index) => {\n\t\t\t\treturn fieldData.VALUE.years[index];\n\t\t\t});\n\t\t}\n\n\t\tconst yearsValue = fieldData.YEARS.filter((item) => {\n\t\t\treturn fieldData.VALUE.years.some((value) => {\n\t\t\t\treturn value === item.VALUE;\n\t\t\t});\n\t\t});\n\n\t\tconst years = {\n\t\t\tblock: 'main-ui-control-field',\n\t\t\tmix: ['main-ui-control-custom-date'],\n\t\t\tdragButton: false,\n\t\t\tcontent: {\n\t\t\t\tblock: 'main-ui-multi-select',\n\t\t\t\tname: `${fieldData.NAME}_years`,\n\t\t\t\ttabindex: 'TABINDEX' in fieldData ? fieldData.TABINDEX : '',\n\t\t\t\titems: fieldData.YEARS,\n\t\t\t\tvalue: yearsValue,\n\t\t\t\tparams: 'PARAMS' in fieldData ? fieldData.PARAMS : {isMulti: true},\n\t\t\t\tvalueDelete: true,\n\t\t\t\tattrs: {'data-placeholder': fieldData.YEARS_PLACEHOLDER},\n\t\t\t},\n\t\t};\n\n\t\tgroup.content.push(days);\n\t\tgroup.content.push(months);\n\t\tgroup.content.push(years);\n\n\t\tconst field = BX.decl(group);\n\n\t\tthis.parent.getEmitter().emit(\n\t\t\t'init',\n\t\t\t{\n\t\t\t\tfield: new Field({\n\t\t\t\t\tparent: this.parent,\n\t\t\t\t\toptions: {...fieldData},\n\t\t\t\t\tnode: field,\n\t\t\t\t}),\n\t\t\t},\n\t\t);\n\n\t\treturn field;\n\t}\n\n\n\t_onDateTypeChange(instance, data)\n\t{\n\t\tif (this.parent.getPopup().contentContainer.contains(instance.node))\n\t\t{\n\t\t\tconst fieldData = {};\n\t\t\tlet dateGroup = null;\n\t\t\tlet label;\n\t\t\tlet controls;\n\t\t\tlet index;\n\n\t\t\tif (Type.isPlainObject(data) && Reflect.has(data, 'VALUE'))\n\t\t\t{\n\t\t\t\tconst fieldNode = instance.getNode();\n\t\t\t\tconst params = instance.getParams();\n\t\t\t\tconst {name} = fieldNode.dataset;\n\n\t\t\t\tif (\n\t\t\t\t\t!Type.isPlainObject(params)\n\t\t\t\t\t&& (name.endsWith('_datesel') || name.endsWith('_numsel')))\n\t\t\t\t{\n\t\t\t\t\tconst group = fieldNode.parentNode.parentNode;\n\t\t\t\t\tfieldData.TABINDEX = instance.getInput().getAttribute('tabindex');\n\t\t\t\t\tfieldData.SUB_TYPES = instance.getItems();\n\t\t\t\t\tfieldData.SUB_TYPE = data;\n\t\t\t\t\tfieldData.NAME = group.dataset.name;\n\t\t\t\t\tfieldData.TYPE = group.dataset.type;\n\t\t\t\t\tfieldData.VALUE_REQUIRED = group.dataset.valueRequired === 'true';\n\n\t\t\t\t\tconst presetData = this.parent.getPreset().getCurrentPresetData();\n\n\t\t\t\t\tif (Type.isArray(presetData.FIELDS))\n\t\t\t\t\t{\n\t\t\t\t\t\tlet presetField = presetData.FIELDS.find((current) => {\n\t\t\t\t\t\t\treturn current.NAME === fieldData.NAME;\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tif (Type.isNil(presetField))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpresetField = this.parent.params.FIELDS_STUBS.find((current) => {\n\t\t\t\t\t\t\t\treturn current.TYPE === fieldData.TYPE;\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (!Type.isNil(presetField))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif (name.endsWith('_datesel'))\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tfieldData.MONTHS = presetField.MONTHS;\n\t\t\t\t\t\t\t\tfieldData.MONTH = presetField.MONTH;\n\t\t\t\t\t\t\t\tfieldData.YEARS = presetField.YEARS;\n\t\t\t\t\t\t\t\tfieldData.YEAR = presetField.YEAR;\n\t\t\t\t\t\t\t\tfieldData.QUARTERS = presetField.QUARTERS;\n\t\t\t\t\t\t\t\tfieldData.QUARTER = presetField.QUARTER;\n\t\t\t\t\t\t\t\tfieldData.ENABLE_TIME = presetField.ENABLE_TIME;\n\t\t\t\t\t\t\t\tfieldData.YEARS_SWITCHER = presetField.YEARS_SWITCHER;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tfieldData.VALUES = presetField.VALUES;\n\t\t\t\t\t\t\tfieldData.REQUIRED = presetField.REQUIRED;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (this.parent.getParam('ENABLE_LABEL'))\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel = group.querySelector('.main-ui-control-field-label');\n\t\t\t\t\t\tfieldData.LABEL = label.innerText;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (name.endsWith('_datesel'))\n\t\t\t\t\t{\n\t\t\t\t\t\tdateGroup = this.createDate(fieldData);\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tdateGroup = this.createNumber(fieldData);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (Type.isArray(this.parent.fieldsList))\n\t\t\t\t\t{\n\t\t\t\t\t\tindex = this.parent.fieldsList.indexOf(group);\n\n\t\t\t\t\t\tif (index !== -1)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tthis.parent.fieldsList[index] = dateGroup;\n\t\t\t\t\t\t\tthis.parent.registerDragItem(dateGroup);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.parent.unregisterDragItem(group);\n\n\t\t\t\t\tcontrols = [...dateGroup.querySelectorAll('.main-ui-control-field')];\n\n\t\t\t\t\tif (Type.isArray(controls) && controls.length)\n\t\t\t\t\t{\n\t\t\t\t\t\tcontrols.forEach((control) => {\n\t\t\t\t\t\t\tcontrol.FieldController = new BX.Filter.FieldController(control, this.parent);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tif (this.parent.getParam('ENABLE_ADDITIONAL_FILTERS'))\n\t\t\t\t\t{\n\t\t\t\t\t\tconst button = AdditionalFilter.getInstance().getAdditionalFilterButton({\n\t\t\t\t\t\t\tfieldId: fieldData.NAME,\n\t\t\t\t\t\t\tenabled: fieldData.ADDITIONAL_FILTER_ALLOWED,\n\t\t\t\t\t\t});\n\t\t\t\t\t\tDom.append(button, dateGroup);\n\t\t\t\t\t}\n\n\t\t\t\t\tDom.insertAfter(dateGroup, group);\n\t\t\t\t\tDom.remove(group);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tcreateNumber(options)\n\t{\n\t\tconst {\n\t\t\tnumberTypes,\n\t\t\tadditionalNumberTypes,\n\t\t} = this.parent;\n\t\tconst {ENABLE_LABEL} = this.parent.params;\n\t\tconst {\n\t\t\tSUB_TYPE = {},\n\t\t\tSUB_TYPES = [],\n\t\t\tTABINDEX = '',\n\t\t\tVALUES = {_from: '', _to: ''},\n\t\t\tLABEL = '',\n\t\t\tICON = null,\n\t\t\tTYPE,\n\t\t} = options;\n\n\t\tconst subType = SUB_TYPE.VALUE || numberTypes.SINGLE;\n\t\tconst placeholder = SUB_TYPE.PLACEHOLDER || '';\n\t\tconst fieldName = options.NAME.replace('_numsel', '');\n\t\tconst classes = (() => {\n\t\t\tif (ENABLE_LABEL)\n\t\t\t{\n\t\t\t\treturn [\n\t\t\t\t\t'main-ui-filter-wield-with-label',\n\t\t\t\t\t'main-ui-filter-number-group',\n\t\t\t\t];\n\t\t\t}\n\n\t\t\treturn ['main-ui-filter-number-group'];\n\t\t})();\n\n\t\tconst fieldGroup = {\n\t\t\tblock: 'number-group',\n\t\t\ttype: TYPE,\n\t\t\tmix: classes,\n\t\t\tlabel: ENABLE_LABEL ? LABEL : '',\n\t\t\ticon: ENABLE_LABEL ? ICON : null,\n\t\t\tdragTitle: this.parent.getParam('MAIN_UI_FILTER__DRAG_FIELD_TITLE'),\n\t\t\tdeleteTitle: this.parent.getParam('MAIN_UI_FILTER__REMOVE_FIELD'),\n\t\t\ttabindex: TABINDEX,\n\t\t\tvalue: SUB_TYPE,\n\t\t\titems: SUB_TYPES,\n\t\t\tname: fieldName,\n\t\t\tdeleteButton: true,\n\t\t\tcontent: [],\n\t\t};\n\n\t\tif (\n\t\t\tsubType !== numberTypes.LESS\n\t\t\t&& subType !== additionalNumberTypes.BEFORE_N\n\t\t)\n\t\t{\n\t\t\tconst from = {\n\t\t\t\tblock: 'main-ui-control-field',\n\t\t\t\ttype: TYPE,\n\t\t\t\tdragButton: false,\n\t\t\t\tcontent: {\n\t\t\t\t\tblock: 'main-ui-number',\n\t\t\t\t\tmix: ['filter-type-single'],\n\t\t\t\t\tcalendarButton: true,\n\t\t\t\t\tvalueDelete: true,\n\t\t\t\t\tplaceholder,\n\t\t\t\t\tname: `${fieldName}_from`,\n\t\t\t\t\ttabindex: TABINDEX,\n\t\t\t\t\tvalue: VALUES._from || '',\n\t\t\t\t},\n\t\t\t};\n\n\t\t\tfieldGroup.content.push(from);\n\t\t}\n\n\t\tif (subType === numberTypes.RANGE)\n\t\t{\n\t\t\tconst line = {\n\t\t\t\tblock: 'main-ui-filter-field-line',\n\t\t\t\tcontent: {\n\t\t\t\t\tblock: 'main-ui-filter-field-line-item',\n\t\t\t\t\ttag: 'span',\n\t\t\t\t},\n\t\t\t};\n\n\t\t\tfieldGroup.content.push(line);\n\t\t}\n\n\t\tif (\n\t\t\tsubType === numberTypes.RANGE\n\t\t\t|| subType === numberTypes.LESS\n\t\t\t|| subType === additionalNumberTypes.BEFORE_N\n\t\t)\n\t\t{\n\t\t\tconst to = {\n\t\t\t\tblock: 'main-ui-control-field',\n\t\t\t\ttype: TYPE,\n\t\t\t\tdragButton: false,\n\t\t\t\tcontent: {\n\t\t\t\t\tblock: 'main-ui-number',\n\t\t\t\t\tcalendarButton: true,\n\t\t\t\t\tvalueDelete: true,\n\t\t\t\t\tname: `${fieldName}_to`,\n\t\t\t\t\ttabindex: TABINDEX,\n\t\t\t\t\tvalue: VALUES._to || '',\n\t\t\t\t},\n\t\t\t};\n\n\t\t\tfieldGroup.content.push(to);\n\t\t}\n\n\t\tconst field = BX.decl(fieldGroup);\n\n\t\tthis.parent.getEmitter().emit(\n\t\t\t'init',\n\t\t\t{\n\t\t\t\tfield: new Field({\n\t\t\t\t\tparent: this.parent,\n\t\t\t\t\toptions: {...options},\n\t\t\t\t\tnode: field,\n\t\t\t\t}),\n\t\t\t},\n\t\t);\n\n\t\treturn field;\n\t}\n\n\tcreateDate(options)\n\t{\n\t\tconst {\n\t\t\tdateTypes,\n\t\t\tadditionalDateTypes,\n\t\t} = this.parent;\n\t\tconst {\n\t\t\tSUB_TYPE = {},\n\t\t\tSUB_TYPES = [],\n\t\t\tPLACEHOLDER = '',\n\t\t\tVALUES = {\n\t\t\t\t_from: '',\n\t\t\t\t_to: '',\n\t\t\t\t_quarter: '',\n\t\t\t\t_days: '',\n\t\t\t\t_month: '',\n\t\t\t\t_year: '',\n\t\t\t\t_allow_year: '',\n\t\t\t},\n\t\t\tTABINDEX = '',\n\t\t\tENABLE_TIME = false,\n\t\t\tLABEL = '',\n\t\t\tICON = null,\n\t\t\tTYPE,\n\t\t\tVALUE_REQUIRED = false,\n\t\t\tREQUIRED = false,\n\t\t} = options;\n\t\tconst {ENABLE_LABEL} = this.parent.params;\n\n\t\tconst subType = SUB_TYPE.VALUE || dateTypes.NONE;\n\t\tconst fieldName = options.NAME.replace('_datesel', '');\n\t\tconst classes = (() => {\n\t\t\tif (ENABLE_LABEL)\n\t\t\t{\n\t\t\t\treturn [\n\t\t\t\t\t'main-ui-filter-wield-with-label',\n\t\t\t\t\t'main-ui-filter-date-group',\n\t\t\t\t];\n\t\t\t}\n\n\t\t\treturn ['main-ui-filter-date-group'];\n\t\t})();\n\n\t\tconst fieldGroup = {\n\t\t\tblock: 'date-group',\n\t\t\ttype: TYPE,\n\t\t\tmix: classes,\n\t\t\tlabel: ENABLE_LABEL ? LABEL : '',\n\t\t\ticon: ENABLE_LABEL ? ICON : null,\n\t\t\tdragTitle: this.parent.getParam('MAIN_UI_FILTER__DRAG_FIELD_TITLE'),\n\t\t\tdeleteTitle: this.parent.getParam('MAIN_UI_FILTER__REMOVE_FIELD'),\n\t\t\ttabindex: TABINDEX,\n\t\t\tvalue: SUB_TYPE,\n\t\t\titems: SUB_TYPES,\n\t\t\tname: fieldName,\n\t\t\tenableTime: ENABLE_TIME,\n\t\t\tdeleteButton: true,\n\t\t\tcontent: [],\n\t\t};\n\n\t\tif (subType === dateTypes.EXACT)\n\t\t{\n\t\t\tconst fieldDecl = createDateInputDecl({\n\t\t\t\ttype: TYPE,\n\t\t\t\tname: `${fieldName.NAME}_from`,\n\t\t\t\tplaceholder: PLACEHOLDER,\n\t\t\t\ttabindex: TABINDEX,\n\t\t\t\tvalue: VALUES._from || '',\n\t\t\t\tenableTime: ENABLE_TIME,\n\t\t\t});\n\n\t\t\tfieldGroup.content.push(fieldDecl);\n\t\t}\n\n\t\tif (\n\t\t\tsubType === dateTypes.NEXT_DAYS\n\t\t\t|| subType === dateTypes.PREV_DAYS\n\t\t\t|| subType === additionalDateTypes.PREV_DAY\n\t\t\t|| subType === additionalDateTypes.NEXT_DAY\n\t\t\t|| subType === additionalDateTypes.MORE_THAN_DAYS_AGO\n\t\t\t|| subType === additionalDateTypes.AFTER_DAYS\n\t\t)\n\t\t{\n\t\t\tconst fieldDecl = createNumberInputDecl({\n\t\t\t\ttype: TYPE,\n\t\t\t\tname: `${fieldName}_days`,\n\t\t\t\ttabindex: TABINDEX,\n\t\t\t\tvalue: VALUES._days || '',\n\t\t\t\tplaceholder: PLACEHOLDER,\n\t\t\t});\n\n\t\t\tfieldGroup.content.push(fieldDecl);\n\t\t}\n\n\t\tif (subType === dateTypes.RANGE)\n\t\t{\n\t\t\tconst rangeGroup = {\n\t\t\t\tblock: 'main-ui-filter-range-group',\n\t\t\t\tcontent: [\n\t\t\t\t\tcreateDateInputDecl({\n\t\t\t\t\t\ttype: TYPE,\n\t\t\t\t\t\tname: `${fieldName}_from`,\n\t\t\t\t\t\tplaceholder: PLACEHOLDER,\n\t\t\t\t\t\ttabindex: TABINDEX,\n\t\t\t\t\t\tvalue: VALUES._from || '',\n\t\t\t\t\t\tenableTime: ENABLE_TIME,\n\t\t\t\t\t}),\n\t\t\t\t\tcreateLineDecl(),\n\t\t\t\t\tcreateDateInputDecl({\n\t\t\t\t\t\ttype: TYPE,\n\t\t\t\t\t\tname: `${fieldName}_to`,\n\t\t\t\t\t\tplaceholder: PLACEHOLDER,\n\t\t\t\t\t\ttabindex: TABINDEX,\n\t\t\t\t\t\tvalue: VALUES._to || '',\n\t\t\t\t\t\tenableTime: ENABLE_TIME,\n\t\t\t\t\t}),\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tfieldGroup.content.push(rangeGroup);\n\t\t}\n\n\t\tif (subType === dateTypes.MONTH)\n\t\t{\n\t\t\tconst {MONTHS, MONTH, YEARS, YEAR} = options;\n\n\t\t\tconst monthValue = (\n\t\t\t\tMONTHS.find((item) => {\n\t\t\t\t\treturn item.VALUE === VALUES._month;\n\t\t\t\t})\n\t\t\t\t|| MONTH\n\t\t\t\t|| MONTHS[0]\n\t\t\t);\n\n\t\t\tconst yearValue = (\n\t\t\t\tYEARS.find((item) => {\n\t\t\t\t\treturn item.VALUE === VALUES._year;\n\t\t\t\t})\n\t\t\t\t|| YEAR\n\t\t\t\t|| YEARS[0]\n\t\t\t);\n\n\t\t\tfieldGroup.content.push(\n\t\t\t\tcreateSelectDecl({\n\t\t\t\t\tname: `${fieldName}_month`,\n\t\t\t\t\tvalue: monthValue,\n\t\t\t\t\titems: MONTHS,\n\t\t\t\t\ttabindex: TABINDEX,\n\t\t\t\t}),\n\t\t\t\tcreateSelectDecl({\n\t\t\t\t\tname: `${fieldName}_year`,\n\t\t\t\t\tvalue: yearValue,\n\t\t\t\t\titems: YEARS,\n\t\t\t\t\ttabindex: TABINDEX,\n\t\t\t\t}),\n\t\t\t);\n\t\t}\n\n\t\tif (subType === dateTypes.QUARTER)\n\t\t{\n\t\t\tconst {YEARS, YEAR, QUARTERS, QUARTER, PARAMS} = options;\n\n\t\t\tconst yearValue = (\n\t\t\t\tYEARS.find((item) => {\n\t\t\t\t\treturn item.VALUE === VALUES._year;\n\t\t\t\t})\n\t\t\t\t|| YEAR\n\t\t\t\t|| YEARS[0]\n\t\t\t);\n\n\t\t\tconst quarterValue = (\n\t\t\t\tQUARTERS.find((item) => {\n\t\t\t\t\treturn item.VALUE === VALUES._quarter;\n\t\t\t\t})\n\t\t\t\t|| QUARTER\n\t\t\t\t|| QUARTERS[0]\n\t\t\t);\n\n\t\t\tfieldGroup.content.push(\n\t\t\t\tcreateSelectDecl({\n\t\t\t\t\tname: `${fieldName}_year`,\n\t\t\t\t\tvalue: yearValue,\n\t\t\t\t\titems: YEARS,\n\t\t\t\t\ttabindex: TABINDEX,\n\t\t\t\t}),\n\t\t\t\tcreateSelectDecl({\n\t\t\t\t\tname: `${fieldName}_quarter`,\n\t\t\t\t\tvalue: quarterValue,\n\t\t\t\t\titems: QUARTERS,\n\t\t\t\t\ttabindex: TABINDEX,\n\t\t\t\t\tparams: PARAMS,\n\t\t\t\t}),\n\t\t\t);\n\t\t}\n\n\t\tif (subType === dateTypes.YEAR)\n\t\t{\n\t\t\tconst {YEARS, YEAR} = options;\n\n\t\t\tconst yearValue = (\n\t\t\t\tYEARS.find((item) => {\n\t\t\t\t\treturn item.VALUE === VALUES._year;\n\t\t\t\t})\n\t\t\t\t|| YEAR\n\t\t\t\t|| YEARS[0]\n\t\t\t);\n\n\t\t\tfieldGroup.content.push(\n\t\t\t\tcreateSelectDecl({\n\t\t\t\t\tname: `${fieldName}_year`,\n\t\t\t\t\tvalue: yearValue,\n\t\t\t\t\titems: YEARS,\n\t\t\t\t\ttabindex: TABINDEX,\n\t\t\t\t}),\n\t\t\t);\n\t\t}\n\n\t\tif (subType === 'CUSTOM_DATE')\n\t\t{\n\t\t\tconst customDateSubType = SUB_TYPES.find((item) => {\n\t\t\t\treturn item.VALUE === 'CUSTOM_DATE';\n\t\t\t});\n\n\t\t\tif (customDateSubType)\n\t\t\t{\n\t\t\t\tconst customDateDecl = Runtime.clone(customDateSubType.DECL);\n\n\t\t\t\tif (Type.isArray(VALUES._days))\n\t\t\t\t{\n\t\t\t\t\tcustomDateDecl.VALUE.days = VALUES._days;\n\t\t\t\t}\n\n\t\t\t\tif (Type.isArray(VALUES._month))\n\t\t\t\t{\n\t\t\t\t\tcustomDateDecl.VALUE.months = VALUES._month;\n\t\t\t\t}\n\n\t\t\t\tif (Type.isArray(VALUES._year))\n\t\t\t\t{\n\t\t\t\t\tcustomDateDecl.VALUE.years = VALUES._year;\n\t\t\t\t}\n\n\t\t\t\tconst renderedField = this.createCustomDate(customDateDecl);\n\t\t\t\tDom.removeClass(renderedField, 'main-ui-filter-wield-with-label');\n\n\t\t\t\tconst buttons = [\n\t\t\t\t\t...renderedField\n\t\t\t\t\t\t.querySelectorAll('.main-ui-item-icon-container, .main-ui-filter-icon-grab'),\n\t\t\t\t];\n\n\t\t\t\tbuttons.forEach((button) => Dom.remove(button));\n\n\t\t\t\tfieldGroup.content.push(renderedField);\n\t\t\t\tfieldGroup.mix.push('main-ui-filter-custom-date-group');\n\t\t\t}\n\t\t}\n\n\t\tif (\n\t\t\tsubType !== dateTypes.NONE\n\t\t\t&& subType !== additionalDateTypes.CUSTOM_DATE\n\t\t\t&& options.YEARS_SWITCHER\n\t\t)\n\t\t{\n\t\t\tconst YEARS_SWITCHER = Runtime.clone(options.YEARS_SWITCHER);\n\t\t\tconst {ITEMS} = YEARS_SWITCHER;\n\n\t\t\tYEARS_SWITCHER.VALUE = ITEMS.reduce((acc, item) => {\n\t\t\t\treturn item.VALUE === VALUES._allow_year ? item : acc;\n\t\t\t});\n\n\t\t\tconst renderedField = this.createSelect(YEARS_SWITCHER);\n\n\t\t\tDom.addClass(renderedField, ['main-ui-filter-year-switcher', 'main-ui-filter-with-padding']);\n\t\t\tDom.removeClass(renderedField, 'main-ui-filter-wield-with-label');\n\n\t\t\tconst buttons = [\n\t\t\t\t...renderedField\n\t\t\t\t\t.querySelectorAll('.main-ui-item-icon-container, .main-ui-filter-icon-grab'),\n\t\t\t];\n\n\t\t\tbuttons.forEach((button) => Dom.remove(button));\n\n\t\t\tconst lastIndex = fieldGroup.content.length - 1;\n\t\t\tconst lastContentItem = fieldGroup.content[lastIndex];\n\n\t\t\tif (Type.isPlainObject(lastContentItem))\n\t\t\t{\n\t\t\t\tif (!Type.isArray(lastContentItem.mix))\n\t\t\t\t{\n\t\t\t\t\tlastContentItem.mix = [];\n\t\t\t\t}\n\n\t\t\t\tlastContentItem.mix.push('main-ui-filter-remove-margin-right');\n\t\t\t}\n\n\t\t\tif (Type.isDomNode(lastContentItem))\n\t\t\t{\n\t\t\t\tDom.addClass(lastContentItem, 'main-ui-filter-remove-margin-right');\n\t\t\t}\n\n\t\t\trequestAnimationFrame(() => {\n\t\t\t\tDom.addClass(renderedField.previousElementSibling, 'main-ui-filter-remove-margin-right');\n\t\t\t});\n\n\t\t\tfieldGroup.content.push(renderedField);\n\t\t\tfieldGroup.mix.push('main-ui-filter-date-with-years-switcher');\n\t\t}\n\n\t\tconst renderedFieldGroup = BX.decl(fieldGroup);\n\t\tconst onDateChange = Runtime.debounce(this.onDateChange, 500, this);\n\n\t\tconst inputs = [\n\t\t\t...renderedFieldGroup\n\t\t\t\t.querySelectorAll('.main-ui-date-input'),\n\t\t];\n\n\t\tinputs\n\t\t\t.forEach((input) => {\n\t\t\t\tinput.addEventListener('change', onDateChange);\n\t\t\t\tinput.addEventListener('input', onDateChange);\n\n\t\t\t\tconst {parentNode} = input;\n\t\t\t\tconst clearButton = parentNode.querySelector('.main-ui-control-value-delete');\n\n\t\t\t\tif (clearButton)\n\t\t\t\t{\n\t\t\t\t\tclearButton.addEventListener('click', () => {\n\t\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t\tthis.onDateChange({target: input});\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\n\t\tif (VALUE_REQUIRED)\n\t\t{\n\t\t\trenderedFieldGroup.dataset.valueRequired = true;\n\n\t\t\tconst allInputs = [\n\t\t\t\t...inputs,\n\t\t\t\t...renderedFieldGroup\n\t\t\t\t\t.querySelectorAll('.main-ui-number-input'),\n\t\t\t];\n\n\t\t\tallInputs\n\t\t\t\t.forEach((input) => {\n\t\t\t\t\tinput.addEventListener('change', this.checkRequiredDateValue.bind(this));\n\t\t\t\t\tinput.addEventListener('input', this.checkRequiredDateValue.bind(this));\n\n\t\t\t\t\tconst {parentNode} = input;\n\t\t\t\t\tconst clearButton = parentNode.querySelector('.main-ui-control-value-delete');\n\n\t\t\t\t\tif (clearButton)\n\t\t\t\t\t{\n\t\t\t\t\t\tclearButton.addEventListener('click', () => {\n\t\t\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t\t\tthis.checkRequiredDateValue({target: input});\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tEvent.bindOnce(input, 'mouseout', () => {\n\t\t\t\t\t\tthis.checkRequiredDateValue({target: input});\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t}\n\n\t\tif (REQUIRED)\n\t\t{\n\t\t\tconst removeButton = renderedFieldGroup\n\t\t\t\t.querySelector('.main-ui-filter-field-delete');\n\n\t\t\tif (removeButton)\n\t\t\t{\n\t\t\t\tBX.remove(removeButton);\n\t\t\t}\n\t\t}\n\n\t\tconst currentValues = {};\n\t\tthis.parent.prepareControlDateValue(currentValues, fieldName, renderedFieldGroup);\n\n\t\tObject.entries(currentValues).forEach(([key, value]) => {\n\t\t\tcurrentValues[key.replace(fieldName, '')] = value;\n\t\t\tdelete currentValues[key];\n\t\t});\n\n\t\tthis.parent.getEmitter().emit(\n\t\t\t'init',\n\t\t\t{\n\t\t\t\tfield: new Field({\n\t\t\t\t\tparent: this.parent,\n\t\t\t\t\toptions: {...options, VALUES: currentValues},\n\t\t\t\t\tnode: renderedFieldGroup,\n\t\t\t\t}),\n\t\t\t},\n\t\t);\n\n\t\treturn renderedFieldGroup;\n\t}\n\n\tcheckRequiredDateValue(event)\n\t{\n\t\tif (event.target.value === '')\n\t\t{\n\t\t\tthis.showError({\n\t\t\t\tid: 'valueError',\n\t\t\t\ttarget: event.target,\n\t\t\t\ttext: this.parent.params.MAIN_UI_FILTER__VALUE_REQUIRED,\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\n\t\tthis.hideError({\n\t\t\tid: 'valueError',\n\t\t\ttarget: event.target,\n\t\t});\n\t}\n\n\tonDateChange(event)\n\t{\n\t\tif (values.get(event.target) === event.target.value)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tvalues.set(event.target, event.target.value);\n\n\t\tif (event.target.value === '')\n\t\t{\n\t\t\tthis.hideError({\n\t\t\t\tid: 'formatError',\n\t\t\t\ttarget: event.target,\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\n\t\tBX.ajax\n\t\t\t.runComponentAction(\n\t\t\t\t'bitrix:main.ui.filter',\n\t\t\t\t'checkDateFormat',\n\t\t\t\t{\n\t\t\t\t\tmode: 'ajax',\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tvalue: event.target.value,\n\t\t\t\t\t\tformat: BX.message('FORMAT_DATETIME'),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t)\n\t\t\t.then((result) => {\n\t\t\t\tif (!result.data.result)\n\t\t\t\t{\n\t\t\t\t\tthis.showError({\n\t\t\t\t\t\tid: 'formatError',\n\t\t\t\t\t\ttarget: event.target,\n\t\t\t\t\t});\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tthis.hideError({\n\t\t\t\t\tid: 'formatError',\n\t\t\t\t\ttarget: event.target,\n\t\t\t\t});\n\t\t\t});\n\t}\n\n\tshowError({id, target, text = null})\n\t{\n\t\tDom.style(target, 'border-color', '#FF5752');\n\n\t\tif (\n\t\t\terrorMessages.has(target)\n\t\t\t&& errorMessagesTypes.get(target) === id\n\t\t)\n\t\t{\n\t\t\tDom.remove(errorMessages.get(target));\n\t\t}\n\n\t\tconst {\n\t\t\tMAIN_UI_FILTER__DATE_ERROR_TITLE,\n\t\t\tMAIN_UI_FILTER__DATE_ERROR_LABEL,\n\t\t} = this.parent.params;\n\n\t\tconst errorText = text || `${MAIN_UI_FILTER__DATE_ERROR_LABEL} ${Loc.getMessage('FORMAT_DATE')}`;\n\n\t\tconst dateErrorMessage = Tag.render`\n\t\t\t<div \n\t\t\t\tclass=\"main-ui-filter-error-message\" \n\t\t\t\ttitle=\"${MAIN_UI_FILTER__DATE_ERROR_TITLE}\">\n\t\t\t\t${errorText}\n\t\t\t</div>\n\t\t`;\n\n\t\terrorMessages.set(target, dateErrorMessage);\n\t\terrorMessagesTypes.set(target, id);\n\n\t\tDom.insertAfter(dateErrorMessage, target);\n\t\tDom.attr(target, 'is-valid', 'false');\n\t}\n\n\thideError({id, target})\n\t{\n\t\tDom.style(target, 'border-color', null);\n\n\t\tif (\n\t\t\terrorMessages.has(target)\n\t\t\t&& errorMessagesTypes.get(target) === id\n\t\t)\n\t\t{\n\t\t\tDom.remove(errorMessages.get(target));\n\t\t}\n\n\t\tDom.attr(target, 'is-valid', 'true');\n\t}\n}"],"names":["BX","namespace","Main","ui","block","data","group","select","deleteButton","label","dragButton","name","mix","attrs","type","enableTime","content","isNotEmptyString","labelContent","Type","isPlainObject","icon","tag","title","src","url","push","tabindex","value","items","params","valueDelete","isArray","forEach","current","deleteTitle","dragTitle","field","valueDeleteButton","placeholder","item","id","JSON","stringify","events","click","onClick","control","input","autocomplete","isPreset","util","htmlspecialcharsback","iconTitle","length","pinned","htmlspecialchars","text","noEditPinTitle","editNameTitle","removeTitle","editPinTitle","Filter","Utils","cache","styleForEach","collection","properties","keys","Object","call","propKey","style","closestParent","className","parentNode","findParent","closestChilds","children","getNext","currentItem","nextElementSibling","getPrev","previousElementSibling","collectionSort","target","root","collectionLength","currentIndex","targetIndex","getIndex","appendChild","insertBefore","indexOf","getByClass","rootElement","all","result","document","body","getElementsByClassName","slice","getByTag","getElementsByTagName","getBySelector","selector","querySelector","querySelectorAll","requestAnimationFrame","raf","window","webkitRequestAnimationFrame","mozRequestAnimationFrame","msRequestAnimationFrame","oRequestAnimationFrame","callback","setTimeout","apply","arguments","sortObject","output","sort","key","objectsIsEquals","object1","object2","isKey","event","keyCode","keyboard","code","which","DestinationSelectorManager","fields","controls","onSelect","isNumeric","prefix","isNotEmptyObject","selectorId","re","RegExp","found","match","eventResult","onCustomEvent","setData","getLabelNode","blur","onDialogOpen","DestinationSelector","onDialogClose","filterId","settings","fieldId","inited","create","self","initialize","prototype","getSetting","defaultval","hasOwnProperty","getSearchInput","opened","initialValue","initialSettings","itemId","itemName","filterManager","getById","getApi","setFields","addCustomEvent","delegate","onCustomEntitySelectorOpen","onCustomEntitySelectorClose","onGetStopBlur","onBeforeInitDialog","onCustomEntityRemove","open","getCurrentValues","inputId","containerId","currentValue","currentUser","entityId","bindNode","getField","close","selectorManagerV2","closeDialog","getId","stopBlur","instance","UI","SelectorManager","instances","hiddenInput","itemsSelected","blockInit","EntitySelector","filter","Error","isMultiple","needAddEntityIdToFilter","needShowDialogOnEmptyInput","dialogOptions","prepareDialogOptions","dialog","EventEmitter","subscribe","onCustomEntityFocus","bind","onCustomEntityBlur","onApplyPreset","controlInputChangeHandler","onSearchInputChange","isActive","initDialog","then","openDialog","isOpen","hide","getFilterField","node","classStringInput","defaultValue","defaultOptions","enableSearch","hideOnSelect","autoHide","hideByEsc","assign","inputWrapper","getFilterFieldInputWrapper","searchInput","getFilterFieldInput","searchQuery","isDomNode","trim","setTargetNode","setWidth","offsetWidth","show","updateSelectedItemsInDialog","search","initDialogExtension","exports","Dialog","getDialogId","multiple","onDialogItemSelect","onDialogItemDeSelect","onDialogLoad","Event","currentValues","setMultipleData","setSingleData","clearValue","getParam","getEntityId","selectedIds","map","getItems","dialogItem","getItemId","deselect","getData","setControl","unsetControl","browserEvent","contains","Dom","hasClass","classFieldDelete","dialogContainerElement","getPopup","getContentContainer","destroy","addItemToFilter","getTitle","removeItemFromFilter","getTarget","initExtensionPromise","Runtime","loadExtension","isObject","Reflection","FieldController","parent","init","isShowDelete","showDelete","hideDelete","squares","getSquares","getInputValue","getInput","types","getType","DATE","classDateInput","NUMBER","classNumberInput","STRING","CUSTOM_ENTITY","getDeleteButton","classValueDelete","classSquare","MULTI_SELECT","SELECT","_onDeleteClick","_onInput","clearInput","addClass","classHide","removeClass","removeSquares","square","remove","CustomEntity","labelInput","popupContainer","inputClass","squareClass","parse","setField","reset","hiddenNode","getHiddenNode","getSquareByValue","jsencode","join","setSquare","squareData","decl","prepend","insertAfter","i","_label","_value","ex","fireEvent","values","setPopupContainer","container","getPopupContainer","Search","preset","buttonsContainer","delay","timeout","_onInputWithoutDebounce","debounce","_onKeyDown","getFindButton","_onSearchClick","getContainer","_onSearchContainerClick","removeAutofocus","firstInit","autofocus","findButton","classSearchButton","selectSquare","classSquareSelected","selectSquares","unselectSquare","unselectSquares","removeSquare","isSquaresSelected","every","isSquareSelected","getLastSquare","isTextSelected","searchStringLength","getSearchString","selectionStart","selectionEnd","isSelectionStart","isSquareRemoveButton","classSquareDelete","isClearButton","classClearSearchValueButton","getClearButton","isSearchButton","adjustFocus","browser","IsMobile","activeElement","scrollY","pos","top","focus","findSquareByChild","childNode","getSquareData","rawData","isSquareControl","onPresetSquareRemove","Preset","getPreset","currentPresetId","getCurrentPresetId","isResetToDefaultMode","isValueRequiredModeMail","isPinned","showPopup","adjustPlaceholder","deactivateAllPresets","resetWithoutSearch","lastPromise","resetFilter","closePopup","applyPinnedPreset","currentPreset","tmpPreset","FIELDS","clone","ADDITIONAL","applyPreset","applyFilter","onControlSquareRemove","clearControls","removeAdditionalField","onValueRequiredSquareRemove","complexSquareRemove","isValueRequiredMode","isPresetSquare","adjustClearButton","showClearButton","hideClearButton","presetData","isShown","start","end","searchLength","restoreRemovedPreset","utils","lastSearchString","metaKey","ctrlKey","clearTimeout","setInputPlaceholder","get","isResolvedRequest","state","_onFindButtonClick","getSearch","removePreset","resetPreset","searchString","isIe","showGridAnimation","FILTER_ID","setIsSetOutsideState","setDefaultPresetAppliedState","isAppliedDefaultPreset","isAppliedUserFilter","getButtonsContainer","classSearchButtonsContainer","classShow","form","clearForm","makeSquares","squaresData","depth","additional","tmpSquare","moreSquares","index","lastSquare","squaresWidth","prepareSquaresData","width","curr","reduce","prev","parseFloat","setPreset","squaresResult","ID","TITLE","NAME","TYPE","tmpValues","some","currentField","isStringFilled","ADDITIONAL_FILTER","LABEL","SUB_TYPE","VALUE","dateTypes","QUARTER","VALUES","_quarter","quarter","QUARTERS","toLocaleLowerCase","_year","YEAR","MONTH","_month","month","MONTHS","EXACT","_from","RANGE","_to","NEXT_DAYS","PREV_DAYS","isNumber","parseInt","_days","replace","NONE","CUSTOM_DATE","days","months","years","STRICT","val","DEST_SELECTOR","ENTITY_SELECTOR","MULTIPLE","CUSTOM","_VALUE","squareItem","Loc","getMessage","ICON","AdditionalFilter","HAS_ANY_VALUE","presetClass","updatePreset","Settings","options","classField","classFieldGroup","classFieldLine","classFieldLabel","classFieldWithLabel","classPresetName","classControl","classSelect","classMultiSelect","classAddField","classAddPresetField","classAddPresetFieldInput","classAddPresetButton","classButtonsContainer","classSaveButton","classCancelButton","classMenuItem","classMenuItemText","classMenuMultiItemText","classMenuItemChecked","classSearchContainer","classDefaultPopup","classPopupFieldList","classPopupFieldList1Column","classPopupFieldList2Column","classPopupFieldList3Column","classPopupFieldList4Column","classPopupFieldList5Column","classPopupFieldList6Column","classFieldListItem","classEditButton","classPresetEdit","classPresetNameEdit","classPresetDeleteButton","classPresetDragButton","classPresetEditButton","classPresetEditInput","classPresetOndrag","classPresetsContainer","classPreset","classPresetCurrent","classFilterContainer","classFileldControlList","classRestoreFieldsButton","classDisabled","classAnimationShow","classAnimationClose","classLimitsAnimation","classSidebarControlsContainer","searchContainerPostfix","classPresetButtonsContainer","classFindButton","classResetButton","classDefaultFilter","classRestoreButton","classPinButton","classPopupOverlay","classSidePanelContainer","classPinnedPreset","classWaitButtonClass","classForAllCheckbox","classFocus","classPresetField","classPopupSearchFieldListItemHidden","classPopupSearchFieldListItemVisible","classPopupSearchSectionItem","classPopupSearchSectionItemIcon","classPopupSearchSectionItemIconActive","numberPostfix","datePostfix","toPostfix","fromPostfix","daysPostfix","monthPostfix","quarterPostfix","yearPostfix","generalTemplateId","maxPopupColumnCount","popupWidth","mergeSettings","isFunction","remember","IS_EMPTY","Cache","MemoryCache","setEventNamespace","onDocumentClick","Menu","onclick","onAdditionalFilterMenuItemClick","delimiter","html","Helper","preventDefault","typeId","getCurrentFieldNode","initAdditionalFilter","getAdditionalFilterMenu","set","stopPropagation","currentTarget","setCurrentFieldId","setCurrentFieldNode","parentElement","menu","allowedItems","String","attr","split","getMenuItems","menuItem","menuItemId","includes","layout","getPopupWindow","bindElement","setBindElement","adjustPosition","enabled","disabled","isArrayFilled","allowedTypes","Tag","render","onAdditionalFilterButtonClick","fieldNode","currentFieldId","getCurrentFieldId","attributes","getAdditionalFilterPlaceholderField","currentPlaceholder","append","message","onRemoveClick","restoreField","closest","Presets","presets","getPresets","_onPresetClick","getAddPresetField","getAddPresetFieldInput","Text","decode","presetNode","isString","getPresetNodeById","find","nameNode","getPresetNameNode","presetId","isDefault","newPresets","postData","preset_id","is_default","action","saveOptions","PRESETS","editablePresets","GRID_ID","getPresetId","isEditEnabled","pinPreset","enableEditPresetName","IS_DEFAULT","updateEditablePreset","activatePreset","isTrusted","isAddPresetEnabled","disableAddPreset","promise","getPinnedPresetId","pinnedPresetId","pinnedPresetNode","getPinnedPresetNode","clear","getFilterFieldsValues","presetRows","getFields","presetFields","preparePresetFields","getPresetInput","ROWS","_onPresetNameInput","inputValue","unbind","filtered","fieldName","noValues","extendPreset","updatePresetFields","defaultPreset","someField","defCurr","defIndex","isEmptyField","datesel","_datesel","CURRENT_DAY","CURRENT_WEEK","CURRENT_MONTH","CURRENT_QUARTER","LAST_7_DAYS","LAST_30_DAYS","LAST_60_DAYS","LAST_90_DAYS","LAST_WEEK","LAST_MONTH","TOMORROW","YESTERDAY","NEXT_WEEK","NEXT_MONTH","CHECKBOX","getFieldListContainer","fieldData","tmpName","disableSaveFieldsSort","fieldsList","unregisterDragItem","deleteField","currentPresetField","getPresetField","saveFieldsSort","removeField","getControls","nodeName","TABINDEX","getAttribute","createControl","registerDragItem","createInputText","TEXTAREA","createTextarea","createSelect","createMultiSelect","createNumber","createDate","createCustomDate","createDestSelector","createEntitySelector","createCustom","createCustomEntity","additionalFilterInstance","getInstance","button","getAdditionalFilterButton","ADDITIONAL_FILTER_ALLOWED","dataset","REQUIRED","removeButton","noClean","dateType","additionalDateTypes","FIND","PREV_DAY","NEXT_DAY","MORE_THAN_DAYS_AGO","AFTER_DAYS","getFieldByName","currentPresetData","preparePresetSettingsFields","currentFields","removeNotCompareVariables","comparedPresetFields","comparedCurrentFields","notEmptyFields","removeSameProperties","fieldListContainer","fieldNodes","replaced","IS_PRESET_FIELD","presetField","ITEMS","SUB_TYPES","disableFieldsDragAndDrop","cleanNode","HTML","wrap","getHiddenElement","enableFieldsDragAndDrop","getCurrentPresetData","getCurrentPreset","currentId","currentData","getFilter","dataId","numberTypes","additionalNumberTypes","popup","checkboxListPopup","api","isAddPresetModeState","analyticsLabel","emitter","eventName","listener","enableFieldsSearch","enableHeadersSections","toCamelCase","string","toLowerCase","chr","toUpperCase","substr","_onDocumentClick","_onDocumentKeydown","onWindowLoad","_onGridReady","getEmitter","clearGet","location","toString","clearUrl","remove_url_param","history","replaceState","_onAddPresetKeydown","_onSaveButtonClick","Api","addSidebarItem","presetsContainer","sidebarItem","createSidebarItem","saveUserSettings","forAll","optionsParams","presetsSettings","current_preset","SORT","updatePresetName","rows","for_all","isBoolean","FOR_ALL","isForAll","checkbox","getForAllCheckbox","checked","forAllCheckbox","valuesKeys","savePreset","Date","presetName","beforeLoad","afterLoad","isNew","sourceFields","tmpPresetNode","tmpPresetInput","apply_filter","clear_filter","save","updateParams","Promise","setAutoResolve","afterPromise","proxy","fulfill","dataFields","fieldKeys","fetchAdditionalFilter","prepareMultiSelectValue","prepareSelectValue","tmpResult","valuesValues","Field","confirmSaveForAll","resolve","CONFIRM","CONFIRM_MESSAGE","CONFIRM_APPLY_BUTTON","CONFIRM_CANCEL_BUTTON","confirmDialog","commonPresetsId","with_preset","isSetOutside","requestData","backend","disableEdit","ajax","runComponentAction","mode","PRESET_ID","limitAnalyticsSend","LIMIT","prepareEvent","x","path","hasScrollClick","clientX","documentElement","isUseCommonPresets","isInsideFilterEvent","_onAddFieldClick","CheckboxList","showFieldsSettingsCheckboxList","showFieldsSettingsPopup","getFieldsPopup","showFieldsPopup","syncFields","closeFieldListPopup","syncCheckboxFields","getFieldsListPopupContent","getPreparedCheckboxListData","sections","categories","context","parentType","popupOptions","lang","emptyStateTitle","emptyStateDescription","allSectionsDisabledTitle","onApply","onCheckboxListApply","destroyPopupAfterClose","useSearch","useSectioning","checkedFields","getSelectedOptions","handleOptionToggled","defaultHeaderSection","getDefaultHeaderSection","sectionIds","Set","headerSections","getHeadersSections","defaultPresetFields","restrictedFields","sectionId","has","add","sectionKey","categoryKey","defaultField","locked","fieldsPopupItems","getFieldsPopupItems","isNeedCheck","contentContainer","prepareAnimation","getFieldListContainerClassName","itemsCount","popupColumnsCount","containerClass","prepareFieldsDecl","SECTION_ID","_clickOnFieldListItem","getLazyLoadFields","listUrl","p","component","response","method","dataType","onsuccess","fieldsCount","getPopupContent","sourceComponentName","sourceComponentSignedParameters","runAction","componentName","signedParameters","wrapper","fieldsContent","setPopupElementWidthFromSettings","preparePopupContentHeader","undefined","preparePopupContentFields","selectedFields","oldFields","isFieldsChangePrevented","fetchFields","fieldsData","ERROR","Notification","Center","notify","fieldsForAdd","fieldsForRemove","addField","ids","controller","getLazyLoadFieldsByIds","getFieldsUrl","Uri","addParam","BaseEvent","emit","isDefaultPrevented","headerWrapper","preparePopupContentHeaderSections","preparePopupContentHeaderSearch","headerSectionsWrapper","firstElementChild","headersSections","itemClass","selected","headerSectionItem","encode","onFilterSectionClick","activeClass","uiPopupFilterSectionButton","section","searchForm","inputs","onFilterSectionSearchInput","onFilterSectionSearchInputClear","sectionsWrapper","sectionWrapper","getHeadersSectionParam","setAttribute","sectionTitle","fieldsBlock","onAnimationEnd","display","innerText","paramName","getFieldLoader","fieldLoader","Loader","size","offset","left","err","isFieldChangePrevented","classList","getLazyLoadField","isChecked","eventParams","hiddenElement","fieldUrl","add_url_param","adjustFieldListPopupPosition","getAddField","forceBindPosition","fieldsPopup","PopupWindow","offsetTop","offsetLeft","lightShadow","closeIcon","closeByEsc","noAllPaddings","zIndex","fieldsPopupLoader","height","res","removeAttribute","setContent","element","_onAddPresetClick","enableAddPreset","enableWaitSate","disableWaitState","getSaveForAllCheckbox","mask","animationName","removeEventListener","showLengthError","addEventListener","presetNameInput","presetMask","_onCancelButtonClick","clearAddPresetFieldInput","grid","getContainerId","_onFilterMousedown","isDragButton","_onFilterClick","Fields","isFieldDelete","isFieldValueDelete","clearFieldValue","getSaveButton","getCancelButton","getResetButton","getAddPresetButton","addPresetField","addPresetFieldInput","getPresetButtonsContainer","hideForAllCheckbox","getSidebarControlsContainer","showForAllCheckbox","getFilterFields","groups","additionalFilter","prepareControlStringValue","prepareControlTextareaValue","prepareControlNumberValue","prepareControlDateValue","prepareControlCustomDateValue","prepareControlSelectValue","prepareControlMultiselectValue","prepareControlCustomEntityValue","prepareControlCustomValue","fetchSquares","fetchSquaresData","stringFields","daysControl","daysValue","monthsControl","monthsValue","yearsControl","yearsValue","withAdditional","additionalFieldsContainer","yearsSwitcher","selectName","fromName","toName","daysName","monthName","quarterName","yearName","yearsSwitcherName","selectValue","controlName","yearsSwitcherValue","isValid","endsWith","customValues","additionalFields","Array","from","additionalField","tableFade","hideGridAnimation","tableUnfade","presetOptions","hasFields","hasAdditional","IS_PINNED","applyParams","autoResolve","clear_nav","reject","reloadTable","resetControlData","controlData","clearControl","newControl","getTemplate","ie","configCloseDelay","closeDelay","isOpened","showDelay","textareas","scrollHeight","saveForAllCheckbox","getSaveForAllCheckboxContainer","saveForAllCheckboxContainer","getPopupBindElement","popupBindElement","_onFieldsContainerKeydown","_onPresetInputKeydown","_onResetButtonClick","getEditButton","_onEditButtonClick","getRestoreButton","_onRestoreButtonClick","getRestoreFieldsButton","_onRestoreFieldsButtonClick","showCurrentPresetFields","bindOnPresetClick","restoreDefaultFields","restoreFieldsButton","restoreFilter","defaultPresets","allPresets","isReplace","replaceIndex","applyPresetId","a","b","defPreset","saveRestoreFilter","prepareFields","restoreButton","tagName","isPresetValuesModified","getAdditionalValues","withoutSearch","enableEdit","getDragButton","onbxdragstart","_onFieldDragStart","onbxdragstop","_onFieldDragStop","onbxdrag","_onFieldDrag","jsDD","registerObject","registerDest","unregisterObject","unregisterDest","dragItem","current_node","dragIndex","dragRect","getBoundingClientRect","dragStartOffset","start_y","scrollTop","_onMouseMove","targetItem","currentRect","currentMiddle","dragOffset","realY","sortOffset","transform","enablePresetsDragAndDrop","presetsList","_onDragStart","_onDragStop","_onDrag","disablePresetsDragAndDrop","normalizePreset","list","realX","clientY","getDragOffset","startDragOffset","sidebarControlsContainer","isEditEnabledState","disableEditPresetName","presetButtonsContainer","cancel","dialogId","popupMessage","popupTitle","CONFIRM_TITLE","applyButton","PopupWindowButton","popupWindow","cancelButton","PopupWindowButtonLink","titleBar","overlay","buttons","getInitialValue","INITIAL_FILTER","filteredEntries","entries","acc","startsWith","toBoolean","isSetOutsideState","searchContainer","isDefaultPresetAppliedState","getList","onValueChange","Symbol","clearButtons","MO","MutationObserver","selects","observe","attributeFilter","getValue","getAdditionalFieldContainer","prepareFieldOptions","renderedField","appendRenderedField","stubs","FIELDS_STUBS","stub","baseField","VALUE_REQUIRED","valueRequired","prepareListItems","isMulti","subType","Reflect","exclude","allValues","fieldValue","Factory","WeakMap","setAnalyticsLabel","checkFields","newFields","force","previewsAdditionalValues","setFilter","createDateInputDecl","calendarButton","createNumberInputDecl","createLineDecl","createSelectDecl","errorMessages","errorMessagesTypes","_onDateTypeChange","template","wrapped","fieldGroup","fieldLine","PLACEHOLDER","textarea","onChange","currentLabel","_onCustomEntityInputFocus","_onCustomEntityInputClick","bindDocument","_onCustomEntityBlur","_onDocumentFocus","_onCustomEntityKeydown","_onCustomEntityFieldClick","createCustomEntityFieldLayout","ready","addEntityIdToResult","ADD_ENTITY_ID_TO_RESULT","showDialogOnEmptyInput","SHOW_DIALOG_ON_EMPTY_INPUT","DIALOG_OPTIONS","trustTimestamp","timeStamp","notTrustTimestamp","trustDate","notTrustDate","trustTime","getMinutes","getSeconds","notTrustTime","_onCustomEntityFocus","getCustomEntityInstance","isOnInputField","isInsidePopup","eventData","_stopPropagation","customEntityInstance","isElementNode","PARAMS","DAYS","DAYS_PLACEHOLDER","MONTHS_PLACEHOLDER","YEARS","YEARS_PLACEHOLDER","dateGroup","getNode","getParams","isNil","ENABLE_TIME","YEARS_SWITCHER","ENABLE_LABEL","SINGLE","classes","LESS","BEFORE_N","line","to","_allow_year","fieldDecl","rangeGroup","monthValue","yearValue","quarterValue","customDateSubType","customDateDecl","DECL","lastIndex","lastContentItem","renderedFieldGroup","onDateChange","clearButton","allInputs","checkRequiredDateValue","bindOnce","showError","MAIN_UI_FILTER__VALUE_REQUIRED","hideError","format","MAIN_UI_FILTER__DATE_ERROR_TITLE","MAIN_UI_FILTER__DATE_ERROR_LABEL","errorText","dateErrorMessage"],"mappings":"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"}