edit.hbs 3.0 KB

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