add page margin option support. clean up page option -> css rendering

This commit is contained in:
Gered 2017-04-02 15:43:28 -04:00
parent 823c8f0e7c
commit 78979fd747

View file

@ -46,6 +46,7 @@
(defn ->page-size-css (defn ->page-size-css
[{:keys [size orientation] :as page-options}] [{:keys [size orientation] :as page-options}]
(if (or size orientation) (if (or size orientation)
[[:size
(string/trim (string/trim
(str (str
(cond (cond
@ -55,15 +56,33 @@
" " " "
(if (keyword? orientation) (if (keyword? orientation)
(name orientation) (name orientation)
orientation))))) orientation)))]]))
(defn ->page-margin-css
[{:keys [margin] :as page-options}]
(let [default-margin (get-in default-options [:page :margin])]
(cond
(map? margin)
[[:margin-left (or (:left margin) default-margin)]
[:margin-top (or (:top margin) default-margin)]
[:margin-right (or (:right margin) default-margin)]
[:margin-bottom (or (:bottom margin) default-margin)]]
(sequential? margin)
[[:margin (string/join " " margin)]]
:else
[[:margin (str (or margin default-margin))]])))
(defn page-options->css (defn page-options->css
[page-options] [page-options]
(let [styles (->> [[:size (->page-size-css page-options)]] (let [page-options (merge (:page default-options) page-options)]
(into []) [["@page"
(->> (concat
(->page-size-css page-options)
(->page-margin-css page-options))
(remove #(nil? (second %))) (remove #(nil? (second %)))
(reduce #(assoc %1 (first %2) (second %2)) {}))] (reduce #(assoc %1 (first %2) (second %2)) {}))]]))
[["@page" styles]]))
(defn append-stylesheet-link-tags! (defn append-stylesheet-link-tags!
[^Element parent stylesheets] [^Element parent stylesheets]