{"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 regex = new RegExp(evil_tags.map(tag => `<${tag}>.*<\\\\/${tag}>`).join('|'));\n\t\tif (!regex.test(txt)) {\n\t\t\t// no evil tags found, skip the DOM method entirely!\n\t\t\treturn txt;\n\t\t}\n\n\t\tvar div = document.createElement('div');\n\t\tdiv.innerHTML = txt;\n\t\tvar found = false;\n\t\tevil_tags.forEach(function(e) {\n\t\t\tvar elements = div.getElementsByTagName(e);\n\t\t\ti = elements.length;\n\t\t\twhile (i--) {\n\t\t\t\tfound = true;\n\t\t\t\telements[i].parentNode.removeChild(elements[i]);\n\t\t\t}\n\t\t});\n\n\t\t// remove links with rel=\"stylesheet\"\n\t\tvar elements = div.getElementsByTagName('link');\n\t\tvar i = elements.length;\n\t\twhile (i--) {\n\t\t\tif (elements[i].getAttribute(\"rel\")==\"stylesheet\"){\n\t\t\t\tfound = true;\n\t\t\t\telements[i].parentNode.removeChild(elements[i]);\n\t\t\t}\n\t\t}\n\t\tif(found) {\n\t\t\treturn div.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\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_div\");\n\n\t\t\tfreeze.html(repl(' ',\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.get_modal = function(title, content) {\n\treturn $(`'+v +'';\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\treturn frappe.form.formatters.Text(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}\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\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","// 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\tget_doctype_fields: function() {\n\t\tlet fields = [\n\t\t\t{\n\t\t\t\tparent: this.frm.doctype,\n\t\t\t\tfieldtype: 'Data',\n\t\t\t\tfieldname: '__newname',\n\t\t\t\treqd: 1,\n\t\t\t\thidden: 1,\n\t\t\t\tlabel: __('Name'),\n\t\t\t\tget_status: function(field) {\n\t\t\t\t\tif (field.frm && field.frm.is_new()\n\t\t\t\t\t\t&& field.frm.meta.autoname\n\t\t\t\t\t\t&& ['prompt', 'name'].includes(field.frm.meta.autoname.toLowerCase())) {\n\t\t\t\t\t\treturn 'Write';\n\t\t\t\t\t}\n\t\t\t\t\treturn 'None';\n\t\t\t\t}\n\t\t\t}\n\t\t];\n\t\tfields = fields.concat(frappe.meta.sort_docfields(frappe.meta.docfield_map[this.doctype]));\n\t\treturn fields;\n\t},\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'].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\n\t\tthis.fields.unshift({\n\t\t\tfieldtype: 'Section Break',\n\t\t\tfieldname: '_form_dashboard',\n\t\t\tlabel: __('Dashboard'),\n\t\t\tcssClass: 'form-dashboard',\n\t\t\tcollapsible: 1,\n\t\t\t// hidden: 1\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});\n\n\t\tfieldobj.layout = this;\n\t\treturn fieldobj;\n\t},\n\n\tmake_page: function(df) {\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\t// collapse sections\n\t\tif(this.frm) {\n\t\t\tthis.refresh_section_collapse();\n\t\t}\n\t},\n\n\trefresh_sections: function() {\n\t\tvar cnt = 0;\n\n\t\t// hide invisible sections and set alternate background color\n\t\tthis.wrapper.find(\".form-section:not(.hide-control)\").each(function() {\n\t\t\tvar $this = $(this).removeClass(\"empty-section\")\n\t\t\t\t.removeClass(\"visible-section\")\n\t\t\t\t.removeClass(\"shaded-section\");\n\t\t\tif(!$this.find(\".frappe-control:not(.hide-control)\").length\n\t\t\t\t&& !$this.hasClass('form-dashboard')) {\n\t\t\t\t// nothing visible, hide the section\n\t\t\t\t$this.addClass(\"empty-section\");\n\t\t\t} else {\n\t\t\t\t$this.addClass(\"visible-section\");\n\t\t\t\tif(cnt % 2) {\n\t\t\t\t\t$this.addClass(\"shaded-section\");\n\t\t\t\t}\n\t\t\t\tcnt++;\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.doc) return;\n\n\t\tfor(var i=0; 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\t\t}\n\n\t\tthis.refresh_section_count();\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 = eval(expression.substr(5));\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\tvar me = this;\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\tif (this.df.collapsible && this.df.fieldname !== '_form_dashboard') {\n\t\t\tthis.collapse(true);\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\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}\n\n\n\t\t// for bc\n\t\tthis.body = $('').appendTo(this.wrapper);\n\t},\n\tmake_head: function() {\n\t\tvar me = this;\n\t\tif(!this.df.collapsible) {\n\t\t\t$('')\n\t\t\t\t.appendTo(this.wrapper);\n\t\t} else {\n\t\t\tthis.head = $('').appendTo(this.wrapper);\n\n\t\t\t// show / hide based on status\n\t\t\tthis.collapse_link = this.head.on(\"click\", function() {\n\t\t\t\tme.collapse();\n\t\t\t});\n\n\t\t\tthis.indicator = this.head.find(\".collapse-indicator\");\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\tif (this.df.fieldname==='_form_dashboard') {\n\t\t\tlocalStorage.setItem('collapseFormDashboard', hide ? 'yes' : 'no');\n\t\t}\n\n\t\tthis.body.toggleClass(\"hide\", hide);\n\t\tthis.head.toggleClass(\"collapsed\", hide);\n\t\tthis.indicator.toggleClass(\"octicon-chevron-down\", hide);\n\t\tthis.indicator.toggleClass(\"octicon-chevron-up\", !hide);\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\tis_collapsed() {\n\t\treturn this.body.hasClass('hide');\n\t},\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\t+ __(this.df.label) + '
\\\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('change', () => {\n\t\t\t\tthis.dirty = true;\n\n\t\t\t\tfrappe.run_serially([\n\t\t\t\t\t() => frappe.timeout(0.1),\n\t\t\t\t\t() => me.refresh_dependency()\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(f.df.reqd && is_null(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'',\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\tset_input: function(key, val) {\n\t\treturn this.set_value(key, val);\n\t},\n\tset_values: function(dict) {\n\t\tfor(var key in dict) {\n\t\t\tif(this.fields_dict[key]) {\n\t\t\t\tthis.set_value(key, dict[key]);\n\t\t\t}\n\t\t}\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\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('
- ' + errors.join('
- ') + '
\\\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$('\\\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').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() => frappe.model.set_value(d.doctype, d.name, me.fieldname, value),\n\t\t\t\t\t\t() => frappe.timeout(0.5),\n\t\t\t\t\t\t() => frappe.model.set_value(d.doctype, d.name, me.qty_fieldname, data.qty),\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\"));\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","// Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors\n// MIT License. See license.txt\n\nfrappe.ui.form.MultiSelectDialog = Class.extend({\n\tinit: function(opts) {\n\t\t/* Options: doctype, target, setters, get_query, action */\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\tlet me = this;\n\n\t\tthis.page_length = 20;\n\t\tthis.start = 0;\n\n\t\tlet fields = [\n\t\t\t{\n\t\t\t\tfieldtype: \"Data\",\n\t\t\t\tlabel: __(\"Search Term\"),\n\t\t\t\tfieldname: \"search_term\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tfieldtype: \"Column Break\"\n\t\t\t}\n\t\t];\n\t\tlet count = 0;\n\t\tif(!this.date_field) {\n\t\t\tthis.date_field = \"transaction_date\";\n\t\t}\n\n\t\t// setters can be defined as a dict or a list of fields\n\t\t// setters define the additional filters that get applied\n\t\t// for selection\n\n\t\t// CASE 1: DocType name and fieldname is the same, example \"customer\" and \"customer\"\n\t\t// setters define the filters applied in the modal\n\t\t// if the fieldnames and doctypes are consistently named,\n\t\t// pass a dict with the setter key and value, for example\n\t\t// {customer: [customer_name]}\n\n\t\t// CASE 2: if the fieldname of the target is different,\n\t\t// then pass a list of fields with appropriate fieldname\n\n\t\tif($.isArray(this.setters)) {\n\t\t\tfor (let df of this.setters) {\n\t\t\t\tfields.push(df, {fieldtype: \"Column Break\"});\n\t\t\t}\n\t\t} else {\n\t\t\tObject.keys(this.setters).forEach(function(setter) {\n\t\t\t\tfields.push({\n\t\t\t\t\tfieldtype: me.target.fields_dict[setter].df.fieldtype,\n\t\t\t\t\tlabel: me.target.fields_dict[setter].df.label,\n\t\t\t\t\tfieldname: setter,\n\t\t\t\t\toptions: me.target.fields_dict[setter].df.options,\n\t\t\t\t\tdefault: me.setters[setter]\n\t\t\t\t});\n\t\t\t\tif (count++ < Object.keys(me.setters).length) {\n\t\t\t\t\tfields.push({fieldtype: \"Column Break\"});\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tfields = fields.concat([\n\t\t\t{\n\t\t\t\t\"fieldname\":\"date_range\",\n\t\t\t\t\"label\": __(\"Date Range\"),\n\t\t\t\t\"fieldtype\": \"DateRange\",\n\t\t\t},\n\t\t\t{ fieldtype: \"Section Break\" },\n\t\t\t{ fieldtype: \"HTML\", fieldname: \"results_area\" },\n\t\t\t{ fieldtype: \"Button\", fieldname: \"more_btn\", label: __(\"More\"),\n\t\t\t\tclick: function(){\n\t\t\t\t\tme.start += 20;\n\t\t\t\t\tfrappe.flags.auto_scroll = true;\n\t\t\t\t\tme.get_results();\n\t\t\t\t}\n\t\t\t}\n\t\t]);\n\n\t\tlet doctype_plural = !this.doctype.endsWith('y') ? this.doctype + 's'\n\t\t\t: this.doctype.slice(0, -1) + 'ies';\n\t\tthis.dialog = new frappe.ui.Dialog({\n\t\t\ttitle: __(\"Select {0}\", [(this.doctype=='[Select]') ? __(\"value\") : __(doctype_plural)]),\n\t\t\tfields: fields,\n\t\t\tprimary_action_label: __(\"Get Items\"),\n\t\t\tsecondary_action_label: __(\"Make {0}\", [me.doctype]),\n\t\t\tprimary_action: function() {\n\t\t\t\tme.action(me.get_checked_values(), me.args);\n\t\t\t},\n\t\t\tsecondary_action: function(e) {\n\t\t\t\t// If user wants to close the modal\n\t\t\t\tif (e) {\n\t\t\t\t\tfrappe.route_options = {};\n\t\t\t\t\tif($.isArray(me.setters)) {\n\t\t\t\t\t\tfor (let df of me.setters) {\n\t\t\t\t\t\t\tfrappe.route_options[df.fieldname] = me.dialog.fields_dict[df.fieldname].get_value() || undefined;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tObject.keys(me.setters).forEach(function(setter) {\n\t\t\t\t\t\t\tfrappe.route_options[setter] = me.dialog.fields_dict[setter].get_value() || undefined;\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tfrappe.new_doc(me.doctype, true);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\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\n\t\tthis.args = {};\n\n\t\tthis.bind_events();\n\t\tthis.get_results();\n\t\tthis.dialog.show();\n\t},\n\n\tbind_events: function() {\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\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', (e) => {\n\t\t\tfrappe.flags.auto_scroll = false;\n\t\t\tthis.get_results();\n\t\t});\n\n\t\tthis.$parent.find('[data-fieldname=\"date_range\"]').on('blur', (e) => {\n\t\t\tfrappe.flags.auto_scroll = false;\n\t\t\tthis.get_results();\n\t\t});\n\n\t\tthis.$parent.find('[data-fieldname=\"search_term\"]').on('input', (e) => {\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_checked_values: function() {\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\tmake_list_row: function(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\t\tcolumns.push(\"Date\");\n\n\t\tcolumns.forEach(function(column) {\n\t\t\tcontents += `
' + __(\"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+ '\n\t\t\t\t${\n\t\t\t\t\thead ? `${__(frappe.model.unscrub(column))}`\n\n\t\t\t\t\t: (column !== \"name\" ? `${__(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\n\t\thead ? $row.addClass('list-item--head')\n\t\t\t: $row = $(``).append($row);\n\t\treturn $row;\n\t},\n\n\trender_result_list: function(results, more = 0) {\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) {\n\t\t\tthis.empty_list();\n\t\t}\n\t\tmore_btn.hide();\n\n\t\tif (results.length === 0) return;\n\t\tif (more) more_btn.show();\n\n\t\tresults.forEach((result) => {\n\t\t\tme.$results.append(me.make_list_row(result));\n\t\t});\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: function() {\n\t\tthis.$results.find('.list-item-container').remove();\n\t},\n\n\tget_results: function() {\n\t\tlet me = this;\n\n\t\tlet filters = this.get_query ? this.get_query().filters : {};\n\t\tlet filter_fields = [me.date_field];\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\tfilters[setter] = me.dialog.fields_dict[setter].get_value() || undefined;\n\t\t\t\tme.args[setter] = filters[setter];\n\t\t\t\tfilter_fields.push(setter);\n\t\t\t});\n\t\t}\n\n\t\tlet date_val = this.dialog.fields_dict[\"date_range\"].get_value();\n\t\tif(date_val) {\n\t\t\tfilters[this.date_field] = ['between', date_val];\n\t\t}\n\n\t\tlet args = {\n\t\t\tdoctype: me.doctype,\n\t\t\ttxt: me.dialog.fields_dict[\"search_term\"].get_value(),\n\t\t\tfilters: filters,\n\t\t\tfilter_fields: filter_fields,\n\t\t\tstart: this.start,\n\t\t\tpage_length: this.page_length + 1,\n\t\t\tquery: this.get_query ? this.get_query().query : '',\n\t\t\tas_dict: 1\n\t\t}\n\t\tfrappe.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\tcallback: function(r) {\n\t\t\t\tlet results = [], more = 0;\n\t\t\t\tif (r.values.length) {\n\t\t\t\t\tif (r.values.length > me.page_length) {\n\t\t\t\t\t\tr.values.pop();\n\t\t\t\t\t\tmore = 1;\n\t\t\t\t\t}\n\t\t\t\t\tr.values.forEach(function(result) {\n\t\t\t\t\t\tif(me.date_field in result) {\n\t\t\t\t\t\t\tresult[\"Date\"] = result[me.date_field]\n\t\t\t\t\t\t}\n\t\t\t\t\t\tresult.checked = 0;\n\t\t\t\t\t\tresult.parsed_date = Date.parse(result[\"Date\"]);\n\t\t\t\t\t\tresults.push(result);\n\t\t\t\t\t});\n\t\t\t\t\tresults.map( (result) => {\n\t\t\t\t\t\tresult[\"Date\"] = frappe.format(result[\"Date\"], {\"fieldtype\":\"Date\"});\n\t\t\t\t\t})\n\n\t\t\t\t\tresults.sort((a, b) => {\n\t\t\t\t\t\treturn a.parsed_date - b.parsed_date;\n\t\t\t\t\t});\n\n\t\t\t\t\t// Preselect oldest entry\n\t\t\t\t\tif (me.start < 1 && r.values.length === 1) {\n\t\t\t\t\t\tresults[0].checked = 1;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tme.render_result_list(results, more);\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\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.buttons = this.header.find('.buttons');\n\t\tthis.set_indicator();\n\n\t\t// make fields (if any)\n\t\tsuper.make();\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(this.primary_action_label || this.action.primary.label || __(\"Submit\"),\n\t\t\t\tthis.primary_action || this.action.primary.onsubmit);\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.get_close_btn().html(this.secondary_action_label || this.action.secondary.label);\n\t\t}\n\n\t\tif (this.minimizable) {\n\t\t\tthis.header.find('.modal-title').click(() => 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.secondary_action && me.secondary_action();\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.on_page_show && me.on_page_show();\n\t\t\t\t$(document).trigger('frappe.ui.Dialog:shown');\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.$wrapper.find(\".modal-header .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.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.get_close_btn().on('click', click);\n\t}\n\n\tdisable_primary_action() {\n\t\tthis.get_primary_btn().addClass('disabled');\n\t}\n\tenable_primary_action() {\n\t\tthis.get_primary_btn().removeClass('disabled');\n\t}\n\tmake_head() {\n\t\tthis.set_title(this.title);\n\t}\n\tset_title(t) {\n\t\tthis.$wrapper.find(\".modal-title\").html(t);\n\t}\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\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\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\thide() {\n\t\tthis.$wrapper.modal(\"hide\");\n\t\tthis.is_visible = false;\n\t}\n\tget_close_btn() {\n\t\treturn this.$wrapper.find(\".btn-modal-close\");\n\t}\n\tno_cancel() {\n\t\tthis.get_close_btn().toggle(false);\n\t}\n\tcancel() {\n\t\tthis.get_close_btn().trigger(\"click\");\n\t}\n\ttoggle_minimize() {\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.get_minimize_btn().find('i').toggleClass('octicon-chevron-down').toggleClass('octicon-chevron-up');\n\t\tthis.is_minimized = !this.is_minimized;\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}\n};\n"],"names":["frappe","provide","dom","id_count","freeze_count","by_id","id","document","getElementById","get_unique_id","const","set_unique_id","ele","$ele","$","attr","eval","txt","el","createElement","appendChild","createTextNode","getElementsByTagName","remove_script_and_style","evil_tags","RegExp","map","tag","join","test","div","innerHTML","found","forEach","e","elements","i","length","parentNode","removeChild","getAttribute","is_element_in_viewport","tolerance","jQuery","rect","getBoundingClientRect","top","left","bottom","window","height","right","width","set_style","se","type","element","styleSheet","cssText","add","parent","newtag","className","cs","onclick","substr","c","toLowerCase","src","css","s","extend","style","activate","$parent","$child","common_class","active_class","find","removeClass","addClass","freeze","msg","css_class","on","cur_frm","cur_grid","toggle_view","appendTo","html","repl","setTimeout","unfreeze","remove","save_selection","getSelection","sel","getRangeAt","rangeCount","ranges","len","push","selection","createRange","restore_selection","savedSel","removeAllRanges","addRange","select","is_touchscreen","handle_broken_images","container","currentTarget","scroll_to_bottom","$container","scrollTop","scrollHeight","file_to_base64","file_obj","Promise","resolve","reader","FileReader","onload","result","readAsDataURL","scroll_to_section","section_name","section","hasClass","click","ui","scroll","pixel_to_inches","pixels","body","inches","offsetWidth","ellipsis","text","max","cstr","run_serially","tasks","task","then","load_image","onerror","preprocess","tester","Image","this","timeout","seconds","scrub","spacer","replace","get_modal","title","content","__","is_online","boot","developer_mode","navigator","onLine","show_alert","indicator","message","form","link_formatters","formatters","_right","value","options","inline","only_value","Data","Select","Float","docfield","doc","precision","cint","sysdefaults","float_precision","trim","Currency","always_show_decimals","is_null","temp","split","undefined","format_number","Int","Percent","flt","Rating","Array","from","_","currency","meta","get_field_currency","currency_precision","parts","decimals","fraction","model","get_value","format_currency","Check","Link","doctype","_options","original_value","match","for_print","substring","link_onclick","encodeURIComponent","label","Date","datetime","str_to_user","DateRange","isArray","Datetime","m","moment","convert_to_user_tz","time_zone","tz","format","date_format","toUpperCase","Text","tags","utils","replace_newlines","LikedBy","each","JSON","parse","v","avatar","Tag","Comment","Assign","SmallText","TextEditor","Code","WorkflowState","workflow_state","get_doc","icon","Email","FileSize","TableMultiSelect","rows","df","link_field","get_meta","fields","fieldtype","row","fieldname","get_formatter","formatted","formatter","get_format_helper","helper","get_formatted","get_docfield","console","log","global","fnTest","Class","props","_super","prototype","proto","Object","create","name","fn","tmp","ret","apply","arguments","newClass","init","hasOwnProperty","constructor","Layout","opts","views","pages","sections","fields_list","fields_dict","make","wrapper","get_doctype_fields","setup_tabbing","render","show_empty_form_message","show_message","let","frm","reqd","hidden","get_status","field","is_new","autoname","includes","concat","sort_docfields","docfield_map","color","message_color","empty","new_fields","me","column","with_dashboard","setup_dashboard_section","no_opening_section","make_section","make_page","make_column","make_field","unshift","cssClass","collapsible","replace_field","fieldobj","init_field","$wrapper","splice","perm","refresh_fields","colspan","make_control","get","render_input","layout","head","page","fold_btn","next","scroll_to","folded","unfold","trigger","Section","Column","refresh","attach_doc_and_docfields","refresh_dependency","refresh_sections","refresh_section_collapse","cnt","$this","fieldnames","set_input","add_fields","collapse","collapsible_depends_on","evaluate_depends_on_value","has_missing_mandatory","localStorage","getItem","l","docname","refresh_section_count","ev","which","current","target","handle_tab","shiftKey","shift","grid_row","prev","focused","get_open_grid_row","set_focus","primary_button","focus","focus_on_next_field","is_visible","idx","grid","grid_rows","start_idx","add_new_row","show_form","in_list","no_value_type","disp_status","is","editor","$input","data","has_dep","fkey","f","dependencies_clear","depends_on","guardian_has_value","hidden_due_to_dependency","expression","out","get_values","istable","throw","script_manager","make_head","description","collapse_link","hide","get_perm","permlevel","toggleClass","setItem","is_collapsed","missing_mandatory","j","section_df","resize_all_columns","FieldGroup","dirty","values","set_values","def_value","get_today","no_submit_on_enter","catch_enter_as_submit","first_button","focus_on_first_input","no_focus","keypress","has_primary_action","preventDefault","get_primary_btn","get_input","input","get_field","ignore_errors","errors","key","msgprint","set_value","val","dict","clear","set_df_property","prop","LinkSelector","with_doctype","r","start","dialog","Dialog","search","primary_action_label","primary_action","show","args","searchfield","set_custom_query","is_grid","fieldinfo","get_query","link_search","results","set_in_grid","parse_validate_and_set_in_model","can_create","new_doc","more","updated","d","qty_fieldname","prompt","default","qty","dynamic_link_field","dynamic_link_reference","callback","btn","call","method","MultiSelectDialog","page_length","count","date_field","setters","keys","setter","flags","auto_scroll","get_results","doctype_plural","endsWith","slice","secondary_action_label","action","get_checked_values","secondary_action","route_options","results_area","append","$results","make_list_row","bind_events","clearTimeout","empty_list","contents","columns","unscrub","$row","checked","render_result_list","more_btn","animate","filters","filter_fields","date_val","query","as_dict","no_spinner","pop","parsed_date","sort","a","b","cur_dialog","open_dialogs","[object Object]","super","display","is_dialog","size","static","modal","backdrop","keyboard","get_close_btn","modal_body","$body","$message","header","buttons","set_indicator","primary","secondary","onsubmit","set_primary_action","set_secondary_action","minimizable","toggle_minimize","get_minimize_btn","onhide","on_hide","on_page_show","blur","clear_message","primary_action_fulfilled","set_title","t","toggle","closest","removeAttr","is_minimized","on_minimize_toggle"],"mappings":"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"}\n\t\t\t\t\n\t\t\t\n\t\t\t${contents}\n\t\t