{"version":3,"file":"web_form.min.js","sources":["../../../apps/frappe/frappe/public/js/frappe/utils/datetime.js","../../../apps/frappe/frappe/public/js/frappe/web_form/web_form_list.js","../../../apps/frappe/frappe/public/js/frappe/event_emitter.js","../../../apps/frappe/frappe/public/js/frappe/web_form/web_form.js","../../../apps/frappe/frappe/public/js/frappe/web_form/webform_script.js"],"sourcesContent":["// Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors\n// MIT License. See license.txt\n\nfrappe.provide('frappe.datetime');\n\nfrappe.defaultDateFormat = \"YYYY-MM-DD\";\nfrappe.defaultTimeFormat = \"HH:mm:ss\";\nfrappe.defaultDatetimeFormat = frappe.defaultDateFormat + \" \" + frappe.defaultTimeFormat;\nmoment.defaultFormat = frappe.defaultDateFormat;\n\nfrappe.provide(\"frappe.datetime\");\n\n$.extend(frappe.datetime, {\n\tconvert_to_user_tz: function(date, format) {\n\t\t// format defaults to true\n\t\tif(frappe.sys_defaults.time_zone) {\n\t\t\tvar date_obj = moment.tz(date, frappe.sys_defaults.time_zone).local();\n\t\t} else {\n\t\t\tvar date_obj = moment(date);\n\t\t}\n\n\t\treturn (format===false) ? date_obj : date_obj.format(frappe.defaultDatetimeFormat);\n\t},\n\n\tconvert_to_system_tz: function(date, format) {\n\t\t// format defaults to true\n\n\t\tif(frappe.sys_defaults.time_zone) {\n\t\t\tvar date_obj = moment(date).tz(frappe.sys_defaults.time_zone);\n\t\t} else {\n\t\t\tvar date_obj = moment(date);\n\t\t}\n\n\t\treturn (format===false) ? date_obj : date_obj.format(frappe.defaultDatetimeFormat);\n\t},\n\n\tis_timezone_same: function() {\n\t\tif(frappe.sys_defaults.time_zone) {\n\t\t\treturn moment().tz(frappe.sys_defaults.time_zone).utcOffset() === moment().utcOffset();\n\t\t} else {\n\t\t\treturn true;\n\t\t}\n\t},\n\n\tstr_to_obj: function(d) {\n\t\treturn moment(d, frappe.defaultDatetimeFormat)._d;\n\t},\n\n\tobj_to_str: function(d) {\n\t\treturn moment(d).locale(\"en\").format();\n\t},\n\n\tobj_to_user: function(d) {\n\t\treturn moment(d).format(frappe.datetime.get_user_date_fmt().toUpperCase());\n\t},\n\n\tget_diff: function(d1, d2) {\n\t\treturn moment(d1).diff(d2, \"days\");\n\t},\n\n\tget_hour_diff: function(d1, d2) {\n\t\treturn moment(d1).diff(d2, \"hours\");\n\t},\n\n\tget_day_diff: function(d1, d2) {\n\t\treturn moment(d1).diff(d2, \"days\");\n\t},\n\n\tadd_days: function(d, days) {\n\t\treturn moment(d).add(days, \"days\").format();\n\t},\n\n\tadd_months: function(d, months) {\n\t\treturn moment(d).add(months, \"months\").format();\n\t},\n\n\tweek_start: function() {\n\t\treturn moment().startOf(\"week\").format();\n\t},\n\n\tweek_end: function() {\n\t\treturn moment().endOf(\"week\").format();\n\t},\n\n\tmonth_start: function() {\n\t\treturn moment().startOf(\"month\").format();\n\t},\n\n\tmonth_end: function() {\n\t\treturn moment().endOf(\"month\").format();\n\t},\n\n\tquarter_start: function() {\n\t\treturn moment().startOf(\"quarter\").format();\n\t},\n\n\tquarter_end: function() {\n\t\treturn moment().endOf(\"quarter\").format();\n\t},\n\n\tyear_start: function(){\n\t\treturn moment().startOf(\"year\").format();\n\t},\n\n\tyear_end: function(){\n\t\treturn moment().endOf(\"year\").format();\n\t},\n\n\tget_user_time_fmt: function() {\n\t\treturn frappe.sys_defaults && frappe.sys_defaults.time_format || \"HH:mm:ss\";\n\t},\n\n\tget_user_date_fmt: function() {\n\t\treturn frappe.sys_defaults && frappe.sys_defaults.date_format || \"yyyy-mm-dd\";\n\t},\n\n\tget_user_fmt: function() { // For backwards compatibility only\n\t\treturn frappe.sys_defaults && frappe.sys_defaults.date_format || \"yyyy-mm-dd\";\n\t},\n\n\tstr_to_user: function(val, only_time = false) {\n\t\tif(!val) return \"\";\n\n\t\tvar user_time_fmt = frappe.datetime.get_user_time_fmt();\n\t\tif(only_time) {\n\t\t\treturn moment(val, frappe.defaultTimeFormat)\n\t\t\t\t.format(user_time_fmt);\n\t\t}\n\n\t\tvar user_date_fmt = frappe.datetime.get_user_date_fmt().toUpperCase();\n\t\tif(typeof val !== \"string\" || val.indexOf(\" \")===-1) {\n\t\t\treturn moment(val).format(user_date_fmt);\n\t\t} else {\n\t\t\treturn moment(val, \"YYYY-MM-DD HH:mm:ss\").format(user_date_fmt + \" \" + user_time_fmt);\n\t\t}\n\t},\n\n\tget_datetime_as_string: function(d) {\n\t\treturn moment(d).format(\"YYYY-MM-DD HH:mm:ss\");\n\t},\n\n\tuser_to_str: function(val, only_time = false) {\n\n\t\tvar user_time_fmt = frappe.datetime.get_user_time_fmt();\n\t\tif(only_time) {\n\t\t\treturn moment(val, user_time_fmt)\n\t\t\t\t.format(frappe.defaultTimeFormat);\n\t\t}\n\n\t\tvar user_fmt = frappe.datetime.get_user_date_fmt().toUpperCase();\n\t\tvar system_fmt = \"YYYY-MM-DD\";\n\n\t\tif(val.indexOf(\" \")!==-1) {\n\t\t\tuser_fmt += \" \" + user_time_fmt;\n\t\t\tsystem_fmt += \" HH:mm:ss\";\n\t\t}\n\n\t\t// user_fmt.replace(\"YYYY\", \"YY\")? user might only input 2 digits of the year, which should also be parsed\n\t\treturn moment(val, [user_fmt.replace(\"YYYY\", \"YY\"),\n\t\t\tuser_fmt]).locale(\"en\").format(system_fmt);\n\t},\n\n\tuser_to_obj: function(d) {\n\t\treturn frappe.datetime.str_to_obj(frappe.datetime.user_to_str(d));\n\t},\n\n\tglobal_date_format: function(d) {\n\t\tvar m = moment(d);\n\t\tif(m._f && m._f.indexOf(\"HH\")!== -1) {\n\t\t\treturn m.format(\"Do MMMM YYYY, h:mma\")\n\t\t} else {\n\t\t\treturn m.format('Do MMMM YYYY');\n\t\t}\n\t},\n\n\tnow_date: function(as_obj = false) {\n\t\treturn frappe.datetime._date(frappe.defaultDateFormat, as_obj);\n\t},\n\n\tnow_time: function(as_obj = false) {\n\t\treturn frappe.datetime._date(frappe.defaultTimeFormat, as_obj);\n\t},\n\n\tnow_datetime: function(as_obj = false) {\n\t\treturn frappe.datetime._date(frappe.defaultDatetimeFormat, as_obj);\n\t},\n\n\t_date: function(format, as_obj = false) {\n\t\tconst time_zone = frappe.sys_defaults && frappe.sys_defaults.time_zone;\n\t\tlet date;\n\t\tif (time_zone) {\n\t\t\tdate = moment.tz(time_zone);\n\t\t} else {\n\t\t\tdate = moment();\n\t\t}\n\t\tif (as_obj) {\n\t\t\treturn frappe.datetime.moment_to_date_obj(date);\n\t\t} else {\n\t\t\treturn date.format(format);\n\t\t}\n\t},\n\n\tmoment_to_date_obj: function(moment) {\n\t\tconst date_obj = new Date();\n\t\tconst date_array = moment.toArray();\n\t\tdate_obj.setFullYear(date_array[0]);\n\t\tdate_obj.setMonth(date_array[1]);\n\t\tdate_obj.setDate(date_array[2]);\n\t\tdate_obj.setHours(date_array[3]);\n\t\tdate_obj.setMinutes(date_array[4]);\n\t\tdate_obj.setSeconds(date_array[5]);\n\t\tdate_obj.setMilliseconds(date_array[6]);\n\t\treturn date_obj;\n\t},\n\n\tnowdate: function() {\n\t\treturn frappe.datetime.now_date();\n\t},\n\n\tget_today: function() {\n\t\treturn frappe.datetime.now_date();\n\t},\n\n\tget_time: (timestamp) => {\n\t\t// return time with AM/PM\n\t\treturn moment(timestamp).format('hh:mm A');\n\t},\n\n\tvalidate: function(d) {\n\t\treturn moment(d, [\n\t\t\tfrappe.defaultDateFormat,\n\t\t\tfrappe.defaultDatetimeFormat,\n\t\t\tfrappe.defaultTimeFormat\n\t\t], true).isValid();\n\t},\n\n\tget_first_day_of_the_week_index() {\n\t\tconst first_day_of_the_week = frappe.sys_defaults.first_day_of_the_week || \"Sunday\";\n\t\treturn moment.weekdays().indexOf(first_day_of_the_week);\n\t}\n\n});\n\n// Proxy for dateutil and get_today\nObject.defineProperties(window, {\n\t'dateutil': {\n\t\tget: function() {\n\t\t\tconsole.warn('Please use `frappe.datetime` instead of `dateutil`. It will be deprecated soon.');\n\t\t\treturn frappe.datetime;\n\t\t},\n\t\tconfigurable: true\n\t},\n\t'date': {\n\t\tget: function() {\n\t\t\tconsole.warn('Please use `frappe.datetime` instead of `date`. It will be deprecated soon.');\n\t\t\treturn frappe.datetime;\n\t\t},\n\t\tconfigurable: true\n\t},\n\t'get_today': {\n\t\tget: function() {\n\t\t\tconsole.warn('Please use `frappe.datetime.get_today` instead of `get_today`. It will be deprecated soon.');\n\t\t\treturn frappe.datetime.get_today;\n\t\t},\n\t\tconfigurable: true\n\t}\n});\n","frappe.provide(\"frappe.ui\");\nfrappe.provide(\"frappe.views\");\nfrappe.provide(\"frappe.web_form_list\");\n\nexport default class WebFormList {\n\tconstructor(opts) {\n\t\tObject.assign(this, opts);\n\t\tfrappe.web_form_list = this;\n\t\tthis.wrapper = document.getElementById(\"datatable\");\n\t\tthis.make_actions();\n\t\tthis.make_filters();\n\t\t$('.link-btn').remove();\n\t}\n\n\trefresh() {\n\t\tif (this.table) {\n\t\t\tArray.from(this.table.tBodies).forEach(tbody => tbody.remove());\n\t\t\tlet check = document.getElementById('select-all');\n\t\t\tcheck.checked = false;\n\t\t}\n\t\tthis.rows = [];\n\t\tthis.page_length = 20;\n\t\tthis.web_list_start = 0;\n\n\t\tfrappe.run_serially([\n\t\t\t() => this.get_list_view_fields(),\n\t\t\t() => this.get_data(),\n\t\t\t() => this.make_table(),\n\t\t\t() => this.create_more()\n\t\t]);\n\t}\n\n\tmake_filters() {\n\t\tthis.filters = {};\n\t\tthis.filter_input = [];\n\t\tconst filter_area = document.getElementById('list-filters');\n\n\t\tfrappe.call('frappe.website.doctype.web_form.web_form.get_web_form_filters', {\n\t\t\tweb_form_name: this.web_form_name\n\t\t}).then(response => {\n\t\t\tlet fields = response.message;\n\t\t\tfields.forEach(field => {\n\t\t\t\tlet col = document.createElement('div.col-sm-4');\n\t\t\t\tcol.classList.add('col', 'col-sm-3');\n\t\t\t\tfilter_area.appendChild(col);\n\t\t\t\tif (field.default) this.add_filter(field.fieldname, field.default, field.fieldtype);\n\n\t\t\t\tlet input = frappe.ui.form.make_control({\n\t\t\t\t\tdf: {\n\t\t\t\t\t\tfieldtype: field.fieldtype,\n\t\t\t\t\t\tfieldname: field.fieldname,\n\t\t\t\t\t\toptions: field.options,\n\t\t\t\t\t\tonly_select: true,\n\t\t\t\t\t\tlabel: __(field.label),\n\t\t\t\t\t\tonchange: (event) => {\n\t\t\t\t\t\t\t$('#more').remove();\n\t\t\t\t\t\t\tthis.add_filter(field.fieldname, input.value, field.fieldtype);\n\t\t\t\t\t\t\tthis.refresh();\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tparent: col,\n\t\t\t\t\tvalue: field.default,\n\t\t\t\t\trender_input: 1,\n\t\t\t\t});\n\t\t\t\tthis.filter_input.push(input);\n\t\t\t});\n\t\t\tthis.refresh();\n\t\t});\n\t}\n\n\tadd_filter(field, value, fieldtype) {\n\t\tif (!value) {\n\t\t\tdelete this.filters[field];\n\t\t} else {\n\t\t\tif (fieldtype === 'Data') value = ['like', value + '%'];\n\t\t\tObject.assign(this.filters, Object.fromEntries([[field, value]]));\n\t\t}\n\t}\n\n\tget_list_view_fields() {\n\t\treturn frappe\n\t\t\t.call({\n\t\t\t\tmethod:\n\t\t\t\t\t\"frappe.website.doctype.web_form.web_form.get_in_list_view_fields\",\n\t\t\t\targs: { doctype: this.doctype }\n\t\t\t})\n\t\t\t.then(response => (this.fields_list = response.message));\n\t}\n\n\tfetch_data() {\n\t\treturn frappe.call({\n\t\t\tmethod: \"frappe.www.list.get_list_data\",\n\t\t\targs: {\n\t\t\t\tdoctype: this.doctype,\n\t\t\t\tfields: this.fields_list.map(df => df.fieldname),\n\t\t\t\tlimit_start: this.web_list_start,\n\t\t\t\tweb_form_name: this.web_form_name,\n\t\t\t\t...this.filters\n\t\t\t}\n\t\t});\n\t}\n\n\tasync get_data() {\n\t\tlet response = await this.fetch_data();\n\t\tthis.data = await response.message;\n\t}\n\n\tmore() {\n\t\tthis.web_list_start += this.page_length;\n\t\tthis.fetch_data().then((res) => {\n\t\t\tif (res.message.length === 0) {\n\t\t\t\tfrappe.msgprint(__(\"No more items to display\"));\n\t\t\t}\n\t\t\tthis.append_rows(res.message);\n\t\t});\n\n\t}\n\n\tmake_table() {\n\t\tthis.columns = this.fields_list.map(df => {\n\t\t\treturn {\n\t\t\t\tlabel: df.label,\n\t\t\t\tfieldname: df.fieldname,\n\t\t\t\tfieldtype: df.fieldtype\n\t\t\t};\n\t\t});\n\n\t\tif (!this.table) {\n\t\t\tthis.table = document.createElement(\"table\");\n\t\t\tthis.table.classList.add(\"table\");\n\t\t\tthis.make_table_head();\n\t\t}\n\n\t\tthis.append_rows(this.data);\n\n\t\tthis.wrapper.appendChild(this.table);\n\t}\n\n\tmake_table_head() {\n\t\t// Create Heading\n\t\tlet thead = this.table.createTHead();\n\t\tthead.style.backgroundColor = \"#f7fafc\";\n\t\tthead.style.color = \"#8d99a6\";\n\t\tlet row = thead.insertRow();\n\n\t\tlet th = document.createElement(\"th\");\n\n\t\tlet checkbox = document.createElement(\"input\");\n\t\tcheckbox.type = \"checkbox\";\n\t\tcheckbox.id = \"select-all\";\n\t\tcheckbox.onclick = event =>\n\t\t\tthis.toggle_select_all(event.target.checked);\n\n\t\tth.appendChild(checkbox);\n\t\trow.appendChild(th);\n\n\t\tadd_heading(row, __(\"Sr\"));\n\t\tthis.columns.forEach(col => {\n\t\t\tadd_heading(row, __(col.label));\n\t\t});\n\n\t\tfunction add_heading(row, label) {\n\t\t\tlet th = document.createElement(\"th\");\n\t\t\tth.innerText = label;\n\t\t\trow.appendChild(th);\n\t\t}\n\t}\n\n\tappend_rows(row_data) {\n\t\tconst tbody = this.table.childNodes[1] || this.table.createTBody();\n\t\trow_data.forEach((data_item) => {\n\t\t\tlet row_element = tbody.insertRow();\n\t\t\trow_element.setAttribute(\"id\", data_item.name);\n\n\t\t\tlet row = new frappe.ui.WebFormListRow({\n\t\t\t\trow: row_element,\n\t\t\t\tdoc: data_item,\n\t\t\t\tcolumns: this.columns,\n\t\t\t\tserial_number: this.rows.length + 1,\n\t\t\t\tevents: {\n\t\t\t\t\tonEdit: () => this.open_form(data_item.name),\n\t\t\t\t\tonSelect: () => this.toggle_delete()\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.rows.push(row);\n\t\t});\n\t}\n\n\tmake_actions() {\n\t\tconst actions = document.querySelector(\".list-view-actions\");\n\n\t\tfrappe.has_permission(this.doctype, \"\", \"delete\", () => {\n\t\t\tthis.addButton(actions, \"delete-rows\", \"danger\", true, \"Delete\", () =>\n\t\t\t\tthis.delete_rows()\n\t\t\t);\n\t\t});\n\n\t\tthis.addButton(\n\t\t\tactions,\n\t\t\t\"new\",\n\t\t\t\"primary\",\n\t\t\tfalse,\n\t\t\t\"New\",\n\t\t\t() => (window.location.href = window.location.pathname + \"?new=1\")\n\t\t);\n\t}\n\n\taddButton(wrapper, id, type, hidden, name, action) {\n\t\tif (document.getElementById(id)) return;\n\t\tconst button = document.createElement(\"button\");\n\t\tif (type == \"secondary\") {\n\t\t\tbutton.classList.add(\n\t\t\t\t\"btn\",\n\t\t\t\t\"btn-secondary\",\n\t\t\t\t\"btn-sm\",\n\t\t\t\t\"ml-2\",\n\t\t\t\t\"text-white\"\n\t\t\t);\n\t\t}\n\t\telse if (type == \"danger\") {\n\t\t\tbutton.classList.add(\n\t\t\t\t\"btn\",\n\t\t\t\t\"btn-danger\",\n\t\t\t\t\"button-delete\",\n\t\t\t\t\"btn-sm\",\n\t\t\t\t\"ml-2\"\n\t\t\t);\n\t\t}\n\t\telse {\n\t\t\tbutton.classList.add(\"btn\", \"btn-primary\", \"btn-sm\", \"ml-2\");\n\t\t}\n\n\t\tbutton.id = id;\n\t\tbutton.innerText = name;\n\t\tbutton.hidden = hidden;\n\n\t\tbutton.onclick = action;\n\t\twrapper.appendChild(button);\n\t}\n\n\tcreate_more() {\n\t\tif (this.rows.length >= this.page_length) {\n\t\t\tconst footer = document.querySelector(\".list-view-footer\");\n\t\t\tthis.addButton(footer, \"more\", \"secondary\", false, \"More\", () => this.more());\n\t\t}\n\t}\n\n\ttoggle_select_all(checked) {\n\t\tthis.rows.forEach(row => row.toggle_select(checked));\n\t}\n\n\topen_form(name) {\n\t\twindow.location.href = window.location.pathname + \"?name=\" + name;\n\t}\n\n\tget_selected() {\n\t\treturn this.rows.filter(row => row.is_selected());\n\t}\n\n\ttoggle_delete() {\n\t\tif (!this.settings.allow_delete) return\n\t\tlet btn = document.getElementById(\"delete-rows\");\n\t\tbtn.hidden = !this.get_selected().length;\n\t}\n\n\tdelete_rows() {\n\t\tif (!this.settings.allow_delete) return\n\t\tfrappe\n\t\t\t.call({\n\t\t\t\ttype: \"POST\",\n\t\t\t\tmethod:\n\t\t\t\t\t\"frappe.website.doctype.web_form.web_form.delete_multiple\",\n\t\t\t\targs: {\n\t\t\t\t\tweb_form_name: this.web_form_name,\n\t\t\t\t\tdocnames: this.get_selected().map(row => row.doc.name)\n\t\t\t\t}\n\t\t\t})\n\t\t\t.then(() => {\n\t\t\t\tthis.refresh()\n\t\t\t\tthis.toggle_delete()\n\t\t\t});\n\t}\n};\n\nfrappe.ui.WebFormListRow = class WebFormListRow {\n\tconstructor({ row, doc, columns, serial_number, events, options }) {\n\t\tObject.assign(this, { row, doc, columns, serial_number, events });\n\t\tthis.make_row();\n\t}\n\n\tmake_row() {\n\t\t// Add Checkboxes\n\t\tlet cell = this.row.insertCell();\n\n\t\tthis.checkbox = document.createElement(\"input\");\n\t\tthis.checkbox.type = \"checkbox\";\n\t\tthis.checkbox.onclick = event => {\n\t\t\tthis.toggle_select(event.target.checked);\n\t\t\tevent.stopImmediatePropagation();\n\t\t}\n\n\t\tcell.appendChild(this.checkbox);\n\n\t\t// Add Serial Number\n\t\tlet serialNo = this.row.insertCell();\n\t\tserialNo.innerText = this.serial_number;\n\n\t\tthis.columns.forEach(field => {\n\t\t\tlet cell = this.row.insertCell();\n\t\t\tlet formatter = frappe.form.get_formatter(field.fieldtype);\n\t\t\tcell.innerHTML = this.doc[field.fieldname] &&\n\t\t\t\t__(formatter(this.doc[field.fieldname], field, {only_value: 1}, this.doc)) || \"\";\n\t\t});\n\n\t\tthis.row.onclick = () => this.events.onEdit();\n\t\tthis.row.style.cursor = \"pointer\";\n\t}\n\n\ttoggle_select(checked) {\n\t\tthis.checkbox.checked = checked;\n\t\tthis.events.onSelect(checked);\n\t}\n\n\tis_selected() {\n\t\treturn this.checkbox.checked;\n\t}\n};\n","frappe.provide('frappe.utils');\n/**\n * Simple EventEmitterMixin which uses jQuery's event system\n */\nconst EventEmitterMixin = {\n\tinit() {\n\t\tthis.jq = jQuery({});\n\t},\n\n\ttrigger(evt, data) {\n\t\t!this.jq && this.init();\n\t\tthis.jq.trigger(evt, data);\n\t},\n\n\tonce(evt, handler) {\n\t\t!this.jq && this.init();\n\t\tthis.jq.one(evt, (e, data) => handler(data));\n\t},\n\n\ton(evt, handler) {\n\t\t!this.jq && this.init();\n\t\tthis.jq.bind(evt, (e, data) => handler(data));\n\t},\n\n\toff(evt, handler) {\n\t\t!this.jq && this.init();\n\t\tthis.jq.unbind(evt, (e, data) => handler(data));\n\t}\n}\n\nfrappe.utils.make_event_emitter = function(object) {\n\tObject.assign(object, EventEmitterMixin);\n\treturn object;\n};\n\nexport default EventEmitterMixin;\n","frappe.provide(\"frappe.ui\");\nfrappe.provide(\"frappe.web_form\");\nimport EventEmitterMixin from '../../frappe/event_emitter';\n\nexport default class WebForm extends frappe.ui.FieldGroup {\n\tconstructor(opts) {\n\t\tsuper();\n\t\tObject.assign(this, opts);\n\t\tfrappe.web_form = this;\n\t\tfrappe.web_form.events = {};\n\t\tObject.assign(frappe.web_form.events, EventEmitterMixin);\n\t\tthis.current_section = 0;\n\t}\n\n\tprepare(web_form_doc, doc) {\n\t\tObject.assign(this, web_form_doc);\n\t\tthis.fields = web_form_doc.web_form_fields;\n\t\tthis.doc = doc;\n\t}\n\n\tmake() {\n\t\tsuper.make();\n\t\tthis.set_sections();\n\t\tthis.set_field_values();\n\t\tthis.setup_listeners();\n\t\tif (this.introduction_text) this.set_form_description(this.introduction_text);\n\t\tif (this.allow_print && !this.is_new) this.setup_print_button();\n\t\tif (this.allow_delete && !this.is_new) this.setup_delete_button();\n\t\tif (this.is_new) this.setup_cancel_button();\n\t\tthis.setup_primary_action();\n\t\tthis.setup_previous_next_button();\n\t\tthis.toggle_section();\n\t\t$(\".link-btn\").remove();\n\n\t\t// webform client script\n\t\tfrappe.init_client_script && frappe.init_client_script();\n\t\tfrappe.web_form.events.trigger('after_load');\n\t\tthis.after_load && this.after_load();\n\t}\n\n\ton(fieldname, handler) {\n\t\tlet field = this.fields_dict[fieldname];\n\t\tfield.df.change = () => {\n\t\t\thandler(field, field.value);\n\t\t};\n\t}\n\n\tsetup_listeners() {\n\t\t// Event listener for triggering Save/Next button for Multi Step Forms\n\t\t// Do not use `on` event here since that can be used by user which will render this function useless\n\t\t// setTimeout has 200ms delay so that all the base_control triggers for the fields have been run\n\t\tlet me = this;\n\n\t\tif (!me.is_multi_step_form) {\n\t\t\treturn;\n\t\t}\n\n\t\tfor (let field of $(\".input-with-feedback\")) {\n\t\t\t$(field).change((e) => {\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t\tme.toggle_buttons();\n\t\t\t\t}, 200);\n\t\t\t});\n\t\t}\n\t}\n\n\tset_sections() {\n\t\tif (this.sections.length) return;\n\n\t\tthis.sections = $(`.form-section`);\n\t}\n\n\tsetup_previous_next_button() {\n\t\tlet me = this;\n\n\t\tif (!me.is_multi_step_form) {\n\t\t\treturn;\n\t\t}\n\n\t\t$('.web-form-footer').after(`\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t`);\n\n\t\t$('.btn-previous').on('click', function () {\n\t\t\tlet is_validated = me.validate_section();\n\n\t\t\tif (!is_validated) return;\n\n\t\t\t/**\n\t\t\t\tThe eslint utility cannot figure out if this is an infinite loop in backwards and\n\t\t\t\tthrows an error. Disabling for-direction just for this section.\n\t\t\t\tfor-direction doesnt throw an error if the values are hardcoded in the\n\t\t\t\treverse for-loop, but in this case its a dynamic loop.\n\t\t\t\thttps://eslint.org/docs/rules/for-direction\n\t\t\t*/\n\t\t\t/* eslint-disable for-direction */\n\t\t\tfor (let idx = me.current_section; idx < me.sections.length; idx--) {\n\t\t\t\tlet is_empty = me.is_previous_section_empty(idx);\n\t\t\t\tme.current_section = me.current_section > 0 ? me.current_section - 1 : me.current_section;\n\n\t\t\t\tif (!is_empty) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\t/* eslint-enable for-direction */\n\t\t\tme.toggle_section();\n\t\t});\n\n\t\t$('.btn-next').on('click', function () {\n\t\t\tlet is_validated = me.validate_section();\n\n\t\t\tif (!is_validated) return;\n\n\t\t\tfor (let idx = me.current_section; idx < me.sections.length; idx++) {\n\t\t\t\tlet is_empty = me.is_next_section_empty(idx);\n\t\t\t\tme.current_section = me.current_section < me.sections.length ? me.current_section + 1 : me.current_section;\n\n\t\t\t\tif (!is_empty) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tme.toggle_section();\n\t\t});\n\t}\n\n\tset_field_values() {\n\t\tif (this.doc.name) this.set_values(this.doc);\n\t\telse return;\n\t}\n\n\tset_default_values() {\n\t\tlet values = frappe.utils.get_query_params();\n\t\tdelete values.new;\n\t\tthis.set_values(values);\n\t}\n\n\tset_form_description(intro) {\n\t\tlet intro_wrapper = document.getElementById('introduction');\n\t\tintro_wrapper.innerHTML = intro;\n\t}\n\n\tadd_button(name, type, action, wrapper_class=\".web-form-actions\") {\n\t\tconst button = document.createElement(\"button\");\n\t\tbutton.classList.add(\"btn\", \"btn-\" + type, \"btn-sm\", \"ml-2\");\n\t\tbutton.innerHTML = name;\n\t\tbutton.onclick = action;\n\t\tdocument.querySelector(wrapper_class).appendChild(button);\n\t}\n\n\tadd_button_to_footer(name, type, action) {\n\t\tthis.add_button(name, type, action, '.web-form-footer');\n\t}\n\n\tadd_button_to_header(name, type, action) {\n\t\tthis.add_button(name, type, action, '.web-form-actions');\n\t}\n\n\tsetup_primary_action() {\n\t\tthis.add_button_to_header(this.button_label || __(\"Save\", null, \"Button in web form\"), \"primary\", () =>\n\t\t\tthis.save()\n\t\t);\n\n\t\tthis.add_button_to_footer(this.button_label || __(\"Save\", null, \"Button in web form\"), \"primary\", () =>\n\t\t\tthis.save()\n\t\t);\n\t}\n\n\tsetup_cancel_button() {\n\t\tthis.add_button_to_header(__(\"Cancel\", null, \"Button in web form\"), \"light\", () => this.cancel());\n\t}\n\n\tsetup_delete_button() {\n\t\tfrappe.has_permission(this.doc_type, \"\", \"delete\", () => {\n\t\t\tthis.add_button_to_header(\n\t\t\t\tfrappe.utils.icon('delete'),\n\t\t\t\t\"danger\",\n\t\t\t\t() => this.delete()\n\t\t\t);\n\t\t});\n\t}\n\n\tsetup_print_button() {\n\t\tthis.add_button_to_header(\n\t\t\tfrappe.utils.icon('print'),\n\t\t\t\"light\",\n\t\t\t() => this.print()\n\t\t);\n\t}\n\n\tvalidate_section() {\n\t\tif (this.allow_incomplete) return true;\n\n\t\tlet fields = $(`.form-section:eq(${this.current_section}) .form-control`);\n\t\tlet errors = [];\n\t\tlet invalid_values = [];\n\n\t\tfor (let field of fields) {\n\t\t\tlet fieldname = $(field).attr(\"data-fieldname\");\n\t\t\tif (!fieldname) continue;\n\n\t\t\tfield = this.fields_dict[fieldname];\n\n\t\t\tif (field.get_value) {\n\t\t\t\tlet value = field.get_value();\n\t\t\t\tif (field.df.reqd && is_null(typeof value === 'string' ? strip_html(value) : value)) errors.push(__(field.df.label));\n\n\t\t\t\tif (field.df.reqd && field.df.fieldtype === 'Text Editor' && is_null(strip_html(cstr(value)))) errors.push(__(field.df.label));\n\n\t\t\t\tif (field.df.invalid) invalid_values.push(__(field.df.label));\n\t\t\t}\n\t\t}\n\n\t\tlet message = '';\n\t\tif (invalid_values.length) {\n\t\t\tmessage += __('Invalid values for fields:') + '

';\n\t\t}\n\n\t\tif (errors.length) {\n\t\t\tmessage += __('Mandatory fields required:') + '

';\n\t\t}\n\n\t\tif (invalid_values.length || errors.length) {\n\t\t\tfrappe.msgprint({\n\t\t\t\ttitle: __('Error'),\n\t\t\t\tmessage: message,\n\t\t\t\tindicator: 'orange'\n\t\t\t});\n\t\t}\n\n\t\treturn !(errors.length || invalid_values.length);\n\t}\n\n\ttoggle_section() {\n\t\tif (!this.is_multi_step_form) return;\n\n\t\tthis.toggle_previous_button();\n\t\tthis.hide_sections();\n\t\tthis.show_section();\n\t\tthis.toggle_buttons();\n\t}\n\n\ttoggle_buttons() {\n\t\tfor (let idx = this.current_section; idx < this.sections.length; idx++) {\n\t\t\tif (this.is_next_section_empty(idx)) {\n\t\t\t\tthis.show_save_and_hide_next_button();\n\t\t\t} else {\n\t\t\t\tthis.show_next_and_hide_save_button();\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tis_next_section_empty(section) {\n\t\tif (section + 1 > this.sections.length) return true;\n\n\t\tlet _section = $(`.form-section:eq(${section + 1})`);\n\t\tlet visible_controls = _section.find(\".frappe-control:not(.hide-control)\");\n\n\t\treturn !visible_controls.length ? true : false;\n\t}\n\n\tis_previous_section_empty(section) {\n\t\tif (section - 1 > this.sections.length) return true;\n\n\t\tlet _section = $(`.form-section:eq(${section - 1})`);\n\t\tlet visible_controls = _section.find(\".frappe-control:not(.hide-control)\");\n\n\t\treturn !visible_controls.length ? true : false;\n\t}\n\n\tshow_save_and_hide_next_button() {\n\t\t$('.btn-next').hide();\n\t\t$('.web-form-footer').show();\n\t}\n\n\tshow_next_and_hide_save_button() {\n\t\t$('.btn-next').show();\n\t\t$('.web-form-footer').hide();\n\t}\n\n\ttoggle_previous_button() {\n\t\tthis.current_section == 0 ? $('.btn-previous').hide() : $('.btn-previous').show();\n\t}\n\n\tshow_section() {\n\t\t$(`.form-section:eq(${this.current_section})`).show();\n\t}\n\n\thide_sections() {\n\t\tfor (let idx=0; idx < this.sections.length; idx++) {\n\t\t\tif (idx !== this.current_section) {\n\t\t\t\t$(`.form-section:eq(${idx})`).hide();\n\t\t\t}\n\t\t}\n\t}\n\n\tsave() {\n\t\tlet is_new = this.is_new;\n\t\tif (this.validate && !this.validate()) {\n\t\t\tfrappe.throw(__(\"Couldn't save, please check the data you have entered\"), __(\"Validation Error\"));\n\t\t}\n\n\t\t// validation hack: get_values will check for missing data\n\t\tlet doc_values = super.get_values(this.allow_incomplete);\n\n\t\tif (!doc_values) return;\n\n\t\tif (window.saving) return;\n\t\tlet for_payment = Boolean(this.accept_payment && !this.doc.paid);\n\n\t\tObject.assign(this.doc, doc_values);\n\t\tthis.doc.doctype = this.doc_type;\n\t\tthis.doc.web_form_name = this.name;\n\n\t\t// Save\n\t\twindow.saving = true;\n\t\tfrappe.form_dirty = false;\n\n\t\tfrappe.call({\n\t\t\ttype: \"POST\",\n\t\t\tmethod: \"frappe.website.doctype.web_form.web_form.accept\",\n\t\t\targs: {\n\t\t\t\tdata: this.doc,\n\t\t\t\tweb_form: this.name,\n\t\t\t\tfor_payment,\n\t\t\t},\n\t\t\tcallback: response => {\n\t\t\t\t// Check for any exception in response\n\t\t\t\tif (!response.exc) {\n\t\t\t\t\t// Success\n\t\t\t\t\tthis.handle_success(response.message);\n\t\t\t\t\tfrappe.web_form.events.trigger('after_save');\n\t\t\t\t\tthis.after_save && this.after_save();\n\t\t\t\t\t// args doctype and docname added to link doctype in file manager\n\t\t\t\t\tif (is_new && (response.message.attachment || response.message.file)) {\n\t\t\t\t\t\tfrappe.call({\n\t\t\t\t\t\t\ttype: 'POST',\n\t\t\t\t\t\t\tmethod: \"frappe.handler.upload_file\",\n\t\t\t\t\t\t\targs: {\n\t\t\t\t\t\t\t\tfile_url: response.message.attachment || response.message.file,\n\t\t\t\t\t\t\t\tdoctype: response.message.doctype,\n\t\t\t\t\t\t\t\tdocname: response.message.name\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\talways: function() {\n\t\t\t\twindow.saving = false;\n\t\t\t}\n\t\t});\n\t\treturn true;\n\t}\n\n\tdelete() {\n\t\tfrappe.call({\n\t\t\ttype: \"POST\",\n\t\t\tmethod: \"frappe.website.doctype.web_form.web_form.delete\",\n\t\t\targs: {\n\t\t\t\tweb_form_name: this.name,\n\t\t\t\tdocname: this.doc.name\n\t\t\t}\n\t\t});\n\t}\n\n\tprint() {\n\t\twindow.open(`/printview?\n\t\t\tdoctype=${this.doc_type}\n\t\t\t&name=${this.doc.name}\n\t\t\t&format=${this.print_format || \"Standard\"}`, '_blank');\n\t}\n\n\tcancel() {\n\t\twindow.location.href = window.location.pathname;\n\t}\n\n\thandle_success(data) {\n\t\tif (this.accept_payment && !this.doc.paid) {\n\t\t\twindow.location.href = data;\n\t\t}\n\n\t\tconst success_dialog = new frappe.ui.Dialog({\n\t\t\ttitle: __(\"Saved Successfully\"),\n\t\t\tsecondary_action: () => {\n\t\t\t\tif (this.success_url) {\n\t\t\t\t\twindow.location.href = this.success_url;\n\t\t\t\t} else if(this.login_required) {\n\t\t\t\t\twindow.location.href =\n\t\t\t\t\t\twindow.location.pathname + \"?name=\" + data.name;\n\t\t\t\t}\n\t\t\t},\n\t\t\ton_hide: () => {\n\t\t\t\twindow.location.href = window.location.pathname;\n\t\t\t}\n\t\t});\n\n\t\tsuccess_dialog.show();\n\t\tconst success_message =\n\t\t\t__(this.success_message) || __(\"Your information has been submitted\");\n\t\tsuccess_dialog.set_message(success_message);\n\t}\n}\n","import WebFormList from './web_form_list'\nimport WebForm from './web_form'\n\nfrappe.ready(function() {\n\tlet query_params = frappe.utils.get_query_params();\n\tlet wrapper = $(\".web-form-wrapper\");\n\tlet is_list = parseInt(wrapper.data('is-list')) || query_params.is_list;\n\tlet webform_doctype = wrapper.data('web-form-doctype');\n\tlet webform_name = wrapper.data('web-form');\n\tlet login_required = parseInt(wrapper.data('login-required'));\n\tlet allow_delete = parseInt(wrapper.data('allow-delete'));\n\tlet doc_name = query_params.name || '';\n\tlet is_new = query_params.new;\n\n\tif (login_required) show_login_prompt();\n\telse if (is_list) show_grid();\n\telse show_form(webform_doctype, webform_name, is_new);\n\n\tdocument.querySelector(\"body\").style.display = \"block\";\n\n\tfunction show_login_prompt() {\n\t\tconst login_required = new frappe.ui.Dialog({\n\t\t\ttitle: __(\"Not Permitted\"),\n\t\t\tprimary_action_label: __(\"Login\"),\n\t\t\tprimary_action: () => {\n\t\t\t\twindow.location.replace('/login?redirect-to=' + window.location.pathname);\n\t\t\t}\n\t\t});\n\t\tlogin_required.set_message(__(\"You are not permitted to access this page.\"));\n\t\tlogin_required.show();\n\t}\n\n\tfunction show_grid() {\n\t\tnew WebFormList({\n\t\t\tparent: wrapper,\n\t\t\tdoctype: webform_doctype,\n\t\t\tweb_form_name: webform_name,\n\t\t\tsettings: {\n\t\t\t\tallow_delete\n\t\t\t}\n\t\t});\n\t}\n\n\tfunction show_form() {\n\t\tlet web_form = new WebForm({\n\t\t\tparent: wrapper,\n\t\t\tis_new,\n\t\t\tweb_form_name: webform_name,\n\t\t});\n\n\t\tget_data().then(r => {\n\t\t\tconst data = setup_fields(r.message);\n\t\t\tlet web_form_doc = data.web_form;\n\n\t\t\tif (web_form_doc.name && web_form_doc.allow_edit === 0) {\n\t\t\t\tif (!window.location.href.includes(\"?new=1\")) {\n\t\t\t\t\twindow.location.replace(window.location.pathname + \"?new=1\");\n\t\t\t\t}\n\t\t\t}\n\t\t\tlet doc = r.message.doc || build_doc(r.message);\n\t\t\tweb_form.prepare(web_form_doc, r.message.doc && web_form_doc.allow_edit === 1 ? r.message.doc : {});\n\t\t\tweb_form.make();\n\t\t\tweb_form.set_default_values();\n\t\t})\n\n\t\tfunction build_doc(form_data) {\n\t\t\tlet doc = {};\n\t\t\tform_data.web_form.web_form_fields.forEach(df => {\n\t\t\t\tif (df.default) return doc[df.fieldname] = df.default;\n\t\t\t});\n\t\t\treturn doc;\n\t\t}\n\n\t\tfunction get_data() {\n\t\t\treturn frappe.call({\n\t\t\t\tmethod: \"frappe.website.doctype.web_form.web_form.get_form_data\",\n\t\t\t\targs: {\n\t\t\t\t\tdoctype: webform_doctype,\n\t\t\t\t\tdocname: doc_name,\n\t\t\t\t\tweb_form_name: webform_name\n\t\t\t\t},\n\t\t\t\tfreeze: true\n\t\t\t});\n\t\t}\n\n\t\tfunction setup_fields(form_data) {\n\t\t\tform_data.web_form.web_form_fields.map(df => {\n\t\t\t\tdf.is_web_form = true;\n\t\t\t\tif (df.fieldtype === \"Table\") {\n\t\t\t\t\tdf.get_data = () => {\n\t\t\t\t\t\tlet data = [];\n\t\t\t\t\t\tif (form_data.doc) {\n\t\t\t\t\t\t\tdata = form_data.doc[df.fieldname];\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn data;\n\t\t\t\t\t};\n\n\t\t\t\t\tdf.fields = form_data[df.fieldname];\n\t\t\t\t\t$.each(df.fields || [], function(_i, field) {\n\t\t\t\t\t\tif (field.fieldtype === \"Link\") {\n\t\t\t\t\t\t\tfield.only_select = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfield.is_web_form = true;\n\t\t\t\t\t});\n\n\t\t\t\t\tif (df.fieldtype === \"Attach\") {\n\t\t\t\t\t\tdf.is_private = true;\n\t\t\t\t\t}\n\n\t\t\t\t\tdelete df.parent;\n\t\t\t\t\tdelete df.parentfield;\n\t\t\t\t\tdelete df.parenttype;\n\t\t\t\t\tdelete df.doctype;\n\n\t\t\t\t\treturn df;\n\t\t\t\t}\n\t\t\t\tif (df.fieldtype === \"Link\") {\n\t\t\t\t\tdf.only_select = true;\n\t\t\t\t}\n\t\t\t\tif ([\"Attach\", \"Attach Image\"].includes(df.fieldtype)) {\n\t\t\t\t\tif (typeof df.options !== \"object\") {\n\t\t\t\t\t\tdf.options = {};\n\t\t\t\t\t}\n\t\t\t\t\tdf.options.disable_file_browser = true;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn form_data;\n\t\t}\n\t}\n});\n"],"names":["const","let","this"],"mappings":"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"}