0
Fork 0
mirror of https://github.com/penpot/penpot.git synced 2025-03-15 09:11:21 -05:00

Remove workspace settings lightbox.

This commit is contained in:
Andrey Antukh 2016-11-29 17:33:58 +01:00
parent e8a4bbea6c
commit af8bc9d3b8
No known key found for this signature in database
GPG key ID: 4DFEBCB8316A8B95
3 changed files with 119 additions and 273 deletions

View file

@ -5,10 +5,8 @@
;; Copyright (c) 2016 Andrey Antukh <niwi@niwi.nz> ;; Copyright (c) 2016 Andrey Antukh <niwi@niwi.nz>
(ns uxbox.main.ui.users (ns uxbox.main.ui.users
(:require [sablono.core :as html :refer-macros [html]] (:require [cuerdas.core :as str]
[cuerdas.core :as str]
[lentes.core :as l] [lentes.core :as l]
[rum.core :as rum]
[uxbox.util.router :as r] [uxbox.util.router :as r]
[potok.core :as ptk] [potok.core :as ptk]
[uxbox.store :as st] [uxbox.store :as st]
@ -20,18 +18,13 @@
;; --- User Menu ;; --- User Menu
(defn menu-render (mx/defc user-menu
[own open?] {:mixins [mx/static]}
(let [open-settings-dialog #(udl/open! :settings)] [open?]
(html [:ul.dropdown {:class (when-not open? "hide")}
[:ul.dropdown {:class (when-not open?
"hide")}
[:li [:li
i/page i/page
[:span "Page settings"]] [:span "Page settings"]]
[:li {:on-click open-settings-dialog}
i/grid
[:span "Grid settings"]]
[:li [:li
i/eye i/eye
[:span "Preview"]] [:span "Preview"]]
@ -40,13 +33,7 @@
[:span "Your account"]] [:span "Your account"]]
[:li {:on-click #(st/emit! (da/logout))} [:li {:on-click #(st/emit! (da/logout))}
i/exit i/exit
[:span "Exit"]]]))) [:span "Exit"]]])
(def user-menu
(mx/component
{:render menu-render
:name "user-menu"
:mixins []}))
;; --- User Widget ;; --- User Widget
@ -54,22 +41,16 @@
(as-> (l/key :profile) $ (as-> (l/key :profile) $
(l/derive $ st/state))) (l/derive $ st/state)))
(defn user-render (mx/defcs user
{:mixins [mx/static mx/reactive (mx/local {:open false})]}
[own] [own]
(let [profile (mx/react profile-ref) (let [profile (mx/react profile-ref)
local (:rum/local own) local (:rum/local own)
photo (if (str/empty? (:photo profile "")) photo (if (str/empty? (:photo profile ""))
"/images/avatar.jpg" "/images/avatar.jpg"
(:photo profile))] (:photo profile))]
(html
[:div.user-zone {:on-mouse-enter #(swap! local assoc :open true) [:div.user-zone {:on-mouse-enter #(swap! local assoc :open true)
:on-mouse-leave #(swap! local assoc :open false)} :on-mouse-leave #(swap! local assoc :open false)}
[:span (:fullname profile)] [:span (:fullname profile)]
[:img {:src photo}] [:img {:src photo}]
(user-menu (:open @local))]))) (user-menu (:open @local))]))
(def user
(mx/component
{:render user-render
:name "user"
:mixins [mx/reactive (rum/local {:open false})]}))

View file

@ -6,9 +6,7 @@
;; Copyright (c) 2015-2016 Juan de la Cruz <delacruzgarciajuan@gmail.com> ;; Copyright (c) 2015-2016 Juan de la Cruz <delacruzgarciajuan@gmail.com>
(ns uxbox.main.ui.workspace.header (ns uxbox.main.ui.workspace.header
(:require [sablono.core :as html :refer-macros [html]] (:require [beicon.core :as rx]
[rum.core :as rum]
[beicon.core :as rx]
[uxbox.config :as cfg] [uxbox.config :as cfg]
[uxbox.util.router :as r] [uxbox.util.router :as r]
[potok.core :as ptk] [potok.core :as ptk]
@ -17,7 +15,6 @@
[uxbox.main.data.history :as udh] [uxbox.main.data.history :as udh]
[uxbox.main.data.lightbox :as udl] [uxbox.main.data.lightbox :as udl]
[uxbox.main.ui.workspace.clipboard] [uxbox.main.ui.workspace.clipboard]
[uxbox.main.ui.workspace.settings]
[uxbox.main.ui.workspace.base :as wb] [uxbox.main.ui.workspace.base :as wb]
[uxbox.main.ui.icons :as i] [uxbox.main.ui.icons :as i]
[uxbox.main.ui.users :as ui.u] [uxbox.main.ui.users :as ui.u]
@ -28,15 +25,15 @@
;; --- Coordinates Widget ;; --- Coordinates Widget
(defn- coordenates-render (mx/defc coordinates
[own] {:mixins [mx/reactive mx/static]}
[]
(let [zoom (mx/react wb/zoom-ref) (let [zoom (mx/react wb/zoom-ref)
coords (some-> (mx/react wb/mouse-canvas-a) coords (some-> (mx/react wb/mouse-canvas-a)
(gpt/divide zoom) (gpt/divide zoom)
(gpt/round 1)) (gpt/round 1))
increase #(st/emit! (dw/increase-zoom)) increase #(st/emit! (dw/increase-zoom))
decrease #(st/emit! (dw/decrease-zoom))] decrease #(st/emit! (dw/decrease-zoom))]
(html
[:ul.options-view [:ul.options-view
[:li.coordinates {:alt "x"} [:li.coordinates {:alt "x"}
(str "X: " (:x coords "-"))] (str "X: " (:x coords "-"))]
@ -45,13 +42,7 @@
[:li.zoom-input [:li.zoom-input
[:span.add-zoom {:on-click increase} "+"] [:span.add-zoom {:on-click increase} "+"]
[:span (str (mth/round (* 100 zoom)) "%")] [:span (str (mth/round (* 100 zoom)) "%")]
[:span.remove-zoom {:on-click decrease} "-"]]]))) [:span.remove-zoom {:on-click decrease} "-"]]]))
(def coordinates
(mx/component
{:render coordenates-render
:name "coordenates"
:mixins [mx/reactive]}))
;; --- Header Component ;; --- Header Component
@ -62,8 +53,9 @@
url (str cfg/viewurl "#/" token "/" index)] url (str cfg/viewurl "#/" token "/" index)]
(js/open url "new tab" ""))) (js/open url "new tab" "")))
(defn header-render (mx/defc header
[own] {:mixins [mx/static mx/reactive]}
[]
(let [project (mx/react wb/project-ref) (let [project (mx/react wb/project-ref)
page (mx/react wb/page-ref) page (mx/react wb/page-ref)
flags (mx/react wb/flags-ref) flags (mx/react wb/flags-ref)
@ -72,7 +64,6 @@
on-redo #(st/emit! (udh/forward-to-next-version)) on-redo #(st/emit! (udh/forward-to-next-version))
on-image #(udl/open! :import-image) on-image #(udl/open! :import-image)
on-download #(udl/open! :download)] on-download #(udl/open! :download)]
(html
[:header#workspace-bar.workspace-bar [:header#workspace-bar.workspace-bar
[:div.main-icon [:div.main-icon
(nav/link (r/route-for :dashboard/projects) i/logo-icon)] (nav/link (r/route-for :dashboard/projects) i/logo-icon)]
@ -152,10 +143,4 @@
:on-click #(on-view-clicked % project page)} :on-click #(on-view-clicked % project page)}
i/play]] i/play]]
(coordinates)] (coordinates)]
(ui.u/user)]))) (ui.u/user)]))
(def header
(mx/component
{:render header-render
:name "workspace-header"
:mixins [mx/static mx/reactive]}))

View file

@ -1,120 +0,0 @@
;; This Source Code Form is subject to the terms of the Mozilla Public
;; License, v. 2.0. If a copy of the MPL was not distributed with this
;; file, You can obtain one at http://mozilla.org/MPL/2.0/.
;;
;; Copyright (c) 2016 Andrey Antukh <niwi@niwi.nz>
;; Copyright (c) 2016 Juan de la Cruz <delacruzgarciajuan@gmail.com>
(ns uxbox.main.ui.workspace.settings
(:require [lentes.core :as l]
[uxbox.main.constants :as c]
[uxbox.store :as st]
[potok.core :as ptk]
[uxbox.main.data.pages :as udp]
[uxbox.main.data.workspace :as udw]
[uxbox.main.data.lightbox :as udl]
[uxbox.main.ui.icons :as i]
[uxbox.util.forms :as forms]
[uxbox.util.mixins :as mx :include-macros true]
[uxbox.main.ui.lightbox :as lbx]
[uxbox.main.ui.colorpicker :as uucp]
[uxbox.main.ui.workspace.base :as wb]
[uxbox.util.dom :as dom]
[uxbox.util.data :refer (parse-int)]))
(def form-data (forms/focus-data :workspace-settings st/state))
(def form-errors (forms/focus-errors :workspace-settings st/state))
(def set-value! (partial forms/set-value! :workspace-settings))
(def set-errors! (partial forms/set-errors! :workspace-settings))
(def page-ref wb/page-ref)
;; --- Form Component
(def +settings-defaults+
{:grid-x-axis c/grid-x-axis
:grid-y-axis c/grid-y-axis
:grid-color "#b5bdb9"
:grid-alignment false})
(def +settings-form+
{:grid-y-axis [forms/required forms/integer [forms/in-range 2 100]]
:grid-x-axis [forms/required forms/integer [forms/in-range 2 100]]
:grid-alignment [forms/boolean]
:grid-color [forms/required forms/color]})
(mx/defc settings-form
{:mixins [mx/reactive]}
[]
(let [{:keys [id] :as page} (mx/react page-ref)
errors (mx/react form-errors)
data (merge +settings-defaults+
(:metadata page)
(mx/react form-data))]
(letfn [(on-field-change [field event]
(let [value (dom/event->value event)
value (parse-int value "")]
(set-value! field value)))
(on-color-change [color]
(set-value! :grid-color color))
(on-align-change [event]
(let [checked? (-> (dom/get-target event)
(dom/checked?))]
(set-value! :grid-alignment checked?)))
(on-submit [event]
(dom/prevent-default event)
(let [[errors data] (forms/validate data +settings-form+)]
(if errors
(set-errors! errors)
(st/emit! (udw/update-metadata id data)
(forms/clear :workspace-settings)
(udl/hide-lightbox)))))]
[:form {:on-submit on-submit}
[:span.lightbox-label "Grid size"]
[:div.project-size
[:div.input-element.pixels
[:input#grid-x.input-text
{:placeholder "X"
:type "number"
:class (forms/error-class errors :grid-x-axis)
:value (:grid-x-axis data "")
:on-change (partial on-field-change :grid-x-axis)
:min 2
:max 100}]]
[:div.input-element.pixels
[:input#grid-y.input-text
{:placeholder "Y"
:type "number"
:class (forms/error-class errors :grid-y-axis)
:value (:grid-y-axis data "")
:on-change (partial on-field-change :grid-y-axis)
:min 2
:max 100}]]]
[:span.lightbox-label "Grid color"]
(uucp/colorpicker
:value (:grid-color data)
:on-change on-color-change)
[:span.lightbox-label "Grid magnet option"]
[:div.input-checkbox.check-primary
[:input
{:type "checkbox"
:on-change on-align-change
:checked (:grid-alignment data)
:id "magnet"
:value "Yes"}]
[:label {:for "magnet"} "Activate magnet"]]
[:input.btn-primary
{:type "submit"
:value "Save"}]])))
(mx/defc settings-dialog
[own]
[:div.lightbox-body.settings
[:h3 "Grid settings"]
(settings-form)
[:a.close {:href "#"
:on-click #(do (dom/prevent-default %)
(udl/close!))} i/close]])
(defmethod lbx/render-lightbox :settings
[_]
(settings-dialog))