Sidebars link correctly
This commit is contained in:
File diff suppressed because one or more lines are too long
@@ -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"))])
|
||||
|
||||
@@ -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)))))
|
||||
@@ -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]
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user