{"version":3,"file":"dialog.min.js","sources":["../../../apps/frappe/frappe/public/js/frappe/dom.js","../../../apps/frappe/frappe/public/js/frappe/form/formatters.js","../../../apps/frappe/frappe/public/js/frappe/class.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\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\t&& rect.left + tolerance >= 0\n\t\t\t&& rect.bottom - tolerance <= $(window).height()\n\t\t\t&& rect.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)\n\t\t\tparent.appendChild(c);\n\n\t\t// if image, 3rd parameter is source\n\t\tif(className) {\n\t\t\tif(newtag.toLowerCase()=='img')\n\t\t\t\tc.src = className\n\t\t\telse\n\t\t\t\tc.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}`)\n\t\t\t.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(repl('

%(msg)s

',\n\t\t\t\t{msg: msg || \"\"}));\n\n\t\t\tsetTimeout(function() { freeze.addClass(\"in\") }, 1);\n\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).find('img').on('error', (e) => {\n\t\t\tconst $img = $(e.currentTarget);\n\t\t\t$img.addClass('no-image');\n\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\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
\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

${title}

\n\t\t\t\t\t
\n\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
\n\t\t\t\t
\n\t\t\t\t
${content}
\n\t\t\t\t\n\t\t\t
\n\t\t
\n\t
`);\n};\n\nfrappe.is_online = function() {\n\tif (frappe.boot.developer_mode == 1) {\n\t\t// always online in developer_mode\n\t\treturn true;\n\t}\n\tif ('onLine' in navigator) {\n\t\treturn navigator.onLine;\n\t}\n\treturn true;\n};\n\n// bind online/offline events\n$(window).on('online', function() {\n\tfrappe.show_alert({\n\t\tindicator: 'green',\n\t\tmessage: __('You are connected to internet.')\n\t});\n});\n\n$(window).on('offline', function() {\n\tfrappe.show_alert({\n\t\tindicator: 'orange',\n\t\tmessage: __('Connection lost. Some features might not work.')\n\t});\n});\n","// Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors\n// MIT License. See license.txt\n\n// for license information please see license.txt\n\nfrappe.provide(\"frappe.form.formatters\");\n\nfrappe.form.link_formatters = {};\n\nfrappe.form.formatters = {\n\t_right: function(value, options) {\n\t\tif(options && (options.inline || options.only_value)) {\n\t\t\treturn value;\n\t\t} else {\n\t\t\treturn \"
\" + value + \"
\";\n\t\t}\n\t},\n\tData: function(value, df) {\n\t\tif (df && df.options == \"URL\") {\n\t\t\treturn `${value}`;\n\t\t}\n\t\treturn value==null ? \"\" : value;\n\t},\n\tSelect: function(value) {\n\t\treturn __(frappe.form.formatters[\"Data\"](value));\n\t},\n\tFloat: function(value, docfield, options, doc) {\n\t\t// don't allow 0 precision for Floats, hence or'ing with null\n\t\tvar precision = docfield.precision\n\t\t\t|| cint(frappe.boot.sysdefaults && frappe.boot.sysdefaults.float_precision)\n\t\t\t|| null;\n\t\tif (docfield.options && docfield.options.trim()) {\n\t\t\t// options points to a currency field, but expects precision of float!\n\t\t\tdocfield.precision = precision;\n\t\t\treturn frappe.form.formatters.Currency(value, docfield, options, doc);\n\n\t\t} else {\n\t\t\t// show 1.000000 as 1\n\t\t\tif (!(options || {}).always_show_decimals && !is_null(value)) {\n\t\t\t\tvar temp = cstr(value).split(\".\");\n\t\t\t\tif (temp[1]==undefined || cint(temp[1])===0) {\n\t\t\t\t\tprecision = 0;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvalue = (value == null || value === \"\") ? \"\" : value;\n\n\t\t\treturn frappe.form.formatters._right(format_number(value, null, precision), options);\n\t\t}\n\t},\n\tInt: function(value, docfield, options) {\n\t\treturn frappe.form.formatters._right(value==null ? \"\" : cint(value), options)\n\t},\n\tPercent: function(value, docfield, options) {\n\t\tconst precision = (\n\t\t\tdocfield.precision\n\t\t\t|| cint(\n\t\t\t\tfrappe.boot.sysdefaults\n\t\t\t\t&& frappe.boot.sysdefaults.float_precision\n\t\t\t)\n\t\t\t|| 2\n\t\t);\n\t\treturn frappe.form.formatters._right(flt(value, precision) + \"%\", options);\n\t},\n\tRating: function(value) {\n\t\tconst rating_html =\t`${[1, 2, 3, 4, 5].map(i =>\n\t\t\t`\n\t\t\t\t\n\t\t\t`\n\t\t).join('')}`;\n\t\treturn `
\n\t\t\t${rating_html}\n\t\t
`;\n\t},\n\tCurrency: function (value, docfield, options, doc) {\n\t\tvar currency = frappe.meta.get_field_currency(docfield, doc);\n\n\t\tlet precision;\n\t\tif (typeof docfield.precision == \"number\") {\n\t\t\tprecision = docfield.precision;\n\t\t} else {\n\t\t\tprecision = cint(\n\t\t\t\tdocfield.precision || frappe.boot.sysdefaults.currency_precision || 2\n\t\t\t);\n\t\t}\n\n\t\t// If you change anything below, it's going to hurt a company in UAE, a bit.\n\t\tif (precision > 2) {\n\t\t\tvar parts\t = cstr(value).split(\".\"); // should be minimum 2, comes from the DB\n\t\t\tvar decimals = parts.length > 1 ? parts[1] : \"\"; // parts.length == 2 ???\n\n\t\t\tif ( decimals.length < 3 || decimals.length < precision ) {\n\t\t\t\tconst fraction = frappe.model.get_value(\":Currency\", currency, \"fraction_units\") || 100; // if not set, minimum 2.\n\n\t\t\t\tif (decimals.length < cstr(fraction).length) {\n\t\t\t\t\tprecision = cstr(fraction).length - 1;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tvalue = (value == null || value === \"\") ? \"\" : value;\n\t\tvalue = format_currency(value, currency, precision);\n\n\t\tif ( options && options.only_value ) {\n\t\t\treturn value;\n\t\t} else {\n\t\t\treturn frappe.form.formatters._right(value, options);\n\t\t}\n\t},\n\tCheck: function(value) {\n\t\treturn ``;\n\t},\n\tLink: function(value, docfield, options, doc) {\n\t\tvar doctype = docfield._options || docfield.options;\n\t\tvar original_value = value;\n\t\tif(value && value.match && value.match(/^['\"].*['\"]$/)) {\n\t\t\tvalue.replace(/^.(.*).$/, \"$1\");\n\t\t}\n\n\t\tif(options && (options.for_print || options.only_value)) {\n\t\t\treturn value;\n\t\t}\n\n\t\tif(frappe.form.link_formatters[doctype]) {\n\t\t\t// don't apply formatters in case of composite (parent field of same type)\n\t\t\tif (doc && doctype !== doc.doctype) {\n\t\t\t\tvalue = frappe.form.link_formatters[doctype](value, doc, docfield);\n\t\t\t}\n\t\t}\n\n\t\tif(!value) {\n\t\t\treturn \"\";\n\t\t}\n\t\tif(value[0] == \"'\" && value[value.length -1] == \"'\") {\n\t\t\treturn value.substring(1, value.length - 1);\n\t\t}\n\t\tif (docfield && docfield.link_onclick) {\n\t\t\treturn repl('%(value)s', {\n\t\t\t\tonclick: docfield.link_onclick.replace(/\"/g, \""\") + \"; return false;\",\n\t\t\t\tvalue: value,\n\t\t\t});\n\t\t} else if (docfield && doctype) {\n\t\t\tif (frappe.model.can_read(doctype)) {\n\t\t\t\tconst a = document.createElement(\"a\");\n\t\t\t\ta.href = `/app/${encodeURIComponent(\n\t\t\t\t\tfrappe.router.slug(doctype)\n\t\t\t\t)}/${encodeURIComponent(original_value)}`;\n\t\t\t\ta.dataset.doctype = doctype;\n\t\t\t\ta.dataset.name = original_value;\n\t\t\t\ta.dataset.value = original_value;\n\t\t\t\ta.innerText = __((options && options.label) || value);\n\t\t\t\treturn a.outerHTML;\n\t\t\t} else {\n\t\t\t\treturn value;\n\t\t\t}\n\t\t} else {\n\t\t\treturn value;\n\t\t}\n\t},\n\tDate: function(value) {\n\t\tif (!frappe.datetime.str_to_user) {\n\t\t\treturn value;\n\t\t}\n\t\tif (value) {\n\t\t\tvalue = frappe.datetime.str_to_user(value);\n\t\t\t// handle invalid date\n\t\t\tif (value===\"Invalid date\") {\n\t\t\t\tvalue = null;\n\t\t\t}\n\t\t}\n\n\t\treturn value || \"\";\n\t},\n\tDateRange: function(value) {\n\t\tif (Array.isArray(value)) {\n\t\t\treturn __(\"{0} to {1}\", [frappe.datetime.str_to_user(value[0]), frappe.datetime.str_to_user(value[1])]);\n\t\t} else {\n\t\t\treturn value || \"\";\n\t\t}\n\t},\n\tDatetime: function(value) {\n\t\tif(value) {\n\t\t\tvar m = moment(frappe.datetime.convert_to_user_tz(value));\n\t\t\tif(frappe.boot.sysdefaults.time_zone) {\n\t\t\t\tm = m.tz(frappe.boot.sysdefaults.time_zone);\n\t\t\t}\n\t\t\treturn m.format(frappe.boot.sysdefaults.date_format.toUpperCase()\n\t\t\t\t+ ' ' + (frappe.boot.sysdefaults.time_format || 'HH:mm:ss'));\n\t\t} else {\n\t\t\treturn \"\";\n\t\t}\n\t},\n\tText: function(value) {\n\t\tif(value) {\n\t\t\tvar tags = [\"\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) html+= ''+v+'';\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 (!$(formatted_value).find('.ql-editor').length) {\n\t\t\t\tformatted_value = `
${formatted_value}
`;\n\t\t\t}\n\t\t} catch(e) {\n\t\t\tformatted_value = `
${formatted_value}
`;\n\t\t}\n\n\t\treturn formatted_value;\n\t},\n\tCode: function(value) {\n\t\treturn \"
\" + (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 %(value)s\", {\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} 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${value}\n\t\t
` : '';\n\t},\n\tIcon: (value) => {\n\t\treturn value ? `
\n\t\t\t
${frappe.utils.icon(value, \"md\")}
\n\t\t\t${value}\n\t\t
` : '';\n\t}\n};\n\nfrappe.form.get_formatter = function(fieldtype) {\n\tif(!fieldtype)\n\t\tfieldtype = \"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.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\")\n\t\tformatted = 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) { console.log(\"fieldname not found: \" + fieldname); }\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","// Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors\n// MIT License. See license.txt\n\n/*\n\nInheritence \"Class\"\n-------------------\nsee: http://ejohn.org/blog/simple-javascript-inheritance/\nTo subclass, use:\n\n\tvar MyClass = Class.extend({\n\t\tinit: function\n\t})\n\n*/\n// https://stackoverflow.com/a/15052240/5353542\n\n/* Simple JavaScript Inheritance for ES 5.1\n * based on http://ejohn.org/blog/simple-javascript-inheritance/\n * (inspired by base2 and Prototype)\n * MIT Licensed.\n */\n(function(global) {\n\t\"use strict\";\n\tvar fnTest = /xyz/.test(function(){xyz;}) ? /\\b_super\\b/ : /.*/;\n\n\t// The base Class implementation (does nothing)\n\tfunction Class(){}\n\n\t// Create a new Class that inherits from this class\n\tClass.extend = function(props) {\n\t var _super = this.prototype;\n\n\t // Set up the prototype to inherit from the base class\n\t // (but without running the init constructor)\n\t var proto = Object.create(_super);\n\n\t // Copy the properties over onto the new prototype\n\t for (var name in props) {\n\t\t// Check if we're overwriting an existing function\n\t\tproto[name] = typeof props[name] === \"function\" &&\n\t\t typeof _super[name] == \"function\" && fnTest.test(props[name])\n\t\t ? (function(name, fn){\n\t\t\t return function() {\n\t\t\t\tvar tmp = this._super;\n\n\t\t\t\t// Add a new ._super() method that is the same method\n\t\t\t\t// but on the super-class\n\t\t\t\tthis._super = _super[name];\n\n\t\t\t\t// The method only need to be bound temporarily, so we\n\t\t\t\t// remove it when we're done executing\n\t\t\t\tvar ret = fn.apply(this, arguments);\n\t\t\t\tthis._super = tmp;\n\n\t\t\t\treturn ret;\n\t\t\t };\n\t\t\t})(name, props[name])\n\t\t : props[name];\n\t }\n\n\t // The new constructor\n\t var newClass = typeof proto.init === \"function\"\n\t\t? proto.hasOwnProperty(\"init\")\n\t\t ? proto.init // All construction is actually done in the init method\n\t\t : function SubClass(){ _super.init.apply(this, arguments); }\n\t\t: function EmptyClass(){};\n\n\t // Populate our constructed prototype object\n\t newClass.prototype = proto;\n\n\t // Enforce the constructor to be what we expect\n\t proto.constructor = newClass;\n\n\t // And make this class extendable\n\t newClass.extend = Class.extend;\n\n\t return newClass;\n\t};\n\n\t// export\n\tglobal.Class = Class;\n })(this);","import '../class';\n\nfrappe.ui.form.Layout = Class.extend({\n\tinit: function (opts) {\n\t\tthis.views = {};\n\t\tthis.pages = [];\n\t\tthis.sections = [];\n\t\tthis.fields_list = [];\n\t\tthis.fields_dict = {};\n\n\t\t$.extend(this, opts);\n\t},\n\tmake: function() {\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\tif (!this.fields) {\n\t\t\tthis.fields = this.get_doctype_fields();\n\t\t}\n\t\tthis.setup_tabbing();\n\t\tthis.render();\n\t},\n\tshow_empty_form_message: function() {\n\t\tif (!(this.wrapper.find(\".frappe-control:visible\").length || this.wrapper.find(\".section-head.collapsed\").length)) {\n\t\t\tthis.show_message(__(\"This form does not have any input\"));\n\t\t}\n\t},\n\n\tget_doctype_fields: function() {\n\t\tlet fields = [\n\t\t\tthis.get_new_name_field()\n\t\t];\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(frappe.meta.sort_docfields(frappe.meta.docfield_map[this.doctype]));\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 (field.frm && field.frm.is_new()\n\t\t\t\t\t&& field.frm.meta.autoname\n\t\t\t\t\t&& ['prompt', 'name'].includes(field.frm.meta.autoname.toLowerCase())) {\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: function(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 = (color && ['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 = '
' + 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\trender: function (new_fields) {\n\t\tvar me = this;\n\t\tvar fields = new_fields || this.fields;\n\n\t\tthis.section = null;\n\t\tthis.column = null;\n\n\t\tif (this.with_dashboard) {\n\t\t\tthis.setup_dashboard_section();\n\t\t}\n\n\t\tif (this.no_opening_section()) {\n\t\t\tthis.make_section();\n\t\t}\n\t\t$.each(fields, function (i, df) {\n\t\t\tswitch (df.fieldtype) {\n\t\t\t\tcase \"Fold\":\n\t\t\t\t\tme.make_page(df);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"Section Break\":\n\t\t\t\t\tme.make_section(df);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"Column Break\":\n\t\t\t\t\tme.make_column(df);\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tme.make_field(df);\n\t\t\t}\n\t\t});\n\n\t},\n\n\tno_opening_section: function () {\n\t\treturn (this.fields[0] && this.fields[0].fieldtype != \"Section Break\") || !this.fields.length;\n\t},\n\n\tsetup_dashboard_section: function () {\n\t\tif (this.no_opening_section()) {\n\t\t\tthis.fields.unshift({fieldtype: 'Section Break'});\n\t\t}\n\t},\n\n\treplace_field: function (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 fieldobj = this.init_field(df, render);\n\t\t\tthis.fields_dict[fieldname].$wrapper.remove();\n\t\t\tthis.fields_list.splice(this.fields_dict[fieldname], 1, fieldobj);\n\t\t\tthis.fields_dict[fieldname] = fieldobj;\n\t\t\tif (this.frm) {\n\t\t\t\tfieldobj.perm = this.frm.perm;\n\t\t\t}\n\t\t\tthis.section.fields_list.splice(this.section.fields_dict[fieldname], 1, fieldobj);\n\t\t\tthis.section.fields_dict[fieldname] = fieldobj;\n\t\t\tthis.refresh_fields([df]);\n\t\t}\n\t},\n\n\tmake_field: function (df, colspan, render) {\n\t\t!this.section && this.make_section();\n\t\t!this.column && this.make_column();\n\n\t\tconst fieldobj = this.init_field(df, render);\n\t\tthis.fields_list.push(fieldobj);\n\t\tthis.fields_dict[df.fieldname] = fieldobj;\n\t\tif (this.frm) {\n\t\t\tfieldobj.perm = this.frm.perm;\n\t\t}\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\t},\n\n\tinit_field: function (df, 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: this.column.wrapper.get(0),\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\tfieldobj.layout = this;\n\t\treturn fieldobj;\n\t},\n\n\tmake_page: function (df) { // eslint-disable-line no-unused-vars\n\t\tvar me = this,\n\t\t\thead = $('
\\\n\t\t\t\t' + __(\"Show more details\") + '\\\n\t\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\tvar 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: function () {\n\t\tthis.fold_btn.trigger('click');\n\t},\n\n\tmake_section: function (df) {\n\t\tthis.section = new frappe.ui.form.Section(this, df);\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: function (df) {\n\t\tthis.column = new frappe.ui.form.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\trefresh: function (doc) {\n\t\tvar me = this;\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\tme.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: function() {\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\t},\n\n\trefresh_fields: function (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: function (fields) {\n\t\tthis.render(fields);\n\t\tthis.refresh_fields(fields);\n\t},\n\n\trefresh_section_collapse: function () {\n\t\tif (!(this.sections && this.sections.length)) return;\n\n\t\tfor (var i = 0; i < this.sections.length; i++) {\n\t\t\tvar section = this.sections[i];\n\t\t\tvar df = section.df;\n\t\t\tif (df && df.collapsible) {\n\t\t\t\tvar 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: function (refresh) {\n\t\tvar me = this;\n\t\tfor (var i = 0, l = this.fields_list.length; i < l; i++) {\n\t\t\tvar 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 = frappe.meta.get_docfield(me.doc.doctype,\n\t\t\t\t\tfieldobj.df.fieldname, me.doc.name) || fieldobj.df;\n\n\t\t\t\t// on form change, permissions can change\n\t\t\t\tif (me.frm) {\n\t\t\t\t\tfieldobj.perm = me.frm.perm;\n\t\t\t\t}\n\t\t\t}\n\t\t\trefresh && fieldobj.df && fieldobj.refresh && fieldobj.refresh();\n\t\t}\n\t},\n\n\trefresh_section_count: function () {\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\tsetup_tabbing: function () {\n\t\tvar me = this;\n\t\tthis.wrapper.on(\"keydown\", function (ev) {\n\t\t\tif (ev.which == 9) {\n\t\t\t\tvar current = $(ev.target),\n\t\t\t\t\tdoctype = current.attr(\"data-doctype\"),\n\t\t\t\t\tfieldname = current.attr(\"data-fieldname\");\n\t\t\t\tif (doctype)\n\t\t\t\t\treturn me.handle_tab(doctype, fieldname, ev.shiftKey);\n\t\t\t}\n\t\t});\n\t},\n\thandle_tab: function (doctype, fieldname, shift) {\n\t\tvar me = this,\n\t\t\tgrid_row = null,\n\t\t\tprev = null,\n\t\t\tfields = me.fields_list,\n\t\t\tin_grid = false,\n\t\t\tfocused = false;\n\n\t\t// in grid\n\t\tif (doctype != me.doctype) {\n\t\t\tgrid_row = me.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 (var 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 = me.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]))\n\t\t\t\tprev = 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(grid_row.grid.df.parent, grid_row.grid.df.fieldname);\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\tfocus_on_next_field: function (start_idx, fields) {\n\t\t// loop to find next eligible fields\n\t\tfor (var i = start_idx + 1, len = fields.length; i < len; i++) {\n\t\t\tvar 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\n\t\t\t\t} else if (!in_list(frappe.model.no_value_type, field.df.fieldtype)) {\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\tis_visible: function (field) {\n\t\treturn field.disp_status === \"Write\" && (field.$wrapper && field.$wrapper.is(\":visible\"));\n\t},\n\tset_focus: function (field) {\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\tget_open_grid_row: function () {\n\t\treturn $(\".grid-row-open\").data(\"grid_row\");\n\t},\n\trefresh_dependency: function () {\n\t\t// Resolve \"depends_on\" and show / hide accordingly\n\t\tvar me = this;\n\n\t\t// build dependants' dictionary\n\t\tvar has_dep = false;\n\n\t\tfor (var fkey in this.fields_list) {\n\t\t\tvar f = this.fields_list[fkey];\n\t\t\tf.dependencies_clear = true;\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}\n\t\t}\n\n\t\tif (!has_dep) return;\n\n\t\t// show / hide based on values\n\t\tfor (var i = me.fields_list.length - 1; i >= 0; i--) {\n\t\t\tvar f = me.fields_list[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(f.df.read_only_depends_on, f.df.fieldname, 'read_only');\n\t\t\t}\n\t\t}\n\n\t\tthis.refresh_section_count();\n\t},\n\tset_dependant_property: function (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(this.doc.parentfield, property, value, this.doc.parent, fieldname, this.doc.name);\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\tevaluate_depends_on_value: function (expression) {\n\t\tvar out = null;\n\t\tvar doc = this.doc;\n\n\t\tif (!doc && this.get_values) {\n\t\t\tvar doc = this.get_values(true);\n\t\t}\n\n\t\tif (!doc) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar parent = this.frm ? this.frm.doc : this.doc || null;\n\n\t\tif (typeof (expression) === 'boolean') {\n\t\t\tout = expression;\n\n\t\t} else if (typeof (expression) === 'function') {\n\t\t\tout = expression(doc);\n\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\n\t\t} else if (expression.substr(0, 3)=='fn:' && this.frm) {\n\t\t\tout = this.frm.script_manager.trigger(expression.substr(3), this.doctype, this.docname);\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\nfrappe.ui.form.Section = Class.extend({\n\tinit: function(layout, df) {\n\t\tthis.layout = layout;\n\t\tthis.df = df || {};\n\t\tthis.fields_list = [];\n\t\tthis.fields_dict = {};\n\n\t\tthis.make();\n\t\t// if (this.frm)\n\t\t// \tthis.section.body.css({\"padding\":\"0px 3%\"})\n\t\tthis.row = {\n\t\t\twrapper: this.wrapper\n\t\t};\n\n\t\tthis.refresh();\n\t},\n\tmake: function() {\n\t\tif (!this.layout.page) {\n\t\t\tthis.layout.page = $('
').appendTo(this.layout.wrapper);\n\t\t}\n\t\tlet make_card = this.layout.card_layout;\n\t\tthis.wrapper = $(`
`)\n\t\t\t.appendTo(this.layout.page);\n\t\tthis.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\t$('
' + __(this.df.description) + '
')\n\t\t\t\t\t.appendTo(this.wrapper);\n\t\t\t}\n\t\t\tif (this.df.cssClass) {\n\t\t\t\tthis.wrapper.addClass(this.df.cssClass);\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\t// for bc\n\t\tthis.body = $('
').appendTo(this.wrapper);\n\t},\n\n\tmake_head: function () {\n\t\tthis.head = $(`
\n\t\t\t${__(this.df.label)}\n\t\t\t\n\t\t\t\n\t\t
`);\n\t\tthis.head.appendTo(this.wrapper);\n\t\tthis.indicator = this.head.find('.collapse-indicator');\n\t\tthis.indicator.hide();\n\t\tif (this.df.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\n\t\t\tthis.indicator.show();\n\t\t}\n\t},\n\trefresh: function() {\n\t\tif (!this.df)\n\t\t\treturn;\n\n\t\t// hide if explictly hidden\n\t\tvar hide = this.df.hidden || this.df.hidden_due_to_dependency;\n\n\t\t// hide if no perm\n\t\tif (!hide && this.layout && this.layout.frm && !this.layout.frm.get_perm(this.df.permlevel || 0, \"read\")) {\n\t\t\thide = true;\n\t\t}\n\n\t\tthis.wrapper.toggleClass(\"hide-control\", !!hide);\n\t},\n\tcollapse: function (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.toggleClass(\"collapsed\", hide);\n\n\t\tlet indicator_icon = hide ? 'down' : 'up-line';\n\n\t\tthis.indicator & this.indicator.html(frappe.utils.icon(indicator_icon, 'sm', 'mb-1'));\n\n\t\t// refresh signature fields\n\t\tthis.fields_list.forEach((f) => {\n\t\t\tif (f.df.fieldtype == 'Signature') {\n\t\t\t\tf.refresh();\n\t\t\t}\n\t\t});\n\t},\n\n\tis_collapsed() {\n\t\treturn this.body.hasClass('hide');\n\t},\n\n\thas_missing_mandatory: function () {\n\t\tvar missing_mandatory = false;\n\t\tfor (var j = 0, l = this.fields_list.length; j < l; j++) {\n\t\t\tvar 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\nfrappe.ui.form.Column = Class.extend({\n\tinit: function(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\tmake: function () {\n\t\tthis.wrapper = $('
\\\n\t\t\t
\\\n\t\t\t
\\\n\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$('').appendTo(this.wrapper);\n\t\t}\n\t},\n\tresize_all_columns: function () {\n\t\t// distribute all columns equally\n\t\tvar colspan = cint(12 / this.section.wrapper.find(\".form-column\").length);\n\n\t\tthis.section.wrapper.find(\".form-column\").removeClass()\n\t\t\t.addClass(\"form-column\")\n\t\t\t.addClass(\"col-sm-\" + colspan);\n\n\t},\n\trefresh: function () {\n\t\tthis.section.refresh();\n\t}\n});\n","import '../form/layout';\n\nfrappe.provide('frappe.ui');\n\nfrappe.ui.FieldGroup = frappe.ui.form.Layout.extend({\n\tinit: function(opts) {\n\t\t$.extend(this, opts);\n\t\tthis.dirty = false;\n\t\tthis._super();\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\tmake: function() {\n\t\tvar me = this;\n\t\tif(this.fields) {\n\t\t\tthis._super();\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).find('input, select').on(\n\t\t\t\t'change awesomplete-selectcomplete',\n\t\t\t\t() => {\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\t);\n\n\t\t}\n\t},\n\tfirst_button: false,\n\tfocus_on_first_input: function() {\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\tcatch_enter_as_submit: function() {\n\t\tvar me = this;\n\t\t$(this.body).find('input[type=\"text\"], input[type=\"password\"], select').keypress(function(e) {\n\t\t\tif(e.which==13) {\n\t\t\t\tif(me.has_primary_action) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tme.get_primary_btn().trigger(\"click\");\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t},\n\tget_input: function(fieldname) {\n\t\tvar field = this.fields_dict[fieldname];\n\t\treturn $(field.txt ? field.txt : field.input);\n\t},\n\tget_field: function(fieldname) {\n\t\treturn this.fields_dict[fieldname];\n\t},\n\tget_values: function(ignore_errors) {\n\t\tvar ret = {};\n\t\tvar errors = [];\n\t\tfor (var key in this.fields_dict) {\n\t\t\tvar f = this.fields_dict[key];\n\t\t\tif (f.get_value) {\n\t\t\t\tvar v = f.get_value();\n\t\t\t\tif (\n\t\t\t\t\tf.df.reqd &&\n\t\t\t\t\tis_null(typeof v === 'string' ? strip_html(v) : v)\n\t\t\t\t)\n\t\t\t\t\terrors.push(__(f.df.label));\n\n\t\t\t\tif (f.df.reqd\n\t\t\t\t\t&& f.df.fieldtype === 'Text Editor'\n\t\t\t\t\t&& 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\t\t}\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: __('Following fields have missing values:') +\n\t\t\t\t\t'

  • ' + errors.join('
  • ') + '
',\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\tget_value: function(key) {\n\t\tvar f = this.fields_dict[key];\n\t\treturn f && (f.get_value ? f.get_value() : null);\n\t},\n\tset_value: function(key, val){\n\t\treturn new Promise(resolve => {\n\t\t\tvar 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\thas_field: function(fieldname) {\n\t\treturn !!this.fields_dict[fieldname];\n\t},\n\tset_input: function(key, val) {\n\t\treturn this.set_value(key, val);\n\t},\n\tset_values: function(dict) {\n\t\tlet promises = [];\n\t\tfor(var 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\tclear: function() {\n\t\tfor(var key in this.fields_dict) {\n\t\t\tvar 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\tset_df_property: function (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.extend({\n\tinit: function (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: function () {\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\", fieldname: \"txt\", label: __(\"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\", fieldname: \"results\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tfieldtype: \"Button\", fieldname: \"more\", label: __(\"More\"), click: () => {\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)\n\t\t\tthis.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: function () {\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 (this.target.is_grid && this.target.fieldinfo[this.fieldname]\n\t\t\t&& this.target.fieldinfo[this.fieldname].get_query) {\n\t\t\t$.extend(args,\n\t\t\t\tthis.target.fieldinfo[this.fieldname].get_query(cur_frm.doc));\n\t\t}\n\n\t\tfrappe.link_search(this.doctype, args, function (r) {\n\t\t\tvar parent = me.dialog.fields_dict.results.$wrapper;\n\t\t\tif (args.start === 0) {\n\t\t\t\tparent.empty();\n\t\t\t}\n\n\t\t\tif (r.values.length) {\n\t\t\t\t$.each(r.values, function (i, v) {\n\t\t\t\t\tvar row = $(repl('
\\\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\t\tname: v[0],\n\t\t\t\t\t\t\tvalues: v.splice(1).join(\", \")\n\t\t\t\t\t\t})).appendTo(parent);\n\n\t\t\t\t\trow.find(\"a\")\n\t\t\t\t\t\t.attr('data-value', v[0])\n\t\t\t\t\t\t.click(function () {\n\t\t\t\t\t\t\tvar value = $(this).attr(\"data-value\");\n\t\t\t\t\t\t\tvar $link = this;\n\t\t\t\t\t\t\tif (me.target.is_grid) {\n\t\t\t\t\t\t\t\t// set in grid\n\t\t\t\t\t\t\t\tme.set_in_grid(value);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif (me.target.doctype)\n\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\telse {\n\t\t\t\t\t\t\t\t\tme.target.set_input(value);\n\t\t\t\t\t\t\t\t\tme.target.$input.trigger(\"change\");\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tme.dialog.hide();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\t$('


' + __(\"No Results\") + ''\n\t\t\t\t\t+ (frappe.model.can_create(me.doctype) ?\n\t\t\t\t\t\t('

'\n\t\t\t\t\t\t\t+ __('Create a new {0}', [__(me.doctype)]) + \"\") : '')\n\t\t\t\t\t+ '

').appendTo(parent).find(\".new-doc\").click(function () {\n\t\t\t\t\t\tfrappe.new_doc(me.doctype);\n\t\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (r.values.length < 20) {\n\t\t\t\tvar more_btn = me.dialog.fields_dict.more.$wrapper;\n\t\t\t\tmore_btn.hide();\n\t\t\t}\n\n\t\t}, this.dialog.get_primary_btn());\n\n\t},\n\tset_in_grid: function (value) {\n\t\tvar me = this, updated = false;\n\t\tvar d = null;\n\t\tif (this.qty_fieldname) {\n\t\t\tfrappe.prompt({\n\t\t\t\tfieldname: \"qty\", fieldtype: \"Float\", label: \"Qty\",\n\t\t\t\t\"default\": 1, reqd: 1\n\t\t\t}, function (data) {\n\t\t\t\t$.each(me.target.frm.doc[me.target.df.fieldname] || [], function (i, d) {\n\t\t\t\t\tif (d[me.fieldname] === value) {\n\t\t\t\t\t\tfrappe.model.set_value(d.doctype, d.name, me.qty_fieldname, data.qty);\n\t\t\t\t\t\tfrappe.show_alert(__(\"Added {0} ({1})\", [value, d[me.qty_fieldname]]));\n\t\t\t\t\t\tupdated = true;\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tif (!updated) {\n\t\t\t\t\tfrappe.run_serially([\n\t\t\t\t\t\t() => {\n\t\t\t\t\t\t\td = me.target.add_new_row();\n\t\t\t\t\t\t},\n\t\t\t\t\t\t() => frappe.timeout(0.1),\n\t\t\t\t\t\t() => {\n\t\t\t\t\t\t\tlet args = {};\n\t\t\t\t\t\t\targs[me.fieldname] = value;\n\t\t\t\t\t\t\targs[me.qty_fieldname] = data.qty;\n\n\t\t\t\t\t\t\treturn frappe.model.set_value(d.doctype, d.name, args);\n\t\t\t\t\t\t},\n\t\t\t\t\t\t() => frappe.show_alert(__(\"Added {0} ({1})\", [value, data.qty]))\n\t\t\t\t\t]);\n\t\t\t\t}\n\t\t\t}, __(\"Set Quantity\"), __(\"Set Quantity\"));\n\t\t} else if (me.dynamic_link_field) {\n\t\t\tvar d = me.target.add_new_row();\n\t\t\tfrappe.model.set_value(d.doctype, d.name, me.dynamic_link_field, me.dynamic_link_reference);\n\t\t\tfrappe.model.set_value(d.doctype, d.name, me.fieldname, value);\n\t\t\tfrappe.show_alert(__(\"{0} {1} added\", [me.dynamic_link_reference, value]));\n\t\t} else {\n\t\t\tvar d = me.target.add_new_row();\n\t\t\tfrappe.model.set_value(d.doctype, d.name, me.fieldname, value);\n\t\t\tfrappe.show_alert(__(\"{0} added\", [value]));\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\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 */\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\", fieldname: \"results_area\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tfieldtype: \"Button\", fieldname: \"more_btn\",\n\t\t\t\tlabel: __(\"More\"), click: 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 [\n\t\t\t\t{ fieldtype: \"Section Break\" },\n\t\t\t\t...this.data_fields\n\t\t\t];\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\", fieldname: \"more_child_btn\", hidden: 1,\n\t\t\t\tlabel: __(\"More\"), click: 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 = [...this.get_checked_values(), ...this.get_parent_name_of_selected_children()];\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] = this.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] = this.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.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\ttoggle_child_selection() {\n\t\tif (this.dialog.fields_dict['allow_child_item_selection'].get_value()) {\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 => ({ name: frappe.unscrub(d), editable: false }));\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(this.doctype, this.child_fieldname).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\t{\n\t\t\t\t\tfieldtype: 'HTML',\n\t\t\t\t\tfieldname: 'filter_area',\n\t\t\t\t}\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\tthis.get_results();\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.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\tthis.get_results();\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('timeout', setTimeout(function () {\n\t\t\t\tfrappe.flags.auto_scroll = false;\n\t\t\t\tme.empty_list();\n\t\t\t\tme.get_results();\n\t\t\t}, 300));\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((parent_names, checked, index) => {\n\t\t\tif (checked == 1) {\n\t\t\t\tconst parent_name = this.child_results[index].parent;\n\t\t\t\tif (!parent_names.includes(parent_name)) {\n\t\t\t\t\tparent_names.push(parent_name);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn parent_names;\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((checked_names, checked, index) => {\n\t\t\tif (checked == 1) {\n\t\t\t\tconst child_row_name = this.child_results[index].name;\n\t\t\t\tchecked_names.push(child_row_name);\n\t\t\t}\n\t\t\treturn checked_names;\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.find('.list-item-container').map(function () {\n\t\t\tif ($(this).find('.list-row-check:checkbox:checked').length > 0) {\n\t\t\t\treturn $(this).attr('data-item-name');\n\t\t\t}\n\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\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\tlet columns = [\"name\"];\n\n\t\tif ($.isArray(this.setters)) {\n\t\t\tfor (let df of this.setters) {\n\t\t\t\tcolumns.push(df.fieldname);\n\t\t\t}\n\t\t} else {\n\t\t\tcolumns = columns.concat(Object.keys(this.setters));\n\t\t}\n\n\t\tcolumns.forEach(function (column) {\n\t\t\tcontents += `
\n\t\t\t\t${\n\thead ? `${__(frappe.model.unscrub(column))}`\n\t\t: (column !== \"name\" ? `${__(result[column] || '')}`\n\t\t\t: `\n\t\t\t\t\t\t\t${__(result[column] || '')}`)}\n\t\t\t
`;\n\t\t});\n\n\t\tlet $row = $(`
\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t${contents}\n\t\t
`);\n\n\t\thead ? $row.addClass('list-item--head')\n\t\t\t: $row = $(`
`).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] = me.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","\nimport './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')\n\t\t\t.get(0);\n\t\tif (this.size == \"small\" )\n\t\t\t$(this.wrapper).addClass(\"modal-sm\");\n\t\telse if (this.size == \"large\" )\n\t\t\t$(this.wrapper).addClass(\"modal-lg\");\n\t\telse if (this.size == \"extra-large\" )\n\t\t\t$(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 || this.action.primary.label || __(\"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 (this.secondary_action_label || (this.action.secondary && this.action.secondary.label)) {\n\t\t\tthis.set_secondary_action_label(this.secondary_action_label || this.action.secondary.label);\n\t\t}\n\n\t\tif (this.minimizable) {\n\t\t\tthis.header.find('.title-section').click(() => this.is_minimized && this.toggle_minimize());\n\t\t\tthis.get_minimize_btn().removeClass('hide').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 = frappe.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 ($input.length && ['Date', 'Datetime', 'Time'].includes($input.attr('data-fieldtype'))) {\n\t\t\t\t\t$input.blur();\n\t\t\t\t}\n\t\t\t});\n\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\treturn this.get_primary_btn()\n\t\t\t.removeClass(\"hide\")\n\t\t\t.html(label)\n\t\t\t.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}\n\n\tset_secondary_action(click) {\n\t\tthis.footer.removeClass('hide');\n\t\tthis.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()\n\t\t\t.removeClass(\"hide\")\n\t\t\t.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.find('.indicator').removeClass().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"],"names":["const","let","element","this"],"mappings":"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"}