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")
|
(: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"))))
|
(not (:active? params)) (hh/add-class "text-gray-600 dark:text-white"))))
|
||||||
(assoc :hx-indicator "find .htmx-indicator")
|
(assoc :hx-indicator "find .htmx-indicator")
|
||||||
(assoc :hx-boost "true")
|
|
||||||
(assoc :hx-select "#app")
|
(assoc :hx-select "#app")
|
||||||
(assoc :hx-target "#app")
|
(assoc :hx-target "#app")
|
||||||
(assoc :hx-swap "innerHTML"))
|
(assoc :hx-swap "innerHTML"))
|
||||||
@@ -101,52 +100,66 @@
|
|||||||
(menu-button- {:href (hu/url (bidi/path-for ssr-routes/only-routes
|
(menu-button- {:href (hu/url (bidi/path-for ssr-routes/only-routes
|
||||||
::invoice-route/all-page)
|
::invoice-route/all-page)
|
||||||
{:date-range "month"})
|
{:date-range "month"})
|
||||||
:active? (= ::invoice-route/all-page (:matched-route request))}
|
:active? (= ::invoice-route/all-page (:matched-route request))
|
||||||
|
:hx-boost true}
|
||||||
|
|
||||||
"All")
|
"All")
|
||||||
(menu-button- {:href (hu/url (bidi/path-for ssr-routes/only-routes
|
(menu-button- {:href (hu/url (bidi/path-for ssr-routes/only-routes
|
||||||
::invoice-route/paid-page)
|
::invoice-route/paid-page)
|
||||||
{:date-range "month"})
|
{:date-range "month"})
|
||||||
:active? (= ::invoice-route/paid-page (:matched-route request))}
|
:active? (= ::invoice-route/paid-page (:matched-route request))
|
||||||
|
:hx-boost true}
|
||||||
"Paid")
|
"Paid")
|
||||||
(menu-button- {:href (hu/url (bidi/path-for ssr-routes/only-routes
|
(menu-button- {:href (hu/url (bidi/path-for ssr-routes/only-routes
|
||||||
::invoice-route/unpaid-page)
|
::invoice-route/unpaid-page)
|
||||||
{:date-range "month"})
|
{:date-range "month"})
|
||||||
:active? (= ::invoice-route/unpaid-page (:matched-route request))}
|
:active? (= ::invoice-route/unpaid-page (:matched-route request))
|
||||||
|
:hx-boost true}
|
||||||
"Unpaid")
|
"Unpaid")
|
||||||
(menu-button- {:href (hu/url (bidi/path-for ssr-routes/only-routes
|
(menu-button- {:href (hu/url (bidi/path-for ssr-routes/only-routes
|
||||||
::invoice-route/voided-page)
|
::invoice-route/voided-page)
|
||||||
{:date-range "month"})
|
{:date-range "month"})
|
||||||
:active? (= ::invoice-route/voided-page (:matched-route request))}
|
:active? (= ::invoice-route/voided-page (:matched-route request))
|
||||||
|
:hx-boost true}
|
||||||
"Voided"))
|
"Voided"))
|
||||||
|
|
||||||
(menu-button- {:icon svg/receipt-register-1
|
(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")
|
"Sales")
|
||||||
(sub-menu- {:selector "sales"}
|
(sub-menu- {:selector "sales"}
|
||||||
(menu-button- {:href (str (bidi/path-for ssr-routes/only-routes
|
(menu-button- {:href (str (bidi/path-for ssr-routes/only-routes
|
||||||
:pos-sales)
|
:pos-sales)
|
||||||
"?date-range=week")
|
"?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
|
(menu-button- {:href (str (bidi/path-for ssr-routes/only-routes
|
||||||
:pos-expected-deposits)
|
:pos-expected-deposits)
|
||||||
"?date-range=week")
|
"?date-range=week")
|
||||||
:active? (= :pos-expected-deposits (:matched-route request))}
|
:active? (= :pos-expected-deposits (:matched-route request))
|
||||||
|
:hx-boost true}
|
||||||
"Expected Deposits")
|
"Expected Deposits")
|
||||||
(menu-button- {:href (str (bidi/path-for ssr-routes/only-routes
|
(menu-button- {:href (str (bidi/path-for ssr-routes/only-routes
|
||||||
:pos-tenders)
|
:pos-tenders)
|
||||||
"?date-range=week")
|
"?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
|
(menu-button- {:href (str (bidi/path-for ssr-routes/only-routes
|
||||||
:pos-refunds)
|
:pos-refunds)
|
||||||
"?date-range=week")
|
"?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
|
(menu-button- {:href (str (bidi/path-for ssr-routes/only-routes
|
||||||
:pos-cash-drawer-shifts)
|
:pos-cash-drawer-shifts)
|
||||||
"?date-range=week")
|
"?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 make specific routes for categories
|
||||||
;; TODO auto-apen sub menus
|
;; TODO auto-apen sub menus
|
||||||
|
|
||||||
@@ -157,20 +170,28 @@
|
|||||||
(menu-button- {:href (hu/url (bidi/path-for ssr-routes/only-routes
|
(menu-button- {:href (hu/url (bidi/path-for ssr-routes/only-routes
|
||||||
::payment-routes/all-page)
|
::payment-routes/all-page)
|
||||||
{:date-range "month"})
|
{: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
|
(menu-button- {:href (hu/url (bidi/path-for ssr-routes/only-routes
|
||||||
::payment-routes/pending-page)
|
::payment-routes/pending-page)
|
||||||
{ :date-range "month"})
|
{ :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
|
(menu-button- {:href (hu/url (bidi/path-for ssr-routes/only-routes
|
||||||
::payment-routes/cleared-page)
|
::payment-routes/cleared-page)
|
||||||
{ :date-range "month"})
|
{ :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
|
(menu-button- {:href (hu/url (bidi/path-for ssr-routes/only-routes
|
||||||
::payment-routes/voided-page)
|
::payment-routes/voided-page)
|
||||||
{ :date-range "month"})
|
{ :date-range "month" })
|
||||||
:active? (= ::payment-routes/voided-page (:matched-route request))} "Voided"))
|
:active? (= ::payment-routes/voided-page (:matched-route request))
|
||||||
|
:hx-boost true}
|
||||||
|
"Voided"))
|
||||||
|
|
||||||
[:li {:x-data (hx/json {:open false})}
|
[:li {:x-data (hx/json {:open false})}
|
||||||
(menu-button- {"@click.prevent" "if (selected == 'transactions') {selected = null } else { selected = 'transactions'} "
|
(menu-button- {"@click.prevent" "if (selected == 'transactions') {selected = null } else { selected = 'transactions'} "
|
||||||
@@ -212,28 +233,33 @@
|
|||||||
[:li
|
[:li
|
||||||
(menu-button- {:icon svg/vendors
|
(menu-button- {:icon svg/vendors
|
||||||
:href (bidi/path-for ssr-routes/only-routes
|
:href (bidi/path-for ssr-routes/only-routes
|
||||||
:company)}
|
:company)
|
||||||
|
:hx-boost true}
|
||||||
"My Company")]
|
"My Company")]
|
||||||
|
|
||||||
[:li
|
[:li
|
||||||
(menu-button- {:icon svg/report
|
(menu-button- {:icon svg/report
|
||||||
:href (bidi/path-for ssr-routes/only-routes
|
:href (bidi/path-for ssr-routes/only-routes
|
||||||
:company-reports)}
|
:company-reports)
|
||||||
|
:hx-boost true}
|
||||||
"Reports")]
|
"Reports")]
|
||||||
[:li
|
[:li
|
||||||
(menu-button- {:icon svg/bank
|
(menu-button- {:icon svg/bank
|
||||||
:href (bidi/path-for ssr-routes/only-routes
|
:href (bidi/path-for ssr-routes/only-routes
|
||||||
:company-plaid)}
|
:company-plaid)
|
||||||
|
:hx-boost true}
|
||||||
"Plaid Link")]
|
"Plaid Link")]
|
||||||
[:li
|
[:li
|
||||||
(menu-button- {:icon svg/bank
|
(menu-button- {:icon svg/bank
|
||||||
:href (bidi/path-for ssr-routes/only-routes
|
:href (bidi/path-for ssr-routes/only-routes
|
||||||
:company-yodlee)}
|
:company-yodlee)
|
||||||
|
:hx-boost true}
|
||||||
"Yodlee Link")]
|
"Yodlee Link")]
|
||||||
[:li
|
[:li
|
||||||
(menu-button- {:icon svg/government-building
|
(menu-button- {:icon svg/government-building
|
||||||
:href (bidi/path-for ssr-routes/only-routes
|
:href (bidi/path-for ssr-routes/only-routes
|
||||||
:company-1099)}
|
:company-1099)
|
||||||
|
:hx-boost true}
|
||||||
"1099 Vendor Info"
|
"1099 Vendor Info"
|
||||||
)]])
|
)]])
|
||||||
|
|
||||||
@@ -242,37 +268,43 @@
|
|||||||
[:li
|
[:li
|
||||||
(menu-button- {:icon svg/dashboard
|
(menu-button- {:icon svg/dashboard
|
||||||
:active? (= :auto-ap.routes.admin/page matched-route)
|
: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")]
|
"Dashboard")]
|
||||||
|
|
||||||
[:li
|
[:li
|
||||||
(menu-button- {:icon svg/restaurant
|
(menu-button- {:icon svg/restaurant
|
||||||
:active? (= ::ac-routes/page matched-route)
|
: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")]
|
"Clients")]
|
||||||
[:li
|
[:li
|
||||||
(menu-button- {:icon svg/vendors
|
(menu-button- {:icon svg/vendors
|
||||||
:active? (= ::v-routes/page matched-route)
|
:active? (= ::v-routes/page matched-route)
|
||||||
:href (bidi/path-for ssr-routes/only-routes
|
:href (bidi/path-for ssr-routes/only-routes
|
||||||
::v-routes/page)}
|
::v-routes/page)
|
||||||
|
:hx-boost true}
|
||||||
"Vendors")]
|
"Vendors")]
|
||||||
[:li
|
[:li
|
||||||
(menu-button- {:icon svg/user
|
(menu-button- {:icon svg/user
|
||||||
:active? (= :users matched-route)
|
:active? (= :users matched-route)
|
||||||
:href (bidi/path-for ssr-routes/only-routes
|
:href (bidi/path-for ssr-routes/only-routes
|
||||||
:users)}
|
:users)
|
||||||
|
:hx-boost true}
|
||||||
"Users")]
|
"Users")]
|
||||||
[:li
|
[:li
|
||||||
(menu-button- {:icon svg/accounts
|
(menu-button- {:icon svg/accounts
|
||||||
:active? (= :admin-accounts matched-route)
|
:active? (= :admin-accounts matched-route)
|
||||||
:href (bidi/path-for ssr-routes/only-routes
|
:href (bidi/path-for ssr-routes/only-routes
|
||||||
:admin-accounts)}
|
:admin-accounts)
|
||||||
|
:hx-boost true}
|
||||||
"Accounts")]
|
"Accounts")]
|
||||||
|
|
||||||
[:li
|
[:li
|
||||||
(menu-button- {:icon svg/cog
|
(menu-button- {:icon svg/cog
|
||||||
:active? (= ::transaction-rules/page matched-route)
|
: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")]
|
"Rules")]
|
||||||
|
|
||||||
[:li
|
[:li
|
||||||
@@ -280,14 +312,15 @@
|
|||||||
:active? (= :admin-rules matched-route)
|
:active? (= :admin-rules matched-route)
|
||||||
:href (bidi/path-for ssr-routes/only-routes
|
:href (bidi/path-for ssr-routes/only-routes
|
||||||
:admin-history)
|
:admin-history)
|
||||||
:hx-boost "true"}
|
:hx-boost "true" }
|
||||||
"History")]
|
"History")]
|
||||||
|
|
||||||
[:li
|
[:li
|
||||||
(menu-button- {:icon svg/rabbit
|
(menu-button- {:icon svg/rabbit
|
||||||
:active? (= :admin-jobs matched-route)
|
:active? (= :admin-jobs matched-route)
|
||||||
:href (bidi/path-for ssr-routes/only-routes
|
:href (bidi/path-for ssr-routes/only-routes
|
||||||
:admin-jobs)}
|
:admin-jobs)
|
||||||
|
:hx-boost true}
|
||||||
"Background Jobs")]
|
"Background Jobs")]
|
||||||
|
|
||||||
|
|
||||||
@@ -298,11 +331,17 @@
|
|||||||
(sub-menu- {:selector "import"}
|
(sub-menu- {:selector "import"}
|
||||||
(menu-button- {:href (bidi/path-for ssr-routes/only-routes
|
(menu-button- {:href (bidi/path-for ssr-routes/only-routes
|
||||||
::ei-routes/page)
|
::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
|
(menu-button- {:href (bidi/path-for ssr-routes/only-routes
|
||||||
::ib-routes/page)
|
::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
|
(menu-button- {:href (bidi/path-for ssr-routes/only-routes
|
||||||
:admin-ezcater-xls)
|
:admin-ezcater-xls)
|
||||||
:active? (= :admin-ezcater-xls matched-route)
|
: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
|
(pay-button* {:ids (selected->ids request
|
||||||
(:query-params request))})))
|
(:query-params request))})))
|
||||||
|
|
||||||
;; TODO fix parsing of query params
|
|
||||||
(def grid-page
|
(def grid-page
|
||||||
(helper/build {:id "entity-table"
|
(helper/build {:id "entity-table"
|
||||||
:nav com/main-aside-nav
|
:nav com/main-aside-nav
|
||||||
@@ -407,7 +406,7 @@
|
|||||||
"Invoices"]]
|
"Invoices"]]
|
||||||
:title (fn [r]
|
:title (fn [r]
|
||||||
(str
|
(str
|
||||||
(some-> r :query-params :status name str/capitalize (str " "))
|
(some-> r :route-params :status name str/capitalize (str " "))
|
||||||
"Invoices"))
|
"Invoices"))
|
||||||
:entity-name "invoices"
|
:entity-name "invoices"
|
||||||
:route ::route/table
|
:route ::route/table
|
||||||
@@ -520,7 +519,6 @@
|
|||||||
{:class "live-removed"})
|
{:class "live-removed"})
|
||||||
:headers {"hx-retarget" (format "#entity-table tr[data-id=\"%d\"]" (:db/id invoice))}))
|
:headers {"hx-retarget" (format "#entity-table tr[data-id=\"%d\"]" (:db/id invoice))}))
|
||||||
|
|
||||||
;; TODO use decoding here
|
|
||||||
(defn bulk-delete-dialog [request]
|
(defn bulk-delete-dialog [request]
|
||||||
(let [all-selected (:all-selected (:query-params request))
|
(let [all-selected (:all-selected (:query-params request))
|
||||||
selected (:selected (:query-params request))
|
selected (:selected (:query-params request))
|
||||||
@@ -1115,7 +1113,6 @@
|
|||||||
(-> h
|
(-> h
|
||||||
(wrap-status-from-source)
|
(wrap-status-from-source)
|
||||||
(wrap-apply-sort grid-page)
|
(wrap-apply-sort grid-page)
|
||||||
(wrap-merge-prior-hx)
|
|
||||||
(wrap-schema-enforce :query-schema query-schema)
|
(wrap-schema-enforce :query-schema query-schema)
|
||||||
(wrap-schema-enforce :hx-schema query-schema)
|
(wrap-merge-prior-hx)
|
||||||
(wrap-client-redirect-unauthenticated)))))
|
(wrap-client-redirect-unauthenticated)))))
|
||||||
@@ -307,7 +307,7 @@
|
|||||||
"Payments"]]
|
"Payments"]]
|
||||||
:title (fn [r]
|
:title (fn [r]
|
||||||
(str
|
(str
|
||||||
(some-> r :query-params :status name str/capitalize (str " "))
|
(some-> r :route-params :status name str/capitalize (str " "))
|
||||||
"Payments"))
|
"Payments"))
|
||||||
:entity-name "payments"
|
:entity-name "payments"
|
||||||
:route ::route/table
|
:route ::route/table
|
||||||
@@ -365,7 +365,7 @@
|
|||||||
:render (fn [p]
|
:render (fn [p]
|
||||||
(link-dropdown (concat (->> p :payment/invoices (map (fn [invoice]
|
(link-dropdown (concat (->> p :payment/invoices (map (fn [invoice]
|
||||||
{:link (hu/url (bidi/path-for ssr-routes/only-routes
|
{:link (hu/url (bidi/path-for ssr-routes/only-routes
|
||||||
::invoice-route/page)
|
::invoice-route/all-page)
|
||||||
{:exact-match-id (:db/id invoice)})
|
{:exact-match-id (:db/id invoice)})
|
||||||
:content (str "Inv. " (:invoice/invoice-number invoice))})))
|
:content (str "Inv. " (:invoice/invoice-number invoice))})))
|
||||||
(some-> p :transaction/_payment ((fn [t]
|
(some-> p :transaction/_payment ((fn [t]
|
||||||
|
|||||||
@@ -298,11 +298,17 @@
|
|||||||
[data]))))}}}))
|
[data]))))}}}))
|
||||||
|
|
||||||
(defn wrap-merge-prior-hx [handler]
|
(defn wrap-merge-prior-hx [handler]
|
||||||
;; TODO this should just be automatic
|
(fn [{:keys [headers] :as request}]
|
||||||
(fn [request]
|
(let [is-htmx-that-should-inherit-url-parameters? (and (not (get headers "hx-boosted"))
|
||||||
(handler (update request :query-params (fn [qp]
|
(get headers "hx-request"))]
|
||||||
(->> (concat (:hx-query-params request) qp)
|
(alog/peek ::check {:enabled? is-htmx-that-should-inherit-url-parameters?
|
||||||
(into {})))))))
|
: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
|
(def dissoc-nil-transformer
|
||||||
|
|||||||
Reference in New Issue
Block a user