edit.hbs 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. <td class="content">
  2. {{#if id}}
  3. <form
  4. id="edit-form-{{id}}"
  5. hx-patch="/api/links/admin/{id}"
  6. hx-ext="path-params"
  7. hx-vals='{"id":"{{id}}"}'
  8. hx-select="form"
  9. hx-swap="outerHTML"
  10. hx-sync="this:replace"
  11. class="{{class}}"
  12. >
  13. <div>
  14. <label class="{{#if errors.target}}error{{/if}}">
  15. Target:
  16. <input
  17. id="edit-target-{{id}}"
  18. name="target"
  19. type="text"
  20. placeholder="Target..."
  21. required="true"
  22. value="{{target}}"
  23. hx-preserve="true"
  24. />
  25. {{#if errors.target}}<p class="error">{{errors.target}}</p>{{/if}}
  26. </label>
  27. <label class="{{#if errors.address}}error{{/if}}">
  28. <span id="edit-link-domain-{{id}}" hx-preserve="true">{{domain}}/</span>
  29. <input
  30. id="edit-address-{{id}}"
  31. name="address"
  32. type="text"
  33. placeholder="Custom URL..."
  34. required="true"
  35. value="{{address}}"
  36. hx-preserve="true"
  37. />
  38. {{#if errors.address}}<p class="error">{{errors.address}}</p>{{/if}}
  39. </label>
  40. <label class="{{#if errors.password}}error{{/if}}">
  41. Password:
  42. <input
  43. id="edit-password-{{id}}"
  44. name="password"
  45. type="password"
  46. placeholder="Password..."
  47. value="{{#if password}}••••••••{{/if}}"
  48. hx-preserve="true"
  49. />
  50. {{#if errors.password}}<p class="error">{{errors.password}}</p>{{/if}}
  51. </label>
  52. </div>
  53. <div>
  54. <label class="{{#if errors.description}}error{{/if}}">
  55. Description:
  56. <input
  57. id="edit-description-{{id}}"
  58. name="description"
  59. type="text"
  60. placeholder="Description..."
  61. value="{{description}}"
  62. hx-preserve="true"
  63. />
  64. {{#if errors.description}}<p class="error">{{errors.description}}</p>{{/if}}
  65. </label>
  66. <label class="{{#if errors.expire_in}}error{{/if}}">
  67. Expire in:
  68. <input
  69. id="edit-expire_in-{{id}}"
  70. name="expire_in"
  71. type="text"
  72. placeholder="2 minutes/hours/days"
  73. value="{{relative_expire_in}}"
  74. hx-preserve="true"
  75. />
  76. {{#if errors.expire_in}}<p class="error">{{errors.expire_in}}</p>{{/if}}
  77. </label>
  78. </div>
  79. <div>
  80. <button
  81. type="button"
  82. onclick="
  83. const tr = closest('tr');
  84. if (!tr) return;
  85. tr.classList.remove('show');
  86. tr.removeChild(tr.querySelector('.content'));
  87. "
  88. >
  89. Close
  90. </button>
  91. <button type="submit" class="primary">
  92. <span class="reload">
  93. {{> icons/reload}}
  94. </span>
  95. <span class="loader">
  96. {{> icons/spinner}}
  97. </span>
  98. Update
  99. </button>
  100. </div>
  101. <div class="response">
  102. {{#if error}}
  103. {{#unless errors}}
  104. <p class="error">{{error}}</p>
  105. {{/unless}}
  106. {{else if success}}
  107. <p class="success">{{success}}</p>
  108. {{/if}}
  109. </div>
  110. <template>
  111. {{> admin/links/tr}}
  112. </template>
  113. </form>
  114. {{else}}
  115. <p class="no-data">No link was found.</p>
  116. {{/if}}
  117. </td>