feat: Working on route and id helpers for views.
This commit is contained in:
@@ -20,7 +20,7 @@ struct EmployeeForm: HTML {
|
||||
Float(shouldDisplay: shouldShow, resetURL: "/employees") {
|
||||
form(
|
||||
employee == nil ? .hx.post(targetURL) : .hx.put(targetURL),
|
||||
employee == nil ? .hx.target("#employee-table") : .hx.target("#employee_\(employee!.id)"),
|
||||
.hx.target(target),
|
||||
employee == nil
|
||||
? .hx.swap(.beforeEnd.transition(true).swap("0.5s"))
|
||||
: .hx.swap(.outerHTML.transition(true).swap("0.5s")),
|
||||
@@ -62,6 +62,13 @@ struct EmployeeForm: HTML {
|
||||
}
|
||||
}
|
||||
|
||||
private var target: HXTarget {
|
||||
guard let employee else {
|
||||
return .employee(.table)
|
||||
}
|
||||
return .employee(.row(id: employee.id))
|
||||
}
|
||||
|
||||
private var buttonLabel: String {
|
||||
guard employee != nil else { return "Create" }
|
||||
return "Update"
|
||||
|
||||
@@ -14,14 +14,14 @@ struct EmployeeTable: HTML {
|
||||
Button.add()
|
||||
.attributes(
|
||||
.style("padding: 0px 10px;"),
|
||||
.hx.get("/employees/create"),
|
||||
.hx.target("#float"),
|
||||
.hx.get(route: .employees(.create)),
|
||||
.hx.target(.float),
|
||||
.hx.swap(.outerHTML.transition(true).swap("0.5s"))
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
tbody(.id("employee-table")) {
|
||||
tbody(.id(.employee(.table))) {
|
||||
for employee in employees {
|
||||
Row(employee: employee)
|
||||
}
|
||||
@@ -33,14 +33,14 @@ struct EmployeeTable: HTML {
|
||||
let employee: Employee
|
||||
|
||||
var content: some HTML {
|
||||
tr(.id("employee_\(employee.id)")) {
|
||||
td { "\(employee.firstName.capitalized) \(employee.lastName.capitalized)" }
|
||||
tr(.id(.employee(.row(id: employee.id)))) {
|
||||
td { employee.fullName }
|
||||
td {
|
||||
Button.detail()
|
||||
.attributes(
|
||||
.style("padding-left: 15px;"),
|
||||
.hx.get("/employees/\(employee.id)"),
|
||||
.hx.target("#float"),
|
||||
.hx.get(route: .employees(.id(employee.id))),
|
||||
.hx.target(.float),
|
||||
.hx.pushURL(true),
|
||||
.hx.swap(.outerHTML.transition(true).swap("0.5s"))
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user