73 lines
2.5 KiB
Clojure
73 lines
2.5 KiB
Clojure
(ns auto-ap.views.components
|
|
(:require [reagent.core :as r]
|
|
[clojure.string :as str]
|
|
[auto-ap.views.components.multi :as multi]
|
|
[auto-ap.views.components.money-field :as money]
|
|
[auto-ap.views.components.number :as number]
|
|
[auto-ap.views.components.typeahead.vendor :as typeahead]
|
|
[auto-ap.views.components.button-radio :as br]))
|
|
|
|
|
|
(defn checkbox [{:keys [on-change
|
|
value
|
|
label]
|
|
:as props}]
|
|
(into [:label.checkbox
|
|
[:input (-> props
|
|
(assoc
|
|
:type "checkbox"
|
|
:on-change (fn []
|
|
(on-change (not value)))
|
|
:checked value)
|
|
(dissoc :value))]
|
|
" " label
|
|
]
|
|
(r/children (r/current-component))))
|
|
|
|
(defn select-field [{:keys [options allow-nil? class on-change keywordize?] :as props}]
|
|
[:div.select {:class class}
|
|
[:select (-> props
|
|
(dissoc :allow-nil? :class :options)
|
|
(update :value (fn [v]
|
|
(cond (str/blank? v)
|
|
""
|
|
|
|
keywordize?
|
|
(name v)
|
|
|
|
:else
|
|
v)))
|
|
(assoc :on-change
|
|
(fn [e]
|
|
(println "VALUE IS" (keyword (.. e -target -value)))
|
|
(if keywordize?
|
|
(on-change (keyword (.. e -target -value)))
|
|
(on-change e))))
|
|
(dissoc :keywordize?))
|
|
[:<>
|
|
(when allow-nil?
|
|
[:option {:value nil}])
|
|
(for [[k v] options]
|
|
^{:key k} [:option {:value k} v])]]])
|
|
|
|
(defn switch-input [{:keys [id label on-change value class]}]
|
|
[:<>
|
|
[:input.switch {:type "checkbox"
|
|
:id id
|
|
:on-change (fn []
|
|
(on-change (not value)))
|
|
:checked (boolean value)
|
|
:class class}]
|
|
[:label {:for id} label]])
|
|
|
|
(def multi-field-v2 multi/multi-field-v2)
|
|
|
|
(def number-input number/number-input)
|
|
|
|
(def money-input money/field)
|
|
|
|
(def search-backed-typeahead typeahead/search-backed-typeahead)
|
|
(def entity-typeahead typeahead/typeahead-v3)
|
|
|
|
(def button-radio-input br/button-radio)
|