Minor structure refactor.

Make forms and messages modules independent of
store location (making them plugables).
This commit is contained in:
Andrey Antukh 2017-01-13 22:01:13 +01:00
parent 8c28a8c0a7
commit 08b0a096eb
No known key found for this signature in database
GPG key ID: 4DFEBCB8316A8B95
87 changed files with 573 additions and 505 deletions

View file

@ -9,11 +9,10 @@
(:require [lentes.core :as l]
[cuerdas.core :as str]
[potok.core :as ptk]
[uxbox.store :as st]
[uxbox.main.store :as st]
[uxbox.main.data.auth :as da]
[uxbox.main.data.messages :as udm]
[uxbox.main.ui.icons :as i]
[uxbox.main.ui.messages :as uum]
[uxbox.main.ui.messages :refer [messages-widget]]
[uxbox.main.ui.navigation :as nav]
[uxbox.util.mixins :as mx :include-macros true]
[uxbox.util.router :as rt]
@ -21,12 +20,12 @@
[uxbox.util.forms :as forms]))
(def form-data (forms/focus-data :login st/state))
(def set-value! (partial forms/set-value! :login))
(def set-value! (partial forms/set-value! st/store :login))
(defn- login-page-will-mount
[own]
(when @st/auth-ref
(rt/go :dashboard/projects))
(st/emit! (rt/navigate :dashboard/projects)))
own)
(def +login-form+
@ -68,8 +67,10 @@
:value "Continue"
:type "submit"}]
[:div.login-links
[:a {:on-click #(rt/go :auth/recovery-request)} "Forgot your password?"]
[:a {:on-click #(rt/go :auth/register)} "Don't have an account?"]]]])))
[:a {:on-click #(st/emit! (rt/navigate :auth/recovery-request))}
"Forgot your password?"]
[:a {:on-click #(st/emit! (rt/navigate :auth/register))}
"Don't have an account?"]]]])))
(mx/defc login-page
{:mixins [mx/static]
@ -77,6 +78,6 @@
[]
[:div.login
[:div.login-body
(uum/messages)
(messages-widget)
[:a i/logo]
(login-form)]])

View file

@ -8,22 +8,22 @@
(ns uxbox.main.ui.auth.recovery
(:require [lentes.core :as l]
[cuerdas.core :as str]
[uxbox.util.router :as rt]
[uxbox.store :as st]
[potok.core :as ptk]
[uxbox.main.store :as st]
[uxbox.main.data.auth :as uda]
[uxbox.main.ui.icons :as i]
[uxbox.main.ui.messages :refer [messages-widget]]
[uxbox.main.ui.navigation :as nav]
[uxbox.util.router :as rt]
[uxbox.util.forms :as forms]
[uxbox.util.mixins :as mx :include-macros true]
[uxbox.util.dom :as dom]
[uxbox.main.data.auth :as uda]
[uxbox.main.data.messages :as udm]
[uxbox.main.ui.icons :as i]
[uxbox.main.ui.messages :as uum]
[uxbox.main.ui.navigation :as nav]))
[uxbox.util.dom :as dom]))
;; --- Recovery Form
(def form-data (forms/focus-data :recovery st/state))
(def set-value! (partial forms/set-value! :recovery))
(def set-value! (partial forms/set-value! st/store :recovery))
(def +recovery-form+
{:password [forms/required forms/string]})
@ -40,7 +40,8 @@
(on-submit [event]
(dom/prevent-default event)
(st/emit! (uda/recovery data)
(forms/clear :recovery)))]
(forms/clear-form :recovery)
(forms/clear-errors :recovery)))]
[:form {:on-submit on-submit}
[:div.login-content
[:input.input-text
@ -56,7 +57,7 @@
:value "Recover password"
:type "submit"}]
[:div.login-links
[:a {:on-click #(rt/go :auth/login)} "Go back!"]]]])))
[:a {:on-click #(st/emit! (rt/navigate :auth/login))} "Go back!"]]]])))
;; --- Recovery Page
@ -67,12 +68,11 @@
own))
(mx/defc recovery-page
{:mixins [mx/static]
:will-mount recovery-page-will-mount
:will-unmount (forms/cleaner-fn :recovery)}
{:mixins [mx/static (forms/clear-mixin st/store :recovery)]
:will-mount recovery-page-will-mount}
[token]
[:div.login
[:div.login-body
(uum/messages)
(messages-widget)
[:a i/logo]
(recovery-form token)]])

View file

@ -2,26 +2,26 @@
;; 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) 2015-2016 Andrey Antukh <niwi@niwi.nz>
;; Copyright (c) 2015-2016 Juan de la Cruz <delacruzgarciajuan@gmail.com>
;; Copyright (c) 2015-2017 Andrey Antukh <niwi@niwi.nz>
;; Copyright (c) 2015-2017 Juan de la Cruz <delacruzgarciajuan@gmail.com>
(ns uxbox.main.ui.auth.recovery-request
(:require [lentes.core :as l]
[cuerdas.core :as str]
[uxbox.util.router :as rt]
[potok.core :as ptk]
[uxbox.main.store :as st]
[uxbox.main.data.auth :as uda]
[uxbox.main.ui.icons :as i]
[uxbox.main.ui.messages :refer [messages-widget]]
[uxbox.main.ui.navigation :as nav]
[uxbox.util.router :as rt]
[uxbox.util.forms :as forms]
[uxbox.util.mixins :as mx :include-macros true]
[uxbox.util.dom :as dom]
[uxbox.store :as st]
[uxbox.main.data.auth :as uda]
[uxbox.main.data.messages :as udm]
[uxbox.main.ui.icons :as i]
[uxbox.main.ui.messages :as uum]
[uxbox.main.ui.navigation :as nav]))
[uxbox.util.dom :as dom]))
(def form-data (forms/focus-data :recovery-request st/state))
(def set-value! (partial forms/set-value! :recovery-request))
(def set-value! (partial forms/set-value! st/store :recovery-request))
(def +recovery-request-form+
{:username [forms/required forms/string]})
@ -37,7 +37,8 @@
(on-submit [event]
(dom/prevent-default event)
(st/emit! (uda/recovery-request data)
(forms/clear :recovery-request)))]
(forms/clear-form :recovery-request)
(forms/clear-errors :recovery-request)))]
[:form {:on-submit on-submit}
[:div.login-content
[:input.input-text
@ -53,16 +54,15 @@
:value "Recover password"
:type "submit"}]
[:div.login-links
[:a {:on-click #(rt/go :auth/login)} "Go back!"]]]])))
[:a {:on-click #(st/emit! (rt/navigate :auth/login))} "Go back!"]]]])))
;; --- Recovery Request Page
(mx/defc recovery-request-page
{:mixins [mx/static]
:will-unmount (forms/cleaner-fn :recovery-request)}
{:mixins [mx/static (forms/clear-mixin st/store :recovery-request)]}
[]
[:div.login
[:div.login-body
(uum/messages)
(messages-widget)
[:a i/logo]
(recovery-request-form)]])

View file

@ -8,24 +8,23 @@
(ns uxbox.main.ui.auth.register
(:require [lentes.core :as l]
[cuerdas.core :as str]
[uxbox.util.router :as rt]
[potok.core :as ptk]
[uxbox.main.store :as st]
[uxbox.main.data.auth :as uda]
[uxbox.main.ui.icons :as i]
[uxbox.main.ui.messages :refer [messages-widget]]
[uxbox.main.ui.navigation :as nav]
[uxbox.util.router :as rt]
[uxbox.util.forms :as forms]
[uxbox.util.mixins :as mx :include-macros true]
[uxbox.util.dom :as dom]
[uxbox.store :as st]
[uxbox.main.data.auth :as uda]
[uxbox.main.data.messages :as udm]
[uxbox.main.ui.icons :as i]
[uxbox.main.ui.messages :as uum]
[uxbox.main.ui.navigation :as nav]))
[uxbox.util.dom :as dom]))
;; --- Register Form
(def form-data (forms/focus-data :register st/state))
(def form-errors (forms/focus-errors :register st/state))
(def set-value! (partial forms/set-value! :register))
(def set-error! (partial forms/set-error! :register))
(def set-value! (partial forms/set-value! st/store :register))
(def set-error! (partial forms/set-error! st/store :register))
(def +register-form+
{:username [forms/required forms/string]
@ -94,8 +93,7 @@
:value "Register"
:type "submit"}]
[:div.login-links
;; [:a {:on-click #(rt/go :auth/recover-password)} "Forgot your password?"]
[:a {:on-click #(rt/go :auth/login)} "Already have an account?"]]]])))
[:a {:on-click #(st/emit! (rt/navigate :auth/login))} "Already have an account?"]]]])))
;; --- Register Page
@ -104,6 +102,6 @@
[own]
[:div.login
[:div.login-body
(uum/messages)
(messages-widget)
[:a i/logo]
(register-form)]])

View file

@ -8,11 +8,12 @@
(ns uxbox.main.ui.dashboard.colors
(:require [cuerdas.core :as str]
[lentes.core :as l]
[potok.core :as ptk]
[uxbox.main.data.colors :as dc]
[uxbox.main.data.dashboard :as dd]
[uxbox.main.data.lightbox :as udl]
[uxbox.store :as st]
[uxbox.main.ui.messages :as uum]
[uxbox.main.store :as st]
[uxbox.main.ui.messages :refer [messages-widget]]
[uxbox.main.ui.colorpicker :refer (colorpicker)]
[uxbox.main.ui.dashboard.header :refer (header)]
[uxbox.main.ui.icons :as i]
@ -22,8 +23,7 @@
[uxbox.util.dom :as dom]
[uxbox.util.i18n :as t :refer (tr)]
[uxbox.util.lens :as ul]
[uxbox.util.mixins :as mx :include-macros true]
[potok.core :as ptk]))
[uxbox.util.mixins :as mx :include-macros true]))
;; --- Refs
@ -332,7 +332,7 @@
colls (mx/react collections-ref)
coll (get colls (:id state))]
[:main.dashboard-main
(uum/messages)
(messages-widget)
(header)
[:section.dashboard-content
(nav state colls)

View file

@ -7,7 +7,7 @@
(ns uxbox.main.ui.dashboard.header
(:require [lentes.core :as l]
[uxbox.store :as st]
[uxbox.main.store :as st]
[uxbox.main.data.projects :as dp]
[uxbox.main.ui.navigation :as nav]
[uxbox.main.ui.icons :as i]

View file

@ -8,7 +8,7 @@
(ns uxbox.main.ui.dashboard.icons
(:require [lentes.core :as l]
[cuerdas.core :as str]
[uxbox.store :as st]
[uxbox.main.store :as st]
[uxbox.main.data.lightbox :as udl]
[uxbox.main.data.icons :as di]
[uxbox.main.ui.icons :as i]

View file

@ -9,7 +9,7 @@
(:require [cuerdas.core :as str]
[lentes.core :as l]
[uxbox.util.i18n :as t :refer (tr)]
[uxbox.store :as st]
[uxbox.main.store :as st]
[potok.core :as ptk]
[uxbox.main.data.lightbox :as udl]
[uxbox.main.data.images :as di]

View file

@ -8,21 +8,21 @@
(ns uxbox.main.ui.dashboard.projects
(:require [lentes.core :as l]
[cuerdas.core :as str]
[uxbox.store :as st]
[uxbox.main.store :as st]
[uxbox.main.constants :as c]
[uxbox.main.data.projects :as udp]
[uxbox.main.data.lightbox :as udl]
[uxbox.main.ui.icons :as i]
[uxbox.main.ui.dashboard.header :refer (header)]
[uxbox.main.ui.dashboard.header :refer [header]]
[uxbox.main.ui.dashboard.projects-createlightbox]
[uxbox.main.ui.lightbox :as lbx]
[uxbox.main.ui.messages :as uum]
[uxbox.main.ui.messages :refer [messages-widget]]
[uxbox.main.ui.keyboard :as kbd]
[uxbox.main.exports :as exports]
[uxbox.util.i18n :as t :refer (tr)]
[uxbox.util.router :as r]
[potok.core :as ptk]
[uxbox.util.data :refer (read-string)]
[uxbox.util.data :refer [read-string]]
[uxbox.util.dom :as dom]
[uxbox.util.blob :as blob]
[uxbox.util.mixins :as mx :include-macros true]
@ -241,7 +241,7 @@
(let [state (mx/react dashboard-ref)
projects-map (mx/react projects-map-ref)]
[:main.dashboard-main
(uum/messages)
(messages-widget)
(header)
[:section.dashboard-content
(menu state projects-map)

View file

@ -9,20 +9,19 @@
(:require [lentes.core :as l]
[cuerdas.core :as str]
[potok.core :as ptk]
[uxbox.store :as st]
[uxbox.main.store :as st]
[uxbox.main.constants :as c]
[uxbox.main.exports :as exports]
[uxbox.main.data.projects :as udp]
[uxbox.main.data.lightbox :as udl]
[uxbox.main.ui.icons :as i]
[uxbox.main.ui.dashboard.header :refer (header)]
[uxbox.main.ui.dashboard.header :refer [header]]
[uxbox.main.ui.lightbox :as lbx]
[uxbox.main.ui.messages :as uum]
[uxbox.main.ui.keyboard :as kbd]
[uxbox.util.i18n :as t :refer (tr)]
[uxbox.util.i18n :as t :refer [tr]]
[uxbox.util.router :as r]
[uxbox.util.forms :as forms]
[uxbox.util.data :refer (read-string)]
[uxbox.util.data :refer [read-string]]
[uxbox.util.dom :as dom]
[uxbox.util.blob :as blob]
[uxbox.util.mixins :as mx :include-macros true]
@ -30,9 +29,9 @@
(def form-data (forms/focus-data :create-project st/state))
(def form-errors (forms/focus-errors :create-project st/state))
(def set-value! (partial forms/set-value! :create-project))
(def set-error! (partial forms/set-error! :create-project))
(def clear! (partial forms/clear! :create-project))
(def set-value! (partial forms/set-value! st/store :create-project))
(def set-error! (partial forms/set-error! st/store :create-project))
(def clear! (partial forms/clear! st/store :create-project))
(def ^:private create-project-form
{:name [forms/required forms/string]
@ -74,7 +73,7 @@
(mx/defcs new-project-lightbox
{:mixins [mx/static mx/reactive
(forms/clear-mixin :create-project)]}
(forms/clear-mixin st/store :create-project)]}
[own]
(let [data (merge c/project-defaults (mx/react form-data))
errors (mx/react form-errors)

View file

@ -2,7 +2,7 @@
(:require [sablono.core :as html :refer-macros [html]]
[rum.core :as rum]
[lentes.core :as l]
[uxbox.store :as st]
[uxbox.main.store :as st]
[uxbox.main.data.lightbox :as udl]
[uxbox.util.mixins :as mx :include-macros true]
[uxbox.main.ui.keyboard :as k]

View file

@ -2,27 +2,17 @@
;; 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-2017 Andrey Antukh <niwi@niwi.nz>
(ns uxbox.main.ui.loader
(:require [sablono.core :refer-macros [html]]
[rum.core :as rum]
[uxbox.store :as st]
(:require [uxbox.main.store :as st]
[uxbox.main.ui.icons :as i]
[uxbox.util.mixins :as mx :include-macros true]
[uxbox.main.ui.shapes]))
[uxbox.util.mixins :as mx :include-macros true]))
;; --- Component
(defn loader-render
[own]
(mx/defc loader
{:mixins [mx/reactive mx/static]}
[]
(when (mx/react st/loader)
(html
[:div.loader-content i/loader])))
(def loader
(mx/component
{:render loader-render
:name "loader"
:mixins [mx/reactive mx/static]}))
[:div.loader-content i/loader]))

View file

@ -1,91 +1,16 @@
(ns uxbox.main.ui.messages
(:require [sablono.core :as html :refer-macros [html]]
[rum.core :as rum]
[lentes.core :as l]
[uxbox.store :as st]
[uxbox.main.data.messages :as udm]
[uxbox.main.ui.icons :as i]
[uxbox.util.timers :as ts]
[uxbox.util.mixins :as mx :include-macros true]
[uxbox.util.data :refer (classnames)]
[uxbox.util.dom :as dom]))
;; --- Lenses
(:require [lentes.core :as l]
[uxbox.main.store :as st]
[uxbox.util.messages :as uum]
[uxbox.util.mixins :as mx :include-macros true]))
(def ^:private message-ref
(-> (l/key :message)
(l/derive st/state)))
;; --- Notification Component
(defn notification-render
[own {:keys [type] :as message}]
(let [classes (classnames :error (= type :error)
:info (= type :info)
:hide-message (= (:state message) :hide)
:quick true)
close #(udm/close!)]
(html
[:div.message {:class classes}
[:div.message-body
[:span.close {:on-click close}
i/close]
[:span (:content message)]]])))
(def ^:private notification-box
(mx/component
{:render notification-render
:name "notification"
:mixins [mx/static]}))
;; --- Dialog Component
(defn dialog-render
[own {:keys [on-accept on-cancel] :as message}]
(let [classes (classnames :info true
:hide-message (= (:state message) :hide))]
(letfn [(accept [event]
(dom/prevent-default event)
(on-accept)
(ts/schedule 0 udm/close!))
(cancel [event]
(dom/prevent-default event)
(when on-cancel
(on-cancel))
(ts/schedule 0 udm/close!))]
(html
[:div.message {:class classes}
[:div.message-body
[:span.close {:on-click cancel} i/close]
[:span (:content message)]
[:div.message-action
[:a.btn-transparent.btn-small
{:on-click accept}
"Accept"]
[:a.btn-transparent.btn-small
{:on-click cancel}
"Cancel"]]]]))))
(def ^:private dialog-box
(mx/component
{:render dialog-render
:name "dialog"
:mixins [mx/static]}))
;; --- Main Component (entry point)
(defn messages-render
[own]
(let [message (mx/react message-ref)]
(case (:type message)
:error (notification-box message)
:info (notification-box message)
:dialog (dialog-box message)
nil)))
(def messages
(mx/component
{:render messages-render
:name "messages"
:mixins [mx/static mx/reactive]}))
(mx/defc messages-widget
{:mixins [mx/static mx/reactive]}
[]
(let [message (mx/react message-ref)
on-close #(st/emit! (uum/hide))]
(uum/messages-widget (assoc message :on-close on-close))))

View file

@ -12,7 +12,7 @@
[uxbox.util.i18n :refer (tr)]
[uxbox.util.router :as r]
[potok.core :as ptk]
[uxbox.store :as st]
[uxbox.main.store :as st]
[uxbox.main.data.projects :as dp]
[uxbox.main.ui.navigation :as nav]
[uxbox.main.ui.icons :as i]

View file

@ -8,21 +8,21 @@
(ns uxbox.main.ui.settings.password
(:require [lentes.core :as l]
[cuerdas.core :as str]
[uxbox.util.i18n :as t :refer (tr)]
[potok.core :as ptk]
[uxbox.util.forms :as forms]
[uxbox.util.dom :as dom]
[uxbox.util.mixins :as mx :include-macros true]
[uxbox.store :as st]
[uxbox.main.store :as st]
[uxbox.main.data.users :as udu]
[uxbox.main.ui.icons :as i]
[uxbox.main.ui.messages :as uum]
[uxbox.main.ui.settings.header :refer (header)]))
[uxbox.main.ui.messages :refer [messages-widget]]
[uxbox.main.ui.settings.header :refer [header]]
[uxbox.util.forms :as forms]
[uxbox.util.dom :as dom]
[uxbox.util.mixins :as mx :include-macros true]))
(def form-data (forms/focus-data :profile-password st/state))
(def form-errors (forms/focus-errors :profile-password st/state))
(def set-value! (partial forms/set-value! :profile-password))
(def set-errors! (partial forms/set-errors! :profile-password))
(def set-value! (partial forms/set-value! st/store :profile-password))
(def set-errors! (partial forms/set-errors! st/store :profile-password))
(def +password-form+
[[:password-1 forms/required forms/string [forms/min-len 6]]
@ -42,7 +42,6 @@
(on-submit [event]
(println "on-submit" data)
#_(st/emit! (udu/update-password form)))]
(println "password-form" data)
[:form.password-form
[:span.user-settings-label "Change password"]
[:input.input-text
@ -79,8 +78,8 @@
{:mixins [mx/static]}
[]
[:main.dashboard-main
(messages-widget)
(header)
(uum/messages)
[:section.dashboard-content.user-settings
[:section.user-settings-content
(password-form)]]])

View file

@ -2,28 +2,30 @@
;; 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>
;; Copyright (c) 2016-2017 Andrey Antukh <niwi@niwi.nz>
;; Copyright (c) 2016-2017 Juan de la Cruz <delacruzgarciajuan@gmail.com>
(ns uxbox.main.ui.settings.profile
(:require [cuerdas.core :as str]
[lentes.core :as l]
[potok.core :as ptk]
[uxbox.main.store :as st]
[uxbox.main.ui.icons :as i]
[uxbox.main.ui.settings.header :refer [header]]
[uxbox.main.ui.messages :refer [messages-widget]]
[uxbox.main.data.users :as udu]
[uxbox.util.forms :as forms]
[uxbox.util.router :as r]
[potok.core :as ptk]
[uxbox.util.mixins :as mx :include-macros true]
[uxbox.util.interop :refer (iterable->seq)]
[uxbox.util.dom :as dom]
[uxbox.store :as st]
[uxbox.main.ui.icons :as i]
[uxbox.main.ui.settings.header :refer (header)]
[uxbox.main.ui.messages :as uum]
[uxbox.main.data.users :as udu]))
[uxbox.util.interop :refer [iterable->seq]]
[uxbox.util.dom :as dom]))
(def form-data (forms/focus-data :profile st/state))
(def form-errors (forms/focus-errors :profile st/state))
(def set-value! (partial forms/set-value! :profile))
(def set-error! (partial forms/set-error! :profile))
(def set-value! (partial forms/set-value! st/store :profile))
(def set-error! (partial forms/set-error! st/store :profile))
(def clear! (partial forms/clear! st/store :profile))
(def profile-ref
(-> (l/key :profile)
@ -37,8 +39,8 @@
;; --- Profile Form
(mx/defc profile-form
{:mixins [mx/static mx/reactive]
:will-unmount (forms/cleaner-fn :profile)}
{:mixins [mx/static mx/reactive
(forms/clear-mixin st/store :profile)]}
[]
;; TODO: properly persist theme
(let [data (merge {:theme "light"}
@ -56,10 +58,8 @@
(set-error! :email "Email already exists")
:uxbox.services.users/username-already-exists
(set-error! :username "Username already exists")))
(on-success []
(forms/clear! :profile))
(on-submit [event]
(st/emit! (udu/update-profile data on-success on-error)))]
(st/emit! (udu/update-profile data clear! on-error)))]
[:form.profile-form
[:span.user-settings-label "Name, username and email"]
[:input.input-text
@ -142,8 +142,8 @@
{:mixins [mx/static]}
[]
[:main.dashboard-main
(messages-widget)
(header)
(uum/messages)
[:section.dashboard-content.user-settings
[:section.user-settings-content
[:span.user-settings-label "Your avatar"]

View file

@ -8,7 +8,7 @@
(:require [lentes.core :as l]
[beicon.core :as rx]
[potok.core :as ptk]
[uxbox.store :as st]
[uxbox.main.store :as st]
[uxbox.main.refs :as refs]
[uxbox.main.streams :as streams]
[uxbox.main.geom :as geom]

View file

@ -6,7 +6,7 @@
(ns uxbox.main.ui.shapes.group
(:require [lentes.core :as l]
[uxbox.store :as st]
[uxbox.main.store :as st]
[uxbox.main.geom :as geom]
[uxbox.main.ui.shapes.common :as common]
[uxbox.main.ui.shapes.attrs :as attrs]

View file

@ -8,7 +8,7 @@
(:require [beicon.core :as rx]
[lentes.core :as l]
[potok.core :as ptk]
[uxbox.store :as st]
[uxbox.main.store :as st]
[uxbox.main.ui.shapes.common :as common]
[uxbox.main.ui.shapes.attrs :as attrs]
[uxbox.main.data.images :as udi]

View file

@ -6,7 +6,7 @@
(ns uxbox.main.ui.shapes.path
(:require [potok.core :as ptk]
[uxbox.store :as st]
[uxbox.main.store :as st]
[uxbox.main.ui.shapes.common :as common]
[uxbox.main.ui.shapes.attrs :as attrs]
[uxbox.main.data.shapes :as uds]

View file

@ -10,7 +10,7 @@
(:require [lentes.core :as l]
[beicon.core :as rx]
[potok.core :as ptk]
[uxbox.store :as st]
[uxbox.main.store :as st]
[uxbox.main.constants :as c]
[uxbox.main.refs :as refs]
[uxbox.main.streams :as streams]

View file

@ -9,7 +9,7 @@
[lentes.core :as l]
[goog.events :as events]
[potok.core :as ptk]
[uxbox.store :as st]
[uxbox.main.store :as st]
[uxbox.main.geom :as geom]
[uxbox.main.data.shapes :as uds]
[uxbox.main.ui.shapes.common :as common]

View file

@ -7,13 +7,13 @@
(ns uxbox.main.ui.users
(:require [cuerdas.core :as str]
[lentes.core :as l]
[uxbox.util.router :as r]
[potok.core :as ptk]
[uxbox.store :as st]
[uxbox.main.store :as st]
[uxbox.main.data.auth :as da]
[uxbox.main.data.lightbox :as udl]
[uxbox.main.ui.icons :as i]
[uxbox.main.ui.navigation :as nav]
[uxbox.util.router :as rt]
[uxbox.util.mixins :as mx :include-macros true]))
;; --- User Menu
@ -22,13 +22,13 @@
{:mixins [mx/static]}
[open?]
[:ul.dropdown {:class (when-not open? "hide")}
[:li {:on-click #(r/go :settings/profile)}
[:li {:on-click #(st/emit! (rt/navigate :settings/profile))}
i/user
[:span "Profile"]]
[:li {:on-click #(r/go :settings/password)}
[:li {:on-click #(st/emit! (rt/navigate :settings/password))}
i/lock
[:span "Password"]]
[:li {:on-click #(r/go :settings/notifications)}
[:li {:on-click #(st/emit! (rt/navigate :settings/notifications))}
i/mail
[:span "Notifications"]]
[:li {:on-click #(st/emit! (da/logout))}
@ -38,8 +38,8 @@
;; --- User Widget
(def profile-ref
(as-> (l/key :profile) $
(l/derive $ st/state)))
(-> (l/key :profile)
(l/derive st/state)))
(mx/defcs user
{:mixins [mx/static mx/reactive (mx/local {:open false})]}

View file

@ -8,7 +8,7 @@
(ns uxbox.main.ui.workspace
(:require [beicon.core :as rx]
[potok.core :as ptk]
[uxbox.store :as st]
[uxbox.main.store :as st]
[uxbox.main.constants :as c]
[uxbox.main.refs :as refs]
[uxbox.main.streams :as streams]
@ -16,7 +16,7 @@
[uxbox.main.data.pages :as udp]
[uxbox.main.data.history :as udh]
[uxbox.main.data.undo :as udu]
[uxbox.main.ui.messages :as uum]
[uxbox.main.ui.messages :refer [messages-widget]]
[uxbox.main.ui.confirm]
[uxbox.main.ui.workspace.images]
[uxbox.main.ui.keyboard :as kbd]
@ -121,9 +121,9 @@
:no-tool-bar-left (not left-sidebar?)
:scrolling (:viewport-positionig workspace))]
[:div
(messages-widget)
(header)
(colorpalette)
(uum/messages)
[:main.main-content

View file

@ -10,7 +10,7 @@
[lentes.core :as l]
[goog.events :as events]
[potok.core :as ptk]
[uxbox.store :as st]
[uxbox.main.store :as st]
[uxbox.main.constants :as c]
[uxbox.main.refs :as refs]
[uxbox.main.streams :as streams]

View file

@ -7,7 +7,7 @@
(ns uxbox.main.ui.workspace.clipboard
(:require [lentes.core :as l]
[uxbox.store :as st]
[uxbox.main.store :as st]
[uxbox.main.data.lightbox :as udl]
[uxbox.main.data.workspace :as udw]
[uxbox.main.ui.icons :as i]

View file

@ -9,7 +9,7 @@
(:require [beicon.core :as rx]
[lentes.core :as l]
[potok.core :as ptk]
[uxbox.store :as st]
[uxbox.main.store :as st]
[uxbox.main.refs :as refs]
[uxbox.main.data.workspace :as dw]
[uxbox.main.data.shapes :as uds]

View file

@ -8,7 +8,7 @@
(ns uxbox.main.ui.workspace.colorpicker
(:require [lentes.core :as l]
[potok.core :as ptk]
[uxbox.store :as st]
[uxbox.main.store :as st]
[uxbox.main.refs :as refs]
[uxbox.main.geom :as geom]
[uxbox.main.data.workspace :as udw]

View file

@ -10,7 +10,7 @@
[beicon.core :as rx]
[potok.core :as ptk]
[lentes.core :as l]
[uxbox.store :as st]
[uxbox.main.store :as st]
[uxbox.main.refs :as refs]
[uxbox.main.data.lightbox :as udl]
[uxbox.main.exports :as exports]

View file

@ -10,7 +10,7 @@
[potok.core :as ptk]
[uxbox.util.mixins :as mx :include-macros true]
[uxbox.util.rlocks :as rlocks]
[uxbox.store :as st]
[uxbox.main.store :as st]
[uxbox.main.constants :as c]
[uxbox.main.refs :as refs]
[uxbox.main.streams :as streams]

View file

@ -10,7 +10,7 @@
[uxbox.config :as cfg]
[uxbox.util.router :as r]
[potok.core :as ptk]
[uxbox.store :as st]
[uxbox.main.store :as st]
[uxbox.main.refs :as refs]
[uxbox.main.data.workspace :as dw]
[uxbox.main.data.history :as udh]

View file

@ -12,7 +12,7 @@
[uxbox.util.mixins :as mx :include-macros true]
[uxbox.util.data :as data :refer (read-string)]
[uxbox.util.dom :as dom]
[uxbox.store :as st]
[uxbox.main.store :as st]
[uxbox.main.data.lightbox :as udl]
[uxbox.main.data.images :as udi]
[uxbox.main.data.workspace :as udw]

View file

@ -8,7 +8,7 @@
(ns uxbox.main.ui.workspace.recent-colors
(:require [lentes.core :as l]
[potok.core :as ptk]
[uxbox.store :as st]
[uxbox.main.store :as st]
[uxbox.main.refs :as refs]
[uxbox.main.data.workspace :as dw]
[uxbox.main.ui.icons :as i]

View file

@ -10,7 +10,7 @@
[rum.core :as rum]
[cuerdas.core :as str]
[beicon.core :as rx]
[uxbox.store :as s]
[uxbox.main.store :as s]
[uxbox.main.constants :as c]
[uxbox.main.streams :as streams]
[uxbox.util.dom :as dom]

View file

@ -9,7 +9,7 @@
"Mouse selection interaction and component."
(:require [beicon.core :as rx]
[potok.core :as ptk]
[uxbox.store :as st]
[uxbox.main.store :as st]
[uxbox.main.constants :as c]
[uxbox.main.refs :as refs]
[uxbox.main.streams :as streams]

View file

@ -9,7 +9,7 @@
(:require [goog.events :as events]
[beicon.core :as rx]
[potok.core :as ptk]
[uxbox.store :as st]
[uxbox.main.store :as st]
[uxbox.main.data.lightbox :as udl]
[uxbox.main.data.workspace :as dw]
[uxbox.main.data.shapes :as uds]

View file

@ -8,7 +8,7 @@
(ns uxbox.main.ui.workspace.sidebar
(:require [lentes.core :as l]
[potok.core :as ptk]
[uxbox.store :as st]
[uxbox.main.store :as st]
[uxbox.main.refs :as refs]
[uxbox.main.ui.workspace.sidebar.options :refer (options-toolbox)]
[uxbox.main.ui.workspace.sidebar.layers :refer (layers-toolbox)]

View file

@ -9,7 +9,7 @@
(:require [sablono.core :as html :refer-macros [html]]
[lentes.core :as l]
[potok.core :as ptk]
[uxbox.store :as st]
[uxbox.main.store :as st]
[uxbox.main.refs :as refs]
[uxbox.main.data.workspace :as dw]
[uxbox.main.ui.icons :as i]

View file

@ -10,12 +10,11 @@
[rum.core :as rum]
[lentes.core :as l]
[potok.core :as ptk]
[uxbox.store :as st]
[uxbox.main.store :as st]
[uxbox.main.refs :as refs]
[uxbox.main.data.workspace :as dw]
[uxbox.main.data.pages :as udp]
[uxbox.main.data.history :as udh]
[uxbox.main.data.messages :as udm]
[uxbox.main.ui.icons :as i]
[uxbox.util.i18n :refer (tr)]
[uxbox.util.router :as r]

View file

@ -9,7 +9,7 @@
(:require [lentes.core :as l]
[uxbox.util.router :as r]
[potok.core :as ptk]
[uxbox.store :as st]
[uxbox.main.store :as st]
[uxbox.main.lenses :as ul]
[uxbox.main.data.workspace :as udw]
[uxbox.main.data.icons :as udi]

View file

@ -10,7 +10,7 @@
[cuerdas.core :as str]
[goog.events :as events]
[potok.core :as ptk]
[uxbox.store :as st]
[uxbox.main.store :as st]
[uxbox.main.refs :as refs]
[uxbox.main.data.workspace :as udw]
[uxbox.main.data.shapes :as uds]

View file

@ -11,7 +11,7 @@
[uxbox.util.i18n :refer (tr)]
[uxbox.util.router :as r]
[potok.core :as ptk]
[uxbox.store :as st]
[uxbox.main.store :as st]
[uxbox.main.data.workspace :as udw]
[uxbox.main.data.shapes :as uds]
[uxbox.main.ui.icons :as i]

View file

@ -12,7 +12,7 @@
[uxbox.util.i18n :refer (tr)]
[uxbox.util.router :as r]
[potok.core :as ptk]
[uxbox.store :as st]
[uxbox.main.store :as st]
[uxbox.main.data.workspace :as udw]
[uxbox.main.data.shapes :as uds]
[uxbox.main.ui.icons :as i]

View file

@ -10,7 +10,7 @@
[uxbox.util.i18n :refer (tr)]
[uxbox.util.router :as r]
[potok.core :as ptk]
[uxbox.store :as st]
[uxbox.main.store :as st]
[uxbox.main.data.shapes :as uds]
[uxbox.main.data.lightbox :as udl]
[uxbox.main.ui.icons :as i]

View file

@ -12,7 +12,7 @@
[uxbox.util.i18n :refer (tr)]
[uxbox.util.router :as r]
[potok.core :as ptk]
[uxbox.store :as st]
[uxbox.main.store :as st]
[uxbox.main.data.workspace :as udw]
[uxbox.main.data.shapes :as uds]
[uxbox.main.ui.icons :as i]

View file

@ -13,7 +13,7 @@
[uxbox.util.router :as r]
[potok.core :as ptk]
[uxbox.util.mixins :as mx :include-macros true]
[uxbox.store :as st]
[uxbox.main.store :as st]
[uxbox.main.data.shapes :as uds]
[uxbox.main.data.lightbox :as udl]
[uxbox.main.ui.workspace.sidebar.sitemap :refer (pages-ref)]

View file

@ -10,7 +10,7 @@
(:require [lentes.core :as l]
[potok.core :as ptk]
[cuerdas.core :as str]
[uxbox.store :as st]
[uxbox.main.store :as st]
[uxbox.main.constants :as c]
[uxbox.main.refs :as refs]
[uxbox.main.data.pages :as udp]

View file

@ -10,7 +10,7 @@
[uxbox.util.i18n :refer (tr)]
[uxbox.util.router :as r]
[potok.core :as ptk]
[uxbox.store :as st]
[uxbox.main.store :as st]
[uxbox.main.data.workspace :as udw]
[uxbox.main.data.shapes :as uds]
[uxbox.main.ui.icons :as i]

View file

@ -10,7 +10,7 @@
[uxbox.util.i18n :refer (tr)]
[uxbox.util.router :as r]
[potok.core :as ptk]
[uxbox.store :as st]
[uxbox.main.store :as st]
[uxbox.main.data.shapes :as uds]
[uxbox.main.data.lightbox :as udl]
[uxbox.main.ui.icons :as i]

View file

@ -8,7 +8,7 @@
(ns uxbox.main.ui.workspace.sidebar.options.text
(:require [lentes.core :as l]
[potok.core :as ptk]
[uxbox.store :as st]
[uxbox.main.store :as st]
[uxbox.main.geom :as geom]
[uxbox.main.data.workspace :as udw]
[uxbox.main.data.shapes :as uds]

View file

@ -9,7 +9,7 @@
(:require [lentes.core :as l]
[cuerdas.core :as str]
[potok.core :as ptk]
[uxbox.store :as st]
[uxbox.main.store :as st]
[uxbox.main.refs :as refs]
[uxbox.main.data.projects :as dp]
[uxbox.main.data.pages :as udp]

View file

@ -8,7 +8,8 @@
(ns uxbox.main.ui.workspace.sidebar.sitemap-pageform
(:require [lentes.core :as l]
[cuerdas.core :as str]
[uxbox.store :as st]
[potok.core :as ptk]
[uxbox.main.store :as st]
[uxbox.main.constants :as c]
[uxbox.main.data.pages :as udp]
[uxbox.main.data.workspace :as dw]
@ -17,14 +18,13 @@
[uxbox.main.ui.lightbox :as lbx]
[uxbox.util.i18n :refer (tr)]
[uxbox.util.router :as r]
[potok.core :as ptk]
[uxbox.util.forms :as forms]
[uxbox.util.mixins :as mx :include-macros true]
[uxbox.util.data :refer (deep-merge parse-int)]
[uxbox.util.dom :as dom]))
(def form-data (forms/focus-data :workspace-page-form st/state))
(def set-value! (partial forms/set-value! :workspace-page-form))
(def set-value! (partial forms/set-value! st/store :workspace-page-form))
;; --- Lightbox
@ -118,10 +118,7 @@
:type "button"}])])))
(mx/defc page-form-lightbox
{:mixins [mx/static]
:will-unmount (fn [own]
(forms/clear! :workspace-page-form)
own)}
{:mixins [mx/static (forms/clear-mixin st/store :workspace-page-form)]}
[{:keys [id] :as page}]
(letfn [(on-cancel [event]
(dom/prevent-default event)