mirror of
https://github.com/status-im/re-frame-10x.git
synced 2025-01-11 22:54:14 +00:00
Add re-com v-box
This commit is contained in:
parent
1c585e2e5d
commit
12542938a3
@ -169,6 +169,55 @@
|
|||||||
attr)]
|
attr)]
|
||||||
children)))
|
children)))
|
||||||
|
|
||||||
|
(defn v-box
|
||||||
|
"Returns hiccup which produces a vertical box.
|
||||||
|
It's primary role is to act as a container for components and lays it's children from top to bottom.
|
||||||
|
By default, it also acts as a child under it's parent"
|
||||||
|
[& {:keys [size width height min-width min-height max-width max-height justify align align-self margin padding gap children class style attr]
|
||||||
|
:or {size "none" justify :start align :stretch}
|
||||||
|
:as args}]
|
||||||
|
(let [s (merge
|
||||||
|
(flex-flow-style "column nowrap")
|
||||||
|
(flex-child-style size)
|
||||||
|
(when width {:width width})
|
||||||
|
(when height {:height height})
|
||||||
|
(when min-width {:min-width min-width})
|
||||||
|
(when min-height {:min-height min-height})
|
||||||
|
(when max-width {:max-width max-width})
|
||||||
|
(when max-height {:max-height max-height})
|
||||||
|
(justify-style justify)
|
||||||
|
(align-style :align-items align)
|
||||||
|
(when align-self (align-style :align-self align-self))
|
||||||
|
(when margin {:margin margin}) ;; margin and padding: "all" OR "top&bottom right&left" OR "top right bottom left"
|
||||||
|
(when padding {:padding padding})
|
||||||
|
style)
|
||||||
|
gap-form (when gap [gap-f
|
||||||
|
:size gap
|
||||||
|
:height gap]) ;; TODO: required to get around a Chrome bug: https://code.google.com/p/chromium/issues/detail?id=423112. Remove once fixed.
|
||||||
|
children (if gap
|
||||||
|
(interpose gap-form (filter identity children)) ;; filter is to remove possible nils so we don't add unwanted gaps
|
||||||
|
children)]
|
||||||
|
(into [:div
|
||||||
|
(merge
|
||||||
|
{:class (str "rc-v-box display-flex " class) :style s}
|
||||||
|
attr)]
|
||||||
|
children)))
|
||||||
|
|
||||||
|
(defn line
|
||||||
|
"Returns a component which produces a line between children in a v-box/h-box along the main axis.
|
||||||
|
Specify size in pixels and a stancard CSS color. Defaults to a 1px lightgray line"
|
||||||
|
[& {:keys [size color class style attr]
|
||||||
|
:or {size "1px" color "lightgray"}
|
||||||
|
:as args}]
|
||||||
|
(let [s (merge
|
||||||
|
(flex-child-style (str "0 0 " size))
|
||||||
|
{:background-color color}
|
||||||
|
style)]
|
||||||
|
[:div
|
||||||
|
(merge
|
||||||
|
{:class (str "rc-line " class) :style s}
|
||||||
|
attr)]))
|
||||||
|
|
||||||
(defn- input-text-base
|
(defn- input-text-base
|
||||||
"Returns markup for a basic text input label"
|
"Returns markup for a basic text input label"
|
||||||
[& {:keys [model input-type] :as args}]
|
[& {:keys [model input-type] :as args}]
|
||||||
@ -247,3 +296,7 @@
|
|||||||
(defn input-text
|
(defn input-text
|
||||||
[& args]
|
[& args]
|
||||||
(apply input-text-base :input-type :input args))
|
(apply input-text-base :input-type :input args))
|
||||||
|
|
||||||
|
(def re-com-css
|
||||||
|
[[:.display-flex {:display "flex"}]
|
||||||
|
[:.display-inline-flex {:display "flex"}]])
|
||||||
|
Loading…
x
Reference in New Issue
Block a user