UNPKG

@digital-blueprint/formalize-app

Version:

[GitHub Repository](https://github.com/digital-blueprint/formalize-app) | [npmjs package](https://www.npmjs.com/package/@digital-blueprint/formalize-app) | [Unpkg CDN](https://unpkg.com/browse/@digital-blueprint/formalize-app/) | [Formalize Bundle](https:

531 lines • 52.9 kB
/*!
* License: LGPL-2.1-or-later
* Dependencies:
* 
* @webcomponents/scoped-custom-element-registry: BSD-3-Clause
* @dbp-toolkit/app-shell: LGPL-2.1-or-later
* lit-html: BSD-3-Clause
* @dbp-toolkit/language-select: LGPL-2.1-or-later
* @dbp-toolkit/auth: LGPL-2.1-or-later
* @dbp-toolkit/theme-switcher: LGPL-2.1-or-later
* universal-router: MIT
* @dbp-toolkit/matomo: LGPL-2.1-or-later
* cssfilter: MIT
* xss: MIT
* @dbp-toolkit/form-elements: LGPL-2.1-or-later
* html2pdf.js: MIT
*/
import{d as e,f as t,h as n,m as r,o as i,p as a,s as o}from"./shared/ref.DqB7ABXf.js";import{J as s,X as c,b as l,g as u,s as d,v as f}from"./shared/directive-helpers.C6Xz79AM.js";import{t as p}from"./shared/class-map.B2bFA_il.js";import{t as m}from"./shared/translated.Blxt0tjK.js";import{t as h}from"./shared/modal.DfjeZb2d.js";import{f as g}from"./shared/select2.min.DRitHUO_.js";import{n as _,r as v,t as y}from"./shared/pdf-viewer.CsTRBfhh.js";import{t as b}from"./shared/file-source.DRQEpAaB.js";import{a as x,i as S,s as C,t as w}from"./shared/string.qUj92gVq.js";import{n as T,t as E}from"./shared/boolean.pr9Nw5yS.js";import{t as D}from"./shared/enum.BxhuTEi5.js";import{t as O}from"./shared/string.f-jSIclt.js";import{n as k,t as A}from"./shared/enum.B5iOCmyu.js";const j=`Sonstiges`,M=`nothing-selected`,N={Audio:`render-form.forms.media-transparency-form.sub-categories-audio`,App:`render-form.forms.media-transparency-form.sub-categories-app`,"Soziales Netzwerk":`render-form.forms.media-transparency-form.sub-categories-social-media`,Website:`render-form.forms.media-transparency-form.sub-categories-website`,Text:`render-form.forms.media-transparency-form.sub-categories-text`,Video:`render-form.forms.media-transparency-form.sub-categories-video`,Sonstiges:`render-form.forms.media-transparency-form.sub-categories-else`,Plakat:`render-form.forms.media-transparency-form.sub-categories-billboard`,Verkehrsmittel:`render-form.forms.media-transparency-form.sub-categories-transportation`,"Digitaler Screen":`render-form.forms.media-transparency-form.sub-categories-digital-screen`,Bande:`render-form.forms.media-transparency-form.sub-categories-banner`,Kino:`render-form.forms.media-transparency-form.sub-categories-cinema`},P={Online:`render-form.forms.media-transparency-form.categories-online`,Print:`render-form.forms.media-transparency-form.categories-print`,"Out of Home":`render-form.forms.media-transparency-form.categories-out-of-home`,Hörfunk:`render-form.forms.media-transparency-form.categories-radio`,Fernsehen:`render-form.forms.media-transparency-form.categories-television`},F={Online:{Audio:{"Amazon Music":`Amazon.com, Inc.`,"Antenna Pod":`Antenna Pod`,"Apple Podcasts":`Apple Inc.`,Deezer:`Deezer S.A.`,fyyd:`Christian Bednarek`,"Listen Notes":`Listen Notes, Inc.`,"Pocket Casts":`Automattic, Inc.`,Spotify:`Spotify AB`},App:{"Google Play":`Google LLC`,iTunes:`Apple Inc.`,"Podcast Addict":`Guillemane Xavier - Podcast & Radio Addict`},"Soziales Netzwerk":{Facebook:`Meta Platforms Ireland Limited`,Instagram:`Meta Platforms Ireland Limited`,LinkedIn:`LinkedIn Ireland Unlimited Company`,Snapchat:`Snap Inc.`,"X (Twitter)":`X Corp.`,YouTube:`Google Ireland Limited`},Website:{"c.socceruhd.online":`socceruhd.online`,"e-flux.com":`e-flux Inc.`,"google.com":`Google Ireland Limited`,"grazer.at":`Media 21 GmbH`,"industriemagazin.at":`WEKA Industrie Medien GmbH`,"kleinezeitung.at":`Kleine Zeitung GmbH & Co KG`,"science.apa.at":`APA - Austria Presse Agentur eG`,"spiritofstyria.at":`GRAZETTA GmbH`},Text:{"Industriemagazin Newsletter":`WEKA Industrie Medien GmbH`,"Newsletter Automobil + Motoren":`Springer Fachmedien Wiesbaden GmbH`},Video:{},Sonstiges:{}},Print:{_items:{"ADDITIVE FERTIGUNG":`x-Technik IT & Medien GesmbH`,Bildungsguide:`Tamedia Publikationen Deutschschweiz AG`,"COOL! Mädchen":`Gonzomedia GesmbH`,DerGrazer:`Media 21 GmbH`,"Die Presse":`"Die Presse" Verlags-Gesellschaft m.b.H. & Co KG`,Forschung:`STANDARD Verlagsgesellschaft m.b.H.`,"Jahresbericht Bundesrealgymnasium 8010 Graz, Petersgasse 110":`Bundesrealgymnasium 8010 Graz, Petersgasse 110`,"Jahresbericht Höhere technische Bundeslehranstalt 5280 Braunau am Inn, Osternbergerstraße 55":`Höhere technische Bundeslehranstalt 5280 Braunau am Inn, Osternbergerstraße 55`,"KLEINE ZEITUNG":`Kleine Zeitung GmbH & Co KG`,"Maturazeitung Bundes-Oberstufenrealgymnasium 8010 Graz, Monsbergergasse 16":`Bundes-Oberstufenrealgymnasium 8010 Graz, Monsbergergasse 16`,"Maturazeitung Bundesgymnasium, Bundesrealgymnasium und Bundes-Oberstufenrealgymnasium (HIB) 8041 Graz-Liebenau, Kadettengasse 19-23":`Bundesgymnasium, Bundesrealgymnasium und Bundes-Oberstufenrealgymnasium (HIB) 8041 Graz-Liebenau, Kadettengasse 19-23`,"Maturazeitung Höhere technische Bundeslehr- und Versuchsanstalt 7423 Pinkafeld, Meierhofplatz 1":`Höhere technische Bundeslehr- und Versuchsanstalt 7423 Pinkafeld, Meierhofplatz 1`,"Maturazeitung Höhere technische Bundeslehranstalt 8051 Graz-Gösting, Ibererstraße 15-21":`Höhere technische Bundeslehranstalt 8051 Graz-Gösting, Ibererstraße 15-21`,"Maturazeitung Höhere technische Bundeslehranstalt 8430 Leibnitz, Kaindorf, Grazer Straße 202":`Höhere technische Bundeslehranstalt 8430 Leibnitz, Kaindorf, Grazer Straße 202`,MEGAPHON:`Caritas der Diözese Graz-Seckau`,MTZ:`Springer Fachmedien Wiesbaden GmbH`,"Rebell*innen Kalender":`AMAZONE, Verein zur Herstellung von Geschlechtergerechtigkeit`,sheconomy:`SHE Wirtschaftsmedien Beteiligungs GmbH`,"Spirit OF STYRIA":`SPIRIT Medienhaus GmbH`,"Verkehrsmalbuch für Kinder":`IPA Verlagsgesellschaft m.b.H.`,"Weekend Magazin Steiermark":`Weekend Magazin Steiermark GmbH`,ZukunftsBranchen:`Weber Ulrich, "WeberMedia"`}},"Out of Home":{Plakat:{Ankünder:`Ankünder GmbH`,"BS Vertriebsagentur e.U.":`BS Vertriebsagentur e.U.`,"City Light":`City Light Ankünder GmbH`,"GFW Gesellschaft für Wirtschaftsdokumentationen":`GFW Gesellschaft für Wirtschaftsdokumentationen Gesellschaft m.b.H. & Co. KG`},Verkehrsmittel:{"Ankünder GmbH":`Ankünder GmbH`},"Digitaler Screen":{},outdoorAdvertising:{},Bande:{},Kino:{},Sonstiges:{"Gazzetta GmbH":`Gazzetta GmbH`,"CompanyCode Werbe GmbH":`CompanyCode Werbe GmbH`}},Fernsehen:{_items:{"ORF 2":`Österreichischer Rundfunk`}},Hörfunk:{_items:{"Radio Soundportal (Graz)":`Soundportal Graz GmbH`}}};var I=class extends x{getUrlSlug(){return`media-transparency`}getFormComponent(){return L}hasReadOnlyMode(){return!0}getFormIdentifier(){return`019bdb56-6fc7-760d-938a-b128a89958a8`}},L=class extends S{constructor(){super(),this.selectedCategory=null,this.otherMediumNameEnabled=!1,this.conditionalFields={category:!1,advertisementSubcategory:!1,mediaName:!1,outOfHomeOtherMediunOwner:!1},this.submissionIsSaved=!1,this.handleFormSubmission=this.handleFormSubmission.bind(this),this.handleSaveDraft=this.handleSaveDraft.bind(this),this.handleFormSaveSubmission=this.handleFormSaveSubmission.bind(this)}static get properties(){return{...super.properties,selectedCategory:{type:String,attribute:!1},otherMediumNameEnabled:{type:Boolean,attribute:!1},submissionIsSaved:{type:Boolean,attribute:!1}}}static get scopedElements(){return{...super.scopedElements,"dbp-form-string-element":w,"dbp-form-date-element":T,"dbp-form-boolean-element":E,"dbp-form-enum-element":D,"dbp-form-string-view":O,"dbp-form-date-view":k,"dbp-form-enum-view":A,"dbp-translated":m,"dbp-grant-permission-dialog":_,"dbp-modal":h,"dbp-file-source":b,"dbp-file-sink":v,"dbp-pdf-viewer":y}}connectedCallback(){super.connectedCallback(),this.updateComplete.then(()=>{this.addEventListener(`DbpFormalizeFormSubmission`,this.handleFormSubmission),this.addEventListener(`DbpFormalizeFormSaveDraft`,this.handleSaveDraft),this.addEventListener(`DbpFormalizeFormDeleteSubmission`,this.handleFormDeleteSubmission),this.addEventListener(`dbp-file-source-file-selected`,this.handleFilesToSubmit),this.addEventListener(`DbpFormalizeFormSaveSubmission`,this.handleFormSaveSubmission)})}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener(`DbpFormalizeFormSubmission`,this.handleFormSubmission),this.removeEventListener(`DbpFormalizeFormSaveDraft`,this.handleSaveDraft),this.removeEventListener(`DbpFormalizeFormSaveSubmission`,this.handleFormSaveSubmission),this.removeEventListener(`DbpFormalizeFormDeleteSubmission`,this.handleFormDeleteSubmission),this.removeEventListener(`dbp-file-source-file-selected`,this.handleFilesToSubmit)}async update(e){super.update(e);let t=this._i18n;e.has(`data`)&&(Object.keys(this.data).length>0&&await this.processFormData(),this.setButtonStates(),this.updateComplete.then(async()=>{await this.processConditionalFields();let e=new URLSearchParams(window.location.search);if(this.readOnly===!1&&e.get(`validate`)===`true`){let e=this.formElement;this.isFormValid=await C(e);let n=this.validateMinimumFileUploads();if(!n.isValid){this.isFormValid=!1;let e=n.failedGroups[0];d({summary:t.t(`errors.error-title`),body:t.t(`render-form.forms.media-transparency-form.min-file-upload-error`,{currentCount:e.currentCount,minCount:e.minCount}),type:`warning`,timeout:0})}this.isFormValid||(this.scrollToFirstInvalidField(e,!0),d({summary:t.t(`errors.warning-title`),body:t.t(`errors.form-validation-warning-notification-body`),type:`warning`,timeout:0}))}}))}updated(e){super.updated(e),e.has(`data`)&&(this._formHeaderObserved=!1,this.stickyHeaderObserver())}static get styles(){return[super.styles,c`
                @layer theme, utility, formalize, print;
                @layer theme {
                    ${f(!1)}
                    ${u()}
                    ${l()}
                }
                @layer formalize {
                    ${g()}
                }
            `]}async processFormData(){let e=this._i18n;try{if(this.currentSubmission=this.data,this.submissionId=this.data.identifier,this.lastModifiedCreatorId=this.data.lastModifiedById,this.formData=JSON.parse(this.data.dataFeedElement),this.submissionBinaryState=this.data.submissionState,this.submissionGrantedActions=this.data.grantedActions,this.selectedTags=this.data.tags,this.formData?.category&&this.setSubcategoryItemsByCategoryValue(this.formData.category),this.formData?.advertisementSubcategory&&this.setMediaNameItemsByValue(this.formData.advertisementSubcategory),this.formData?.mediaName===j&&(this.conditionalFields.mediaName=!0),this.formData?.category===`Out of Home`){this.conditionalFields.mediaName=!1,this.conditionalFields.mediumOwnersName=!1;let e=this.formData.otherMediumOwnersName,t=this.getMediaNameItems();e&&e in t?this.conditionalFields.outOfHomeOtherMediunOwner=!1:(this.conditionalFields.outOfHomeOtherMediunOwner=!0,e&&e!==j&&(this.formData.otherMediumOwnersNameCustom=e,this.formData.otherMediumOwnersName=j))}this.initializeFileGroups();let t={};for(let e of this.data.submittedFiles)t[e.fileAttributeName]||(t[e.fileAttributeName]=[]),t[e.fileAttributeName].push(e);this.fileUploadCounts={};for(let[e,n]of Object.entries(t)){this.fileUploadCounts[e]=n.length;let t=this.getOrCreateFileGroup(e);t.submittedFiles=await this.transformApiResponseToFile(n)}switch(Number(this.submissionBinaryState)){case 1:this.currentState=i.DRAFT;break;case 4:this.currentState=i.SUBMITTED;break;default:this.currentState=null}if(this.formData)try{let t=await this.apiGetUserDetails(this.lastModifiedCreatorId);if(!t.ok)d({summary:e.t(`errors.error-title`),body:e.t(`errors.failed-to-get-last-modifier-details`,{status:t.status}),type:`danger`,timeout:0});else{let e=await t.json();this.lastModifiedCreatorName=`${e?.givenName} ${e?.familyName}`}}catch(t){console.log(t),d({summary:e.t(`errors.error-title`),body:e.t(`errors.failed-to-get-last-modifier-details`),type:`danger`,timeout:0})}}catch(e){console.error(`Error parsing submission data:`,e)}}_cleanFormDataBeforeSubmit(e){e.otherMediumOwnersNameCustom!==void 0&&(e.otherMediumOwnersName=e.otherMediumOwnersNameCustom,delete e.otherMediumOwnersNameCustom),e.mediaName===M&&(e.mediaName=``),e.otherMediumOwnersName===M&&(e.otherMediumOwnersName=``)}async handleFormSubmission(e){let t=this._i18n,n=e.detail;this._cleanFormDataBeforeSubmit(n.formData);let r=this.validateMinimumFileUploads();if(!r.isValid){let e=r.failedGroups[0];d({summary:t.t(`errors.error-title`),body:`${t.t(`render-form.forms.media-transparency-form.min-file-upload-error`,{currentCount:e.currentCount,minCount:e.minCount})}`,type:`danger`,timeout:0}),this.saveButtonEnabled=!0;return}let a=!1;n.submissionId&&(a=!0),n.formData.identifier=a?this.lastModifiedCreatorId:this.getUserId();let s=new FormData;for(let[e,t]of Object.entries(this.filesByGroup))t.filesToSubmit.size>0&&t.filesToSubmit.forEach(t=>{s.append(`${e}[]`,t,t.name)}),t.filesToRemove.size>0&&t.filesToRemove.forEach((e,t)=>{s.append(`submittedFiles[${t}]`,`null`)});s.append(`form`,`/formalize/forms/`+this.formIdentifier),s.append(`dataFeedElement`,JSON.stringify(n.formData)),s.append(`submissionState`,String(o.SUBMITTED));let c=Object.values(this.selectedTags);s.append(`tags`,JSON.stringify(c));let l=a?`PATCH`:`POST`,u=this._buildRequestOptions(s,l),f=this._buildSubmissionUrl(a?this.submissionId:null),p={};for(let[e,t]of Object.entries(this.filesByGroup))p[e]={submittedFiles:new Map(t.submittedFiles),filesToSubmit:new Map(t.filesToSubmit),filesToRemove:new Map(t.filesToRemove)};try{let e=await fetch(f,u);if(!e.ok)this.submissionError=!0,await this.displayErrors(e);else{this.submissionError=!1,this.currentState=i.SUBMITTED,this.submitted=!0;for(let e of Object.keys(this.filesByGroup))this.filesByGroup[e].filesToSubmit=/* @__PURE__ */ new Map,this.filesByGroup[e].filesToRemove=/* @__PURE__ */ new Map;this.hideForm=!0,this.disableLeavePageWarning(),d({summary:t.t(`success.success-title`),body:t.t(`success.form-submitted-successfully`),type:`success`,timeout:5}),this.dispatchEvent(new CustomEvent(`dbpFormDataUpdated`,{detail:{needUpdate:!0},bubbles:!0,composed:!0}))}}catch(e){console.error(e);for(let[e,t]of Object.entries(p))this.filesByGroup[e]=t;d({summary:t.t(`errors.error-title`),body:t.t(`errors.unknown-error-on-form-submission`),type:`danger`,timeout:0})}}async handleFormSaveSubmission(e){let t=this._i18n;if(!e.detail.submissionId)return;let n=e.detail;this._cleanFormDataBeforeSubmit(n.formData),n.formData.identifier=this.lastModifiedCreatorId;let r=new FormData;for(let[e,t]of Object.entries(this.filesByGroup))t.filesToSubmit.size>0&&t.filesToSubmit.forEach(t=>{r.append(`${e}[]`,t,t.name)}),t.filesToRemove.size>0&&t.filesToRemove.forEach((e,t)=>{r.append(`submittedFiles[${t}]`,`null`)});r.append(`dataFeedElement`,JSON.stringify(n.formData));let i=Object.values(this.selectedTags);r.append(`tags`,JSON.stringify(i));let a=this._buildRequestOptions(r,`PATCH`),o=this._buildSubmissionUrl(e.detail.submissionId),s={};for(let[e,t]of Object.entries(this.filesByGroup))s[e]={submittedFiles:new Map(t.submittedFiles),filesToSubmit:new Map(t.filesToSubmit),filesToRemove:new Map(t.filesToRemove)};try{let e=await fetch(o,a);if(!e.ok)await this.displayErrors(e),this.submissionIsSaved=!1;else{let n=await e.json(),r={};for(let e of n.submittedFiles)r[e.fileAttributeName]||(r[e.fileAttributeName]=[]),r[e.fileAttributeName].push(e);for(let[e,t]of Object.entries(r)){let n=this.getOrCreateFileGroup(e);n.submittedFiles=await this.transformApiResponseToFile(t),n.filesToSubmit=/* @__PURE__ */ new Map,n.filesToRemove=/* @__PURE__ */ new Map}this.submissionIsSaved=!0,this.dispatchEvent(new CustomEvent(`dbpFormDataUpdated`,{detail:{needUpdate:!0},bubbles:!0,composed:!0})),d({summary:t.t(`success.success-title`),body:t.t(`success.form-saved-successfully`),type:`success`,timeout:5})}}catch(e){for(let[e,t]of Object.entries(s))this.filesByGroup[e]=t;this.submissionIsSaved=!1,this.requestUpdate(),console.error(e),d({summary:t.t(`errors.error-title`),body:t.t(`errors.unknown-error-on-save-submission`),type:`danger`,timeout:0})}}async handleSaveDraft(e){let t=this._i18n,n=e.detail;this._cleanFormDataBeforeSubmit(n.formData);let r=!1;n.submissionId&&(r=!0),n.formData.identifier=r?this.lastModifiedCreatorId:this.getUserId();let i=new FormData;for(let[e,t]of Object.entries(this.filesByGroup))t.filesToSubmit.size>0&&t.filesToSubmit.forEach(t=>{i.append(`${e}[]`,t,t.name)}),t.filesToRemove.size>0&&t.filesToRemove.forEach((e,t)=>{i.append(`submittedFiles[${t}]`,`null`)});i.append(`form`,`/formalize/forms/`+this.formIdentifier),i.append(`dataFeedElement`,JSON.stringify(n.formData)),i.append(`submissionState`,String(o.DRAFT));let s=Object.values(this.selectedTags);i.append(`tags`,JSON.stringify(s));let c=r?`PATCH`:`POST`,l=this._buildRequestOptions(i,c),u=this._buildSubmissionUrl(r?this.submissionId:null),f={};for(let[e,t]of Object.entries(this.filesByGroup))f[e]={submittedFiles:new Map(t.submittedFiles),filesToSubmit:new Map(t.filesToSubmit),filesToRemove:new Map(t.filesToRemove)};try{let e=await fetch(u,l),n=await e.json();if(!e.ok)d({summary:t.t(`errors.error-title`),body:t.t(`errors.failed-to-save-draft`,{status:e.status,detail:n.detail}),type:`danger`,timeout:0});else{this.data=n,this.newSubmissionId=n.identifier,this.submissionBinaryState=n.submissionState;let e={};for(let t of n.submittedFiles)e[t.fileAttributeName]||(e[t.fileAttributeName]=[]),e[t.fileAttributeName].push(t);for(let[t,n]of Object.entries(e)){let e=this.getOrCreateFileGroup(t);e.submittedFiles=await this.transformApiResponseToFile(n),e.filesToSubmit=/* @__PURE__ */ new Map,e.filesToRemove=/* @__PURE__ */ new Map}let t=a(this.formUrlSlug,this.lang)+`/${this.newSubmissionId}`;window.history.pushState({},``,t.toString()),this.disableLeavePageWarning(),this.redirectToReadonlyForm(),this.dispatchEvent(new CustomEvent(`dbpFormDataUpdated`,{detail:{needUpdate:!0},bubbles:!0,composed:!0}))}}catch(e){for(let[e,t]of Object.entries(f))this.filesByGroup[e]=t;this.requestUpdate(),console.error(e),d({summary:t.t(`errors.error-title`),body:t.t(`errors.unknown-error-on-save-draft`),type:`danger`,timeout:0})}}async handleChangeEvents(e){if(super.handleChangeEvents(e),e.detail&&e.detail.option&&e.detail.value){let t=e.detail.option,n=e.detail.value;if(t.value===`download`&&n===`download`){this.downloadAllFiles();return}if(t.value===`edit-permissions`&&n===`edit-permissions`){this._(`#grant-permission-dialog`).open();return}}if(!this.readOnly){await this.updateComplete;let e=await C(this.formElement,!0),t=this.validateMinimumFileUploads();this.isFormValid=e&&t.isValid}}downloadAllFiles(){let e=this.getFileGroupsFromSchema().flatMap(e=>{let t=this.getOrCreateFileGroup(e);return Array.from(t.submittedFiles.values())});this._(`#file-sink`).files=e}async handleFormDeleteSubmission(t){let n=this._i18n,r=t.detail.submissionId;if(!r){d({summary:n.t(`errors.error-title`),body:n.t(`errors.no-submission-id-provided`),type:`danger`,timeout:0});return}if(await e(this))try{let e=await fetch(this.entryPointUrl+`/formalize/submissions/${r}`,{method:`DELETE`,headers:{Authorization:`Bearer `+this.getToken()}});e.ok?(this.wasDeleteSubmissionSuccessful=!0,this.deleteSubmissionError=!1):(this.deleteSubmissionError=!0,d({summary:n.t(`errors.error-title`),body:n.t(`errors.failed-to-delete-submission-status`,{status:e.status}),type:`danger`,timeout:0}))}catch(e){console.error(e),d({summary:n.t(`errors.error-title`),body:n.t(`errors.unknown-error-on-delete-submission`),type:`danger`,timeout:0})}finally{if(this.wasDeleteSubmissionSuccessful){d({summary:n.t(`success.success-title`),body:n.t(`success.form-submission-deleted-successfully`),type:`success`,timeout:5});let e=a(this.formUrlSlug,this.lang);window.history.pushState({},``,e.toString()),this.resetForm(t),this.sendSetPropertyEvent(`routing-url`,`/${this.formUrlSlug}`)}}}validateMinimumFileUploads(){let e=[];if(this.fileUploadLimits.minFileUploadCount)for(let[t,n]of Object.entries(this.fileUploadLimits.minFileUploadCount)){let r=(this.filesByGroup[t]?.submittedFiles.size||0)+(this.filesByGroup[t]?.filesToSubmit.size||0);r<n&&e.push({fileGroup:t,currentCount:r,minCount:n})}return{isValid:e.length===0,failedGroups:e}}renderFileUploadGroup(e){let t=this._i18n;return s`
            <div class="file-upload-container">
                <div class="file-upload-title-container">
                    <h4 class="attachments-title">
                        ${t.t(`render-form.forms.media-transparency-form.attachments-title`)}
                        ${this.fileUploadLimits?.minFileUploadCount?.[e]>0?s`
                                      <span class="required-mark">*</span>
                                  `:``}
                    </h4>

                    <span class="file-upload-limit-warning">
                        ${t.t(`render-form.download-widget.file-upload-count-limit-warning`,{count:this.fileUploadLimits?.allowedFileUploadCount?.[e]})}
                        ${t.t(`render-form.download-widget.file-upload-size-limit-warning`,{size:this.fileUploadLimits?.fileSizeLimit?.[e]})}
                    </span>

                    <dbp-translated subscribe="lang">
                        <div slot="de">
                            <p>Bitte benennen Sie Ihr Sujet nach folgenden Kriterien:</p>
                            <ol>
                                <li>Fortlaufende zweistellige Nummer: 01, 02, 03, &hellip;</li>
                                <li>Abkürzung der OE/Institutes/ &hellip;</li>
                                <li>Kategorie</li>
                                <li>Medium</li>
                                <li>Thema</li>
                            </ol>
                            <p>
                                Zum Beispiel:
                                <code>01_KM_Print_HelleKoepfe_DerGrazer_Motorenforschung.pdf</code>
                            </p>

                            <p>Punkte 2-5 dürfen keine Ziffern enthalten!</p>
                            <p>Die zulässige Dateiformate sind PDF, JPG, PNG, MP3 und MP4.</p>
                        </div>
                        <div slot="en">
                            <p>Please name your file according to the following criteria:</p>
                            <ol>
                                <li>Sequential two-digit number: 01, 02, 03, &hellip;</li>
                                <li>Abbreviation of the organizational unit/institute/ &hellip;</li>
                                <li>Category</li>
                                <li>Medium</li>
                                <li>Topic</li>
                            </ol>
                            <p>
                                For example:
                                <code>01_KM_Print_HelleKoepfe_DerGrazer_Motorenforschung.pdf</code>
                            </p>
                            <p>Items 2–5 must not contain any numbers!</p>
                            <p>The accepted file formats are PDF, JPG, PNG, MP3, and MP4.</p>
                        </div>
                    </dbp-translated>
                </div>

                <div class="uploaded-files">${this.renderAttachedFilesHtml(e)}</div>

                <button
                    class="button is-secondary upload-button upload-button--attachment"
                    .disabled=${this.fileUploadCounts[e]>=this.fileUploadLimits?.allowedFileUploadCount?.[e]&&this.filesByGroup[`Sujet-Speichername`]?.filesToRemove?.size===0}
                    @click="${t=>{this.currentUploadGroup=e,this.openFilePicker(t)}}">
                    <dbp-icon name="upload" aria-hidden="true"></dbp-icon>
                    ${isNaN(this.fileUploadLimits?.allowedFileUploadCount?.[e])?t.t(`render-form.download-widget.upload-file-button-label-no-limit`):t.t(`render-form.download-widget.upload-file-button-label`,{count:this.fileUploadLimits?.allowedFileUploadCount?.[e]})}
                </button>
            </div>
        `}renderFileViewGroup(e){let t=this._i18n;return s`
            <div class="file-upload-container">
                <h4 class="attachments-title">
                    ${t.t(`render-form.download-widget.attachments-title`)}
                </h4>
                <div class="uploaded-files">${this.renderAttachedFilesHtml(e)}</div>
            </div>
        `}categoryHasSubcategories(e){let t=F[e];return!!t&&!(`_items`in t)}getCategoryItems(){let e=this._i18n,t={};return Object.keys(F).forEach(n=>{let r=P[n]??`render-form.forms.media-transparency-form.categories-${this.camelToKebab(n)}`;t[n]=e.t(r)}),t}getCategoriesWithSubcategories(){return Object.keys(F).filter(e=>this.categoryHasSubcategories(e))}camelToKebab(e){return e.replace(/([a-z0-9])([A-Z])/g,`$1-$2`).toLowerCase()}getSubcategoryItems(){let e=this._i18n;if(!this.selectedCategory||!this.categoryHasSubcategories(this.selectedCategory))return{};let t={};return Object.keys(F[this.selectedCategory]).forEach(n=>{let r=N[n]??`render-form.forms.media-transparency-form.sub-categories-${this.camelToKebab(n)}`;t[n]=e.t(r)}),t}getMediaNameItems(){let e=this._i18n,t=this.categoryHasSubcategories(this.selectedCategory)?this.formData?.advertisementSubcategory:`_items`,n=F[this.selectedCategory]?.[t]||{};if(Object.keys(n).length===0)return{[j]:j};let r={[M]:e.t(`render-form.forms.media-transparency-form.please-select-media`)};return Object.keys(n).forEach(e=>{r[e]=e}),(t!==j||this.selectedCategory===`Out of Home`)&&(r[j]=j),r}getDeadlinePeriodItems(){let e=this._i18n,t={},n=(/* @__PURE__ */ new Date()).getFullYear(),r=n+1;t[``]=e.t(`render-form.forms.media-transparency-form.please-select-deadline`);for(let e=n;e<=r;e++)t[`${e}/1`]=`${e}/1`,t[`${e}/2`]=`${e}/2`;return t}setSubcategoryItemsByCategoryValue(e){this.selectedCategory=e,this.categoryHasSubcategories(e)||(this.conditionalFields.advertisementSubcategory=!0),this.conditionalFields.mediaName=!1}setSubcategoryItems(e){let t=e.currentTarget.value;if(typeof t!=`string`)return;this.setSubcategoryItemsByCategoryValue(t);let n=this.formData;n.advertisementSubcategory=``,n.mediumOwnersName=``,n.otherMediumName=``,n.otherMediumOwnersName=``,this.categoryHasSubcategories(t)?(n.mediaName=M,this.conditionalFields.advertisementSubcategory=!1,this.updateComplete.then(async()=>{await this.uncheckRadioButtons()})):Object.keys(F[t]._items).length>0?(n.mediaName=M,this.conditionalFields.mediaName=!1):(n.mediaName=j,this.conditionalFields.mediaName=!0),this.requestUpdate()}setMediaNameItemsByValue(e){this.formData&&(this.formData.advertisementSubcategory=e),this.conditionalFields.advertisementSubcategory=!0,this.requestUpdate()}getOwnerForMediaName(e){let t=F[this.selectedCategory];return t?t[this.categoryHasSubcategories(this.selectedCategory)?this.formData.advertisementSubcategory:`_items`]?.[e]??null:null}async uncheckRadioButtons(){let e=this._(`[name="advertisementSubcategory"]`);if(e){await e.updateComplete;let t=e.shadowRoot?.querySelectorAll(`input[type="radio"]`);t&&t.forEach(e=>{e.checked=!1})}}render(){return s`
            ${this.readOnly?s`
                          ${this.renderFormViews()}
                      `:s`
                          ${this.renderFormElements()}
                      `}
        `}renderFormElements(){let e=this._i18n,n=this.formData||{};return s`
            <form
                id="media-transparency-form"
                aria-labelledby="form-title"
                class="${p({hidden:this.hideForm,"formalize-form":!0,"media-transparency-form":!0,"readonly-mode":this.readOnly,"edit-mode":!this.readOnly})}">
                <div class="form-header">${this.getButtonRowHtml()}</div>

                ${this.submissionIsSaved&&(this.canUserSubmitSubmission()||this.areSubmissionReadableAfterSubmission())?s`
                              <div class="after-submission-button-container after-saving">
                                  ${this.canUserSubmitSubmission()?s`
                                                <a
                                                    href="${a(this.formUrlSlug,this.lang)}"
                                                    class="button button--new-submission"
                                                    @click="${()=>{this.disableLeavePageWarning()}}">
                                                    <dbp-icon
                                                        name="plus"
                                                        aria-hidden="true"></dbp-icon>
                                                    ${e.t(`success.create-new-submission-button-label`)}
                                                </a>
                                            `:``}
                                  ${this.areSubmissionReadableAfterSubmission()?s`
                                                <a
                                                    href="${t(this.formIdentifier,this.lang)}"
                                                    class="button button--back-to-submissions-list"
                                                    @click="${()=>{this.disableLeavePageWarning()}}">
                                                    <dbp-icon
                                                        name="list"
                                                        aria-hidden="true"></dbp-icon>
                                                    ${e.t(`success.back-to-submissions-list-button-label`)}
                                                </a>
                                            `:``}
                              </div>
                          `:``}
                <h2 class="form-title">
                    ${e.t(`render-form.forms.media-transparency-form.title`)}
                </h2>

                <div class="form-description">
                    <dbp-translated subscribe="lang">
                        <div slot="de">
                            <p>
                                In diesem Formular können Sie Ihre Werbemaßnahmen eintragen, um die
                                Transparenz von Werbung an der TU Graz zu erhöhen. Bitte füllen Sie
                                alle Pflichtfelder aus (gekennzeichnet mit einem roten Stern) und
                                laden Sie die erforderlichen Dateien hoch, damit Ihre Einreichung
                                bearbeitet werden kann. Bei Fragen, melden Sie sich bitte bei
                                <a href="mailto:ulla.lehrmayer@tugraz.at" target="_blank">
                                    Ulla Lehrmayer
                                </a>
                                .
                            </p>
                        </div>
                        <div slot="en">
                            <p>
                                In this form, you can enter your advertising activities to increase
                                the transparency of advertising at TU Graz. Please fill in all
                                required fields (marked with a red asterisk) and upload the
                                necessary files to ensure that your submission can be processed. If
                                you have any questions, please contact
                                <a href="mailto:ulla.lehrmayer@tugraz.at" target="_blank">
                                    Ulla Lehrmayer
                                </a>
                                .
                            </p>
                        </div>
                    </dbp-translated>
                </div>

                <p>
                    <span class="red-marked-asterisk">
                        ${e.t(`render-form.required-files-asterisk`)}
                    </span>
                    ${e.t(`render-form.required-files-text`)}
                </p>

                <dbp-form-enum-element
                    subscribe="lang"
                    name="category"
                    data-condition="${JSON.stringify(this.getCategoriesWithSubcategories())}"
                    label="${e.t(`render-form.forms.media-transparency-form.field-category-label`)}"
                    display-mode="list"
                    .items=${this.getCategoryItems()}
                    @change=${e=>{this.setSubcategoryItems(e)}}
                    .value=${n.category||``}
                    required></dbp-form-enum-element>

                ${this.conditionalFields.category?s`
                              ${Object.keys(this.getSubcategoryItems()).length>0?s`
                                            <dbp-form-enum-element
                                                class="${p({"fade-in":Object.keys(this.getSubcategoryItems()).length>0})}"
                                                subscribe="lang"
                                                data-condition="!Sonstiges"
                                                name="advertisementSubcategory"
                                                label="${e.t(`render-form.forms.media-transparency-form.field-advertisement-subcategory-label`)}"
                                                display-mode="list"
                                                .items=${this.getSubcategoryItems()}
                                                .value=${n.advertisementSubcategory||``}
                                                @change=${e=>{this.setMediaNameItemsByValue(e.currentTarget.value);let t=F[this.selectedCategory]?.[e.currentTarget.value]||{};Object.keys(t).length===0?(n.mediaName=j,this.conditionalFields.mediaName=!0):(n.mediaName=M,this.conditionalFields.mediaName=!1),n.mediumOwnersName=``,n.otherMediumName=``,n.otherMediumOwnersName=``,this.requestUpdate()}}
                                                required></dbp-form-enum-element>
                                        `:``}
                          `:``}
                ${this.conditionalFields.advertisementSubcategory?s`
                              <dbp-form-enum-element
                                  subscribe="lang"
                                  name="mediaName"
                                  data-condition="Sonstiges"
                                  label="${e.t(`render-form.forms.media-transparency-form.field-media-name-label`)}"
                                  display-mode="dropdown"
                                  .items=${this.getMediaNameItems()}
                                  .customValidator=${t=>t===M?[e.t(`render-form.forms.media-transparency-form.media-name-validation-error`)]:[]}
                                  @change=${e=>{let t=e.currentTarget.value;if(n.mediaName=t,t===j||t===M)this.conditionalFields.mediaName=!0,n.mediumOwnersName=``;else{this.conditionalFields.mediaName=!1;let e=this.getOwnerForMediaName(t);n.mediumOwnersName=e??``}this.requestUpdate()}}
                                  .value=${n.mediaName||M}
                                  required></dbp-form-enum-element>

                              ${this.conditionalFields.mediaName?``:s`
                                            <dbp-form-string-element
                                                subscribe="lang"
                                                name="mediumOwnersName"
                                                maxlength="1000"
                                                label="${e.t(`render-form.forms.media-transparency-form.field-media-owners-name-label`)}"
                                                disabled
                                                required
                                                .value=${n.mediumOwnersName||``}></dbp-form-string-element>
                                        `}
                          `:``}
                ${this.conditionalFields.mediaName?s`
                              <dbp-form-string-element
                                  subscribe="lang"
                                  name="otherMediumName"
                                  label="${e.t(`render-form.forms.media-transparency-form.field-other-medium-name-label`)}"
                                  required
                                  maxlength="1000"
                                  .value=${n.otherMediumName||``}></dbp-form-string-element>

                              <dbp-form-string-element
                                  subscribe="lang"
                                  name="otherMediumOwnersName"
                                  label="${e.t(`render-form.forms.media-transparency-form.field-other-medium-owners-name-label`)}"
                                  required
                                  maxlength="1000"
                                  .value=${n.otherMediumOwnersName||``}></dbp-form-string-element>
                          `:``}
                ${n.category===`Out of Home`&&n.advertisementSubcategory===`Sonstiges`?s`
                              <div
                                  style="visibility:hidden; height:0; margin:0; padding:0; border:0;">
                                  <dbp-form-string-element
                                      subscribe="lang"
                                      name="otherMediumName"
                                      label="${e.t(`render-form.forms.media-transparency-form.field-other-medium-name-label`)}"
                                      maxlength="1000"
                                      value=""></dbp-form-string-element>
                              </div>

                              <dbp-form-enum-element
                                  subscribe="lang"
                                  name="otherMediumOwnersName"
                                  label="${e.t(`render-form.forms.media-transparency-form.field-other-medium-owners-name-label`)}"
                                  display-mode="dropdown"
                                  .items=${this.getMediaNameItems()}
                                  @change=${e=>{let t=e.currentTarget.value;if(t===j||t===M)this.conditionalFields.outOfHomeOtherMediunOwner=!0,n.otherMediumOwnersName=``,n.otherMediumOwnersNameCustom=``;else{this.conditionalFields.outOfHomeOtherMediunOwner=!1,n.otherMediumOwnersNameCustom=``;let e=this.getOwnerForMediaName(t);n.otherMediumOwnersName=e??``}this.requestUpdate()}}
                                  .customValidator=${t=>t===M?[e.t(`render-form.forms.media-transparency-form.media-name-validation-error`)]:[]}
                                  .value=${n.otherMediumOwnersName||M}
                                  required></dbp-form-enum-element>

                              ${this.conditionalFields.outOfHomeOtherMediunOwner?s`
                                            <dbp-form-string-element
                                                subscribe="lang"
                                                name="otherMediumOwnersNameCustom"
                                                label="${e.t(`render-form.forms.media-transparency-form.field-media-owners-name-label`)}"
                                                required
                                                maxlength="1000"
                                                .value=${n.otherMediumOwnersNameCustom||``}></dbp-form-string-element>
                                        `:``}
                          `:``}

                <dbp-form-string-element
                    subscribe="lang"
                    name="amountInEuro"
                    maxlength="20"
                    label="${e.t(`render-form.forms.media-transparency-form.field-amount-in-euro-label`)}"
                    description="${e.t(`render-form.forms.media-transparency-form.field-amount-in-euro-description`)}"
                    .customValidator=${t=>/^\d+(?:,\d{1,2})?$/.test(t)?null:e.t(`render-form.forms.media-transparency-form.validation-amount-in-euro-label`)}
                    .value=${n.amountInEuro||``}
                    required></dbp-form-string-element>

                <dbp-form-string-element
                    subscribe="lang"
                    name="campaignTitle"
                    maxlength="1000"
                    label="${e.t(`render-form.forms.media-transparency-form.field-campaign-title-label`)}"
                    .value=${n.campaignTitle||``}></dbp-form-string-element>

                <!-- Notes -->
                <dbp-form-string-element
                    subscribe="lang"
                    name="notes"
                    rows="5"
                    maxlength="1000"
                    label="${e.t(`render-form.forms.media-transparency-form.field-notes-label`)}"
                    .value=${n.notes||``}></dbp-form-string-element>

                <!-- Reporting deadline period -->
                <dbp-form-enum-element
                    subscribe="lang"
                    name="reportingDeadline"
                    .items=${this.getDeadlinePeriodItems()}
                    required
                    label="${e.t(`render-form.forms.media-transparency-form.field-reporting-deadline-period-label`)}"
                    description="${e.t(`render-form.forms.media-transparency-form.field-reporting-deadline-period-description`)}"
                    .customValidator=${t=>t===`Bitte wählen Sie den Anmeldezeitraum aus`||t===`Please select deadline period`?[e.t(`render-form.forms.media-transparency-form.reporting-deadline-validation-error`)]:[]}
                    .value=${n.reportingDeadline||``}></dbp-form-enum-element>

                ${this.getFileGroupsFromSchema().map(e=>this.renderFileUploadGroup(e))}
            </form>

            <dbp-file-source
                id="file-source"
                class="file-source"
                lang="${this.lang}"
                allowed-mime-types="application/pdf,image/jpeg,image/png,image/gif,video/mp4,video/mpeg,
                    video/webm,audio/mpeg,audio/ogg,audio/flac,audio/mp4"
                max-file-size="100000"
                number-of-files="1"
                enabled-targets="local,clipboard,nextcloud"
                subscribe="nextcloud-auth-url,nextcloud-web-dav-url,nextcloud-name,nextcloud-file-url"></dbp-file-source>

            <dbp-file-sink
                id="file-sink"
                class="file-sink"
                lang="${this.lang}"
                decompress-zip
                enabled-targets="local,clipboard,nextcloud"
                filename="media-transparency-form-${this.formData?.id||``}-attachments.zip"
                subscribe="nextcloud-auth-url,nextcloud-web-dav-url,nextcloud-name,nextcloud-file-url"></dbp-file-sink>

            <dbp-modal
                id="pdf-view-modal"
                class="pdf-view-modal"
                modal-id="pdf-viewer-modal"
                subscribe="lang">
                <div slot="content">
                    <dbp-pdf-viewer
                        id="dbp-pdf-viewer"
                        lang="${this.lang}"
                        auto-resize="cover"></dbp-pdf-viewer>
                </div>
            </dbp-modal>

            ${this.renderResult(this.submitted)}
        `}renderFormViews(){let e=this._i18n,t=this.formData||{};return s`
            <form
                id="media-transparency-form"
                aria-labelledby="form-title"
                class="${p({hidden:this.hideForm,"formalize-form":!0,"media-transparency-form":!0,"readonly-mode":this.readOnly,"edit-mode":!this.readOnly})}">
                <div class="form-header">${this.getButtonRowHtml()}</div>

                <h2 class="form-title">
                    ${e.t(`render-form.forms.media-transparency-form.title`)}
                </h2>

                <dbp-form-enum-view
                    subscribe="lang"
                    name="category"
                    data-condition="${JSON.stringify(this.getCategoriesWithSubcategories())}"
                    label="${e.t(`render-form.forms.media-transparency-form.field-category-label`)}"
                    display-mode="list"
                    .value=${t.category||``}></dbp-form-enum-view>

                ${this.conditionalFields.advertisementSubcategory&&Object.keys(this.getSubcategoryItems()).length>0?s`
                              <dbp-form-enum-view
                                  class="${p({"fade-in":Object.keys(this.getSubcategoryItems()).length>0})}"
                                  subscribe="lang"
                                  name="advertisementSubcategory"
                                  label="${e.t(`render-form.forms.media-transparency-form.field-advertisement-subcategory-label`)}"
                                  display-mode="list"
                                  .items=${this.getSubcategoryItems()}
                                  .value=${t.advertisementSubcategory||``}></dbp-form-enum-view>
                          `:``}
                ${t.mediaName?s`
                              <dbp-form-enum-view
                                  subscribe="lang"
                                  name="mediaName"
                                  data-condition="!Sonstiges"
                                  label="${e.t(`render-form.forms.media-transparency-form.field-media-name-label`)}"
                                  display-mode="dropdown"
                                  .value=${t.mediaName||``}></dbp-form-enum-view>
                          `:``}
                ${t.mediumOwnersName?s`
                              <dbp-form-string-view
                                  subscribe="lang"
                                  name="mediumOwnersName"
                                  label="${e.t(`render-form.forms.media-transparency-form.field-media-owners-name-label`)}"
                                  .value=${t.mediumOwnersName||``}></dbp-form-string-view>
                          `:``}
                ${t.otherMediumName||t.otherMediumOwnersName?s`
                              <dbp-form-string-view
                                  subscribe="lang"
                                  name="otherMediumName"
                                  label="${e.t(`render-form.forms.media-transparency-form.field-other-medium-name-label`)}"
                                  .value=${t.otherMediumName||``}></dbp-form-string-view>

                              <dbp-form-string-view
                                  subscribe="lang"
                                  name="otherMediumOwnersName"
                                  label="${e.t(`render-form.forms.media-transparency-form.field-other-medium-owners-name-label`)}"
                                  .value=${t.otherMediumOwnersName||``}></dbp-form-string-view>
                          `:``}

                <dbp-form-string-view
                    subscribe="lang"
                    name="amountInEuro"
                    label="${e.t(`render-form.forms.media-transparency-form.field-amount-in-euro-label`)}"
                    .value=${t.amountInEuro||``}></dbp-form-string-view>

                ${t.campaignTitle?s`
                              <dbp-form-string-view
                                  subscribe="lang"
                                  name="campaignTitle"
                                  label="${e.t(`render-form.forms.media-transparency-form.field-campaign-title-label`)}"
                                  .value=${t.campaignTitle||``}></dbp-form-string-view>
                          `:``}

                <!-- Notes -->
                ${t.notes?s`
                              <dbp-form-string-view
                                  subscribe="lang"
                                  name="notes"
                                  rows="5"
                                  label="${e.t(`render-form.forms.media-transparency-form.field-notes-label`)}"
                                  .value=${t.notes||``}></dbp-form-string-view>
                          `:``}

                <!-- Reporting deadline -->
                ${t.reportingDeadline?s`
                              <dbp-form-enum-view
                                  subscribe="lang"
                                  name="reportingDeadline"
                                  label="${e.t(`render-form.forms.media-transparency-form.field-reporting-deadline-label`)}"
                                  .value=${t.reportingDeadline||``}></dbp-form-enum-view>
                          `:``}
                ${this.getFileGroupsFromSchema().map(e=>this.renderFileViewGroup(e))}
            </form>

            <dbp-file-sink
                id="file-sink"
                class="file-sink"
                lang="${this.lang}"
                decompress-zip
                enabled-targets="local,clipboard,nextcloud"
                filename="media-transparency-form-${this.formData?.id||``}-attachments.zip"
                subscribe="nextcloud-auth-url,nextcloud-web-dav-url,nextcloud-name,nextcloud-file-url"></dbp-file-sink>

            <dbp-modal
                id="pdf-view-modal"
                class="pdf-view-modal"
                modal-id="pdf-viewer-modal"
                subscribe="lang">
                <div slot="content">
                    <dbp-pdf-viewer
                        id="dbp-pdf-viewer"
                        lang="${this.lang}"
                        auto-resize="cover"></dbp-pdf-viewer>
                </div>
            </dbp-modal>

            <dbp-grant-permission-dialog
                id="grant-permission-dialog"
                lang="${this.lang}"
                modal-title="${e.t(`manage-forms.edit-permission-modal-title`)}"
                subscribe="auth"
                entry-point-url="${this.entryPointUrl}"
                resource-identifier="${this.submissionId}"
                resource-class-identifier="DbpRelayFormalizeSubmission"></dbp-grant-permission-dialog>

            <!-- Deletion Confirmation Modal -->
            <dbp-modal
                id="deletion-confirmation-modal--formalize"
                class="modal modal--confirmation"
                modal-id="deletion-confirmation-modal"
                title="${e.t(`manage-forms.delete-confirmation-title`)}"
                subscribe="lang">
                <div slot="content">
                    <p>${e.t(`manage-forms.delete-confirmation-message`)}</p>
                </div>
                <menu slot="footer" class="footer-menu">
                    <dbp-button
                        type="is-secondary"
                        no-spinner-on-click
                        @click="${()=>r(this)}">
                        ${e.t(`manage-forms.abort`)}
                    </dbp-button>
                    <dbp-button
                        type="is-danger"
                        no-spinner-on-click
                        @click="${()=>n(this)}">
                        ${e.t(`manage-forms.delete`)}
                    </dbp-button>
                </menu>
            </dbp-modal>
        `}renderResult(e){let n=this._i18n;return e?s`
                <div class="container">
                    <h2>
                        ${n.t(`render-form.forms.media-transparency-form.submission-result-thanks`)}
                    </h2>
                    <p>
                        ${n.t(`render-form.forms.media-transparency-form.submission-result-notification`)}
                    </p>

                    <div class="after-submission-button-container">
                        ${this.canUserSubmitSubmission()?s`
                                      <a
                                          href="${a(this.formUrlSlug,this.lang)}"
                                          class="button button--new-submission">
                                          <dbp-icon name="plus" aria-hidden="true"></dbp-icon>
                                          ${n.t(`success.create-new-submission-button-label`)}
                                      </a>
                                  `:``}
                        ${this.areSubmissionReadableAfterSubmission()?s`
                                      <a
                                          href="${t(this.formIdentifier,this.lang)}"
                                          class="button button--back-to-submissions-list">
                                          <dbp-icon name="list" aria-hidden="true"></dbp-icon>
                                          ${n.t(`success.back-to-submissions-list-button-label`)}
                                      </a>
                                  `:``}
                    </div>
                </div>
            `:s``}openFilePicker(e){e.preventDefault(),this._(`dbp-file-source`).setAttribute(`dialog-open`,``)}async deleteAttachment(e,t){if(super.deleteAttachment(e,t),!this.readOnly){let e=await C(this.formElement,!0),t=this.validateMinimumFileUploads();this.isFormValid=e&&t.isValid}}async handleFilesToSubmit(e){super.handleFilesToSubmit(e);let t=await C(this.formElement,!0),n=this.validateMinimumFileUploads();this.isFormValid=t&&n.isValid}};export{F as MEDIA_NAME_OWNER_MAPPING,I as default};
//# sourceMappingURL=mediaTransparencyForm.js.map