Sidebars link correctly

This commit is contained in:
Bryce
2024-03-20 19:47:41 -07:00
parent 0cdf908acd
commit e914f8b994
5 changed files with 87 additions and 45 deletions

File diff suppressed because one or more lines are too long

View File

@@ -25,7 +25,6 @@
(:active? params) (hh/add-class "text-blue-600 font-extrabold dark:text-blue-100 bg-gray-100")
(not (:active? params)) (hh/add-class "text-gray-600 dark:text-white"))))
(assoc :hx-indicator "find .htmx-indicator")
(assoc :hx-boost "true")
(assoc :hx-select "#app")
(assoc :hx-target "#app")
(assoc :hx-swap "innerHTML"))
@@ -101,52 +100,66 @@
(menu-button- {:href (hu/url (bidi/path-for ssr-routes/only-routes
::invoice-route/all-page)
{:date-range "month"})
:active? (= ::invoice-route/all-page (:matched-route request))}
:active? (= ::invoice-route/all-page (:matched-route request))
:hx-boost true}
"All")
(menu-button- {:href (hu/url (bidi/path-for ssr-routes/only-routes
::invoice-route/paid-page)
{:date-range "month"})
:active? (= ::invoice-route/paid-page (:matched-route request))}
:active? (= ::invoice-route/paid-page (:matched-route request))
:hx-boost true}
"Paid")
(menu-button- {:href (hu/url (bidi/path-for ssr-routes/only-routes
::invoice-route/unpaid-page)
{:date-range "month"})
:active? (= ::invoice-route/unpaid-page (:matched-route request))}
:active? (= ::invoice-route/unpaid-page (:matched-route request))
:hx-boost true}
"Unpaid")
(menu-button- {:href (hu/url (bidi/path-for ssr-routes/only-routes
::invoice-route/voided-page)
{:date-range "month"})
:active? (= ::invoice-route/voided-page (:matched-route request))}
:active? (= ::invoice-route/voided-page (:matched-route request))
:hx-boost true}
"Voided"))
(menu-button- {:icon svg/receipt-register-1
"@click.prevent" "if (selected == 'sales') {selected = null } else { selected = 'sales'} "}
"@click.prevent" "if (selected == 'sales') {selected = null } else { selected = 'sales'} " }
"Sales")
(sub-menu- {:selector "sales"}
(menu-button- {:href (str (bidi/path-for ssr-routes/only-routes
:pos-sales)
"?date-range=week")
:active? (= :pos-sales (:matched-route request))} "Sales")
:active? (= :pos-sales (:matched-route request))
:hx-boost true}
"Sales")
(menu-button- {:href (str (bidi/path-for ssr-routes/only-routes
:pos-expected-deposits)
"?date-range=week")
:active? (= :pos-expected-deposits (:matched-route request))}
:active? (= :pos-expected-deposits (:matched-route request))
:hx-boost true}
"Expected Deposits")
(menu-button- {:href (str (bidi/path-for ssr-routes/only-routes
:pos-tenders)
"?date-range=week")
:active? (= :pos-tenders (:matched-route request))} "Tenders")
:active? (= :pos-tenders (:matched-route request))
:hx-boost true}
"Tenders")
(menu-button- {:href (str (bidi/path-for ssr-routes/only-routes
:pos-refunds)
"?date-range=week")
:active? (= :pos-refunds (:matched-route request))} "Refunds")
:active? (= :pos-refunds (:matched-route request))
:hx-boost true}
"Refunds")
(menu-button- {:href (str (bidi/path-for ssr-routes/only-routes
:pos-cash-drawer-shifts)
"?date-range=week")
:active? (= :cash-drawer-shifts (:matched-route request))} "Cash drawer shifts"))
:active? (= :cash-drawer-shifts (:matched-route request))
:hx-boost true}
"Cash drawer shifts"))
;; TODO make specific routes for categories
;; TODO auto-apen sub menus
@@ -157,20 +170,28 @@
(menu-button- {:href (hu/url (bidi/path-for ssr-routes/only-routes
::payment-routes/all-page)
{:date-range "month"})
:active? (= ::payment-routes/all-page (:matched-route request))} "All")
:active? (= ::payment-routes/all-page (:matched-route request))
:hx-boost true}
"All")
(menu-button- {:href (hu/url (bidi/path-for ssr-routes/only-routes
::payment-routes/pending-page)
{ :date-range "month"})
:active? (= ::payment-routes/pending-page (:matched-route request))} "Pending")
:active? (= ::payment-routes/pending-page (:matched-route request))
:hx-boost true}
"Pending")
(menu-button- {:href (hu/url (bidi/path-for ssr-routes/only-routes
::payment-routes/cleared-page)
{ :date-range "month"})
:active? (= ::payment-routes/cleared-page (:matched-route request))} "Cleared")
:active? (= ::payment-routes/cleared-page (:matched-route request))
:hx-boost true}
"Cleared")
(menu-button- {:href (hu/url (bidi/path-for ssr-routes/only-routes
::payment-routes/voided-page)
{ :date-range "month"})
:active? (= ::payment-routes/voided-page (:matched-route request))} "Voided"))
{ :date-range "month" })
:active? (= ::payment-routes/voided-page (:matched-route request))
:hx-boost true}
"Voided"))
[:li {:x-data (hx/json {:open false})}
(menu-button- {"@click.prevent" "if (selected == 'transactions') {selected = null } else { selected = 'transactions'} "
@@ -212,28 +233,33 @@
[:li
(menu-button- {:icon svg/vendors
:href (bidi/path-for ssr-routes/only-routes
:company)}
:company)
:hx-boost true}
"My Company")]
[:li
(menu-button- {:icon svg/report
:href (bidi/path-for ssr-routes/only-routes
:company-reports)}
:company-reports)
:hx-boost true}
"Reports")]
[:li
(menu-button- {:icon svg/bank
:href (bidi/path-for ssr-routes/only-routes
:company-plaid)}
:company-plaid)
:hx-boost true}
"Plaid Link")]
[:li
(menu-button- {:icon svg/bank
:href (bidi/path-for ssr-routes/only-routes
:company-yodlee)}
:company-yodlee)
:hx-boost true}
"Yodlee Link")]
[:li
(menu-button- {:icon svg/government-building
:href (bidi/path-for ssr-routes/only-routes
:company-1099)}
:company-1099)
:hx-boost true}
"1099 Vendor Info"
)]])
@@ -242,37 +268,43 @@
[:li
(menu-button- {:icon svg/dashboard
:active? (= :auto-ap.routes.admin/page matched-route)
:href (bidi/path-for ssr-routes/only-routes :auto-ap.routes.admin/page)}
:href (bidi/path-for ssr-routes/only-routes :auto-ap.routes.admin/page)
:hx-boost true}
"Dashboard")]
[:li
(menu-button- {:icon svg/restaurant
:active? (= ::ac-routes/page matched-route)
:href (bidi/path-for ssr-routes/only-routes ::ac-routes/page)}
:href (bidi/path-for ssr-routes/only-routes ::ac-routes/page)
:hx-boost true}
"Clients")]
[:li
(menu-button- {:icon svg/vendors
:active? (= ::v-routes/page matched-route)
:href (bidi/path-for ssr-routes/only-routes
::v-routes/page)}
::v-routes/page)
:hx-boost true}
"Vendors")]
[:li
(menu-button- {:icon svg/user
:active? (= :users matched-route)
:href (bidi/path-for ssr-routes/only-routes
:users)}
:users)
:hx-boost true}
"Users")]
[:li
(menu-button- {:icon svg/accounts
:active? (= :admin-accounts matched-route)
:href (bidi/path-for ssr-routes/only-routes
:admin-accounts)}
:admin-accounts)
:hx-boost true}
"Accounts")]
[:li
(menu-button- {:icon svg/cog
:active? (= ::transaction-rules/page matched-route)
:href (bidi/path-for ssr-routes/only-routes ::transaction-rules/page)}
:href (bidi/path-for ssr-routes/only-routes ::transaction-rules/page)
:hx-boost true}
"Rules")]
[:li
@@ -280,14 +312,15 @@
:active? (= :admin-rules matched-route)
:href (bidi/path-for ssr-routes/only-routes
:admin-history)
:hx-boost "true"}
:hx-boost "true" }
"History")]
[:li
(menu-button- {:icon svg/rabbit
:active? (= :admin-jobs matched-route)
:href (bidi/path-for ssr-routes/only-routes
:admin-jobs)}
:admin-jobs)
:hx-boost true}
"Background Jobs")]
@@ -298,11 +331,17 @@
(sub-menu- {:selector "import"}
(menu-button- {:href (bidi/path-for ssr-routes/only-routes
::ei-routes/page)
:active? (= ::ei-routes/page matched-route)} "Excel Invoices")
:active? (= ::ei-routes/page matched-route)
:hx-boost true}
"Excel Invoices")
(menu-button- {:href (bidi/path-for ssr-routes/only-routes
::ib-routes/page)
:active? (= ::ib-routes/page matched-route)} "Import Batches")
:active? (= ::ib-routes/page matched-route)
:hx-boost true}
"Import Batches")
(menu-button- {:href (bidi/path-for ssr-routes/only-routes
:admin-ezcater-xls)
:active? (= :admin-ezcater-xls matched-route)
:hx-boost "true"} "EZCater XLS Import"))])
:hx-boost "true"}
"EZCater XLS Import"))])

View File

@@ -372,7 +372,6 @@
(pay-button* {:ids (selected->ids request
(:query-params request))})))
;; TODO fix parsing of query params
(def grid-page
(helper/build {:id "entity-table"
:nav com/main-aside-nav
@@ -407,7 +406,7 @@
"Invoices"]]
:title (fn [r]
(str
(some-> r :query-params :status name str/capitalize (str " "))
(some-> r :route-params :status name str/capitalize (str " "))
"Invoices"))
:entity-name "invoices"
:route ::route/table
@@ -520,7 +519,6 @@
{:class "live-removed"})
:headers {"hx-retarget" (format "#entity-table tr[data-id=\"%d\"]" (:db/id invoice))}))
;; TODO use decoding here
(defn bulk-delete-dialog [request]
(let [all-selected (:all-selected (:query-params request))
selected (:selected (:query-params request))
@@ -1115,7 +1113,6 @@
(-> h
(wrap-status-from-source)
(wrap-apply-sort grid-page)
(wrap-merge-prior-hx)
(wrap-schema-enforce :query-schema query-schema)
(wrap-schema-enforce :hx-schema query-schema)
(wrap-merge-prior-hx)
(wrap-client-redirect-unauthenticated)))))

View File

@@ -307,7 +307,7 @@
"Payments"]]
:title (fn [r]
(str
(some-> r :query-params :status name str/capitalize (str " "))
(some-> r :route-params :status name str/capitalize (str " "))
"Payments"))
:entity-name "payments"
:route ::route/table
@@ -365,7 +365,7 @@
:render (fn [p]
(link-dropdown (concat (->> p :payment/invoices (map (fn [invoice]
{:link (hu/url (bidi/path-for ssr-routes/only-routes
::invoice-route/page)
::invoice-route/all-page)
{:exact-match-id (:db/id invoice)})
:content (str "Inv. " (:invoice/invoice-number invoice))})))
(some-> p :transaction/_payment ((fn [t]

View File

@@ -298,11 +298,17 @@
[data]))))}}}))
(defn wrap-merge-prior-hx [handler]
;; TODO this should just be automatic
(fn [request]
(handler (update request :query-params (fn [qp]
(->> (concat (:hx-query-params request) qp)
(into {})))))))
(fn [{:keys [headers] :as request}]
(let [is-htmx-that-should-inherit-url-parameters? (and (not (get headers "hx-boosted"))
(get headers "hx-request"))]
(alog/peek ::check {:enabled? is-htmx-that-should-inherit-url-parameters?
:params (:query-params request)})
(if is-htmx-that-should-inherit-url-parameters?
(handler (update request :query-params (fn [qp]
(->> (concat (:hx-query-params request) qp)
(into {})))))
(handler request)))))
(def dissoc-nil-transformer