117 lines
3.3 KiB
Handlebars
117 lines
3.3 KiB
Handlebars
<td class="content">
|
|
{{#if id}}
|
|
<form
|
|
id="edit-form-{{id}}"
|
|
hx-patch="/api/links/{id}"
|
|
hx-ext="path-params"
|
|
hx-vals='{"id":"{{id}}"}'
|
|
hx-select="form"
|
|
hx-swap="outerHTML"
|
|
hx-sync="this:replace"
|
|
class="{{class}}"
|
|
>
|
|
<div>
|
|
<label class="{{#if errors.target}}error{{/if}}">
|
|
Target:
|
|
<input
|
|
id="edit-target-{{id}}"
|
|
name="target"
|
|
type="text"
|
|
placeholder="Target..."
|
|
required="true"
|
|
value="{{target}}"
|
|
hx-preserve="true"
|
|
/>
|
|
{{#if errors.target}}<p class="error">{{errors.target}}</p>{{/if}}
|
|
</label>
|
|
<label class="{{#if errors.address}}error{{/if}}">
|
|
localhost:3000/
|
|
<input
|
|
id="edit-address-{{id}}"
|
|
name="address"
|
|
type="text"
|
|
placeholder="Custom URL..."
|
|
required="true"
|
|
value="{{address}}"
|
|
hx-preserve="true"
|
|
/>
|
|
{{#if errors.address}}<p class="error">{{errors.address}}</p>{{/if}}
|
|
</label>
|
|
<label class="{{#if errors.password}}error{{/if}}">
|
|
Password:
|
|
<input
|
|
id="edit-password-{{id}}"
|
|
name="password"
|
|
type="password"
|
|
placeholder="Password..."
|
|
value="{{#if password}}••••••••{{/if}}"
|
|
hx-preserve="true"
|
|
/>
|
|
{{#if errors.password}}<p class="error">{{errors.password}}</p>{{/if}}
|
|
</label>
|
|
</div>
|
|
<div>
|
|
<label class="{{#if errors.description}}error{{/if}}">
|
|
Description:
|
|
<input
|
|
id="edit-description-{{id}}"
|
|
name="description"
|
|
type="text"
|
|
placeholder="Description..."
|
|
value="{{description}}"
|
|
hx-preserve="true"
|
|
/>
|
|
{{#if errors.description}}<p class="error">{{errors.description}}</p>{{/if}}
|
|
</label>
|
|
<label class="{{#if errors.expire_in}}error{{/if}}">
|
|
Expire in:
|
|
<input
|
|
id="edit-expire_in-{{id}}"
|
|
name="expire_in"
|
|
type="text"
|
|
placeholder="2 minutes/hours/days"
|
|
value="{{relative_expire_in}}"
|
|
hx-preserve="true"
|
|
/>
|
|
{{#if errors.expire_in}}<p class="error">{{errors.expire_in}}</p>{{/if}}
|
|
</label>
|
|
</div>
|
|
<div>
|
|
<button
|
|
type="button"
|
|
onclick="
|
|
const tr = closest('tr');
|
|
if (!tr) return;
|
|
tr.classList.remove('show');
|
|
tr.removeChild(tr.querySelector('.content'));
|
|
"
|
|
>
|
|
Close
|
|
</button>
|
|
<button type="submit" class="primary">
|
|
<span class="reload">
|
|
{{> icons/reload}}
|
|
</span>
|
|
<span class="loader">
|
|
{{> icons/spinner}}
|
|
</span>
|
|
Update
|
|
</button>
|
|
</div>
|
|
<div class="response">
|
|
{{#if error}}
|
|
{{#unless errors}}
|
|
<p class="error">{{error}}</p>
|
|
{{/unless}}
|
|
{{else if success}}
|
|
<p class="success">{{success}}</p>
|
|
{{/if}}
|
|
</div>
|
|
<template>
|
|
{{> links/tr}}
|
|
</template>
|
|
</form>
|
|
{{else}}
|
|
<p class="no-links">No link was found.</p>
|
|
{{/if}}
|
|
</td> |