modal
This commit is contained in:
@@ -157,7 +157,7 @@
|
|||||||
|
|
||||||
(defn date-input- [{:keys [size] :as params}]
|
(defn date-input- [{:keys [size] :as params}]
|
||||||
[:div.shrink
|
[:div.shrink
|
||||||
[:input
|
[:input
|
||||||
(-> params
|
(-> params
|
||||||
(update :class (fnil hh/add-class "") default-input-classes)
|
(update :class (fnil hh/add-class "") default-input-classes)
|
||||||
(assoc :type "text")
|
(assoc :type "text")
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
(:require [auto-ap.datomic
|
(:require [auto-ap.datomic
|
||||||
:refer [conn pull-attr]]
|
:refer [conn pull-attr]]
|
||||||
[auto-ap.datomic.accounts :as d-accounts]
|
[auto-ap.datomic.accounts :as d-accounts]
|
||||||
|
[auto-ap.logging :as alog]
|
||||||
[auto-ap.routes.invoice :as route]
|
[auto-ap.routes.invoice :as route]
|
||||||
[auto-ap.routes.utils
|
[auto-ap.routes.utils
|
||||||
:refer [wrap-client-redirect-unauthenticated]]
|
:refer [wrap-client-redirect-unauthenticated]]
|
||||||
@@ -13,10 +14,11 @@
|
|||||||
[auto-ap.ssr.hx :as hx]
|
[auto-ap.ssr.hx :as hx]
|
||||||
[auto-ap.ssr.svg :as svg]
|
[auto-ap.ssr.svg :as svg]
|
||||||
[auto-ap.ssr.utils
|
[auto-ap.ssr.utils
|
||||||
:refer [apply-middleware-to-all-handlers entity-id html-response
|
:refer [apply-middleware-to-all-handlers clj-date-schema
|
||||||
money wrap-schema-enforce]]
|
entity-id html-response money wrap-schema-enforce]]
|
||||||
[auto-ap.time :as atime]
|
[auto-ap.time :as atime]
|
||||||
[bidi.bidi :as bidi]
|
[bidi.bidi :as bidi]
|
||||||
|
[clj-time.core :as time]
|
||||||
[datomic.api :as dc]
|
[datomic.api :as dc]
|
||||||
[malli.core :as mc]
|
[malli.core :as mc]
|
||||||
[malli.util :as mut]))
|
[malli.util :as mut]))
|
||||||
@@ -24,8 +26,9 @@
|
|||||||
(def new-form-schema
|
(def new-form-schema
|
||||||
[:map
|
[:map
|
||||||
[:invoice/client entity-id]
|
[:invoice/client entity-id]
|
||||||
|
[:invoice/date clj-date-schema]
|
||||||
[:invoice/vendor entity-id]
|
[:invoice/vendor entity-id]
|
||||||
[:invoice/expense-accounts
|
[:invoice/expense-accounts
|
||||||
[:vector {:coerce? true}
|
[:vector {:coerce? true}
|
||||||
[:map
|
[:map
|
||||||
[:invoice-expense-account/account entity-id]
|
[:invoice-expense-account/account entity-id]
|
||||||
@@ -43,98 +46,99 @@
|
|||||||
[])
|
[])
|
||||||
|
|
||||||
(step-schema [_]
|
(step-schema [_]
|
||||||
(mut/select-keys (mm/form-schema linear-wizard) #{:invoice/client :invoice/vendor}))
|
(mut/select-keys (mm/form-schema linear-wizard) #{:invoice/client :invoice/vendor :invoice/date}))
|
||||||
|
|
||||||
(render-step [this request]
|
(render-step [this request]
|
||||||
(mm/default-render-step
|
(alog/peek ::check (:multi-form-state request))
|
||||||
linear-wizard this
|
(mm/default-render-step
|
||||||
:head [:div.p-2 "New invoice"]
|
linear-wizard this
|
||||||
:body (mm/default-step-body
|
:head [:div.p-2 "New invoice"]
|
||||||
{}
|
:body (mm/default-step-body
|
||||||
[:div {}
|
{}
|
||||||
(fc/with-field :invoice/client
|
[:div {}
|
||||||
(if (:client request)
|
(fc/with-field :invoice/client
|
||||||
(com/hidden {:name (fc/field-name)
|
(if (:client request)
|
||||||
:value (:db/id (:client request))})
|
(com/hidden {:name (fc/field-name)
|
||||||
(com/validated-field
|
:value (:db/id (:client request))})
|
||||||
{:label "Client"
|
(com/validated-field
|
||||||
:errors (fc/field-errors)}
|
{:label "Client"
|
||||||
[:div.w-96
|
:errors (fc/field-errors)}
|
||||||
(com/typeahead {:name (fc/field-name)
|
[:div.w-96
|
||||||
:error? (fc/error?)
|
(com/typeahead {:name (fc/field-name)
|
||||||
:class "w-96"
|
:error? (fc/error?)
|
||||||
:placeholder "Search..."
|
:class "w-96"
|
||||||
:url (bidi/path-for ssr-routes/only-routes :company-search)
|
:placeholder "Search..."
|
||||||
:value (fc/field-value)
|
:url (bidi/path-for ssr-routes/only-routes :company-search)
|
||||||
:content-fn (fn [c] (pull-attr (dc/db conn) :client/name c))})])))
|
:value (fc/field-value)
|
||||||
(fc/with-field :invoice/vendor
|
:content-fn (fn [c] (pull-attr (dc/db conn) :client/name c))})])))
|
||||||
(com/validated-field
|
(fc/with-field :invoice/vendor
|
||||||
{:label "Vendor"
|
(com/validated-field
|
||||||
:errors (fc/field-errors)}
|
{:label "Vendor"
|
||||||
[:div.w-96
|
:errors (fc/field-errors)}
|
||||||
(com/typeahead {:name (fc/field-name)
|
[:div.w-96
|
||||||
:error? (fc/error?)
|
(com/typeahead {:name (fc/field-name)
|
||||||
:class "w-96"
|
:error? (fc/error?)
|
||||||
:placeholder "Search..."
|
:class "w-96"
|
||||||
:url (bidi/path-for ssr-routes/only-routes :vendor-search)
|
:placeholder "Search..."
|
||||||
:value (fc/field-value)
|
:url (bidi/path-for ssr-routes/only-routes :vendor-search)
|
||||||
:content-fn (fn [c] (pull-attr (dc/db conn) :vendor/name c))})]))
|
:value (fc/field-value)
|
||||||
|
:content-fn (fn [c] (pull-attr (dc/db conn) :vendor/name c))})]))
|
||||||
[:div.flex.space-x-8
|
|
||||||
(fc/with-field :invoice/date
|
|
||||||
(com/validated-field
|
|
||||||
{:label "Date"
|
|
||||||
:errors (fc/field-errors)}
|
|
||||||
[:div {:class "w-24"}
|
|
||||||
(com/date-input {:value (-> (fc/field-value)
|
|
||||||
(atime/unparse-local atime/normal-date))
|
|
||||||
:name (fc/field-name)
|
|
||||||
:error? (fc/field-errors)
|
|
||||||
:placeholder "1/1/2024"})]))
|
|
||||||
(fc/with-field :invoice/due
|
|
||||||
(com/validated-field
|
|
||||||
{:label "Due (optional)"
|
|
||||||
:errors (fc/field-errors)}
|
|
||||||
[:div {:class "w-24"}
|
|
||||||
(com/date-input {:value (-> (fc/field-value)
|
|
||||||
(atime/unparse-local atime/normal-date))
|
|
||||||
:name (fc/field-name)
|
|
||||||
:error? (fc/field-errors)
|
|
||||||
:placeholder "1/1/2024"})]))
|
|
||||||
(fc/with-field :invoice/scheduled-payment
|
|
||||||
(com/validated-field
|
|
||||||
{:label "Scheduled payment (optional)"
|
|
||||||
:errors (fc/field-errors)}
|
|
||||||
[:div {:class "w-24"}
|
|
||||||
(com/date-input {:value (-> (fc/field-value)
|
|
||||||
(atime/unparse-local atime/normal-date))
|
|
||||||
:name (fc/field-name)
|
|
||||||
:error? (fc/field-errors)
|
|
||||||
:placeholder "1/1/2024"})]))]
|
|
||||||
|
|
||||||
(fc/with-field :invoice/invoice-number
|
[:div.flex.space-x-8
|
||||||
(com/validated-field
|
(fc/with-field :invoice/date
|
||||||
{:label "Invoice Number"
|
(com/validated-field
|
||||||
:errors (fc/field-errors)}
|
{:label "Date"
|
||||||
[:div {:class "w-24"}
|
:errors (fc/field-errors)}
|
||||||
(com/text-input {:value (-> (fc/field-value))
|
[:div {:class "w-24"}
|
||||||
:name (fc/field-name)
|
(com/date-input {:value (some-> (fc/field-value)
|
||||||
:error? (fc/field-errors)
|
(atime/unparse-local atime/normal-date))
|
||||||
:placeholder "HA-123"})]))
|
:name (fc/field-name)
|
||||||
(fc/with-field :invoice/total
|
:error? (fc/field-errors)
|
||||||
(com/validated-field
|
:placeholder "1/1/2024"})]))
|
||||||
{:label "Total"
|
(fc/with-field :invoice/due
|
||||||
:errors (fc/field-errors)}
|
(com/validated-field
|
||||||
[:div {:class "w-16"}
|
{:label "Due (optional)"
|
||||||
(com/money-input {:value (-> (fc/field-value))
|
:errors (fc/field-errors)}
|
||||||
:name (fc/field-name)
|
[:div {:class "w-24"}
|
||||||
:class "w-24"
|
(com/date-input {:value (some-> (fc/field-value)
|
||||||
:error? (fc/field-errors)
|
(atime/unparse-local atime/normal-date))
|
||||||
:placeholder "212.44"})]))])
|
:name (fc/field-name)
|
||||||
|
:error? (fc/field-errors)
|
||||||
|
:placeholder "1/1/2024"})]))
|
||||||
|
(fc/with-field :invoice/scheduled-payment
|
||||||
|
(com/validated-field
|
||||||
|
{:label "Scheduled payment (optional)"
|
||||||
|
:errors (fc/field-errors)}
|
||||||
|
[:div {:class "w-24"}
|
||||||
|
(com/date-input {:value (some-> (fc/field-value)
|
||||||
|
(atime/unparse-local atime/normal-date))
|
||||||
|
:name (fc/field-name)
|
||||||
|
:error? (fc/field-errors)
|
||||||
|
:placeholder "1/1/2024"})]))]
|
||||||
|
|
||||||
:footer
|
(fc/with-field :invoice/invoice-number
|
||||||
(mm/default-step-footer linear-wizard this :validation-route ::route/new-wizard-navigate)
|
(com/validated-field
|
||||||
:validation-route ::route/new-wizard-navigate)))
|
{:label "Invoice Number"
|
||||||
|
:errors (fc/field-errors)}
|
||||||
|
[:div {:class "w-24"}
|
||||||
|
(com/text-input {:value (-> (fc/field-value))
|
||||||
|
:name (fc/field-name)
|
||||||
|
:error? (fc/field-errors)
|
||||||
|
:placeholder "HA-123"})]))
|
||||||
|
(fc/with-field :invoice/total
|
||||||
|
(com/validated-field
|
||||||
|
{:label "Total"
|
||||||
|
:errors (fc/field-errors)}
|
||||||
|
[:div {:class "w-16"}
|
||||||
|
(com/money-input {:value (-> (fc/field-value))
|
||||||
|
:name (fc/field-name)
|
||||||
|
:class "w-24"
|
||||||
|
:error? (fc/field-errors)
|
||||||
|
:placeholder "212.44"})]))])
|
||||||
|
|
||||||
|
:footer
|
||||||
|
(mm/default-step-footer linear-wizard this :validation-route ::route/new-wizard-navigate)
|
||||||
|
:validation-route ::route/new-wizard-navigate)))
|
||||||
|
|
||||||
(defn- location-select*
|
(defn- location-select*
|
||||||
[{:keys [name account-location client-locations value]}]
|
[{:keys [name account-location client-locations value]}]
|
||||||
@@ -294,9 +298,10 @@
|
|||||||
|
|
||||||
|
|
||||||
(defn initial-new-wizard-state [request]
|
(defn initial-new-wizard-state [request]
|
||||||
(mm/->MultiStepFormState {:TODO nil}
|
(mm/->MultiStepFormState {:TODO nil
|
||||||
|
:invoice/date (time/plus (time/now) (time/days 12))}
|
||||||
[]
|
[]
|
||||||
{}))
|
{:invoice/date (time/plus (time/now) (time/days 12))}))
|
||||||
|
|
||||||
(defn location-select [{{:keys [name account-id client-id value] :as qp} :query-params}]
|
(defn location-select [{{:keys [name account-id client-id value] :as qp} :query-params}]
|
||||||
(html-response (location-select* {:name name
|
(html-response (location-select* {:name name
|
||||||
|
|||||||
Reference in New Issue
Block a user