1import{B as t,L as e,F as i,A as n,o as a,s,r as o,C as l,D as r}from"./main-D5aZgHqq.js";import{i as d}from"./init.js";import{S as c}from"./staticStores-DzJkpfRP.js";import{F as m}from"./formValidation-DEcm_xV1.js";import{U as p}from"./uploadFileForm-P7gRHCbi.js";class u extends p{id="import_guideline_zip";explanation="Create a new guideline from a zip export.";uploadUrl="/api/v2/guidelines/zip";constructor(t){super(...arguments),this.uploadFailMsg=d.fileUpload.failure,this.formButtonsArgs={submitLabel:d.actions.create,successMsg:"Guideline Imported"}}_onCompleteFnc(t){return t?this.formButtons.setSuccess():this.formButtons.setFail(this.uploadFailMsg),this._emit("on-complete",{guideline:t}),t}}class g extends t{formButtons=null;languageSelect=null;constructor(t){super(...arguments),this.i18n=d,this.baseClass="newContentForm",this.templateString='<div class="${baseClass}">\n <form class="newGuidelineForm podSteez" id="newContentForm" data-magic-id="contentForm" lang="en-US">\n <h2 data-magic-id="titleNode"></h2>\n <fieldset>\n <label>${i18n.general.title}</label>\n <input type="text" required name="name"\n placeholder="${i18n.general.title}"\n id="nameNode"\n minlength="4"\n data-tooShort="At least 4 chars"\n data-customError="${i18n.msg.form.validate.provideName}"\n data-valueMissing="${i18n.msg.form.validate.provideName}">\n </fieldset>\n <fieldset>\n <label>${i18n.general.shortTitle}</label>\n <input type="text" required class="shortName"\n placeholder="${i18n.general.shortTitle}"\n id="byNameNode"\n name="byName"\n pattern="[A-zÃ-ÿ0-9$%!_+-\\/\\., ]{4,64}"\n data-tooShort="At least 4 chars"\n data-patternMismatch="Only A-zÃ-ÿ0-9$%!_+-\\/\\., and no more than a 128 chars"\n data-customError="${i18n.msg.form.validate.provideTitle}"\n data-valueMissing="${i18n.msg.form.validate.provideTitle}">\n <span class="formByline">${i18n.settings.general.shortTitleInfo}</span>\n </fieldset>\n <fieldset>\n <label>${i18n.contentList.editor}</label>\n <input type="text" required name="mainEditor"\n id="editorNode"\n placeholder="${i18n.contentList.editor}"\n pattern=\'[^<>%\\$\\|~@#\\/\\+"]{2,128}\'\n data-patternMismatch=\'These chars are not allowed ^<>%$|~@#/+"\'\n data-tooShort="${i18n.msg.form.validate.editorMinimumTwo}"\n data-valueMissing="${i18n.msg.form.validate.provideEditor}">\n </fieldset>\n <fieldset>\n <div class="newFormCopy">\n <p>${i18n.newGuideline.text1}</p>\n <p><a href="https://magicevidence.org/organizations/contact/" target="_blank" rel="noopener">${i18n.help.account.setupAccount}</a></p>\n <p>${i18n.newGuideline.text2}</p>\n </div>\n </fieldset>\n <fieldset>\n <label>${i18n.contentList.owner}</label>\n <select name="institutionId" id="institutionId" required\n data-magic-id="institutionSelect"\n data-customError="${i18n.msg.form.validate.provideOwner}">\n </select>\n </fieldset>\n <fieldset>\n <label>${i18n.settings.language}</label>\n <select name="language" data-magic-id="langSelNode"></select>\n <div class="settingsFlags" data-magic-id="flags"></div>\n <span class="settingByline">${i18n.settings.general.languageInfo}</span>\n </fieldset>\n <fieldset>\n <label>${i18n.general.description}</label>\n <textarea name="description" rows="4" placeholder="${i18n.settings.general.placeHolders.description}" data-magic-id="description"></textarea>\n </fieldset>\n <button type="button" class="importZipBtn hideMe" data-magic-id="importZipNode">Create from Zip</button>\n <div class="formButtons">\n <div data-magic-id="buttonsNode"></div>\n </div>\n </form>\n</div>\n',this.formButtonsArgs={id:"newContentBtns",submitLabel:d.actions.create},Object.assign(this,t)}postCreate(){super.postCreate(),this.titleNode.innerHTML=d.newGuideline.title,this.languageSelect=new e({},this.langSelNode),this.languageSelect.startup(),this.setupInstitutionSelect(),this.updateFlags(),m.validForm(this.contentForm),this.formButtons=new i(this.formButtonsArgs,this.buttonsNode),this.formButtons.startup(),this.formButtons.enableSummit(),n.isAppAdmin()&&this._enableZipUpload(),this.own(a(this.languageSelect,"change",this.updateFlags.bind(this)),a(this.formButtons,"submit",this.save.bind(this)),a(this.formButtons,"cancel",this.cancel.bind(this)),a(this.formButtons,"close",this.cancel.bind(this)))}setupInstitutionSelect(){const t=t=>{t.forEach((t=>{const e=document.createElement("option");e.value=t.institutionId,e.innerHTML=t.name,this.institutionSelect.appendChild(e)}))};n.isAppAdmin()?s.institutionStore().allOrgs().then(t):t(n.getUserInstitutions())}save(){if(this.contentForm.checkValidity()){this.formButtons.disableSummit();const t={};new FormData(this.contentForm).forEach(((e,i)=>{t[i]=e})),t.countryFlag=this.flags.querySelector("input:checked").value,s.guidelineStore().add(t).then((t=>{const e=t.guidelineId;this._emit("new-guideline",e)}
1)).catch((t=>console.error("Error:",t)))}}updateFlags(){const t=this.languageSelect.value,e=c.langToFlag[t]||["worldFlag"];let i="";e.forEach((t=>{const e=t.replace("Flag","");i+=`<div class="settingsFlagWrap"><input type="radio" name="countryFlag" value="${e}"><span class="flag ${t}"></span></div>`})),this.flags.innerHTML=i,this.flags.querySelector("input").checked=!0}cancel(){this.domNode.parentElement.style.display="none",this.destroy()}_enableZipUpload(){o(this.importZipNode,l),this.own(a(this.importZipNode,"click",(()=>{const t=new u({explanation:d.actions.zip.guidelineImport});new r({title:d.actions.zip.guidelineImport,content:t,id:"dialog_import_guideline_zip"}).startup(),a(t,"on-complete",(t=>{const e=t.detail.guideline.guidelineId;this._emit("new-guideline",e)}))})))}}export{g as default}; 2//# sourceMappingURL=newContentForm-0l1jYz1n.js.map
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.