Просмотр исходного кода

feat: add workspaces for UI prototype

Tienson Qin 4 лет назад
Родитель
Сommit
bf3f3da81d

+ 3 - 2
deps.edn

@@ -1,4 +1,4 @@
-{:paths ["src/main" "templates"]
+{:paths ["src/main" "src/workspaces" "templates"]
  :deps
  {org.clojure/clojure         {:mvn/version "1.10.0"}
   cheshire/cheshire {:mvn/version "5.10.0"}
@@ -35,7 +35,8 @@
   expound/expound             {:mvn/version "0.8.6"}
   com.lambdaisland/glogi      {:mvn/version "1.0.116"}
   binaryage/devtools          {:mvn/version "1.0.2"}
-  instaparse/instaparse       {:mvn/version "1.4.10"}}
+  instaparse/instaparse       {:mvn/version "1.4.10"}
+  nubank/workspaces           {:mvn/version "1.1.1"}}
 
  :aliases {:cljs {:extra-paths ["src/dev-cljs/" "src/test/" "src/electron/"]
                   :extra-deps  {org.clojure/clojurescript   {:mvn/version "1.10.844"}

+ 15 - 0
public/workspaces/index.html

@@ -0,0 +1,15 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1">
+    <link href="/static/css/style.css" rel="stylesheet" type="text/css">
+    <link href="https://fonts.googleapis.com/css?family=Open+Sans" rel="stylesheet">
+  </head>
+  <body>
+    <div id="app"></div>
+    <!-- you might need to change the js path depending on your configuration -->
+    <script src="/static/js/workspaces/main.js" type="text/javascript"></script>
+    <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/styles/github.min.css">
+  </body>
+</html>

+ 1 - 0
public/workspaces/static

@@ -0,0 +1 @@
+../../static

+ 17 - 1
shadow-cljs.edn

@@ -89,4 +89,20 @@
    {:before-load frontend.core/stop
     ;; after live-reloading finishes call this function
     :after-load frontend.core/start
-    :preloads     [devtools.preload]}}}}
+    :preloads     [devtools.preload]}}
+
+  :cards {:target     nubank.workspaces.shadow-cljs.target
+          :ns-regexp  "(test|cards)$"
+          :output-dir "./static/js/workspaces"
+          :asset-path "/static/js/workspaces"
+          :preloads   [] ; optional, list namespaces to be pre loaded
+          :devtools
+          {
+           :after-load   nubank.workspaces.core/after-load
+           :loader-mode  :eval
+           :http-root    "public/workspaces"
+           :http-port    9670
+           :watch-path   "static"
+           :preloads     [devtools.preload
+                          shadow.remote.runtime.cljs.browser]}
+          :modules {:main {:entries [workspaces.main]}}}}}

+ 26 - 0
src/workspaces/workspaces/cards.cljs

@@ -0,0 +1,26 @@
+(ns workspaces.cards
+  (:require [nubank.workspaces.core :as ws]
+            [nubank.workspaces.model :as wsm]
+            [nubank.workspaces.card-types.react :as ct.react]
+            [nubank.workspaces.card-types.test :as ct.test]
+            [cljs.test :refer [is async]]
+            [rum.core :as rum]
+            [frontend.ui :as ui]))
+
+;; simple function to create react elemnents
+(defn element [name props & children]
+  (apply js/React.createElement name (clj->js props) children))
+
+(ws/defcard hello-card
+  (ct.react/react-card
+   (element "div" {} "Hello World")))
+
+(rum/defc ui-button
+  []
+  (ui/button "Text"
+    :background "green"
+    :on-click (fn [] (js/alert "button clicked"))))
+
+(ws/defcard button-card
+  (ct.react/react-card
+   (ui-button)))

+ 5 - 0
src/workspaces/workspaces/main.cljs

@@ -0,0 +1,5 @@
+(ns workspaces.main
+  (:require [nubank.workspaces.core :as ws]
+            [workspaces.cards]))
+
+(defonce init (ws/mount))