Zum Hauptinhalt springen

File-Cover Customizing

Customizing​

Diese Anleitung beschreibt, welche Möglichkeiten es gibt, das React-File-Cover-Gadget anzupassen.

warnung

Voraussetzung ist die Library-Version verstionNext oder höher.

tipp

Eine nähere Beschreibung der einzelnen Optionen, die an das Gadget übergeben werden können, ist unter RequestCoverProps zu finden.

Sektionen überschreiben​

Über das options-Objekt, das an das Gadget übergeben wird, können über das Attribut sectionOverwrites einzelne Sektionen überschrieben bzw. durch eigenes HTML ersetzt werden. Das Gadget ist folgendermaßen unterteilt:

Sektionen

export type SectionOverwrites = {
titleSection?: string; // Sektion 1
progressSection?: string; // Sektion 2
commentsSection?: string; // Sektion 3
infoSection?: string; // Sektion 4
fileInfoSection?: string; // Sektion 5
processInfoSection?: string; // Sektion 6
vendorSection?: string; // Sektion 7
verificationSection?: string; // Sektion 8
};

Sektionen hinzufügen​

Zudem gibt es die Möglichkeit, über das Attribut sectionTemplates jeweils nach den Sektionen 1-4 einen eigenen HTML-String einzufügen, ohne den vorhandenen Inhalt zu überschreiben:

export type SectionTemplates = {
titleSection?: string; // zwischen Sektion 1 und 2
progressSection?: string; // zwischen Sektion 2 und 3
commentsSection?: string; // zwischen Sektion 3 und 4
infoSection?: string; // unter Sektion 4
};
tipp

Als Wert wird jeweils ein HTML-String übergeben werden. Für komplexeres HTML bietet es sich an, das HTML mithilfe einer Handlebars-Template im Portalscript zu rendern und als String zu übergeben (Siehe Beispiel). Wird ein leerer String übergeben, wird die entsprechende Sektion nicht angezeigt.

Beispiel​

Dieses Beispiel zeigt, wie man die Freigabeinformationen ausblenden und eine eigene Sektion hinzufügen kann.

1. Handlebar-Template als Custom Property questions.handlebars anlegen​

<div class="cover-section-group">
<div id="questions" class="cover-section">
<div class="cover-section-header">
<h2>Rückfragen</h2>
</div>
<div class="cover-section-body">
<ul class="list flex auto">
<li id="comment">
<label>Rückfragen</label>
{{#each questions}}
<p>{{date}} - {{text}}<br /></p>
{{/each}}
</li>
</ul>
</div>
</div>
<style>
#questions {
margin: 15px 10px;
}
#questions #reasonReject {
color: darkblue;
}
#questions .cover-section-header,
#questions .cover-section-body {
border-left: 5px solid darkblue;
}

#questions .cover-section-header h2 {
color: darkblue;
}

#questions .cover-section-body li > p {
margin-left: 8px;
font-size: 12px;
margin-top: 0px;
}
</style>
</div>

2. Template im Portalscript Gadget_ou.cust.ptpREQ.fieltype.field.cover rendern und als String übergeben​

/* ... some code above */
function getHtmlTemplate() {
const customProperty = context.getCustomProperties("questions.handlebars").first();
return customProperty ? customProperty.value : "";
}

const questionsData = {
questions: [
{
date: "07.03.2024 13:16",
text: "Antwort von: One Unity Admin: Rückfrage beantwortet",
},
{
date: "06.03.2024 11:13",
text: "Rückfrage von: Dale Cooper an: Phillip Jeffries",
},
],
};

const questionsTemplate = getHtmlTemplate();
const compiler = new TemplateCompiler(questionsTemplate);
const questionsHtml = compiler.compile(questionsData);

/* Die Sektion 8 (Freigabeinformationen) wird ausgeblendet */
options.sectionOverwrites = {
verificationSection: "",
};

/* Nach der Sektion 2 (Fortschritt) wird die neue Sektion eingefügt */
options.sectionTemplates = {
progressSection: questionsHtml,
};

return createReactGadget({
gadgetName: "RequestCover",
gadgetOptions: options,
});
/* ... some code below */

3. Ergebnis​

Custom-Cover

Progress-Gadget​

Um die Erscheinung des Fortschritt-Gadgets zu ändern, können bestimmte CSS-Variablen über das Attribut options.customStyles überschrieben werden:

customStyles?: {
gadgetPrimaryColor?: string;
progress?: {
gadgetAnimationSpeed?: string;
iconsSize?: string;
iconsSizeXXL?: string;
inactiveColor?: string;
iconColor?: string;
errorBackgroundColor?: string;
errorBorderColor?: string;
};
};

Beispiel​

Im Skript Gadget_ou.cust.ptpREQ.fieltype.field.cover:

/* ... some code above */
options.customStyles = {
gadgetPrimaryColor: "darkblue",
progress: {
inactiveColor: "lightblue",
iconColor: "rebeccapurple",
},
};

return createReactGadget({
gadgetName: "RequestCover",
gadgetOptions: options,
});
/* ... some code below */

Ergebnis:

Custom-Cover