94 lines
4.3 KiB
HTML
94 lines
4.3 KiB
HTML
{{/* Server-rendered dialogs, fetched with ?dialog=<name> and swapped into
|
|
#modal-host by htmx; modal.js supplies the chrome (backdrop, Escape, drag,
|
|
focus). Each dialog is a form that posts the action it offers, so the client
|
|
never builds action URLs itself. Responses to those posts either redirect
|
|
(HX-Redirect), replace the dialog with the next step (e.g. the merge
|
|
confirmation), or fail with a plain-text error. */}}
|
|
|
|
{{define "delete"}}<div class="modal-backdrop">
|
|
<form class="modal panel panel-floating" role="dialog" aria-modal="true" aria-labelledby="modal-title" hx-post="?delete=1" hx-target="#modal-host">
|
|
<div class="panel-header"><span id="modal-title">Delete page</span></div>
|
|
<div class="panel-body">Delete {{.Path}} and everything inside it?</div>
|
|
<div class="panel-footer">
|
|
<button class="btn danger" type="submit">DELETE</button>
|
|
<button class="btn" type="button" data-modal-close autofocus>CANCEL</button>
|
|
</div>
|
|
</form>
|
|
</div>{{end}}
|
|
|
|
{{define "canvas"}}<div class="modal-backdrop">
|
|
<form class="modal panel panel-floating" role="dialog" aria-modal="true" aria-labelledby="modal-title" hx-post="?canvas" hx-target="#modal-host">
|
|
<div class="panel-header"><span id="modal-title">New canvas — name?</span></div>
|
|
<div class="panel-body">
|
|
<input class="input" type="text" name="name" placeholder="Canvas name" required autofocus />
|
|
</div>
|
|
<div class="panel-footer">
|
|
<button class="btn" type="button" data-modal-close>CANCEL</button>
|
|
<button class="btn" type="submit">CREATE</button>
|
|
</div>
|
|
</form>
|
|
</div>{{end}}
|
|
|
|
{{define "move"}}<div class="modal-backdrop">
|
|
<form class="modal panel panel-floating" role="dialog" aria-modal="true" aria-labelledby="modal-title" hx-post="?move" hx-target="#modal-host">
|
|
<div class="panel-header"><span id="modal-title">Move — new name?</span></div>
|
|
<div class="panel-body">
|
|
<input type="hidden" name="parent" value="{{.Parent}}" />
|
|
<input class="input" type="text" name="name" value="{{.Name}}" placeholder="Page name" required autofocus />
|
|
</div>
|
|
<div class="panel-footer">
|
|
<button class="btn" type="button" data-modal-close>CANCEL</button>
|
|
<button class="btn" type="submit">MOVE</button>
|
|
</div>
|
|
</form>
|
|
</div>{{end}}
|
|
|
|
{{define "merge"}}<div class="modal-backdrop">
|
|
<form class="modal panel panel-floating" role="dialog" aria-modal="true" aria-labelledby="modal-title" hx-post="?move" hx-target="#modal-host">
|
|
<div class="panel-header"><span id="modal-title">Merge folders?</span></div>
|
|
<div class="panel-body">
|
|
The destination folder already exists but has no page of its own. Merge this page and its contents into it?
|
|
<input type="hidden" name="move" value="{{.Dest}}" />
|
|
<input type="hidden" name="merge" value="1" />
|
|
</div>
|
|
<div class="panel-footer">
|
|
<button class="btn" type="button" data-modal-close>CANCEL</button>
|
|
<button class="btn" type="submit" autofocus>MERGE</button>
|
|
</div>
|
|
</form>
|
|
</div>{{end}}
|
|
|
|
{{define "view"}}<div class="modal-backdrop">
|
|
<form class="modal panel panel-floating" role="dialog" aria-modal="true" aria-labelledby="modal-title" hx-post="?settings" hx-target="#modal-host">
|
|
<div class="panel-header"><span id="modal-title">View settings</span></div>
|
|
<div class="panel-body col">
|
|
<fieldset class="col gap-1">
|
|
<legend class="caption">View style</legend>
|
|
<div class="row gap-1 segmented">
|
|
<label class="btn"><input type="radio" name="view" value="list"{{if eq .View "list"}} checked{{end}} />List</label>
|
|
<label class="btn"><input type="radio" name="view" value="thumbnail"{{if eq .View "thumbnail"}} checked{{end}} />Thumbnail</label>
|
|
</div>
|
|
</fieldset>
|
|
<label class="col gap-1">
|
|
<span class="caption">Sort by</span>
|
|
<select class="input" name="sort">
|
|
<option value="name"{{if eq .Sort "name"}} selected{{end}}>Name</option>
|
|
<option value="modified"{{if eq .Sort "modified"}} selected{{end}}>Modified</option>
|
|
<option value="size"{{if eq .Sort "size"}} selected{{end}}>Size</option>
|
|
</select>
|
|
</label>
|
|
<fieldset class="col gap-1">
|
|
<legend class="caption">Order</legend>
|
|
<div class="row gap-1 segmented">
|
|
<label class="btn"><input type="radio" name="order" value="asc"{{if eq .Order "asc"}} checked{{end}} />Asc</label>
|
|
<label class="btn"><input type="radio" name="order" value="desc"{{if eq .Order "desc"}} checked{{end}} />Desc</label>
|
|
</div>
|
|
</fieldset>
|
|
</div>
|
|
<div class="panel-footer">
|
|
<button class="btn" type="button" data-modal-close>CANCEL</button>
|
|
<button class="btn" type="submit" autofocus>SAVE</button>
|
|
</div>
|
|
</form>
|
|
</div>{{end}}
|