// SPDX-FileCopyrightText: 2024 John Livingston <https://www.john-livingston.fr/> // // SPDX-License-Identifier: AGPL-3.0-only // FIXME: @stylistic/indent is buggy with strings literrals. /* eslint-disable @stylistic/indent */ import type { AdminFirewallElement } from '../elements/admin-firewall' import type { TemplateResult } from 'lit' import type { DynamicFormHeader, DynamicFormSchema } from '../../../lib/elements/dynamic-table-form' import { maxFirewallFiles, maxFirewallNameLength, maxFirewallFileSize } from 'shared/lib/admin-firewall' import { ptTr } from '../../../lib/directives/translation' import { html } from 'lit' export function tplAdminFirewall (el: AdminFirewallElement): TemplateResult { const tableHeaderList: DynamicFormHeader = { enabled: { colName: ptTr(LOC_PROSODY_FIREWALL_FILE_ENABLED) }, name: { colName: ptTr(LOC_PROSODY_FIREWALL_NAME), description: ptTr(LOC_PROSODY_FIREWALL_NAME_DESC), headerClassList: ['peertube-livechat-admin-firewall-col-name'] }, content: { colName: ptTr(LOC_PROSODY_FIREWALL_CONTENT), headerClassList: ['peertube-livechat-admin-firewall-col-content'] } } const tableSchema: DynamicFormSchema = { enabled: { inputType: 'checkbox', default: true }, name: { inputType: 'text', default: '', maxlength: maxFirewallNameLength }, content: { inputType: 'textarea', default: '', maxlength: maxFirewallFileSize } } return html` <div class="margin-content peertube-plugin-livechat-admin-firewall"> <h1> ${ptTr(LOC_PROSODY_FIREWALL_CONFIGURATION)} </h1> <p> ${ptTr(LOC_PROSODY_FIREWALL_CONFIGURATION_HELP, true)} <livechat-help-button .page=${'documentation/admin/mod_firewall'}> </livechat-help-button> </p> ${ el.firewallConfiguration?.enabled ? '' : html`<p class="peertube-plugin-livechat-warning">${ptTr(LOC_PROSODY_FIREWALL_DISABLED_WARNING, true)}</p>` } <form role="form" @submit=${el.saveConfig} @change=${el.resetValidation}> <livechat-dynamic-table-form .header=${tableHeaderList} .schema=${tableSchema} .maxLines=${maxFirewallFiles} .validation=${el.validationError?.properties} .validationPrefix=${'files'} .rows=${el.firewallConfiguration?.files ?? []} @update=${(e: CustomEvent) => { el.resetValidation(e) if (el.firewallConfiguration) { el.firewallConfiguration.files = e.detail el.requestUpdate('firewallConfiguration') } } } ></livechat-dynamic-table-form> <div class="form-group mt-5"> <button type="reset" @click=${el.reset} ?disabled=${el.actionDisabled}> ${ptTr(LOC_CANCEL)} </button> <button type="submit" ?disabled=${el.actionDisabled}> ${ptTr(LOC_SAVE)} </button> </div> </form> </div>` }