Makes appear logic work right
This commit is contained in:
@@ -423,84 +423,109 @@
|
|||||||
(when-let [id (:db/id entity)]
|
(when-let [id (:db/id entity)]
|
||||||
(com/hidden {:name "db/id"
|
(com/hidden {:name "db/id"
|
||||||
:value id}))
|
:value id}))
|
||||||
|
|
||||||
(fc/with-field :transaction-rule/client
|
|
||||||
|
|
||||||
(com/validated-field
|
|
||||||
{:label "Client"
|
|
||||||
:errors (fc/field-errors)}
|
|
||||||
[:div.w-96
|
|
||||||
(com/typeahead-2 {:name (fc/field-name)
|
|
||||||
:x-init "$el.focus()"
|
|
||||||
:error? (fc/error?)
|
|
||||||
:class "w-96"
|
|
||||||
:placeholder "Search..."
|
|
||||||
:url (bidi/path-for ssr-routes/only-routes :company-search)
|
|
||||||
:id (str "form-client-search")
|
|
||||||
:value (fc/field-value)
|
|
||||||
:value-fn (some-fn :db/id identity)
|
|
||||||
:content-fn (fn [c] (cond->> c
|
|
||||||
(nat-int? c) (dc/pull (dc/db conn) '[:client/name])
|
|
||||||
true :client/name))})]))
|
|
||||||
|
|
||||||
(fc/with-field :transaction-rule/bank-account
|
|
||||||
(com/validated-field {:label "Bank Account"
|
|
||||||
:errors (fc/field-errors)}
|
|
||||||
[:div#bank-account-spot.w-96 {:hx-get (bidi/path-for ssr-routes/only-routes :bank-account-typeahead)
|
|
||||||
:hx-trigger (hx/trigger-field-change :name "transaction-rule/client"
|
|
||||||
:from "#edit-form")
|
|
||||||
:hx-swap "innerHTML"
|
|
||||||
:hx-ext "rename-params"
|
|
||||||
:hx-include "#edit-form"
|
|
||||||
:hx-vals (hx/vals {:name (fc/field-name)})
|
|
||||||
:hx-rename-params-ex (cheshire/generate-string {"transaction-rule/client" "client-id"
|
|
||||||
"name" "name"})}
|
|
||||||
(bank-account-typeahead* {:client-id ((some-fn :db/id identity) (:transaction-rule/client entity))
|
|
||||||
:name (fc/field-name)
|
|
||||||
:value (fc/field-value)})]))
|
|
||||||
|
|
||||||
(fc/with-field :transaction-rule/description
|
(fc/with-field :transaction-rule/description
|
||||||
(com/validated-field {:label "Description"
|
(com/validated-field {:label "Description"
|
||||||
:errors (fc/field-errors)}
|
:errors (fc/field-errors)}
|
||||||
(com/text-input {:name (fc/field-name)
|
(com/text-input {:name (fc/field-name)
|
||||||
:error? (fc/error?)
|
:error? (fc/error?)
|
||||||
|
:x-init "$el.focus()"
|
||||||
:placeholder "HOME DEPOT"
|
:placeholder "HOME DEPOT"
|
||||||
:class "w-96"
|
:class "w-96"
|
||||||
:value (fc/field-value)})))
|
:value (fc/field-value)})))
|
||||||
|
[:div.filters {:x-data (hx/json {:clientFilter (boolean (fc/field-value (:transaction-rule/client fc/*current*)))
|
||||||
|
:bankAccountFilter (boolean (fc/field-value (:transaction-rule/bank-account fc/*current*)))
|
||||||
|
:amountFilter (boolean (or (fc/field-value (:transaction-rule/amount-gte fc/*current*))
|
||||||
|
(fc/field-value (:transaction-rule/amount-lte fc/*current*))))
|
||||||
|
:domFilter (boolean (or (fc/field-value (:transaction-rule/dom-gte fc/*current*))
|
||||||
|
(fc/field-value (:transaction-rule/dom-lte fc/*current*))))})}
|
||||||
|
|
||||||
(com/field {:label "Amount"}
|
[:div.flex.gap-2.mb-2
|
||||||
[:div.flex.gap-2
|
(com/a-button {"@click" "clientFilter=true"
|
||||||
(fc/with-field :transaction-rule/amount-gte
|
"x-show" "!clientFilter"} "Filter client")
|
||||||
[:div.flex.flex-col
|
(com/a-button {"@click" "bankAccountFilter=true"
|
||||||
(com/money-input {:name (fc/field-name)
|
"x-show" "clientFilter && !bankAccountFilter"} "Filter bank account")
|
||||||
|
(com/a-button {"@click" "amountFilter=true"
|
||||||
|
"x-show" "!amountFilter"} "Filter amount")
|
||||||
|
(com/a-button {"@click" "domFilter=true"
|
||||||
|
"x-show" "!domFilter"} "Filter day of month")]
|
||||||
|
(fc/with-field :transaction-rule/client
|
||||||
|
|
||||||
|
(com/validated-field
|
||||||
|
(-> {:label "Client"
|
||||||
|
:errors (fc/field-errors)
|
||||||
|
:x-show "clientFilter"}
|
||||||
|
(hx/alpine-appear))
|
||||||
|
[:div.w-96
|
||||||
|
(com/typeahead-2 {:name (fc/field-name)
|
||||||
|
:error? (fc/error?)
|
||||||
|
:class "w-96"
|
||||||
|
:placeholder "Search..."
|
||||||
|
:url (bidi/path-for ssr-routes/only-routes :company-search)
|
||||||
|
:id (str "form-client-search")
|
||||||
|
:value (fc/field-value)
|
||||||
|
:value-fn (some-fn :db/id identity)
|
||||||
|
:content-fn (fn [c] (cond->> c
|
||||||
|
(nat-int? c) (dc/pull (dc/db conn) '[:client/name])
|
||||||
|
true :client/name))})]))
|
||||||
|
|
||||||
|
(fc/with-field :transaction-rule/bank-account
|
||||||
|
(com/validated-field
|
||||||
|
(-> {:label "Bank Account"
|
||||||
|
:errors (fc/field-errors)
|
||||||
|
:x-show "bankAccountFilter"}
|
||||||
|
hx/alpine-appear)
|
||||||
|
[:div#bank-account-spot.w-96 {:hx-get (bidi/path-for ssr-routes/only-routes :bank-account-typeahead)
|
||||||
|
:hx-trigger (hx/trigger-field-change :name "transaction-rule/client"
|
||||||
|
:from "#edit-form")
|
||||||
|
:hx-swap "innerHTML"
|
||||||
|
:hx-ext "rename-params"
|
||||||
|
:hx-include "#edit-form"
|
||||||
|
:hx-vals (hx/vals {:name (fc/field-name)})
|
||||||
|
:hx-rename-params-ex (cheshire/generate-string {"transaction-rule/client" "client-id"
|
||||||
|
"name" "name"})}
|
||||||
|
(bank-account-typeahead* {:client-id ((some-fn :db/id identity) (:transaction-rule/client entity))
|
||||||
|
:name (fc/field-name)
|
||||||
|
:value (fc/field-value)})]))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
(com/field (-> {:label "Amount"
|
||||||
|
:x-show "amountFilter"}
|
||||||
|
hx/alpine-appear)
|
||||||
|
[:div.flex.gap-2
|
||||||
|
(fc/with-field :transaction-rule/amount-gte
|
||||||
|
[:div.flex.flex-col
|
||||||
|
(com/money-input {:name (fc/field-name)
|
||||||
|
:placeholder ">="
|
||||||
|
:class "w-24"
|
||||||
|
:value (fc/field-value)})
|
||||||
|
(com/errors {:errors (fc/field-errors)})])
|
||||||
|
(fc/with-field :transaction-rule/amount-lte
|
||||||
|
[:div.flex.flex-col
|
||||||
|
(com/money-input {:name (fc/field-name)
|
||||||
|
:placeholder "<="
|
||||||
|
:class "w-24"
|
||||||
|
:value (fc/field-value)})
|
||||||
|
(com/errors {:errors (fc/field-errors)})])])
|
||||||
|
|
||||||
|
(com/field (-> {:label "Day of month"
|
||||||
|
:x-show "domFilter"}
|
||||||
|
hx/alpine-appear)
|
||||||
|
[:div.flex.gap-2
|
||||||
|
(fc/with-field :transaction-rule/dom-gte
|
||||||
|
(com/validated-field
|
||||||
|
{:errors (fc/field-errors)}
|
||||||
|
(com/int-input {:name (fc/field-name)
|
||||||
:placeholder ">="
|
:placeholder ">="
|
||||||
:class "w-24"
|
:class "w-24"
|
||||||
:value (fc/field-value)})
|
:value (fc/field-value)})))
|
||||||
(com/errors {:errors (fc/field-errors)})])
|
(fc/with-field :transaction-rule/dom-lte
|
||||||
(fc/with-field :transaction-rule/amount-lte
|
(com/validated-field
|
||||||
[:div.flex.flex-col
|
{:errors (fc/field-errors)}
|
||||||
(com/money-input {:name (fc/field-name)
|
(com/int-input {:name (fc/field-name)
|
||||||
:placeholder "<="
|
:placeholder ">="
|
||||||
:class "w-24"
|
:class "w-24"
|
||||||
:value (fc/field-value)})
|
:value (fc/field-value)})))])]
|
||||||
(com/errors {:errors (fc/field-errors)})])])
|
|
||||||
|
|
||||||
(com/field {:label "Day of month"}
|
|
||||||
[:div.flex.gap-2
|
|
||||||
(fc/with-field :transaction-rule/dom-gte
|
|
||||||
(com/validated-field
|
|
||||||
{:errors (fc/field-errors)}
|
|
||||||
(com/int-input {:name (fc/field-name)
|
|
||||||
:placeholder ">="
|
|
||||||
:class "w-24"
|
|
||||||
:value (fc/field-value)})))
|
|
||||||
(fc/with-field :transaction-rule/dom-lte
|
|
||||||
(com/validated-field
|
|
||||||
{:errors (fc/field-errors)}
|
|
||||||
(com/int-input {:name (fc/field-name)
|
|
||||||
:placeholder ">="
|
|
||||||
:class "w-24"
|
|
||||||
:value (fc/field-value)})))])
|
|
||||||
|
|
||||||
[:h2.text-lg "Outcomes"]
|
[:h2.text-lg "Outcomes"]
|
||||||
(fc/with-field :transaction-rule/vendor
|
(fc/with-field :transaction-rule/vendor
|
||||||
|
|||||||
@@ -193,7 +193,8 @@ c.clearChoices();
|
|||||||
[:p.mt-2.text-xs.text-red-600.dark:text-red-500.h-4 (str/join ", " errors)]))
|
[:p.mt-2.text-xs.text-red-600.dark:text-red-500.h-4 (str/join ", " errors)]))
|
||||||
|
|
||||||
(defn field- [params & rest]
|
(defn field- [params & rest]
|
||||||
[:div {:id (:id params) :class (hh/add-class "group" (:class params))}
|
[:div (-> params
|
||||||
|
(update :class #(hh/add-class (or % "") "group" )))
|
||||||
(when (:label params)
|
(when (:label params)
|
||||||
[:label {:class "block mb-2 text-sm font-medium text-gray-900 dark:text-white"} (:label params)])
|
[:label {:class "block mb-2 text-sm font-medium text-gray-900 dark:text-white"} (:label params)])
|
||||||
rest
|
rest
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
(ns auto-ap.ssr.components.radio
|
(ns auto-ap.ssr.components.radio
|
||||||
(:require [auto-ap.ssr.hiccup-helper :as hh]))
|
(:require [auto-ap.ssr.hiccup-helper :as hh]
|
||||||
|
[auto-ap.ssr.hx :as hx]))
|
||||||
|
|
||||||
(defn radio- [{:keys [options name title size orientation] :or {size :medium} selected-value :value}]
|
(defn radio- [{:keys [options name title size orientation] :or {size :medium} selected-value :value}]
|
||||||
[:h3 {:class "mb-4 font-semibold text-gray-900 dark:text-white"} title]
|
[:h3 {:class "mb-4 font-semibold text-gray-900 dark:text-white"} title]
|
||||||
@@ -10,7 +11,8 @@
|
|||||||
[:li {:class (cond-> "w-full border-b border-gray-200 rounded-t-lg dark:border-gray-600"
|
[:li {:class (cond-> "w-full border-b border-gray-200 rounded-t-lg dark:border-gray-600"
|
||||||
(= orientation :horizontal) (-> (hh/remove-wildcard ["w-full" "rounded-"])
|
(= orientation :horizontal) (-> (hh/remove-wildcard ["w-full" "rounded-"])
|
||||||
(hh/add-class "w-auto shrink-0 block rounded-lg border border-gray-200 dark:border-gray-600 px-3")))}
|
(hh/add-class "w-auto shrink-0 block rounded-lg border border-gray-200 dark:border-gray-600 px-3")))}
|
||||||
[:div {:class "flex items-center pl-3"}
|
[:div {:class (cond-> "flex items-center"
|
||||||
|
(not= orientation :horizontal) (hh/add-class "pl-3"))}
|
||||||
[:input (cond-> {:id (str "list-" name "-" value)
|
[:input (cond-> {:id (str "list-" name "-" value)
|
||||||
:type "radio",
|
:type "radio",
|
||||||
:value value
|
:value value
|
||||||
|
|||||||
@@ -26,8 +26,9 @@
|
|||||||
([cursor]
|
([cursor]
|
||||||
(apply path->name2 (cursor/path cursor))))
|
(apply path->name2 (cursor/path cursor))))
|
||||||
|
|
||||||
(defn field-value []
|
(defn field-value
|
||||||
@*current*)
|
([] (field-value *current*))
|
||||||
|
([cursor] @cursor))
|
||||||
|
|
||||||
(defn field-errors
|
(defn field-errors
|
||||||
([]
|
([]
|
||||||
|
|||||||
@@ -18,3 +18,9 @@
|
|||||||
|
|
||||||
(defn triggers [& triggers]
|
(defn triggers [& triggers]
|
||||||
(str/join ", " triggers))
|
(str/join ", " triggers))
|
||||||
|
|
||||||
|
(defn alpine-appear [m]
|
||||||
|
(assoc m
|
||||||
|
"x-transition:enter" "transition duration-500"
|
||||||
|
"x-transition:enter-start" "opacity-0"
|
||||||
|
"x-transition:enter-end" "opacity-100"))
|
||||||
|
|||||||
Reference in New Issue
Block a user