template
This commit is contained in:
parent
ad189b8568
commit
dcae960928
5 changed files with 129 additions and 49 deletions
|
|
@ -78,7 +78,8 @@ export function WhatsAppTemplateDetailPage() {
|
|||
<dl className="wa-tpl-review">
|
||||
<div><dt>Meta template ID</dt><dd>{row.meta_template_id || 'Not assigned yet'}</dd></div>
|
||||
<div><dt>Account</dt><dd>{row.account_name}</dd></div>
|
||||
<div><dt>Phone</dt><dd>{row.display_phone || 'Shared on the account'}</dd></div>
|
||||
<div><dt>Connection</dt><dd>{row.connection_name || row.account_name} · {row.connection_method || 'WhatsApp'}</dd></div>
|
||||
<div><dt>Numbers</dt><dd>{(row.phones && row.phones.length ? row.phones : [row.display_phone]).filter(Boolean).join(', ') || 'Shared on the account'}</dd></div>
|
||||
<div><dt>Category</dt><dd>{row.category.toLowerCase()}</dd></div>
|
||||
<div><dt>Language</dt><dd>{row.language}</dd></div>
|
||||
<div><dt>Quality</dt><dd>{row.quality || 'Not rated yet'}</dd></div>
|
||||
|
|
|
|||
|
|
@ -56,7 +56,7 @@ export function WhatsAppTemplatesPage() {
|
|||
}, [])
|
||||
|
||||
const filtered = useMemo(() => rows.filter((row) => {
|
||||
const haystack = `${row.name} ${row.meta_template_id || ''}`.toLowerCase()
|
||||
const haystack = `${row.name} ${row.meta_template_id || ''} ${(row.phones || []).join(' ')} ${row.display_phone || ''} ${row.connection_name || ''} ${row.account_name || ''}`.toLowerCase()
|
||||
if (search && !haystack.includes(search.toLowerCase())) return false
|
||||
if (category && row.category !== category) return false
|
||||
if (language && row.language !== language) return false
|
||||
|
|
@ -129,7 +129,10 @@ export function WhatsAppTemplatesPage() {
|
|||
<input value={search} onChange={(event) => setSearch(event.target.value)} placeholder="Search by name or ID" aria-label="Search templates" />
|
||||
<select value={accountId} onChange={(event) => { setAccountId(event.target.value); load(event.target.value) }} aria-label="WhatsApp account">
|
||||
<option value="">All accounts</option>
|
||||
{accounts.map((account) => <option key={account.id} value={account.id}>{account.name}</option>)}
|
||||
{accounts.map((account) => {
|
||||
const numbers = account.phones.map((phone) => phone.display_phone).filter(Boolean).join(', ')
|
||||
return <option key={account.id} value={account.id}>{numbers ? `${account.name} · ${numbers}` : account.name}</option>
|
||||
})}
|
||||
</select>
|
||||
<select value={category} onChange={(event) => setCategory(event.target.value)} aria-label="Category">
|
||||
<option value="">Category</option>
|
||||
|
|
@ -156,11 +159,13 @@ export function WhatsAppTemplatesPage() {
|
|||
{!loading && filtered.length > 0 && (
|
||||
<div className="wa-tpl-table">
|
||||
<div className="wa-tpl-row wa-tpl-head">
|
||||
<span>Template name</span><span>Category</span><span>Language</span><span>Status</span><span>Quality</span><span>Messages sent</span><span>Last updated</span><span>Actions</span>
|
||||
<span>Template name</span><span>Number</span><span>Connection</span><span>Category</span><span>Language</span><span>Status</span><span>Quality</span><span>Messages sent</span><span>Last updated</span><span>Actions</span>
|
||||
</div>
|
||||
{filtered.map((row) => (
|
||||
<div className="wa-tpl-row" key={row.id}>
|
||||
<button type="button" className="wa-tpl-name" onClick={() => navigate(`/console/whatsapp/templates/${row.id}`)}>{row.name}</button>
|
||||
<span className="wa-tpl-number">{(row.phones && row.phones.length ? row.phones : [row.display_phone]).filter(Boolean).join(', ') || 'Shared on the account'}</span>
|
||||
<span className="wa-tpl-connection"><strong>{row.connection_name || row.account_name}</strong><small>{row.connection_method}</small></span>
|
||||
<span>{row.category.toLowerCase()}</span>
|
||||
<span>{row.language}</span>
|
||||
<span className={`wa-tpl-status is-${row.status.toLowerCase()}`}>{statusLabel(row.status)}</span>
|
||||
|
|
|
|||
|
|
@ -2014,7 +2014,9 @@ main { padding: 30px clamp(20px, 3vw, 44px) 50px; }
|
|||
.wa-tpl-cards strong { display: block; margin-top: 6px; font-size: 26px; color: #14233b; }
|
||||
.wa-tpl-filters input, .wa-tpl-filters select, .wa-tpl-button input, .wa-tpl-button select, .wa-tpl-samples input { border: 1px solid var(--border); border-radius: 8px; padding: 8px 10px; background: white; }
|
||||
.wa-tpl-table { margin-top: 14px; overflow-x: auto; }
|
||||
.wa-tpl-row { display: grid; grid-template-columns: 1.4fr .8fr .6fr .8fr .6fr .7fr .8fr 1.3fr; gap: 8px; align-items: center; min-width: 860px; padding: 12px 4px; border-top: 1px solid #edf0f4; font-size: 13px; }
|
||||
.wa-tpl-row { display: grid; grid-template-columns: 1.15fr 1fr 1.15fr .7fr .55fr .7fr .55fr .5fr .7fr 1.15fr; gap: 8px; align-items: center; min-width: 1180px; padding: 12px 4px; border-top: 1px solid #edf0f4; font-size: 13px; }
|
||||
.wa-tpl-connection { display: grid; gap: 2px; }
|
||||
.wa-tpl-connection small, .wa-tpl-number { color: #526176; }
|
||||
.wa-tpl-head { border-top: 0; color: #8a95a7; font-size: 11px; font-weight: 700; text-transform: uppercase; }
|
||||
.wa-tpl-name, .wa-tpl-actions button, .wa-tpl-format button, .wa-tpl-tabs button { border: 0; background: transparent; color: #1475ff; padding: 0; font-weight: 600; }
|
||||
.wa-tpl-actions { display: flex; gap: 8px; }
|
||||
|
|
|
|||
|
|
@ -1377,8 +1377,11 @@ export type WaManagedTemplate = {
|
|||
account_id: string
|
||||
account_name: string
|
||||
waba_name: string
|
||||
connection_name: string
|
||||
connection_method: string
|
||||
phone_number_id: string | null
|
||||
display_phone: string
|
||||
phones: string[]
|
||||
meta_template_id: string | null
|
||||
name: string
|
||||
language: string
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue