cash flows

This commit is contained in:
2024-10-26 00:20:10 -07:00
parent 864ecec1b2
commit 7ee99b3542
11 changed files with 200 additions and 243 deletions

View File

@@ -189,14 +189,14 @@
(defn multi-typeahead- [params]
[:div.relative {:x-data (doto (hx/json {:baseUrl (if (str/includes? (:url params) "?")
(str (:url params) "&q=")
(str (:url params) "?q="))
:reset_elements (js-fn "function(e) {
[:div.relative {:x-data (hx/json {:baseUrl (if (str/includes? (:url params) "?")
(str (:url params) "&q=")
(str (:url params) "?q="))
:reset_elements (js-fn "function(e) {
this.elements = [{value: 'all', label:'All'}].concat(e);
this.active = -1
}")
:toggle (js-fn "function(e) {
:toggle (js-fn "function(e) {
if (e.value == 'all') {
if (this.value.size > 0) {
this.value = new Set([]);
@@ -219,34 +219,33 @@
}
}
}")
:all_selected (boolean (= (:value params) :all)),
:value (cond
(= :all (:value params))
["all"]
:all_selected (boolean (= (:value params) :all)),
:value (cond
(= :all (:value params))
["all"]
(sequential? (:value params))
(map (fn [v] ((:value-fn params identity) v))
(:value params))
:else
[])
:tippy nil
:lookup (into {}
(when (sequential? (:value params))
(map (fn [v] [((:value-fn params identity) v)
((:content-fn params identity) v)])
(:value params))))
:x-init (str "$watch('value', v => $dispatch('change')); ")
:search ""
:active -1
:elements (cond-> [{:value "all" :label "All"}]
(sequential? (:value params))
(into (map (fn [v]
{:value ((:value-fn params identity) v)
:label ((:content-fn params identity) v)})
(:value params))))
:x-ref "r"})
println)
(sequential? (:value params))
(map (fn [v] ((:value-fn params identity) v))
(:value params))
:else
[])
:tippy nil
:lookup (into {}
(when (sequential? (:value params))
(map (fn [v] [((:value-fn params identity) v)
((:content-fn params identity) v)])
(:value params))))
:x-init (str "$watch('value', v => $dispatch('change')); ")
:search ""
:active -1
:elements (cond-> [{:value "all" :label "All"}]
(sequential? (:value params))
(into (map (fn [v]
{:value ((:value-fn params identity) v)
:label ((:content-fn params identity) v)})
(:value params))))
:x-ref "r"})
;; :x-modelable "value.value" TODO
;; :x-model (:x-model params) TODO
:x-init "value=new Set(value || []); "}
@@ -351,7 +350,7 @@
(update :class #(str % (use-size size) " w-full"))
(dissoc :size))]])
(defn multi-date-input- [{:keys [size] :as params}]
(defn multi-calendar-input- [{:keys [size] :as params}]
(let [value (str/join ", "
(for [v (:value params)
:when v]
@@ -379,6 +378,30 @@
(update :class #(str % (use-size size) " w-full"))
(dissoc :size :name :x-model :x-modelable))]]))
(defn calendar-input- [{:keys [size] :as params}]
(let [value (:value params)]
[:div.shrink {:x-data (hx/json {:value value
:dp nil })
:x-modelable "value"
:x-model (:x-model params) }
[:input {:type "hidden" :name (:name params) :x-model "value"}]
[:div
(-> params
(update :class (fnil hh/add-class "") default-input-classes)
(assoc :type "text")
(assoc :value value)
;; the data-date field has to be bound before the datepicker can be initialized
(assoc :x-init "$nextTick(() => { dp = initCalendar($el); ;}); ")
(assoc "x-effect" "if(dp) { dp.setDate(value); } ")
(assoc ":data-date" "value")
(assoc "@htmx:before-history-save" "destroyDatepicker(dp)" )
(assoc "@htmx:before-cleanup-element" "destroyDatepicker(dp)" )
(assoc "x-destroy" "destroyDatepicker(dp)")
(assoc "@change-date.camel" "value = dp.getDate(\"mm/dd/yyyy\");")
(update :class #(str % (use-size size) " w-full"))
(dissoc :size :name :x-model :x-modelable))]]))
(defn field-errors- [{:keys [source key]} & rest]