feat: Cleans up some file names, adds generate admin user command.
This commit is contained in:
@@ -111,36 +111,3 @@ enum HXTarget {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: Move to MainPage
|
||||
enum ViewRoute: String {
|
||||
|
||||
case employees
|
||||
case login
|
||||
case purchaseOrders
|
||||
case users
|
||||
case vendors
|
||||
|
||||
var title: String {
|
||||
switch self {
|
||||
case .purchaseOrders:
|
||||
return "Purchase Orders"
|
||||
default:
|
||||
return rawValue.capitalized
|
||||
}
|
||||
}
|
||||
|
||||
var description: String {
|
||||
switch self {
|
||||
case .employees:
|
||||
return "Employees are who purchase orders can be issued to."
|
||||
case .purchaseOrders, .login:
|
||||
return ""
|
||||
case .users:
|
||||
return "Users are who can login and issue purchase orders for employees."
|
||||
case .vendors:
|
||||
return "Vendors are where purchase orders can be issued to."
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
import Elementary
|
||||
import ElementaryHTMX
|
||||
import SharedModels
|
||||
|
||||
struct MainPage<Inner: HTML>: SendableHTMLDocument where Inner: Sendable {
|
||||
|
||||
@@ -12,7 +13,7 @@ struct MainPage<Inner: HTML>: SendableHTMLDocument where Inner: Sendable {
|
||||
|
||||
init(
|
||||
displayNav: Bool = false,
|
||||
route: ViewRoute,
|
||||
route: RouteHeaderView.ViewRoute,
|
||||
_ inner: () -> Inner
|
||||
) {
|
||||
self.displayNav = displayNav
|
||||
@@ -39,6 +40,29 @@ struct MainPage<Inner: HTML>: SendableHTMLDocument where Inner: Sendable {
|
||||
}
|
||||
}
|
||||
|
||||
extension MainPage where Inner == LoggedIn {
|
||||
static func loggedIn(next: String?) -> Self {
|
||||
MainPage(displayNav: true, route: .purchaseOrders) {
|
||||
LoggedIn(next: next)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
struct LoggedIn: HTML {
|
||||
let next: String?
|
||||
var content: some HTML {
|
||||
div(
|
||||
.hx.get(next ?? ViewRoute.router.path(for: .purchaseOrder(.index))),
|
||||
.hx.pushURL(true),
|
||||
.hx.target("body"),
|
||||
.hx.trigger(.event(.revealed)),
|
||||
.hx.indicator(".hx-indicator")
|
||||
) {
|
||||
Img.spinner().attributes(.class("hx-indicator"))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
struct RouteHeaderView: HTML {
|
||||
|
||||
let title: String
|
||||
@@ -61,6 +85,38 @@ struct RouteHeaderView: HTML {
|
||||
br()
|
||||
}
|
||||
}
|
||||
|
||||
enum ViewRoute: String {
|
||||
|
||||
case employees
|
||||
case login
|
||||
case purchaseOrders
|
||||
case users
|
||||
case vendors
|
||||
|
||||
var title: String {
|
||||
switch self {
|
||||
case .purchaseOrders:
|
||||
return "Purchase Orders"
|
||||
default:
|
||||
return rawValue.capitalized
|
||||
}
|
||||
}
|
||||
|
||||
var description: String {
|
||||
switch self {
|
||||
case .employees:
|
||||
return "Employees are who purchase orders can be issued to."
|
||||
case .purchaseOrders, .login:
|
||||
return ""
|
||||
case .users:
|
||||
return "Users are who can login and issue purchase orders for employees."
|
||||
case .vendors:
|
||||
return "Vendors are where purchase orders can be issued to."
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
struct Logo: HTML, Sendable {
|
||||
|
||||
@@ -1,10 +1,12 @@
|
||||
import Elementary
|
||||
|
||||
enum Img {
|
||||
@Sendable
|
||||
static func spinner(width: Int = 30, height: Int = 30) -> some HTML<HTMLTag.img> {
|
||||
img(.src("/images/spinner.svg"), .width(width), .height(height))
|
||||
}
|
||||
|
||||
@Sendable
|
||||
static func search(width: Int = 30, height: Int = 30) -> some HTML<HTMLTag.img> {
|
||||
img(.src("/images/search.svg"), .width(width), .height(height))
|
||||
}
|
||||
|
||||
@@ -16,7 +16,7 @@ struct VendorTable: HTML {
|
||||
.attributes(
|
||||
.style("padding: 0px 10px;"),
|
||||
.hx.get(route: .vendor(.form)),
|
||||
.hx.target("#float"),
|
||||
.hx.target(.float),
|
||||
.hx.swap(.outerHTML)
|
||||
)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user