{ "version": 3, "sources": ["../../../../../apps/frappe/frappe/public/js/frappe/dom.js", "../../../../../apps/frappe/frappe/public/js/frappe/form/formatters.js", "../../../../../apps/frappe/frappe/public/js/frappe/form/section.js", "../../../../../apps/frappe/frappe/public/js/frappe/form/tab.js", "../../../../../apps/frappe/frappe/public/js/frappe/form/column.js", "../../../../../apps/frappe/frappe/public/js/frappe/form/layout.js", "../../../../../apps/frappe/frappe/public/js/frappe/ui/field_group.js", "../../../../../apps/frappe/frappe/public/js/frappe/form/link_selector.js", "../../../../../apps/frappe/frappe/public/js/frappe/form/multi_select_dialog.js", "../../../../../apps/frappe/frappe/public/js/frappe/ui/dialog.js"], "sourcesContent": ["// Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors\n// MIT License. See license.txt\n\n// add a new dom element\nfrappe.provide(\"frappe.dom\");\n\nfrappe.dom = {\n\tid_count: 0,\n\tfreeze_count: 0,\n\tby_id: function (id) {\n\t\treturn document.getElementById(id);\n\t},\n\tget_unique_id: function () {\n\t\tconst id = \"unique-\" + frappe.dom.id_count;\n\t\tfrappe.dom.id_count++;\n\t\treturn id;\n\t},\n\tset_unique_id: function (ele) {\n\t\tvar $ele = $(ele);\n\t\tif ($ele.attr(\"id\")) {\n\t\t\treturn $ele.attr(\"id\");\n\t\t}\n\t\tvar id = \"unique-\" + frappe.dom.id_count;\n\t\t$ele.attr(\"id\", id);\n\t\tfrappe.dom.id_count++;\n\t\treturn id;\n\t},\n\teval: function (txt) {\n\t\tif (!txt) return;\n\t\tvar el = document.createElement(\"script\");\n\t\tel.appendChild(document.createTextNode(txt));\n\t\t// execute the script globally\n\t\tdocument.getElementsByTagName(\"head\")[0].appendChild(el);\n\t},\n\tremove_script_and_style: function (txt) {\n\t\tconst evil_tags = [\"script\", \"style\", \"noscript\", \"title\", \"meta\", \"base\", \"head\"];\n\t\tconst parser = new DOMParser();\n\t\tconst doc = parser.parseFromString(txt, \"text/html\");\n\t\tconst body = doc.body;\n\t\tlet found = !!doc.head.innerHTML;\n\n\t\tfor (const tag of evil_tags) {\n\t\t\tfor (const element of body.getElementsByTagName(tag)) {\n\t\t\t\tfound = true;\n\t\t\t\telement.parentNode.removeChild(element);\n\t\t\t}\n\t\t}\n\n\t\tfor (const element of body.getElementsByTagName(\"link\")) {\n\t\t\tconst relation = element.getAttribute(\"rel\");\n\t\t\tif (relation && relation.toLowerCase().trim() === \"stylesheet\") {\n\t\t\t\tfound = true;\n\t\t\t\telement.parentNode.removeChild(element);\n\t\t\t}\n\t\t}\n\n\t\tif (found) {\n\t\t\treturn body.innerHTML;\n\t\t} else {\n\t\t\t// don't disturb\n\t\t\treturn txt;\n\t\t}\n\t},\n\tis_element_in_viewport: function (el, tolerance = 0) {\n\t\t//special bonus for those using jQuery\n\t\tif (typeof jQuery === \"function\" && el instanceof jQuery) {\n\t\t\tel = el[0];\n\t\t}\n\n\t\tvar rect = el.getBoundingClientRect();\n\n\t\treturn (\n\t\t\trect.top + tolerance >= 0 &&\n\t\t\trect.left + tolerance >= 0 &&\n\t\t\trect.bottom - tolerance <= $(window).height() &&\n\t\t\trect.right - tolerance <= $(window).width()\n\t\t);\n\t},\n\n\tis_element_in_modal(element) {\n\t\treturn Boolean($(element).parents(\".modal\").length);\n\t},\n\n\tset_style: function (txt, id) {\n\t\tif (!txt) return;\n\n\t\tvar se = document.createElement(\"style\");\n\t\tse.type = \"text/css\";\n\n\t\tif (id) {\n\t\t\tvar element = document.getElementById(id);\n\t\t\tif (element) {\n\t\t\t\telement.parentNode.removeChild(element);\n\t\t\t}\n\t\t\tse.id = id;\n\t\t}\n\n\t\tif (se.styleSheet) {\n\t\t\tse.styleSheet.cssText = txt;\n\t\t} else {\n\t\t\tse.appendChild(document.createTextNode(txt));\n\t\t}\n\t\tdocument.getElementsByTagName(\"head\")[0].appendChild(se);\n\t\treturn se;\n\t},\n\tadd: function (parent, newtag, className, cs, innerHTML, onclick) {\n\t\tif (parent && parent.substr) parent = frappe.dom.by_id(parent);\n\t\tvar c = document.createElement(newtag);\n\t\tif (parent) parent.appendChild(c);\n\n\t\t// if image, 3rd parameter is source\n\t\tif (className) {\n\t\t\tif (newtag.toLowerCase() == \"img\") c.src = className;\n\t\t\telse c.className = className;\n\t\t}\n\t\tif (cs) frappe.dom.css(c, cs);\n\t\tif (innerHTML) c.innerHTML = innerHTML;\n\t\tif (onclick) c.onclick = onclick;\n\t\treturn c;\n\t},\n\tcss: function (ele, s) {\n\t\tif (ele && s) {\n\t\t\t$.extend(ele.style, s);\n\t\t}\n\t\treturn ele;\n\t},\n\tactivate: function ($parent, $child, common_class, active_class = \"active\") {\n\t\t$parent.find(`.${common_class}.${active_class}`).removeClass(active_class);\n\t\t$child.addClass(active_class);\n\t},\n\tfreeze: function (msg, css_class) {\n\t\t// blur\n\t\tif (!$(\"#freeze\").length) {\n\t\t\tvar freeze = $('
')\n\t\t\t\t.on(\"click\", function () {\n\t\t\t\t\tif (cur_frm && cur_frm.cur_grid) {\n\t\t\t\t\t\tcur_frm.cur_grid.toggle_view();\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.appendTo(\"#body\");\n\n\t\t\tfreeze.html(\n\t\t\t\trepl(\n\t\t\t\t\t' ',\n\t\t\t\t\t{ msg: msg || \"\" }\n\t\t\t\t)\n\t\t\t);\n\n\t\t\tsetTimeout(function () {\n\t\t\t\tfreeze.addClass(\"in\");\n\t\t\t}, 1);\n\t\t} else {\n\t\t\t$(\"#freeze\").addClass(\"in\");\n\t\t}\n\n\t\tif (css_class) {\n\t\t\t$(\"#freeze\").addClass(css_class);\n\t\t}\n\n\t\tfrappe.dom.freeze_count++;\n\t},\n\tunfreeze: function () {\n\t\tif (!frappe.dom.freeze_count) return; // anything open?\n\t\tfrappe.dom.freeze_count--;\n\t\tif (!frappe.dom.freeze_count) {\n\t\t\tvar freeze = $(\"#freeze\").removeClass(\"in\").remove();\n\t\t}\n\t},\n\tsave_selection: function () {\n\t\t// via http://stackoverflow.com/questions/5605401/insert-link-in-contenteditable-element\n\t\tif (window.getSelection) {\n\t\t\tvar sel = window.getSelection();\n\t\t\tif (sel.getRangeAt && sel.rangeCount) {\n\t\t\t\tvar ranges = [];\n\t\t\t\tfor (var i = 0, len = sel.rangeCount; i < len; ++i) {\n\t\t\t\t\tranges.push(sel.getRangeAt(i));\n\t\t\t\t}\n\t\t\t\treturn ranges;\n\t\t\t}\n\t\t} else if (document.selection && document.selection.createRange) {\n\t\t\treturn document.selection.createRange();\n\t\t}\n\t\treturn null;\n\t},\n\trestore_selection: function (savedSel) {\n\t\tif (savedSel) {\n\t\t\tif (window.getSelection) {\n\t\t\t\tvar sel = window.getSelection();\n\t\t\t\tsel.removeAllRanges();\n\t\t\t\tfor (var i = 0, len = savedSel.length; i < len; ++i) {\n\t\t\t\t\tsel.addRange(savedSel[i]);\n\t\t\t\t}\n\t\t\t} else if (document.selection && savedSel.select) {\n\t\t\t\tsavedSel.select();\n\t\t\t}\n\t\t}\n\t},\n\tis_touchscreen: function () {\n\t\treturn \"ontouchstart\" in window;\n\t},\n\thandle_broken_images(container) {\n\t\t$(container)\n\t\t\t.find(\"img\")\n\t\t\t.on(\"error\", (e) => {\n\t\t\t\tconst $img = $(e.currentTarget);\n\t\t\t\t$img.addClass(\"no-image\");\n\t\t\t});\n\t},\n\tscroll_to_bottom(container) {\n\t\tconst $container = $(container);\n\t\t$container.scrollTop($container[0].scrollHeight);\n\t},\n\tfile_to_base64(file_obj) {\n\t\treturn new Promise((resolve) => {\n\t\t\tconst reader = new FileReader();\n\t\t\treader.onload = function () {\n\t\t\t\tresolve(reader.result);\n\t\t\t};\n\t\t\treader.readAsDataURL(file_obj);\n\t\t});\n\t},\n\tscroll_to_section(section_name) {\n\t\tsetTimeout(() => {\n\t\t\tconst section = $(`a:contains(\"${section_name}\")`);\n\t\t\tif (section.length) {\n\t\t\t\tif (section.parent().hasClass(\"collapsed\")) {\n\t\t\t\t\t// opens the section\n\t\t\t\t\tsection.click();\n\t\t\t\t}\n\t\t\t\tfrappe.ui.scroll(section.parent().parent());\n\t\t\t}\n\t\t}, 200);\n\t},\n\tpixel_to_inches(pixels) {\n\t\tconst div = $(\n\t\t\t''\n\t\t);\n\t\tdiv.appendTo(document.body);\n\n\t\tconst dpi_x = document.getElementById(\"dpi\").offsetWidth;\n\t\tconst inches = pixels / dpi_x;\n\t\tdiv.remove();\n\n\t\treturn inches;\n\t},\n};\n\nfrappe.ellipsis = function (text, max) {\n\tif (!max) max = 20;\n\ttext = cstr(text);\n\tif (text.length > max) {\n\t\ttext = text.substr(0, max) + \"...\";\n\t}\n\treturn text;\n};\n\nfrappe.run_serially = function (tasks) {\n\tvar result = Promise.resolve();\n\ttasks.forEach((task) => {\n\t\tif (task) {\n\t\t\tresult = result.then ? result.then(task) : Promise.resolve();\n\t\t}\n\t});\n\treturn result;\n};\n\nfrappe.load_image = (src, onload, onerror, preprocess = () => {}) => {\n\tvar tester = new Image();\n\ttester.onload = function () {\n\t\tonload(this);\n\t};\n\ttester.onerror = onerror;\n\n\tpreprocess(tester);\n\ttester.src = src;\n};\n\nfrappe.timeout = (seconds) => {\n\treturn new Promise((resolve) => {\n\t\tsetTimeout(() => resolve(), seconds * 1000);\n\t});\n};\n\nfrappe.scrub = function (text, spacer = \"_\") {\n\treturn text.replace(/ /g, spacer).toLowerCase();\n};\n\nfrappe.unscrub = function (txt) {\n\treturn frappe.model.unscrub(txt);\n};\n\nfrappe.get_data_pill = (label, target_id = null, remove_action = null, image = null) => {\n\tlet data_pill_wrapper = $(`\n\t\t\n\t`);\n\n\tif (remove_action) {\n\t\tlet remove_btn = $(`\n\t\t\t\n\t\t\t\t${frappe.utils.icon(\"close\", \"sm\")}\n\t\t\t\n\t\t`).click(() => {\n\t\t\tremove_action(target_id || label, data_pill_wrapper);\n\t\t});\n\t\tdata_pill_wrapper.append(remove_btn);\n\t}\n\n\treturn data_pill_wrapper;\n};\n\nfrappe.get_modal = function (title, content) {\n\treturn $(`\n\t\t\t\t\t${v}\n\t\t\t\t`;\n\t\t});\n\t\treturn html;\n\t},\n\tComment: function (value) {\n\t\treturn value;\n\t},\n\tAssign: function (value) {\n\t\tvar html = \"\";\n\t\t$.each(JSON.parse(value || \"[]\"), function (i, v) {\n\t\t\tif (v)\n\t\t\t\thtml +=\n\t\t\t\t\t'' +\n\t\t\t\t\tv +\n\t\t\t\t\t\"\";\n\t\t});\n\t\treturn html;\n\t},\n\tSmallText: function (value) {\n\t\treturn frappe.form.formatters.Text(value);\n\t},\n\tTextEditor: function (value) {\n\t\tlet formatted_value = frappe.form.formatters.Text(value);\n\t\t// to use ql-editor styles\n\t\ttry {\n\t\t\tif (\n\t\t\t\t!$(formatted_value).find(\".ql-editor\").length &&\n\t\t\t\t!$(formatted_value).hasClass(\"ql-editor\")\n\t\t\t) {\n\t\t\t\tformatted_value = `
\" + (value == null ? \"\" : $(\"\").text(value).html()) + \"\";\n\t},\n\tWorkflowState: function (value) {\n\t\tvar workflow_state = frappe.get_doc(\"Workflow State\", value);\n\t\tif (workflow_state) {\n\t\t\treturn repl(\n\t\t\t\t\"\\\n\t\t\t\t %(value)s\",\n\t\t\t\t{\n\t\t\t\t\tvalue: value,\n\t\t\t\t\tstyle: workflow_state.style.toLowerCase(),\n\t\t\t\t\ticon: workflow_state.icon,\n\t\t\t\t}\n\t\t\t);\n\t\t} else {\n\t\t\treturn \"\" + value + \"\";\n\t\t}\n\t},\n\tEmail: function (value) {\n\t\treturn $(\"\").text(value).html();\n\t},\n\tFileSize: function (value) {\n\t\tif (value > 1048576) {\n\t\t\tvalue = flt(flt(value) / 1048576, 1) + \"M\";\n\t\t} else if (value > 1024) {\n\t\t\tvalue = flt(flt(value) / 1024, 1) + \"K\";\n\t\t}\n\t\treturn value;\n\t},\n\tTableMultiSelect: function (rows, df, options) {\n\t\trows = rows || [];\n\t\tconst meta = frappe.get_meta(df.options);\n\t\tconst link_field = meta.fields.find((df) => df.fieldtype === \"Link\");\n\t\tconst formatted_values = rows.map((row) => {\n\t\t\tconst value = row[link_field.fieldname];\n\t\t\treturn frappe.format(value, link_field, options, row);\n\t\t});\n\t\treturn formatted_values.join(\", \");\n\t},\n\tColor: (value) => {\n\t\treturn value\n\t\t\t? `\n\t\t\t\n\t\t\t${value}\n\t\t`\n\t\t\t: \"\";\n\t},\n\tIcon: (value) => {\n\t\treturn value\n\t\t\t? `\n\t\t\t${value}\n\t\t`\n\t\t\t: \"\";\n\t},\n\tAttach: format_attachment_url,\n\tAttachImage: format_attachment_url,\n};\n\nfunction format_attachment_url(url) {\n\treturn url ? ` \n\t\t\t${url}` : \"\";\n}\n\nfrappe.form.get_formatter = function (fieldtype) {\n\tif (!fieldtype) fieldtype = \"Data\";\n\treturn frappe.form.formatters[fieldtype.replace(/ /g, \"\")] || frappe.form.formatters.Data;\n};\n\nfrappe.format = function (value, df, options, doc) {\n\tif (!df) df = { fieldtype: \"Data\" };\n\tif (df.fieldname == \"_user_tags\") df = { ...df, fieldtype: \"Tag\" };\n\tvar fieldtype = df.fieldtype || \"Data\";\n\n\t// format Dynamic Link as a Link\n\tif (fieldtype === \"Dynamic Link\") {\n\t\tfieldtype = \"Link\";\n\t\tdf._options = doc ? doc[df.options] : null;\n\t}\n\n\tvar formatter = df.formatter || frappe.form.get_formatter(fieldtype);\n\n\tvar formatted = formatter(value, df, options, doc);\n\n\tif (typeof formatted == \"string\") formatted = frappe.dom.remove_script_and_style(formatted);\n\n\treturn formatted;\n};\n\nfrappe.get_format_helper = function (doc) {\n\tvar helper = {\n\t\tget_formatted: function (fieldname) {\n\t\t\tvar df = frappe.meta.get_docfield(doc.doctype, fieldname);\n\t\t\tif (!df) {\n\t\t\t\tconsole.log(\"fieldname not found: \" + fieldname);\n\t\t\t}\n\t\t\treturn frappe.format(doc[fieldname], df, { inline: 1 }, doc);\n\t\t},\n\t};\n\t$.extend(helper, doc);\n\treturn helper;\n};\n\nfrappe.form.link_formatters[\"User\"] = function (value, doc, docfield) {\n\tlet full_name = doc && (doc.full_name || (docfield && doc[`${docfield.fieldname}_full_name`]));\n\treturn full_name || value;\n};\n", "export default class Section {\n\tconstructor(parent, df, card_layout, layout) {\n\t\tthis.layout = layout;\n\t\tthis.card_layout = card_layout;\n\t\tthis.parent = parent;\n\t\tthis.df = df || {};\n\t\tthis.fields_list = [];\n\t\tthis.fields_dict = {};\n\n\t\tthis.make();\n\n\t\tif (\n\t\t\tthis.df.label &&\n\t\t\tthis.df.collapsible &&\n\t\t\tlocalStorage.getItem(df.css_class + \"-closed\")\n\t\t) {\n\t\t\tthis.collapse();\n\t\t}\n\n\t\tthis.row = {\n\t\t\twrapper: this.wrapper,\n\t\t};\n\n\t\tthis.refresh();\n\t}\n\n\tmake() {\n\t\tlet make_card = this.card_layout;\n\t\tthis.wrapper = $(`\n\t\t\t`).appendTo(this.parent);\n\t\tthis.layout && this.layout.sections.push(this);\n\n\t\tif (this.df) {\n\t\t\tif (this.df.label) {\n\t\t\t\tthis.make_head();\n\t\t\t}\n\t\t\tif (this.df.description) {\n\t\t\t\tthis.description_wrapper = $(\n\t\t\t\t\t`\n\t\t\t\t\t\t${__(this.df.description)}\n\t\t\t\t\t`\n\t\t\t\t);\n\n\t\t\t\tthis.wrapper.append(this.description_wrapper);\n\t\t\t}\n\t\t\tif (this.df.css_class) {\n\t\t\t\tthis.wrapper.addClass(this.df.css_class);\n\t\t\t}\n\t\t\tif (this.df.hide_border) {\n\t\t\t\tthis.wrapper.toggleClass(\"hide-border\", true);\n\t\t\t}\n\t\t}\n\n\t\tthis.body = $('').appendTo(this.wrapper);\n\n\t\tif (this.df.body_html) {\n\t\t\tthis.body.append(this.df.body_html);\n\t\t}\n\t}\n\n\tmake_head() {\n\t\tthis.head = $(`\n\t\t\t\n\t\t\t\t${__(this.df.label)}\n\t\t\t\t\n\t\t\t\n\t\t`);\n\n\t\tthis.head.appendTo(this.wrapper);\n\t\tthis.indicator = this.head.find(\".collapse-indicator\");\n\t\tthis.indicator.hide();\n\n\t\tif (this.df.collapsible) {\n\t\t\tthis.head.addClass(\"collapsible\");\n\t\t\t// show / hide based on status\n\t\t\tthis.collapse_link = this.head.on(\"click\", () => {\n\t\t\t\tthis.collapse();\n\t\t\t});\n\t\t\tthis.set_icon();\n\t\t\tthis.indicator.show();\n\t\t}\n\t}\n\n\treplace_field(fieldname, fieldobj) {\n\t\tif (this.fields_dict[fieldname]?.df) {\n\t\t\tconst olfldobj = this.fields_dict[fieldname];\n\t\t\tconst idx = this.fields_list.findIndex((e) => e == olfldobj);\n\t\t\tthis.fields_list.splice(idx, 1, fieldobj);\n\t\t\tthis.fields_dict[fieldname] = fieldobj;\n\t\t\tfieldobj.section = this;\n\t\t}\n\t}\n\n\trefresh(hide) {\n\t\tif (!this.df) return;\n\t\t// hide if explicitly hidden\n\t\thide = hide || this.df.hidden || this.df.hidden_due_to_dependency;\n\t\tthis.wrapper.toggleClass(\"hide-control\", !!hide);\n\t}\n\n\tcollapse(hide) {\n\t\t// unknown edge case\n\t\tif (!(this.head && this.body)) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (hide === undefined) {\n\t\t\thide = !this.body.hasClass(\"hide\");\n\t\t}\n\n\t\tthis.body.toggleClass(\"hide\", hide);\n\t\tthis.head && this.head.toggleClass(\"collapsed\", hide);\n\n\t\tthis.set_icon(hide);\n\n\t\tthis.fields_list.forEach((f) => f.on_section_collapse && f.on_section_collapse(hide));\n\n\t\t// save state for next reload ('' is falsy)\n\t\tif (this.df.css_class)\n\t\t\tlocalStorage.setItem(this.df.css_class + \"-closed\", hide ? \"1\" : \"\");\n\t}\n\n\tset_icon(hide) {\n\t\tlet indicator_icon = hide ? \"down\" : \"up-line\";\n\t\tthis.indicator && this.indicator.html(frappe.utils.icon(indicator_icon, \"sm\", \"mb-1\"));\n\t}\n\n\tis_collapsed() {\n\t\treturn this.body.hasClass(\"hide\");\n\t}\n\n\thas_missing_mandatory() {\n\t\tlet missing_mandatory = false;\n\t\tfor (let j = 0, l = this.fields_list.length; j < l; j++) {\n\t\t\tconst section_df = this.fields_list[j].df;\n\t\t\tif (section_df.reqd && this.layout.doc[section_df.fieldname] == null) {\n\t\t\t\tmissing_mandatory = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\treturn missing_mandatory;\n\t}\n\n\thide() {\n\t\tthis.on_section_toggle(false);\n\t}\n\n\tshow() {\n\t\tthis.on_section_toggle(true);\n\t}\n\n\ton_section_toggle(show) {\n\t\tthis.wrapper.toggleClass(\"hide-control\", !show);\n\t\t// this.on_section_toggle && this.on_section_toggle(show);\n\t}\n}\n", "export default class Tab {\n\tconstructor(parent, df, frm, tabs_list, tabs_content) {\n\t\tthis.parent = parent;\n\t\tthis.df = df || {};\n\t\tthis.frm = frm;\n\t\tthis.doctype = this.frm.doctype;\n\t\tthis.label = this.df && this.df.label;\n\t\tthis.tabs_list = tabs_list;\n\t\tthis.tabs_content = tabs_content;\n\t\tthis.fields_list = [];\n\t\tthis.fields_dict = {};\n\t\tthis.make();\n\t\tthis.setup_listeners();\n\t\tthis.refresh();\n\t}\n\n\tmake() {\n\t\tconst id = `${frappe.scrub(this.doctype, \"-\")}-${this.df.fieldname}`;\n\t\tthis.parent = $(`\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t${__(this.label)}\n\t\t\t\t\n\t\t\t \n\t\t`).appendTo(this.tabs_list);\n\n\t\tthis.wrapper = $(``).appendTo(this.tabs_content);\n\t}\n\n\trefresh() {\n\t\tif (!this.df) return;\n\n\t\t// hide if explicitly hidden\n\t\tlet hide = this.df.hidden || this.df.hidden_due_to_dependency;\n\n\t\t// hide if dashboard and not saved\n\t\tif (!hide && this.df.show_dashboard && this.frm.is_new() && !this.fields_list.length) {\n\t\t\thide = true;\n\t\t}\n\n\t\t// hide if no read permission\n\t\tif (!hide && this.frm && !this.frm.get_perm(this.df.permlevel || 0, \"read\")) {\n\t\t\thide = true;\n\t\t}\n\n\t\tif (!hide) {\n\t\t\t// show only if there is at least one visible section or control\n\t\t\thide = true;\n\t\t\tif (\n\t\t\t\tthis.wrapper.find(\n\t\t\t\t\t\".form-section:not(.hide-control, .empty-section), .form-dashboard-section:not(.hide-control, .empty-section)\"\n\t\t\t\t).length\n\t\t\t) {\n\t\t\t\thide = false;\n\t\t\t}\n\t\t}\n\n\t\tthis.toggle(!hide);\n\t}\n\n\ttoggle(show) {\n\t\tthis.parent.toggleClass(\"hide\", !show);\n\t\tthis.wrapper.toggleClass(\"hide\", !show);\n\t\tthis.parent.toggleClass(\"show\", show);\n\t\tthis.wrapper.toggleClass(\"show\", show);\n\t\tthis.hidden = !show;\n\t}\n\n\tshow() {\n\t\tthis.parent.show();\n\t}\n\n\thide() {\n\t\tthis.parent.hide();\n\t}\n\treplace_field(fieldobj) {\n\t\tfieldobj.tab = this;\n\t}\n\n\tset_active() {\n\t\tthis.parent.find(\".nav-link\").tab(\"show\");\n\t\tthis.wrapper.addClass(\"show\");\n\t\tthis.frm?.set_active_tab?.(this);\n\t}\n\n\tis_active() {\n\t\treturn this.wrapper.hasClass(\"active\");\n\t}\n\n\tis_hidden() {\n\t\treturn this.wrapper.hasClass(\"hide\");\n\t}\n\n\tsetup_listeners() {\n\t\tthis.parent.find(\".nav-link\").on(\"shown.bs.tab\", () => {\n\t\t\tthis?.frm.set_active_tab?.(this);\n\t\t});\n\t}\n}\n", "export default class Column {\n\tconstructor(section, df) {\n\t\tif (!df) df = {};\n\n\t\tthis.df = df;\n\t\tthis.section = section;\n\t\tthis.make();\n\t\tthis.resize_all_columns();\n\t}\n\n\tmake() {\n\t\tthis.wrapper = $(`\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t`)\n\t\t\t.appendTo(this.section.body)\n\t\t\t.find(\"form\")\n\t\t\t.on(\"submit\", function () {\n\t\t\t\treturn false;\n\t\t\t});\n\n\t\tif (this.df.label) {\n\t\t\t$(`\n\t\t\t\t\n\t\t\t`).appendTo(this.wrapper);\n\t\t}\n\t}\n\n\tresize_all_columns() {\n\t\t// distribute all columns equally\n\t\tlet columns = this.section.wrapper.find(\".form-column\").length;\n\t\tlet colspan = cint(12 / columns);\n\n\t\tif (columns == 5) {\n\t\t\tcolspan = 20;\n\t\t}\n\n\t\tthis.section.wrapper\n\t\t\t.find(\".form-column\")\n\t\t\t.removeClass()\n\t\t\t.addClass(\"form-column\")\n\t\t\t.addClass(\"col-sm-\" + colspan);\n\t}\n\n\trefresh() {\n\t\tthis.section.refresh();\n\t}\n}\n", "import Section from \"./section.js\";\nimport Tab from \"./tab.js\";\nimport Column from \"./column.js\";\n\nfrappe.ui.form.Layout = class Layout {\n\tconstructor(opts) {\n\t\tthis.views = {};\n\t\tthis.pages = [];\n\t\tthis.tabs = [];\n\t\tthis.sections = [];\n\t\tthis.page_breaks = [];\n\t\tthis.fields_list = [];\n\t\tthis.fields_dict = {};\n\n\t\t$.extend(this, opts);\n\t}\n\n\tmake() {\n\t\tif (!this.parent && this.body) {\n\t\t\tthis.parent = this.body;\n\t\t}\n\t\tthis.wrapper = $('').appendTo(this.parent);\n\t\tthis.message = $('').appendTo(this.wrapper);\n\t\tthis.page = $('').appendTo(this.wrapper);\n\n\t\tif (!this.fields) {\n\t\t\tthis.fields = this.get_doctype_fields();\n\t\t}\n\n\t\tif (this.is_tabbed_layout()) {\n\t\t\tthis.setup_tabbed_layout();\n\t\t}\n\n\t\tthis.setup_tab_events();\n\t\tthis.render();\n\t}\n\n\tsetup_tabbed_layout() {\n\t\t$(`\n\t\t\t\n\t\t\t\t\n\t\t`).appendTo(this.page);\n\t\tthis.tabs_list = this.page.find(\".form-tabs\");\n\t\tthis.tabs_content = $(``).appendTo(\n\t\t\tthis.page\n\t\t);\n\t\tthis.setup_events();\n\t}\n\n\tget_doctype_fields() {\n\t\tlet fields = [this.get_new_name_field()];\n\t\tif (this.doctype_layout) {\n\t\t\tfields = fields.concat(this.get_fields_from_layout());\n\t\t} else {\n\t\t\tfields = fields.concat(\n\t\t\t\tfrappe.meta.sort_docfields(frappe.meta.docfield_map[this.doctype])\n\t\t\t);\n\t\t}\n\n\t\treturn fields;\n\t}\n\n\tget_new_name_field() {\n\t\treturn {\n\t\t\tparent: this.frm.doctype,\n\t\t\tfieldtype: \"Data\",\n\t\t\tfieldname: \"__newname\",\n\t\t\treqd: 1,\n\t\t\thidden: 1,\n\t\t\tlabel: __(\"Name\"),\n\t\t\tget_status: function (field) {\n\t\t\t\tif (\n\t\t\t\t\tfield.frm &&\n\t\t\t\t\tfield.frm.is_new() &&\n\t\t\t\t\tfield.frm.meta.autoname &&\n\t\t\t\t\t[\"prompt\", \"name\"].includes(field.frm.meta.autoname.toLowerCase())\n\t\t\t\t) {\n\t\t\t\t\treturn \"Write\";\n\t\t\t\t}\n\t\t\t\treturn \"None\";\n\t\t\t},\n\t\t};\n\t}\n\n\tget_fields_from_layout() {\n\t\tconst fields = [];\n\t\tfor (let f of this.doctype_layout.fields) {\n\t\t\tconst docfield = copy_dict(frappe.meta.docfield_map[this.doctype][f.fieldname]);\n\t\t\tdocfield.label = f.label;\n\t\t\tfields.push(docfield);\n\t\t}\n\t\treturn fields;\n\t}\n\n\tshow_message(html, color) {\n\t\tif (this.message_color) {\n\t\t\t// remove previous color\n\t\t\tthis.message.removeClass(this.message_color);\n\t\t}\n\t\tthis.message_color =\n\t\t\tcolor && [\"yellow\", \"blue\", \"red\", \"green\", \"orange\"].includes(color) ? color : \"blue\";\n\t\tif (html) {\n\t\t\tif (html.substr(0, 1) !== \"<\") {\n\t\t\t\t// wrap in a block\n\t\t\t\thtml = \"\n\t\t\t
\" + html + \"\";\n\t\t\t}\n\t\t\tthis.message.removeClass(\"hidden\").addClass(this.message_color);\n\t\t\t$(html).appendTo(this.message);\n\t\t} else {\n\t\t\tthis.message.empty().addClass(\"hidden\");\n\t\t}\n\t}\n\n\trender(new_fields) {\n\t\tlet fields = new_fields || this.fields;\n\n\t\tthis.section = null;\n\t\tthis.column = null;\n\n\t\tif (this.no_opening_section() && !this.is_tabbed_layout()) {\n\t\t\tthis.fields.unshift({ fieldtype: \"Section Break\" });\n\t\t}\n\n\t\tif (this.is_tabbed_layout()) {\n\t\t\t// add a tab without `fieldname` to avoid conflicts\n\t\t\tlet default_tab = {\n\t\t\t\tlabel: __(\"Details\"),\n\t\t\t\tfieldtype: \"Tab Break\",\n\t\t\t\tfieldname: \"__details\",\n\t\t\t};\n\n\t\t\tlet first_field_visible = this.fields.find((element) => element.hidden == false);\n\t\t\tlet first_tab =\n\t\t\t\tfirst_field_visible?.fieldtype === \"Tab Break\" ? first_field_visible : null;\n\n\t\t\tif (!first_tab) {\n\t\t\t\tthis.fields.splice(0, 0, default_tab);\n\t\t\t} else {\n\t\t\t\t// reshuffle __newname field to accomodate under 1st Tab Break\n\t\t\t\tlet newname_field = this.fields.find((df) => df.fieldname === \"__newname\");\n\t\t\t\tif (newname_field && newname_field.get_status(this) === \"Write\") {\n\t\t\t\t\tthis.fields.splice(0, 1);\n\t\t\t\t\tthis.fields.splice(1, 0, newname_field);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfields.forEach((df) => {\n\t\t\tswitch (df.fieldtype) {\n\t\t\t\tcase \"Fold\":\n\t\t\t\t\tthis.make_page(df);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"Page Break\":\n\t\t\t\t\tthis.make_page_break();\n\t\t\t\t\tthis.make_section(df);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"Section Break\":\n\t\t\t\t\tthis.make_section(df);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"Column Break\":\n\t\t\t\t\tthis.make_column(df);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"Tab Break\":\n\t\t\t\t\tthis.make_tab(df);\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tthis.make_field(df);\n\t\t\t}\n\t\t});\n\t}\n\n\tno_opening_section() {\n\t\treturn (\n\t\t\t(this.fields[0] && this.fields[0].fieldtype != \"Section Break\") || !this.fields.length\n\t\t);\n\t}\n\n\tno_opening_tab() {\n\t\treturn (this.fields[1] && this.fields[1].fieldtype != \"Tab Break\") || !this.fields.length;\n\t}\n\n\tis_tabbed_layout() {\n\t\treturn this.fields.find((f) => f.fieldtype === \"Tab Break\");\n\t}\n\n\treplace_field(fieldname, df, render) {\n\t\tdf.fieldname = fieldname; // change of fieldname is avoided\n\t\tif (this.fields_dict[fieldname] && this.fields_dict[fieldname].df) {\n\t\t\tconst prev_fieldobj = this.fields_dict[fieldname];\n\t\t\tconst fieldobj = this.init_field(df, prev_fieldobj.parent, render);\n\t\t\tprev_fieldobj.$wrapper.replaceWith(fieldobj.$wrapper);\n\t\t\tconst idx = this.fields_list.findIndex((e) => e == prev_fieldobj);\n\t\t\tthis.fields_list.splice(idx, 1, fieldobj);\n\t\t\tthis.fields_dict[fieldname] = fieldobj;\n\t\t\tthis.sections.forEach((section) => section.replace_field(fieldname, fieldobj));\n\t\t\tprev_fieldobj.tab?.replace_field(fieldobj);\n\t\t\tthis.refresh_fields([df]);\n\t\t}\n\t}\n\n\tmake_field(df, colspan, render) {\n\t\t!this.section && this.make_section();\n\t\t!this.column && this.make_column();\n\n\t\tconst parent = this.column.wrapper.get(0);\n\t\tconst fieldobj = this.init_field(df, parent, render);\n\n\t\t// An invalid control name will return in a null fieldobj\n\t\tif (!fieldobj) return;\n\n\t\tthis.fields_list.push(fieldobj);\n\t\tthis.fields_dict[df.fieldname] = fieldobj;\n\n\t\tthis.section.fields_list.push(fieldobj);\n\t\tthis.section.fields_dict[df.fieldname] = fieldobj;\n\t\tfieldobj.section = this.section;\n\n\t\tif (this.current_tab) {\n\t\t\tfieldobj.tab = this.current_tab;\n\t\t\tthis.current_tab.fields_list.push(fieldobj);\n\t\t\tthis.current_tab.fields_dict[df.fieldname] = fieldobj;\n\t\t}\n\t}\n\n\tinit_field(df, parent, render = false) {\n\t\tconst fieldobj = frappe.ui.form.make_control({\n\t\t\tdf: df,\n\t\t\tdoctype: this.doctype,\n\t\t\tparent: parent,\n\t\t\tfrm: this.frm,\n\t\t\trender_input: render,\n\t\t\tdoc: this.doc,\n\t\t\tlayout: this,\n\t\t});\n\n\t\t// make_control can return null for invalid control names\n\t\tif (fieldobj) {\n\t\t\tfieldobj.layout = this;\n\t\t}\n\n\t\treturn fieldobj;\n\t}\n\n\tmake_page_break() {\n\t\tthis.page = $('').appendTo(this.wrapper);\n\t}\n\n\tmake_page(df) {\n\t\t// eslint-disable-line no-unused-vars\n\t\tlet me = this;\n\t\tlet head = $(`\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t${__(\"Show more details\")}\n\t\t\t\t\n\t\t\t\n\t\t`).appendTo(this.wrapper);\n\n\t\tthis.page = $('').appendTo(this.wrapper);\n\n\t\tthis.fold_btn = head.find(\".btn-fold\").on(\"click\", function () {\n\t\t\tlet page = $(this).parent().next();\n\t\t\tif (page.hasClass(\"hide\")) {\n\t\t\t\t$(this).removeClass(\"btn-fold\").html(__(\"Hide details\"));\n\t\t\t\tpage.removeClass(\"hide\");\n\t\t\t\tfrappe.utils.scroll_to($(this), true, 30);\n\t\t\t\tme.folded = false;\n\t\t\t} else {\n\t\t\t\t$(this).addClass(\"btn-fold\").html(__(\"Show more details\"));\n\t\t\t\tpage.addClass(\"hide\");\n\t\t\t\tme.folded = true;\n\t\t\t}\n\t\t});\n\n\t\tthis.section = null;\n\t\tthis.folded = true;\n\t}\n\n\tunfold() {\n\t\tthis.fold_btn.trigger(\"click\");\n\t}\n\n\tmake_section(df) {\n\t\tthis.section = new Section(\n\t\t\tthis.current_tab ? this.current_tab.wrapper : this.page,\n\t\t\tdf,\n\t\t\tthis.card_layout,\n\t\t\tthis\n\t\t);\n\n\t\t// append to layout fields\n\t\tif (df) {\n\t\t\tthis.fields_dict[df.fieldname] = this.section;\n\t\t\tthis.fields_list.push(this.section);\n\t\t}\n\n\t\tthis.column = null;\n\t}\n\n\tmake_column(df) {\n\t\tthis.column = new Column(this.section, df);\n\t\tif (df && df.fieldname) {\n\t\t\tthis.fields_list.push(this.column);\n\t\t}\n\t}\n\n\tmake_tab(df) {\n\t\tthis.section = null;\n\t\tlet tab = new Tab(this, df, this.frm, this.tabs_list, this.tabs_content);\n\t\tthis.current_tab = tab;\n\t\tthis.make_section({ fieldtype: \"Section Break\" });\n\t\tthis.tabs.push(tab);\n\t\treturn tab;\n\t}\n\n\trefresh(doc) {\n\t\tif (doc) this.doc = doc;\n\n\t\tif (this.frm) {\n\t\t\tthis.wrapper.find(\".empty-form-alert\").remove();\n\t\t}\n\n\t\t// NOTE this might seem redundant at first, but it needs to be executed when frm.refresh_fields is called\n\t\tthis.attach_doc_and_docfields(true);\n\n\t\tif (this.frm && this.frm.wrapper) {\n\t\t\t$(this.frm.wrapper).trigger(\"refresh-fields\");\n\t\t}\n\n\t\t// dependent fields\n\t\tthis.refresh_dependency();\n\n\t\t// refresh sections\n\t\tthis.refresh_sections();\n\n\t\tif (this.frm) {\n\t\t\t// collapse sections\n\t\t\tthis.refresh_section_collapse();\n\t\t}\n\n\t\tif (document.activeElement) {\n\t\t\tif (document.activeElement.tagName == \"INPUT\" && this.is_numeric_field_active()) {\n\t\t\t\tdocument.activeElement.select();\n\t\t\t}\n\t\t}\n\t}\n\n\tis_numeric_field_active() {\n\t\tconst control = $(document.activeElement).closest(\".frappe-control\");\n\t\tconst fieldtype = (control.data() || {}).fieldtype;\n\t\treturn frappe.model.numeric_fieldtypes.includes(fieldtype);\n\t}\n\n\trefresh_sections() {\n\t\t// hide invisible sections\n\t\tthis.wrapper.find(\".form-section:not(.hide-control)\").each(function () {\n\t\t\tconst section = $(this).removeClass(\"empty-section visible-section\");\n\t\t\tif (section.find(\".frappe-control:not(.hide-control)\").length) {\n\t\t\t\tsection.addClass(\"visible-section\");\n\t\t\t} else {\n\t\t\t\t// nothing visible, hide the section\n\t\t\t\tsection.addClass(\"empty-section\");\n\t\t\t}\n\t\t});\n\n\t\t// refresh tabs\n\t\tthis.is_tabbed_layout() && this.refresh_tabs();\n\t}\n\n\trefresh_tabs() {\n\t\tfor (let tab of this.tabs) {\n\t\t\ttab.refresh();\n\t\t}\n\n\t\tconst visible_tabs = this.tabs.filter((tab) => !tab.hidden);\n\t\tif (visible_tabs && visible_tabs.length == 1) {\n\t\t\tvisible_tabs[0].parent.toggleClass(\"hide show\");\n\t\t}\n\t\tthis.set_tab_as_active();\n\t}\n\n\tset_tab_as_active() {\n\t\tlet frm_active_tab = this?.frm.get_active_tab?.();\n\t\tif (frm_active_tab) {\n\t\t\tfrm_active_tab.set_active();\n\t\t} else if (this.tabs.length) {\n\t\t\t// set first tab as active when opening for first time, or new doc\n\t\t\tlet first_visible_tab = this.tabs.find((tab) => !tab.is_hidden());\n\t\t\tfirst_visible_tab && first_visible_tab.set_active();\n\t\t}\n\t}\n\n\trefresh_fields(fields) {\n\t\tlet fieldnames = fields.map((field) => {\n\t\t\tif (field.fieldname) return field.fieldname;\n\t\t});\n\n\t\tthis.fields_list.map((fieldobj) => {\n\t\t\tif (fieldnames.includes(fieldobj.df.fieldname)) {\n\t\t\t\tfieldobj.refresh();\n\t\t\t\tif (fieldobj.df[\"default\"]) {\n\t\t\t\t\tfieldobj.set_input(fieldobj.df[\"default\"]);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tadd_fields(fields) {\n\t\tthis.render(fields);\n\t\tthis.refresh_fields(fields);\n\t}\n\n\trefresh_section_collapse() {\n\t\tif (!(this.sections && this.sections.length)) return;\n\n\t\tfor (let i = 0; i < this.sections.length; i++) {\n\t\t\tlet section = this.sections[i];\n\t\t\tlet df = section.df;\n\t\t\tif (df && df.collapsible) {\n\t\t\t\tlet collapse = true;\n\n\t\t\t\tif (df.collapsible_depends_on) {\n\t\t\t\t\tcollapse = !this.evaluate_depends_on_value(df.collapsible_depends_on);\n\t\t\t\t}\n\n\t\t\t\tif (collapse && section.has_missing_mandatory()) {\n\t\t\t\t\tcollapse = false;\n\t\t\t\t}\n\n\t\t\t\tsection.collapse(collapse);\n\t\t\t}\n\t\t}\n\t}\n\n\tattach_doc_and_docfields(refresh) {\n\t\tlet me = this;\n\t\tfor (let i = 0, l = this.fields_list.length; i < l; i++) {\n\t\t\tlet fieldobj = this.fields_list[i];\n\t\t\tif (me.doc) {\n\t\t\t\tfieldobj.doc = me.doc;\n\t\t\t\tfieldobj.doctype = me.doc.doctype;\n\t\t\t\tfieldobj.docname = me.doc.name;\n\t\t\t\tfieldobj.df =\n\t\t\t\t\tfrappe.meta.get_docfield(me.doc.doctype, fieldobj.df.fieldname, me.doc.name) ||\n\t\t\t\t\tfieldobj.df;\n\t\t\t}\n\t\t\trefresh && fieldobj.df && fieldobj.refresh && fieldobj.refresh();\n\t\t}\n\t}\n\n\trefresh_section_count() {\n\t\tthis.wrapper.find(\".section-count-label:visible\").each(function (i) {\n\t\t\t$(this).html(i + 1);\n\t\t});\n\t}\n\n\tsetup_events() {\n\t\tlet last_scroll = 0;\n\t\tlet tabs_list = $(\".form-tabs-list\");\n\t\tlet tabs_content = this.tabs_content[0];\n\t\tif (!tabs_list.length) return;\n\n\t\t$(window).scroll(\n\t\t\tfrappe.utils.throttle(() => {\n\t\t\t\tlet current_scroll = document.documentElement.scrollTop;\n\t\t\t\tif (current_scroll > 0 && last_scroll <= current_scroll) {\n\t\t\t\t\ttabs_list.removeClass(\"form-tabs-sticky-down\");\n\t\t\t\t\ttabs_list.addClass(\"form-tabs-sticky-up\");\n\t\t\t\t} else {\n\t\t\t\t\ttabs_list.removeClass(\"form-tabs-sticky-up\");\n\t\t\t\t\ttabs_list.addClass(\"form-tabs-sticky-down\");\n\t\t\t\t}\n\t\t\t\tlast_scroll = current_scroll;\n\t\t\t}, 500)\n\t\t);\n\n\t\tthis.tabs_list.off(\"click\").on(\"click\", \".nav-link\", (e) => {\n\t\t\te.preventDefault();\n\t\t\te.stopImmediatePropagation();\n\t\t\t$(e.currentTarget).tab(\"show\");\n\t\t\tif (tabs_content.getBoundingClientRect().top < 100) {\n\t\t\t\ttabs_content.scrollIntoView();\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t$(\".page-head\").css(\"top\", \"-15px\");\n\t\t\t\t\t$(\".form-tabs-list\").removeClass(\"form-tabs-sticky-down\");\n\t\t\t\t\t$(\".form-tabs-list\").addClass(\"form-tabs-sticky-up\");\n\t\t\t\t}, 3);\n\t\t\t}\n\t\t});\n\t}\n\n\tsetup_tab_events() {\n\t\tthis.wrapper.on(\"keydown\", (ev) => {\n\t\t\tif (ev.which == 9) {\n\t\t\t\tlet current = $(ev.target);\n\t\t\t\tlet doctype = current.attr(\"data-doctype\");\n\t\t\t\tlet fieldname = current.attr(\"data-fieldname\");\n\t\t\t\tif (doctype) {\n\t\t\t\t\treturn this.handle_tab(doctype, fieldname, ev.shiftKey);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\thandle_tab(doctype, fieldname, shift) {\n\t\tlet grid_row = null,\n\t\t\tprev = null,\n\t\t\tfields = this.fields_list,\n\t\t\tfocused = false;\n\n\t\t// in grid\n\t\tif (doctype != this.doctype) {\n\t\t\tgrid_row = this.get_open_grid_row();\n\t\t\tif (!grid_row || !grid_row.layout) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tfields = grid_row.layout.fields_list;\n\t\t}\n\n\t\tfor (let i = 0, len = fields.length; i < len; i++) {\n\t\t\tif (fields[i].df.fieldname == fieldname) {\n\t\t\t\tif (shift) {\n\t\t\t\t\tif (prev) {\n\t\t\t\t\t\tthis.set_focus(prev);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$(this.primary_button).focus();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif (i < len - 1) {\n\t\t\t\t\tfocused = this.focus_on_next_field(i, fields);\n\t\t\t\t}\n\n\t\t\t\tif (focused) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (this.is_visible(fields[i])) prev = fields[i];\n\t\t}\n\n\t\tif (!focused) {\n\t\t\t// last field in this group\n\t\t\tif (grid_row) {\n\t\t\t\t// in grid\n\t\t\t\tif (grid_row.doc.idx == grid_row.grid.grid_rows.length) {\n\t\t\t\t\t// last row, close it and find next field\n\t\t\t\t\tgrid_row.toggle_view(false, function () {\n\t\t\t\t\t\tgrid_row.grid.frm.layout.handle_tab(\n\t\t\t\t\t\t\tgrid_row.grid.df.parent,\n\t\t\t\t\t\t\tgrid_row.grid.df.fieldname\n\t\t\t\t\t\t);\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\t// next row\n\t\t\t\t\tgrid_row.grid.grid_rows[grid_row.doc.idx].toggle_view(true);\n\t\t\t\t}\n\t\t\t} else if (!shift) {\n\t\t\t\t// End of tab navigation\n\t\t\t\t$(this.primary_button).focus();\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\tfocus_on_next_field(start_idx, fields) {\n\t\t// loop to find next eligible fields\n\t\tfor (let i = start_idx + 1, len = fields.length; i < len; i++) {\n\t\t\tlet field = fields[i];\n\t\t\tif (this.is_visible(field)) {\n\t\t\t\tif (field.df.fieldtype === \"Table\") {\n\t\t\t\t\t// open table grid\n\t\t\t\t\tif (!(field.grid.grid_rows && field.grid.grid_rows.length)) {\n\t\t\t\t\t\t// empty grid, add a new row\n\t\t\t\t\t\tfield.grid.add_new_row();\n\t\t\t\t\t}\n\t\t\t\t\t// show grid row (if exists)\n\t\t\t\t\tfield.grid.grid_rows[0].show_form();\n\t\t\t\t\treturn true;\n\t\t\t\t} else if (\n\t\t\t\t\tfield.df.fieldtype === \"Table MultiSelect\" ||\n\t\t\t\t\t!in_list(frappe.model.no_value_type, field.df.fieldtype)\n\t\t\t\t) {\n\t\t\t\t\tthis.set_focus(field);\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tis_visible(field) {\n\t\treturn (\n\t\t\tfield.disp_status === \"Write\" && field.df && \"hidden\" in field.df && !field.df.hidden\n\t\t);\n\t}\n\n\tset_focus(field) {\n\t\tif (field.tab) {\n\t\t\tfield.tab.set_active();\n\t\t}\n\t\t// next is table, show the table\n\t\tif (field.df.fieldtype == \"Table\") {\n\t\t\tif (!field.grid.grid_rows.length) {\n\t\t\t\tfield.grid.add_new_row(1);\n\t\t\t} else {\n\t\t\t\tfield.grid.grid_rows[0].toggle_view(true);\n\t\t\t}\n\t\t} else if (field.editor) {\n\t\t\tfield.editor.set_focus();\n\t\t} else if (field.$input) {\n\t\t\tfield.$input.focus();\n\t\t}\n\t}\n\n\tget_open_grid_row() {\n\t\treturn $(\".grid-row-open\").data(\"grid_row\");\n\t}\n\n\trefresh_dependency() {\n\t\t/**\n\t\t\tResolve \"depends_on\" and show / hide accordingly\n\t\t\tbuild dependants' dictionary\n\t\t*/\n\n\t\tlet has_dep = false;\n\n\t\tconst fields = this.fields_list.concat(this.tabs);\n\n\t\tfor (let fkey in fields) {\n\t\t\tlet f = fields[fkey];\n\t\t\tif (f.df.depends_on || f.df.mandatory_depends_on || f.df.read_only_depends_on) {\n\t\t\t\thas_dep = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tif (!has_dep) return;\n\n\t\t// show / hide based on values\n\t\tfor (let i = fields.length - 1; i >= 0; i--) {\n\t\t\tlet f = fields[i];\n\t\t\tf.guardian_has_value = true;\n\t\t\tif (f.df.depends_on) {\n\t\t\t\t// evaluate guardian\n\n\t\t\t\tf.guardian_has_value = this.evaluate_depends_on_value(f.df.depends_on);\n\n\t\t\t\t// show / hide\n\t\t\t\tif (f.guardian_has_value) {\n\t\t\t\t\tif (f.df.hidden_due_to_dependency) {\n\t\t\t\t\t\tf.df.hidden_due_to_dependency = false;\n\t\t\t\t\t\tf.refresh();\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (!f.df.hidden_due_to_dependency) {\n\t\t\t\t\t\tf.df.hidden_due_to_dependency = true;\n\t\t\t\t\t\tf.refresh();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (f.df.mandatory_depends_on) {\n\t\t\t\tthis.set_dependant_property(f.df.mandatory_depends_on, f.df.fieldname, \"reqd\");\n\t\t\t}\n\n\t\t\tif (f.df.read_only_depends_on) {\n\t\t\t\tthis.set_dependant_property(\n\t\t\t\t\tf.df.read_only_depends_on,\n\t\t\t\t\tf.df.fieldname,\n\t\t\t\t\t\"read_only\"\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tthis.refresh_section_count();\n\t}\n\n\tset_dependant_property(condition, fieldname, property) {\n\t\tlet set_property = this.evaluate_depends_on_value(condition);\n\t\tlet value = set_property ? 1 : 0;\n\t\tlet form_obj;\n\n\t\tif (this.frm) {\n\t\t\tform_obj = this.frm;\n\t\t} else if (this.is_dialog || this.doctype === \"Web Form\") {\n\t\t\tform_obj = this;\n\t\t}\n\t\tif (form_obj) {\n\t\t\tif (this.doc && this.doc.parent && this.doc.parentfield) {\n\t\t\t\tform_obj.setting_dependency = true;\n\t\t\t\tform_obj.set_df_property(\n\t\t\t\t\tthis.doc.parentfield,\n\t\t\t\t\tproperty,\n\t\t\t\t\tvalue,\n\t\t\t\t\tthis.doc.parent,\n\t\t\t\t\tfieldname,\n\t\t\t\t\tthis.doc.name\n\t\t\t\t);\n\t\t\t\tform_obj.setting_dependency = false;\n\t\t\t\t// refresh child fields\n\t\t\t\tthis.fields_dict[fieldname] && this.fields_dict[fieldname].refresh();\n\t\t\t} else {\n\t\t\t\tform_obj.set_df_property(fieldname, property, value);\n\t\t\t}\n\t\t}\n\t}\n\n\tevaluate_depends_on_value(expression) {\n\t\tlet out = null;\n\t\tlet doc = this.doc;\n\n\t\tif (!doc && this.get_values) {\n\t\t\tdoc = this.get_values(true);\n\t\t}\n\n\t\tif (!doc) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet parent = this.frm ? this.frm.doc : this.doc || null;\n\n\t\tif (typeof expression === \"boolean\") {\n\t\t\tout = expression;\n\t\t} else if (typeof expression === \"function\") {\n\t\t\tout = expression(doc);\n\t\t} else if (expression.substr(0, 5) == \"eval:\") {\n\t\t\ttry {\n\t\t\t\tout = frappe.utils.eval(expression.substr(5), { doc, parent });\n\t\t\t\tif (parent && parent.istable && expression.includes(\"is_submittable\")) {\n\t\t\t\t\tout = true;\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\tfrappe.throw(__('Invalid \"depends_on\" expression'));\n\t\t\t}\n\t\t} else if (expression.substr(0, 3) == \"fn:\" && this.frm) {\n\t\t\tout = this.frm.script_manager.trigger(\n\t\t\t\texpression.substr(3),\n\t\t\t\tthis.doctype,\n\t\t\t\tthis.docname\n\t\t\t);\n\t\t} else {\n\t\t\tvar value = doc[expression];\n\t\t\tif ($.isArray(value)) {\n\t\t\t\tout = !!value.length;\n\t\t\t} else {\n\t\t\t\tout = !!value;\n\t\t\t}\n\t\t}\n\n\t\treturn out;\n\t}\n};\n", "import \"../form/layout\";\n\nfrappe.provide(\"frappe.ui\");\n\nfrappe.ui.FieldGroup = class FieldGroup extends frappe.ui.form.Layout {\n\tconstructor(opts) {\n\t\tsuper(opts);\n\t\tthis.dirty = false;\n\t\t$.each(this.fields || [], function (i, f) {\n\t\t\tif (!f.fieldname && f.label) {\n\t\t\t\tf.fieldname = f.label.replace(/ /g, \"_\").toLowerCase();\n\t\t\t}\n\t\t});\n\t\tif (this.values) {\n\t\t\tthis.set_values(this.values);\n\t\t}\n\t}\n\n\tmake() {\n\t\tlet me = this;\n\t\tif (this.fields) {\n\t\t\tsuper.make();\n\t\t\tthis.refresh();\n\t\t\t// set default\n\t\t\t$.each(this.fields_list, function (i, field) {\n\t\t\t\tif (field.df[\"default\"]) {\n\t\t\t\t\tlet def_value = field.df[\"default\"];\n\n\t\t\t\t\tif (def_value == \"Today\" && field.df[\"fieldtype\"] == \"Date\") {\n\t\t\t\t\t\tdef_value = frappe.datetime.get_today();\n\t\t\t\t\t}\n\n\t\t\t\t\tfield.set_input(def_value);\n\t\t\t\t\t// if default and has depends_on, render its fields.\n\t\t\t\t\tme.refresh_dependency();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif (!this.no_submit_on_enter) {\n\t\t\t\tthis.catch_enter_as_submit();\n\t\t\t}\n\n\t\t\t$(this.wrapper)\n\t\t\t\t.find(\"input, select\")\n\t\t\t\t.on(\"change awesomplete-selectcomplete\", () => {\n\t\t\t\t\tthis.dirty = true;\n\t\t\t\t\tfrappe.run_serially([\n\t\t\t\t\t\t() => frappe.timeout(0.1),\n\t\t\t\t\t\t() => me.refresh_dependency(),\n\t\t\t\t\t]);\n\t\t\t\t});\n\t\t}\n\t}\n\n\tfocus_on_first_input() {\n\t\tif (this.no_focus) return;\n\t\t$.each(this.fields_list, function (i, f) {\n\t\t\tif (!in_list([\"Date\", \"Datetime\", \"Time\", \"Check\"], f.df.fieldtype) && f.set_focus) {\n\t\t\t\tf.set_focus();\n\t\t\t\treturn false;\n\t\t\t}\n\t\t});\n\t}\n\n\tcatch_enter_as_submit() {\n\t\tlet me = this;\n\t\t$(this.body)\n\t\t\t.find('input[type=\"text\"], input[type=\"password\"], select')\n\t\t\t.keypress(function (e) {\n\t\t\t\tif (e.which == 13) {\n\t\t\t\t\tif (me.has_primary_action) {\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\tme.get_primary_btn().trigger(\"click\");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t}\n\n\tget_input(fieldname) {\n\t\tlet field = this.fields_dict[fieldname];\n\t\tif (!field) return \"\";\n\t\treturn $(field.txt ? field.txt : field.input);\n\t}\n\n\tget_field(fieldname) {\n\t\treturn this.fields_dict[fieldname];\n\t}\n\n\tget_values(ignore_errors, check_invalid) {\n\t\tlet ret = {};\n\t\tlet errors = [];\n\t\tlet invalid = [];\n\n\t\tfor (let key in this.fields_dict) {\n\t\t\tlet f = this.fields_dict[key];\n\t\t\tif (f.get_value) {\n\t\t\t\tlet v = f.get_value();\n\t\t\t\tif (f.df.reqd && is_null(typeof v === \"string\" ? strip_html(v) : v))\n\t\t\t\t\terrors.push(__(f.df.label));\n\n\t\t\t\tif (f.df.reqd && f.df.fieldtype === \"Text Editor\" && is_null(strip_html(cstr(v))))\n\t\t\t\t\terrors.push(__(f.df.label));\n\n\t\t\t\tif (!is_null(v)) ret[f.df.fieldname] = v;\n\t\t\t}\n\n\t\t\tif (this.is_dialog && f.df.reqd && !f.value) {\n\t\t\t\tf.refresh_input();\n\t\t\t}\n\n\t\t\tif (f.df.invalid) {\n\t\t\t\tinvalid.push(__(f.df.label));\n\t\t\t}\n\t\t}\n\n\t\tif (errors.length && !ignore_errors) {\n\t\t\tfrappe.msgprint({\n\t\t\t\ttitle: __(\"Missing Values Required\"),\n\t\t\t\tmessage:\n\t\t\t\t\t__(\"Following fields have missing values:\") +\n\t\t\t\t\t\"\",\n\t\t\t\tindicator: \"orange\",\n\t\t\t});\n\t\t\treturn null;\n\t\t}\n\n\t\tif (invalid.length && check_invalid) {\n\t\t\tfrappe.msgprint({\n\t\t\t\ttitle: __(\"Inavlid Values\"),\n\t\t\t\tmessage:\n\t\t\t\t\t__(\"Following fields have invalid values:\") +\n\t\t\t\t\t\"
- \" +\n\t\t\t\t\terrors.join(\"
- \") +\n\t\t\t\t\t\"
\",\n\t\t\t\tindicator: \"orange\",\n\t\t\t});\n\t\t\treturn null;\n\t\t}\n\t\treturn ret;\n\t}\n\n\tget_value(key) {\n\t\tlet f = this.fields_dict[key];\n\t\treturn f && (f.get_value ? f.get_value() : null);\n\t}\n\n\tset_value(key, val) {\n\t\treturn new Promise((resolve) => {\n\t\t\tlet f = this.fields_dict[key];\n\t\t\tif (f) {\n\t\t\t\tf.set_value(val).then(() => {\n\t\t\t\t\tf.set_input?.(val);\n\t\t\t\t\tthis.refresh_dependency();\n\t\t\t\t\tresolve();\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tresolve();\n\t\t\t}\n\t\t});\n\t}\n\n\thas_field(fieldname) {\n\t\treturn !!this.fields_dict[fieldname];\n\t}\n\n\tset_input(key, val) {\n\t\treturn this.set_value(key, val);\n\t}\n\n\tset_values(dict) {\n\t\tlet promises = [];\n\t\tfor (let key in dict) {\n\t\t\tif (this.fields_dict[key]) {\n\t\t\t\tpromises.push(this.set_value(key, dict[key]));\n\t\t\t}\n\t\t}\n\n\t\treturn Promise.all(promises);\n\t}\n\n\tclear() {\n\t\tfor (let key in this.fields_dict) {\n\t\t\tlet f = this.fields_dict[key];\n\t\t\tif (f && f.set_input) {\n\t\t\t\tf.set_input(f.df[\"default\"] || \"\");\n\t\t\t}\n\t\t}\n\t}\n\n\tset_df_property(fieldname, prop, value) {\n\t\tif (!fieldname) {\n\t\t\treturn;\n\t\t}\n\t\tconst field = this.get_field(fieldname);\n\t\tfield.df[prop] = value;\n\t\tfield.refresh();\n\t}\n};\n", "// Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and Contributors\n// MIT License. See license.txt\n\nfrappe.ui.form.LinkSelector = class LinkSelector {\n\tconstructor(opts) {\n\t\t/* help: Options: doctype, get_query, target */\n\t\t$.extend(this, opts);\n\n\t\tvar me = this;\n\t\tif (this.doctype != \"[Select]\") {\n\t\t\tfrappe.model.with_doctype(this.doctype, function (r) {\n\t\t\t\tme.make();\n\t\t\t});\n\t\t} else {\n\t\t\tthis.make();\n\t\t}\n\t}\n\tmake() {\n\t\tvar me = this;\n\n\t\tthis.start = 0;\n\t\tthis.dialog = new frappe.ui.Dialog({\n\t\t\ttitle: __(\"Select {0}\", [this.doctype == \"[Select]\" ? __(\"value\") : __(this.doctype)]),\n\t\t\tfields: [\n\t\t\t\t{\n\t\t\t\t\tfieldtype: \"Data\",\n\t\t\t\t\tfieldname: \"txt\",\n\t\t\t\t\tlabel: __(\"Beginning with\"),\n\t\t\t\t\tdescription: __(\"You can use wildcard %\"),\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tfieldtype: \"HTML\",\n\t\t\t\t\tfieldname: \"results\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tfieldtype: \"Button\",\n\t\t\t\t\tfieldname: \"more\",\n\t\t\t\t\tlabel: __(\"More\"),\n\t\t\t\t\tclick: () => {\n\t\t\t\t\t\tme.start += 20;\n\t\t\t\t\t\tme.search();\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t\tprimary_action_label: __(\"Search\"),\n\t\t\tprimary_action: function () {\n\t\t\t\tme.start = 0;\n\t\t\t\tme.search();\n\t\t\t},\n\t\t});\n\n\t\tif (this.txt) this.dialog.fields_dict.txt.set_input(this.txt);\n\n\t\tthis.dialog.get_input(\"txt\").on(\"keypress\", function (e) {\n\t\t\tif (e.which === 13) {\n\t\t\t\tme.start = 0;\n\t\t\t\tme.search();\n\t\t\t}\n\t\t});\n\t\tthis.dialog.show();\n\t\tthis.search();\n\t}\n\tsearch() {\n\t\tvar args = {\n\t\t\ttxt: this.dialog.fields_dict.txt.get_value(),\n\t\t\tsearchfield: \"name\",\n\t\t\tstart: this.start,\n\t\t};\n\t\tvar me = this;\n\n\t\tif (this.target.set_custom_query) {\n\t\t\tthis.target.set_custom_query(args);\n\t\t}\n\n\t\t// load custom query from grid\n\t\tif (\n\t\t\tthis.target.is_grid &&\n\t\t\tthis.target.fieldinfo[this.fieldname] &&\n\t\t\tthis.target.fieldinfo[this.fieldname].get_query\n\t\t) {\n\t\t\t$.extend(args, this.target.fieldinfo[this.fieldname].get_query(cur_frm.doc));\n\t\t}\n\n\t\tfrappe.link_search(\n\t\t\tthis.doctype,\n\t\t\targs,\n\t\t\tfunction (r) {\n\t\t\t\tvar parent = me.dialog.fields_dict.results.$wrapper;\n\t\t\t\tif (args.start === 0) {\n\t\t\t\t\tparent.empty();\n\t\t\t\t}\n\n\t\t\t\tif (r.values.length) {\n\t\t\t\t\t$.each(r.values, function (i, v) {\n\t\t\t\t\t\tvar row = $(\n\t\t\t\t\t\t\trepl(\n\t\t\t\t\t\t\t\t'
- \" +\n\t\t\t\t\tinvalid.join(\"
- \") +\n\t\t\t\t\t\"
\\\n\t\t\t\t\t\t',\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tname: v[0],\n\t\t\t\t\t\t\t\t\tvalues: v.splice(1).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).appendTo(parent);\n\n\t\t\t\t\t\trow.find(\"a\")\n\t\t\t\t\t\t\t.attr(\"data-value\", v[0])\n\t\t\t\t\t\t\t.click(function () {\n\t\t\t\t\t\t\t\tvar value = $(this).attr(\"data-value\");\n\t\t\t\t\t\t\t\tif (me.target.is_grid) {\n\t\t\t\t\t\t\t\t\t// set in grid\n\t\t\t\t\t\t\t\t\t// call search after value is set to get latest filtered results\n\t\t\t\t\t\t\t\t\tme.set_in_grid(value).then(() => me.search());\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tif (me.target.doctype)\n\t\t\t\t\t\t\t\t\t\tme.target.parse_validate_and_set_in_model(value);\n\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\tme.target.set_input(value);\n\t\t\t\t\t\t\t\t\t\tme.target.$input.trigger(\"change\");\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tme.dialog.hide();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\t$(\n\t\t\t\t\t\t'\\\n\t\t\t\t\t\t\t%(name)s\\\n\t\t\t\t\t\t\\\n\t\t\t\t\t\t\t%(values)s\\\n\t\t\t\t\t\t\"\n\t\t\t\t\t)\n\t\t\t\t\t\t.appendTo(parent)\n\t\t\t\t\t\t.find(\".new-doc\")\n\t\t\t\t\t\t.click(function () {\n\t\t\t\t\t\t\tfrappe.new_doc(me.doctype);\n\t\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tvar more_btn = me.dialog.fields_dict.more.$wrapper;\n\t\t\t\tif (r.values.length < 20) {\n\t\t\t\t\tmore_btn.hide();\n\t\t\t\t} else {\n\t\t\t\t\tmore_btn.show();\n\t\t\t\t}\n\t\t\t},\n\t\t\tthis.dialog.get_primary_btn()\n\t\t);\n\t}\n\tset_in_grid(value) {\n\t\treturn new Promise((resolve) => {\n\t\t\tif (this.qty_fieldname) {\n\t\t\t\tfrappe.prompt(\n\t\t\t\t\t{\n\t\t\t\t\t\tfieldname: \"qty\",\n\t\t\t\t\t\tfieldtype: \"Float\",\n\t\t\t\t\t\tlabel: \"Qty\",\n\t\t\t\t\t\tdefault: 1,\n\t\t\t\t\t\treqd: 1,\n\t\t\t\t\t},\n\t\t\t\t\t(data) => {\n\t\t\t\t\t\tlet updated = (this.target.frm.doc[this.target.df.fieldname] || []).some(\n\t\t\t\t\t\t\t(d) => {\n\t\t\t\t\t\t\t\tif (d[this.fieldname] === value) {\n\t\t\t\t\t\t\t\t\tfrappe.model\n\t\t\t\t\t\t\t\t\t\t.set_value(d.doctype, d.name, this.qty_fieldname, data.qty)\n\t\t\t\t\t\t\t\t\t\t.then(() => {\n\t\t\t\t\t\t\t\t\t\t\tfrappe.show_alert(\n\t\t\t\t\t\t\t\t\t\t\t\t__(\"Added {0} ({1})\", [\n\t\t\t\t\t\t\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\t\t\t\t\t\t\td[this.qty_fieldname],\n\t\t\t\t\t\t\t\t\t\t\t\t])\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\tresolve();\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\treturn true;\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\tif (!updated) {\n\t\t\t\t\t\t\tlet d = null;\n\t\t\t\t\t\t\tfrappe.run_serially([\n\t\t\t\t\t\t\t\t() => (d = this.target.add_new_row()),\n\t\t\t\t\t\t\t\t() => frappe.timeout(0.1),\n\t\t\t\t\t\t\t\t() => {\n\t\t\t\t\t\t\t\t\tlet args = {};\n\t\t\t\t\t\t\t\t\targs[this.fieldname] = value;\n\t\t\t\t\t\t\t\t\targs[this.qty_fieldname] = data.qty;\n\t\t\t\t\t\t\t\t\treturn frappe.model.set_value(d.doctype, d.name, args);\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t() => frappe.show_alert(__(\"Added {0} ({1})\", [value, data.qty])),\n\t\t\t\t\t\t\t\t() => resolve(),\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\t__(\"Set Quantity\"),\n\t\t\t\t\t__(\"Set Quantity\")\n\t\t\t\t);\n\t\t\t} else if (this.dynamic_link_field) {\n\t\t\t\tlet d = this.target.add_new_row();\n\t\t\t\tfrappe.model.set_value(\n\t\t\t\t\td.doctype,\n\t\t\t\t\td.name,\n\t\t\t\t\tthis.dynamic_link_field,\n\t\t\t\t\tthis.dynamic_link_reference\n\t\t\t\t);\n\t\t\t\tfrappe.model.set_value(d.doctype, d.name, this.fieldname, value).then(() => {\n\t\t\t\t\tfrappe.show_alert(__(\"{0} {1} added\", [this.dynamic_link_reference, value]));\n\t\t\t\t\tresolve();\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tlet d = this.target.add_new_row();\n\t\t\t\tfrappe.model.set_value(d.doctype, d.name, this.fieldname, value).then(() => {\n\t\t\t\t\tfrappe.show_alert(__(\"{0} added\", [value]));\n\t\t\t\t\tresolve();\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n};\n\nfrappe.link_search = function (doctype, args, callback, btn) {\n\tif (!args) {\n\t\targs = {\n\t\t\ttxt: \"\",\n\t\t};\n\t}\n\targs.doctype = doctype;\n\tif (!args.searchfield) {\n\t\targs.searchfield = \"name\";\n\t}\n\n\tfrappe.call({\n\t\tmethod: \"frappe.desk.search.search_widget\",\n\t\ttype: \"GET\",\n\t\targs: args,\n\t\tcallback: function (r) {\n\t\t\tcallback && callback(r);\n\t\t},\n\t\tbtn: btn,\n\t});\n};\n", "frappe.ui.form.MultiSelectDialog = class MultiSelectDialog {\n\tconstructor(opts) {\n\t\t/* Options: doctype, target, setters, get_query, action, add_filters_group, data_fields, primary_action_label, columns */\n\t\tObject.assign(this, opts);\n\t\tthis.for_select = this.doctype == \"[Select]\";\n\t\tif (!this.for_select) {\n\t\t\tfrappe.model.with_doctype(this.doctype, () => this.init());\n\t\t} else {\n\t\t\tthis.init();\n\t\t}\n\t}\n\n\tinit() {\n\t\tthis.page_length = 20;\n\t\tthis.child_page_length = 20;\n\t\tthis.fields = this.get_fields();\n\n\t\tthis.make();\n\t}\n\n\tget_fields() {\n\t\tconst primary_fields = this.get_primary_filters();\n\t\tconst result_fields = this.get_result_fields();\n\t\tconst data_fields = this.get_data_fields();\n\t\tconst child_selection_fields = this.get_child_selection_fields();\n\n\t\treturn [...primary_fields, ...result_fields, ...data_fields, ...child_selection_fields];\n\t}\n\n\tget_result_fields() {\n\t\tconst show_next_page = () => {\n\t\t\tthis.page_length += 20;\n\t\t\tthis.get_results();\n\t\t};\n\t\treturn [\n\t\t\t{\n\t\t\t\tfieldtype: \"HTML\",\n\t\t\t\tfieldname: \"results_area\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tfieldtype: \"Button\",\n\t\t\t\tfieldname: \"more_btn\",\n\t\t\t\tlabel: __(\"More\"),\n\t\t\t\tclick: show_next_page.bind(this),\n\t\t\t},\n\t\t];\n\t}\n\n\tget_data_fields() {\n\t\tif (this.data_fields && this.data_fields.length) {\n\t\t\t// Custom Data Fields\n\t\t\treturn [{ fieldtype: \"Section Break\" }, ...this.data_fields];\n\t\t} else {\n\t\t\treturn [];\n\t\t}\n\t}\n\n\tget_child_selection_fields() {\n\t\tconst fields = [];\n\t\tif (this.allow_child_item_selection && this.child_fieldname) {\n\t\t\tconst show_more_child_results = () => {\n\t\t\t\tthis.child_page_length += 20;\n\t\t\t\tthis.show_child_results();\n\t\t\t};\n\t\t\tfields.push({ fieldtype: \"HTML\", fieldname: \"child_selection_area\" });\n\t\t\tfields.push({\n\t\t\t\tfieldtype: \"Button\",\n\t\t\t\tfieldname: \"more_child_btn\",\n\t\t\t\thidden: 1,\n\t\t\t\tlabel: __(\"More\"),\n\t\t\t\tclick: show_more_child_results.bind(this),\n\t\t\t});\n\t\t}\n\t\treturn fields;\n\t}\n\n\tmake() {\n\t\tlet doctype_plural = __(this.doctype).plural();\n\t\tlet title = __(\"Select {0}\", [this.for_select ? __(\"value\") : doctype_plural]);\n\n\t\tthis.dialog = new frappe.ui.Dialog({\n\t\t\ttitle: title,\n\t\t\tfields: this.fields,\n\t\t\tsize: this.size,\n\t\t\tprimary_action_label: this.primary_action_label || __(\"Get Items\"),\n\t\t\tsecondary_action_label: __(\"Make {0}\", [__(this.doctype)]),\n\t\t\tprimary_action: () => {\n\t\t\t\tlet filters_data = this.get_custom_filters();\n\t\t\t\tconst data_values = cur_dialog.get_values(); // to pass values of data fields\n\t\t\t\tconst filtered_children = this.get_selected_child_names();\n\t\t\t\tconst selected_documents = [\n\t\t\t\t\t...this.get_checked_values(),\n\t\t\t\t\t...this.get_parent_name_of_selected_children(),\n\t\t\t\t];\n\t\t\t\tthis.action(selected_documents, {\n\t\t\t\t\t...this.args,\n\t\t\t\t\t...data_values,\n\t\t\t\t\t...filters_data,\n\t\t\t\t\tfiltered_children,\n\t\t\t\t});\n\t\t\t},\n\t\t\tsecondary_action: this.make_new_document.bind(this),\n\t\t});\n\n\t\tif (this.add_filters_group) {\n\t\t\tthis.make_filter_area();\n\t\t}\n\n\t\tthis.args = {};\n\n\t\tthis.setup_results();\n\t\tthis.bind_events();\n\t\tthis.get_results();\n\t\tthis.dialog.show();\n\t}\n\n\tmake_new_document(e) {\n\t\t// If user wants to close the modal\n\t\tif (e) {\n\t\t\tthis.set_route_options();\n\t\t\tfrappe.new_doc(this.doctype, true);\n\t\t}\n\t}\n\n\tset_route_options() {\n\t\t// set route options to get pre-filled form fields\n\t\tfrappe.route_options = {};\n\t\tif (Array.isArray(this.setters)) {\n\t\t\tfor (let df of this.setters) {\n\t\t\t\tfrappe.route_options[df.fieldname] =\n\t\t\t\t\tthis.dialog.fields_dict[df.fieldname].get_value() || undefined;\n\t\t\t}\n\t\t} else {\n\t\t\tObject.keys(this.setters).forEach((setter) => {\n\t\t\t\tfrappe.route_options[setter] =\n\t\t\t\t\tthis.dialog.fields_dict[setter].get_value() || undefined;\n\t\t\t});\n\t\t}\n\t}\n\n\tsetup_results() {\n\t\tthis.$parent = $(this.dialog.body);\n\t\tthis.$wrapper = this.dialog.fields_dict.results_area.$wrapper\n\t\t\t.append(``);\n\n\t\tthis.$results = this.$wrapper.find(\".results\");\n\t\tthis.$results.append(this.make_list_row());\n\t}\n\n\tshow_child_results() {\n\t\tthis.get_child_result().then((r) => {\n\t\t\tthis.child_results = r.message || [];\n\t\t\tthis.render_child_datatable();\n\n\t\t\tthis.$wrapper.addClass(\"hidden\");\n\t\t\tthis.$child_wrapper.removeClass(\"hidden\");\n\t\t\tthis.dialog.fields_dict.more_btn.$wrapper.hide();\n\t\t});\n\t}\n\n\tis_child_selection_enabled() {\n\t\treturn this.dialog.fields_dict[\"allow_child_item_selection\"]?.get_value();\n\t}\n\n\ttoggle_child_selection() {\n\t\tif (this.is_child_selection_enabled()) {\n\t\t\tthis.show_child_results();\n\t\t} else {\n\t\t\tthis.child_results = [];\n\t\t\tthis.get_results();\n\t\t\tthis.$wrapper.removeClass(\"hidden\");\n\t\t\tthis.$child_wrapper.addClass(\"hidden\");\n\t\t}\n\t}\n\n\trender_child_datatable() {\n\t\tif (!this.child_datatable) {\n\t\t\tthis.setup_child_datatable();\n\t\t} else {\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.child_datatable.rowmanager.checkMap = [];\n\t\t\t\tthis.child_datatable.refresh(this.get_child_datatable_rows());\n\t\t\t\tthis.$child_wrapper.find(\".dt-scrollable\").css(\"height\", \"300px\");\n\t\t\t\tthis.$child_wrapper.find(\".dt-scrollable\").css(\"overflow-y\", \"scroll\");\n\t\t\t}, 500);\n\t\t}\n\t}\n\n\tget_child_datatable_columns() {\n\t\tconst parent = this.doctype;\n\t\treturn [parent, ...this.child_columns].map((d) => ({\n\t\t\tname: frappe.unscrub(d),\n\t\t\teditable: false,\n\t\t}));\n\t}\n\n\tget_child_datatable_rows() {\n\t\tif (this.child_results.length > this.child_page_length) {\n\t\t\tthis.dialog.fields_dict.more_child_btn.toggle(true);\n\t\t} else {\n\t\t\tthis.dialog.fields_dict.more_child_btn.toggle(false);\n\t\t}\n\t\treturn this.child_results\n\t\t\t.slice(0, this.child_page_length)\n\t\t\t.map((d) => Object.values(d).slice(1)); // slice name field\n\t}\n\n\tsetup_child_datatable() {\n\t\tconst header_columns = this.get_child_datatable_columns();\n\t\tconst rows = this.get_child_datatable_rows();\n\t\tthis.$child_wrapper = this.dialog.fields_dict.child_selection_area.$wrapper;\n\t\tthis.$child_wrapper.addClass(\"my-3\");\n\n\t\tthis.child_datatable = new frappe.DataTable(this.$child_wrapper.get(0), {\n\t\t\tcolumns: header_columns,\n\t\t\tdata: rows,\n\t\t\tlayout: \"fluid\",\n\t\t\tinlineFilters: true,\n\t\t\tserialNoColumn: false,\n\t\t\tcheckboxColumn: true,\n\t\t\tcellHeight: 35,\n\t\t\tnoDataMessage: __(\"No Data\"),\n\t\t\tdisableReorderColumn: true,\n\t\t});\n\t\tthis.$child_wrapper.find(\".dt-scrollable\").css(\"height\", \"300px\");\n\t}\n\n\tget_primary_filters() {\n\t\tlet fields = [];\n\n\t\tlet columns = new Array(3);\n\n\t\t// Hack for three column layout\n\t\t// To add column break\n\t\tcolumns[0] = [\n\t\t\t{\n\t\t\t\tfieldtype: \"Data\",\n\t\t\t\tlabel: __(\"Name\"),\n\t\t\t\tfieldname: \"search_term\",\n\t\t\t},\n\t\t];\n\t\tcolumns[1] = [];\n\t\tcolumns[2] = [];\n\n\t\tif ($.isArray(this.setters)) {\n\t\t\tthis.setters.forEach((setter, index) => {\n\t\t\t\tcolumns[(index + 1) % 3].push(setter);\n\t\t\t});\n\t\t} else {\n\t\t\tObject.keys(this.setters).forEach((setter, index) => {\n\t\t\t\tlet df_prop = frappe.meta.docfield_map[this.doctype][setter];\n\n\t\t\t\t// Index + 1 to start filling from index 1\n\t\t\t\t// Since Search is a standrd field already pushed\n\t\t\t\tcolumns[(index + 1) % 3].push({\n\t\t\t\t\tfieldtype: df_prop.fieldtype,\n\t\t\t\t\tlabel: df_prop.label,\n\t\t\t\t\tfieldname: setter,\n\t\t\t\t\toptions: df_prop.options,\n\t\t\t\t\tdefault: this.setters[setter],\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/seal\n\t\tif (Object.seal) {\n\t\t\tObject.seal(columns);\n\t\t\t// now a is a fixed-size array with mutable entries\n\t\t}\n\n\t\tif (this.allow_child_item_selection) {\n\t\t\tthis.child_doctype = frappe.meta.get_docfield(\n\t\t\t\tthis.doctype,\n\t\t\t\tthis.child_fieldname\n\t\t\t).options;\n\t\t\tcolumns[0].push({\n\t\t\t\tfieldtype: \"Check\",\n\t\t\t\tlabel: __(\"Select {0}\", [__(this.child_doctype)]),\n\t\t\t\tfieldname: \"allow_child_item_selection\",\n\t\t\t\tonchange: this.toggle_child_selection.bind(this),\n\t\t\t});\n\t\t}\n\n\t\tfields = [\n\t\t\t...columns[0],\n\t\t\t{ fieldtype: \"Column Break\" },\n\t\t\t...columns[1],\n\t\t\t{ fieldtype: \"Column Break\" },\n\t\t\t...columns[2],\n\t\t\t{ fieldtype: \"Section Break\", fieldname: \"primary_filters_sb\" },\n\t\t];\n\n\t\tif (this.add_filters_group) {\n\t\t\tfields.push({\n\t\t\t\tfieldtype: \"HTML\",\n\t\t\t\tfieldname: \"filter_area\",\n\t\t\t});\n\t\t}\n\n\t\treturn fields;\n\t}\n\n\tmake_filter_area() {\n\t\tthis.filter_group = new frappe.ui.FilterGroup({\n\t\t\tparent: this.dialog.get_field(\"filter_area\").$wrapper,\n\t\t\tdoctype: this.doctype,\n\t\t\ton_change: () => {\n\t\t\t\tif (this.is_child_selection_enabled()) {\n\t\t\t\t\tthis.show_child_results();\n\t\t\t\t} else {\n\t\t\t\t\tthis.get_results();\n\t\t\t\t}\n\t\t\t},\n\t\t});\n\t\t// 'Apply Filter' breaks since the filers are not in a popover\n\t\t// Hence keeping it hidden\n\t\tthis.filter_group.wrapper.find(\".apply-filters\").hide();\n\t}\n\n\tget_custom_filters() {\n\t\tif (this.add_filters_group && this.filter_group) {\n\t\t\treturn this.filter_group.get_filters().reduce((acc, filter) => {\n\t\t\t\treturn Object.assign(acc, {\n\t\t\t\t\t[filter[1]]: [filter[2], filter[3]],\n\t\t\t\t});\n\t\t\t}, {});\n\t\t} else {\n\t\t\treturn {};\n\t\t}\n\t}\n\n\tbind_events() {\n\t\tlet me = this;\n\n\t\tthis.$results.on(\"click\", \".list-item-container\", function (e) {\n\t\t\tif (!$(e.target).is(\":checkbox\") && !$(e.target).is(\"a\")) {\n\t\t\t\t$(this).find(\":checkbox\").trigger(\"click\");\n\t\t\t}\n\t\t});\n\n\t\tthis.$results.on(\"click\", \".list-item--head :checkbox\", (e) => {\n\t\t\tthis.$results\n\t\t\t\t.find(\".list-item-container .list-row-check\")\n\t\t\t\t.prop(\"checked\", $(e.target).is(\":checked\"));\n\t\t});\n\n\t\tthis.$parent.find(\".input-with-feedback\").on(\"change\", () => {\n\t\t\tfrappe.flags.auto_scroll = false;\n\t\t\tif (this.is_child_selection_enabled()) {\n\t\t\t\tthis.show_child_results();\n\t\t\t} else {\n\t\t\t\tthis.get_results();\n\t\t\t}\n\t\t});\n\n\t\tthis.$parent.find('[data-fieldtype=\"Data\"]').on(\"input\", () => {\n\t\t\tvar $this = $(this);\n\t\t\tclearTimeout($this.data(\"timeout\"));\n\t\t\t$this.data(\n\t\t\t\t\"timeout\",\n\t\t\t\tsetTimeout(function () {\n\t\t\t\t\tfrappe.flags.auto_scroll = false;\n\t\t\t\t\tif (me.is_child_selection_enabled()) {\n\t\t\t\t\t\tme.show_child_results();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tme.empty_list();\n\t\t\t\t\t\tme.get_results();\n\t\t\t\t\t}\n\t\t\t\t}, 300)\n\t\t\t);\n\t\t});\n\t}\n\n\tget_parent_name_of_selected_children() {\n\t\tif (!this.child_datatable || !this.child_datatable.datamanager.rows.length) return [];\n\n\t\tlet parent_names = this.child_datatable.rowmanager.checkMap.reduce(\n\t\t\t(parent_names, checked, index) => {\n\t\t\t\tif (checked == 1) {\n\t\t\t\t\tconst parent_name = this.child_results[index].parent;\n\t\t\t\t\tif (!parent_names.includes(parent_name)) {\n\t\t\t\t\t\tparent_names.push(parent_name);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn parent_names;\n\t\t\t},\n\t\t\t[]\n\t\t);\n\n\t\treturn parent_names;\n\t}\n\n\tget_selected_child_names() {\n\t\tif (!this.child_datatable || !this.child_datatable.datamanager.rows.length) return [];\n\n\t\tlet checked_names = this.child_datatable.rowmanager.checkMap.reduce(\n\t\t\t(checked_names, checked, index) => {\n\t\t\t\tif (checked == 1) {\n\t\t\t\t\tconst child_row_name = this.child_results[index].name;\n\t\t\t\t\tchecked_names.push(child_row_name);\n\t\t\t\t}\n\t\t\t\treturn checked_names;\n\t\t\t},\n\t\t\t[]\n\t\t);\n\n\t\treturn checked_names;\n\t}\n\n\tget_checked_values() {\n\t\t// Return name of checked value.\n\t\treturn this.$results\n\t\t\t.find(\".list-item-container\")\n\t\t\t.map(function () {\n\t\t\t\tif ($(this).find(\".list-row-check:checkbox:checked\").length > 0) {\n\t\t\t\t\treturn $(this).attr(\"data-item-name\");\n\t\t\t\t}\n\t\t\t})\n\t\t\t.get();\n\t}\n\n\tget_checked_items() {\n\t\t// Return checked items with all the column values.\n\t\tlet checked_values = this.get_checked_values();\n\t\treturn this.results.filter((res) => checked_values.includes(res.name));\n\t}\n\n\tget_datatable_columns() {\n\t\tif (this.get_query && this.get_query().query && this.columns) return this.columns;\n\n\t\tif (Array.isArray(this.setters))\n\t\t\treturn [\"name\", ...this.setters.map((df) => df.fieldname)];\n\n\t\treturn [\"name\", ...Object.keys(this.setters)];\n\t}\n\n\tmake_list_row(result = {}) {\n\t\tvar me = this;\n\t\t// Make a head row by default (if result not passed)\n\t\tlet head = Object.keys(result).length === 0;\n\n\t\tlet contents = ``;\n\t\tthis.get_datatable_columns().forEach(function (column) {\n\t\t\tcontents += `
' +\n\t\t\t\t\t\t\t__(\"No Results\") +\n\t\t\t\t\t\t\t\"\" +\n\t\t\t\t\t\t\t(frappe.model.can_create(me.doctype)\n\t\t\t\t\t\t\t\t? '
' +\n\t\t\t\t\t\t\t\t __(\"Create a new {0}\", [__(me.doctype)]) +\n\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${\n\t\t\t\t\thead\n\t\t\t\t\t\t? `${__(frappe.model.unscrub(column))}`\n\t\t\t\t\t\t: column !== \"name\"\n\t\t\t\t\t\t? `${__(result[column] || \"\")}`\n\t\t\t\t\t\t: `\n\t\t\t\t\t\t\t${__(result[column] || \"\")}`\n\t\t\t\t}\n\t\t\t`;\n\t\t});\n\n\t\tlet $row = $(`\n\t\t\t`);\n\n\t\thead\n\t\t\t? $row.addClass(\"list-item--head\")\n\t\t\t: ($row = $(\n\t\t\t\t\t``\n\t\t\t ).append($row));\n\n\t\treturn $row;\n\t}\n\n\trender_result_list(results, more = 0, empty = true) {\n\t\tvar me = this;\n\t\tvar more_btn = me.dialog.fields_dict.more_btn.$wrapper;\n\n\t\t// Make empty result set if filter is set\n\t\tif (!frappe.flags.auto_scroll && empty) {\n\t\t\tthis.empty_list();\n\t\t}\n\t\tmore_btn.hide();\n\t\t$(\".modal-dialog .list-item--head\").css(\"z-index\", 1);\n\n\t\tif (results.length === 0) return;\n\t\tif (more) more_btn.show();\n\n\t\tlet checked = this.get_checked_values();\n\n\t\tresults\n\t\t\t.filter((result) => !checked.includes(result.name))\n\t\t\t.forEach((result) => {\n\t\t\t\tme.$results.append(me.make_list_row(result));\n\t\t\t});\n\n\t\tthis.$results.find(\".list-item--head\").css(\"z-index\", 1);\n\n\t\tif (frappe.flags.auto_scroll) {\n\t\t\tthis.$results.animate({ scrollTop: me.$results.prop(\"scrollHeight\") }, 500);\n\t\t}\n\t}\n\n\tempty_list() {\n\t\t// Store all checked items\n\t\tlet checked = this.get_checked_items().map((item) => {\n\t\t\treturn {\n\t\t\t\t...item,\n\t\t\t\tchecked: true,\n\t\t\t};\n\t\t});\n\n\t\t// Remove **all** items\n\t\tthis.$results.find(\".list-item-container\").remove();\n\n\t\t// Rerender checked items\n\t\tthis.render_result_list(checked, 0, false);\n\t}\n\n\tget_filters_from_setters() {\n\t\tlet me = this;\n\t\tlet filters = (this.get_query ? this.get_query().filters : {}) || {};\n\t\tlet filter_fields = [];\n\n\t\tif ($.isArray(this.setters)) {\n\t\t\tfor (let df of this.setters) {\n\t\t\t\tfilters[df.fieldname] =\n\t\t\t\t\tme.dialog.fields_dict[df.fieldname].get_value() || undefined;\n\t\t\t\tme.args[df.fieldname] = filters[df.fieldname];\n\t\t\t\tfilter_fields.push(df.fieldname);\n\t\t\t}\n\t\t} else {\n\t\t\tObject.keys(this.setters).forEach(function (setter) {\n\t\t\t\tvar value = me.dialog.fields_dict[setter].get_value();\n\t\t\t\tif (me.dialog.fields_dict[setter].df.fieldtype == \"Data\" && value) {\n\t\t\t\t\tfilters[setter] = [\"like\", \"%\" + value + \"%\"];\n\t\t\t\t} else {\n\t\t\t\t\tfilters[setter] = value || undefined;\n\t\t\t\t\tme.args[setter] = filters[setter];\n\t\t\t\t\tfilter_fields.push(setter);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn [filters, filter_fields];\n\t}\n\n\tget_args_for_search() {\n\t\tlet [filters, filter_fields] = this.get_filters_from_setters();\n\n\t\tlet custom_filters = this.get_custom_filters();\n\t\tObject.assign(filters, custom_filters);\n\n\t\treturn {\n\t\t\tdoctype: this.doctype,\n\t\t\ttxt: this.dialog.fields_dict[\"search_term\"].get_value(),\n\t\t\tfilters: filters,\n\t\t\tfilter_fields: filter_fields,\n\t\t\tpage_length: this.page_length + 5,\n\t\t\tquery: this.get_query ? this.get_query().query : \"\",\n\t\t\tas_dict: 1,\n\t\t};\n\t}\n\n\tasync perform_search(args) {\n\t\tconst res = await frappe.call({\n\t\t\ttype: \"GET\",\n\t\t\tmethod: \"frappe.desk.search.search_widget\",\n\t\t\tno_spinner: true,\n\t\t\targs: args,\n\t\t});\n\t\tconst more = res.values.length && res.values.length > this.page_length ? 1 : 0;\n\n\t\treturn [res, more];\n\t}\n\n\tasync get_results() {\n\t\tconst args = this.get_args_for_search();\n\t\tconst [res, more] = await this.perform_search(args);\n\n\t\tif (more) {\n\t\t\tres.values = res.values.splice(0, this.page_length);\n\t\t}\n\n\t\tthis.results = [];\n\t\tif (res.values.length) {\n\t\t\tres.values.forEach((result) => {\n\t\t\t\tresult.checked = 0;\n\t\t\t\tthis.results.push(result);\n\t\t\t});\n\t\t}\n\t\tthis.render_result_list(this.results, more);\n\t}\n\n\tasync get_filtered_parents_for_child_search() {\n\t\tconst parent_search_args = this.get_args_for_search();\n\t\tparent_search_args.filter_fields = [\"name\"];\n\t\t// eslint-disable-next-line no-unused-vars\n\t\tconst [response, _] = await this.perform_search(parent_search_args);\n\n\t\tlet parent_names = [];\n\t\tif (response.values.length) {\n\t\t\tparent_names = response.values.map((v) => v.name);\n\t\t}\n\t\treturn parent_names;\n\t}\n\n\tasync add_parent_filters(filters) {\n\t\tconst parent_names = await this.get_filtered_parents_for_child_search();\n\t\tif (parent_names.length) {\n\t\t\tfilters.push([\"parent\", \"in\", parent_names]);\n\t\t}\n\t}\n\n\tadd_custom_child_filters(filters) {\n\t\tif (this.add_filters_group && this.filter_group) {\n\t\t\tthis.filter_group.get_filters().forEach((filter) => {\n\t\t\t\tif (filter[0] == this.child_doctype) {\n\t\t\t\t\tfilters.push([filter[1], filter[2], filter[3]]);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tasync get_child_result() {\n\t\tlet filters = [[\"parentfield\", \"=\", this.child_fieldname]];\n\n\t\tawait this.add_parent_filters(filters);\n\t\tthis.add_custom_child_filters(filters);\n\n\t\treturn frappe.call({\n\t\t\tmethod: \"frappe.client.get_list\",\n\t\t\targs: {\n\t\t\t\tdoctype: this.child_doctype,\n\t\t\t\tfilters: filters,\n\t\t\t\tfields: [\"name\", \"parent\", ...this.child_columns],\n\t\t\t\tparent: this.doctype,\n\t\t\t\tlimit_page_length: this.child_page_length + 5,\n\t\t\t\torder_by: \"parent\",\n\t\t\t},\n\t\t});\n\t}\n};\n", "import \"./field_group\";\nimport \"../dom\";\n\nfrappe.provide(\"frappe.ui\");\n\nwindow.cur_dialog = null;\n\nfrappe.ui.open_dialogs = [];\n\nfrappe.ui.Dialog = class Dialog extends frappe.ui.FieldGroup {\n\tconstructor(opts) {\n\t\tsuper();\n\t\tthis.display = false;\n\t\tthis.is_dialog = true;\n\n\t\t$.extend(this, { animate: true, size: null }, opts);\n\t\tthis.make();\n\t}\n\n\tmake() {\n\t\tthis.$wrapper = frappe.get_modal(\"\", \"\");\n\n\t\tif (this.static) {\n\t\t\tthis.$wrapper.modal({\n\t\t\t\tbackdrop: \"static\",\n\t\t\t\tkeyboard: false,\n\t\t\t});\n\t\t\tthis.get_close_btn().hide();\n\t\t}\n\n\t\tthis.wrapper = this.$wrapper.find(\".modal-dialog\").get(0);\n\t\tif (this.size == \"small\") $(this.wrapper).addClass(\"modal-sm\");\n\t\telse if (this.size == \"large\") $(this.wrapper).addClass(\"modal-lg\");\n\t\telse if (this.size == \"extra-large\") $(this.wrapper).addClass(\"modal-xl\");\n\n\t\tthis.make_head();\n\t\tthis.modal_body = this.$wrapper.find(\".modal-body\");\n\t\tthis.$body = $(\"\").appendTo(this.modal_body);\n\t\tthis.body = this.$body.get(0);\n\t\tthis.$message = $('').appendTo(this.modal_body);\n\t\tthis.header = this.$wrapper.find(\".modal-header\");\n\t\tthis.footer = this.$wrapper.find(\".modal-footer\");\n\t\tthis.standard_actions = this.footer.find(\".standard-actions\");\n\t\tthis.custom_actions = this.footer.find(\".custom-actions\");\n\t\tthis.set_indicator();\n\n\t\t// make fields (if any)\n\t\tsuper.make();\n\n\t\tthis.refresh_section_collapse();\n\n\t\t// show footer\n\t\tthis.action = this.action || { primary: {}, secondary: {} };\n\t\tif (this.primary_action || (this.action.primary && this.action.primary.onsubmit)) {\n\t\t\tthis.set_primary_action(\n\t\t\t\tthis.primary_action_label ||\n\t\t\t\t\tthis.action.primary.label ||\n\t\t\t\t\t__(\"Submit\", null, \"Primary action in dialog\"),\n\t\t\t\tthis.primary_action || this.action.primary.onsubmit\n\t\t\t);\n\t\t}\n\n\t\tif (this.secondary_action) {\n\t\t\tthis.set_secondary_action(this.secondary_action);\n\t\t}\n\n\t\tif (\n\t\t\tthis.secondary_action_label ||\n\t\t\t(this.action.secondary && this.action.secondary.label)\n\t\t) {\n\t\t\tthis.set_secondary_action_label(\n\t\t\t\tthis.secondary_action_label || this.action.secondary.label\n\t\t\t);\n\t\t}\n\n\t\tif (this.minimizable) {\n\t\t\tthis.header\n\t\t\t\t.find(\".title-section\")\n\t\t\t\t.click(() => this.is_minimized && this.toggle_minimize());\n\t\t\tthis.get_minimize_btn()\n\t\t\t\t.removeClass(\"hide\")\n\t\t\t\t.on(\"click\", () => this.toggle_minimize());\n\t\t}\n\n\t\tvar me = this;\n\t\tthis.$wrapper\n\t\t\t.on(\"hide.bs.modal\", function () {\n\t\t\t\tme.display = false;\n\t\t\t\tme.is_minimized = false;\n\t\t\t\tme.hide_scrollbar(false);\n\n\t\t\t\tif (frappe.ui.open_dialogs[frappe.ui.open_dialogs.length - 1] === me) {\n\t\t\t\t\tfrappe.ui.open_dialogs.pop();\n\t\t\t\t\tif (frappe.ui.open_dialogs.length) {\n\t\t\t\t\t\twindow.cur_dialog =\n\t\t\t\t\t\t\tfrappe.ui.open_dialogs[frappe.ui.open_dialogs.length - 1];\n\t\t\t\t\t} else {\n\t\t\t\t\t\twindow.cur_dialog = null;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tme.onhide && me.onhide();\n\t\t\t\tme.on_hide && me.on_hide();\n\t\t\t})\n\t\t\t.on(\"shown.bs.modal\", function () {\n\t\t\t\t// focus on first input\n\t\t\t\tme.display = true;\n\t\t\t\twindow.cur_dialog = me;\n\t\t\t\tfrappe.ui.open_dialogs.push(me);\n\t\t\t\tme.focus_on_first_input();\n\t\t\t\tme.hide_scrollbar(true);\n\t\t\t\tme.on_page_show && me.on_page_show();\n\t\t\t\t$(document).trigger(\"frappe.ui.Dialog:shown\");\n\t\t\t\t$(document).off(\"focusin.modal\");\n\t\t\t})\n\t\t\t.on(\"scroll\", function () {\n\t\t\t\tvar $input = $(\"input:focus\");\n\t\t\t\tif (\n\t\t\t\t\t$input.length &&\n\t\t\t\t\t[\"Date\", \"Datetime\", \"Time\"].includes($input.attr(\"data-fieldtype\"))\n\t\t\t\t) {\n\t\t\t\t\t$input.blur();\n\t\t\t\t}\n\t\t\t});\n\t}\n\n\tget_primary_btn() {\n\t\treturn this.standard_actions.find(\".btn-primary\");\n\t}\n\n\tget_minimize_btn() {\n\t\treturn this.$wrapper.find(\".modal-header .btn-modal-minimize\");\n\t}\n\n\tset_message(text) {\n\t\tthis.$message.removeClass(\"hide\");\n\t\tthis.$body.addClass(\"hide\");\n\t\tthis.$message.text(text);\n\t}\n\n\tclear_message() {\n\t\tthis.$message.addClass(\"hide\");\n\t\tthis.$body.removeClass(\"hide\");\n\t}\n\n\tclear() {\n\t\tsuper.clear();\n\t\tthis.clear_message();\n\t}\n\n\tset_primary_action(label, click) {\n\t\tthis.footer.removeClass(\"hide\");\n\t\tthis.has_primary_action = true;\n\t\tvar me = this;\n\t\tconst primary_btn = this.get_primary_btn().removeClass(\"hide\").html(label);\n\t\tif (typeof click == \"function\") {\n\t\t\tprimary_btn.off(\"click\").on(\"click\", function () {\n\t\t\t\tme.primary_action_fulfilled = true;\n\t\t\t\t// get values and send it\n\t\t\t\t// as first parameter to click callback\n\t\t\t\t// if no values then return\n\t\t\t\tvar values = me.get_values();\n\t\t\t\tif (!values) return;\n\t\t\t\tclick && click.apply(me, [values]);\n\t\t\t});\n\t\t}\n\t\treturn primary_btn;\n\t}\n\n\tset_secondary_action(click) {\n\t\tthis.footer.removeClass(\"hide\");\n\t\treturn this.get_secondary_btn().removeClass(\"hide\").off(\"click\").on(\"click\", click);\n\t}\n\n\tset_secondary_action_label(label) {\n\t\tthis.get_secondary_btn().removeClass(\"hide\").html(label);\n\t}\n\n\tdisable_primary_action() {\n\t\tthis.get_primary_btn().addClass(\"disabled\");\n\t}\n\n\tenable_primary_action() {\n\t\tthis.get_primary_btn().removeClass(\"disabled\");\n\t}\n\n\tmake_head() {\n\t\tthis.set_title(this.title);\n\t}\n\n\tset_title(t) {\n\t\tthis.$wrapper.find(\".modal-title\").html(t);\n\t}\n\n\tset_indicator() {\n\t\tif (this.indicator) {\n\t\t\tthis.header\n\t\t\t\t.find(\".indicator\")\n\t\t\t\t.removeClass()\n\t\t\t\t.addClass(\"indicator \" + this.indicator);\n\t\t}\n\t}\n\n\tshow() {\n\t\t// show it\n\t\tif (this.animate) {\n\t\t\tthis.$wrapper.addClass(\"fade\");\n\t\t} else {\n\t\t\tthis.$wrapper.removeClass(\"fade\");\n\t\t}\n\t\tthis.$wrapper.modal(\"show\");\n\n\t\tthis.$wrapper.removeClass(\"modal-minimize\");\n\n\t\tif (this.minimizable && this.is_minimized) {\n\t\t\t$(\".modal-backdrop\").toggle();\n\t\t\tthis.is_minimized = false;\n\t\t}\n\n\t\t// clear any message\n\t\tthis.clear_message();\n\n\t\tthis.primary_action_fulfilled = false;\n\t\tthis.is_visible = true;\n\t\treturn this;\n\t}\n\n\thide() {\n\t\tthis.$wrapper.modal(\"hide\");\n\t\tthis.is_visible = false;\n\t}\n\n\tget_close_btn() {\n\t\treturn this.$wrapper.find(\".btn-modal-close\");\n\t}\n\n\tget_secondary_btn() {\n\t\treturn this.standard_actions.find(\".btn-modal-secondary\");\n\t}\n\n\tno_cancel() {\n\t\tthis.get_close_btn().toggle(false);\n\t}\n\n\tcancel() {\n\t\tthis.get_close_btn().trigger(\"click\");\n\t}\n\n\ttoggle_minimize() {\n\t\t$(\".modal-backdrop\").toggle();\n\t\tlet modal = this.$wrapper.closest(\".modal\").toggleClass(\"modal-minimize\");\n\t\tmodal.attr(\"tabindex\") ? modal.removeAttr(\"tabindex\") : modal.attr(\"tabindex\", -1);\n\t\tthis.is_minimized = !this.is_minimized;\n\t\tconst icon = this.is_minimized ? \"expand\" : \"collapse\";\n\t\tthis.get_minimize_btn().html(frappe.utils.icon(icon));\n\t\tthis.on_minimize_toggle && this.on_minimize_toggle(this.is_minimized);\n\t\tthis.header.find(\".modal-title\").toggleClass(\"cursor-pointer\");\n\t\tthis.hide_scrollbar(!this.is_minimized);\n\t}\n\n\thide_scrollbar(bool) {\n\t\t$(\"body\").css(\"overflow\", bool ? \"hidden\" : \"auto\");\n\t}\n\n\tadd_custom_action(label, action, css_class = null) {\n\t\tthis.footer.removeClass(\"hide\");\n\t\tlet action_button = $(`\n\t\t\t\n\t\t`);\n\t\tthis.custom_actions.append(action_button);\n\n\t\taction && action_button.click(action);\n\t}\n};\n\nfrappe.ui.hide_open_dialog = () => {\n\t// hide open dialog\n\tif (window.cur_dialog) {\n\t\tif (!cur_dialog.minimizable) {\n\t\t\tcur_dialog.hide();\n\t\t} else if (!cur_dialog.is_minimized) {\n\t\t\tcur_dialog.toggle_minimize();\n\t\t}\n\t}\n};\n"], "mappings": "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", "names": [] }\n\t\t\t\t\n\t\t\t\n\t\t\t${contents}\n\t\t