Skip to content

Commit

Permalink
:entity/admission-policy + fixes
Browse files Browse the repository at this point in the history
- new project with membership
- trim read-only text field values
- video fields: fix :field/wrap to skip nil urls
  • Loading branch information
mhuebert committed Jan 30, 2024
1 parent 74c8e22 commit d70a32e
Show file tree
Hide file tree
Showing 6 changed files with 73 additions and 66 deletions.
3 changes: 2 additions & 1 deletion deps.edn
Expand Up @@ -65,7 +65,8 @@
net.cgrand/macrovich {:mvn/version "0.2.1"}
reagent/reagent {:mvn/version "1.1.1"}
thheller/shadow-cljs {:mvn/version "2.25.7"}
net.clojars.wkok/openai-clojure {:mvn/version "0.5.0"}}
net.clojars.wkok/openai-clojure {:mvn/version "0.5.0"}
net.cgrand/xforms {:mvn/version "0.19.6"}}
:aliases
{:uberjar {:exec-fn sb.build/uberjar}
:aot {:exec-fn sb.build/aot}
Expand Down
1 change: 1 addition & 0 deletions src/sb/app/board/ui.cljc
Expand Up @@ -115,6 +115,7 @@
:keys [entity/id]} (project.data/new! nil
{:entity/parent board-id
:entity/title (t :tr/untitled)
:entity/admission-policy :admission-policy/open
:entity/draft? true})]
(when id
(routing/nav! `project.ui/show {:project-id id}))
Expand Down
6 changes: 4 additions & 2 deletions src/sb/app/field/ui.cljc
Expand Up @@ -198,7 +198,9 @@
(if multi-line?
{:Meta-Enter save}
{:Enter save})
keybindings)))}))])
keybindings)))})
(cond-> (not can-edit?)
(update :value #(some-> % str/trim))))])
;; show pencil when value is modified
(when (and (or focused? (:touched ?field))
(io/closest ?field :field/persisted?)
Expand Down Expand Up @@ -277,7 +279,7 @@
(when can-edit?
(text-field ?field (merge props
{:field/label false
:field/wrap (fn [v] {:video/url v})
:field/wrap (fn [v] (when-not (str/blank? v) {:video/url v}))
:field/unwrap :video/url
:placeholder "YouTube or Vimeo url"})))])))

Expand Down
4 changes: 2 additions & 2 deletions src/sb/app/membership/data.cljc
Expand Up @@ -168,10 +168,10 @@
;:entity-id [:entity/id #uuid "a1630339-64b3-3604-8110-0f22355e12be"]
:search-term "matt"}))

(defn new-entity-with-membership [entity account-id roles]
(defn new-entity-with-membership [entity member-id roles]
{:entity/id (random-uuid)
:entity/kind :membership
:membership/member (sch/wrap-id account-id)
:membership/member (sch/wrap-id member-id)
:membership/entity entity
:membership/roles roles})

Expand Down
4 changes: 3 additions & 1 deletion src/sb/app/project/data.cljc
Expand Up @@ -123,7 +123,9 @@
;; TODO
;; verify that user is allowed to create a new project in parent
(let [project (dl/new-entity project :project :by account-id)
membership (member.data/new-entity-with-membership project account-id #{:role/admin})]
membership (member.data/new-entity-with-membership project
(az/membership-id account-id (:entity/parent project))
#{:role/admin})]
(validate/assert project :project/as-map)
(db/transact! [membership])
{:entity/id (:entity/id project)}))
121 changes: 61 additions & 60 deletions src/sb/app/project/ui.cljc
Expand Up @@ -137,66 +137,67 @@
"Visitor" #{}} "Current User")
field-params {:membership/roles roles
:field/can-edit? can-edit?}]
[:div.flex-v.gap-6.pb-6.rounded-lg.relative
(when (:project/sticky? project)
{:class "outline outline-4"
:style {:outline-color (-> project :entity/parent :board/sticky-color)
:margin 4}})
;; title row
[:div.flex-v
(when (:entity/draft? project)
[:div.border-b-2.border-dashed.px-body.py-3.flex-center.gap-3
[:div.mr-auto.text-gray-500 "Draft - only visible to you."]
[field.ui/action-btn {:on-click #(entity.data/save-attribute! nil (:entity/id project) :entity/draft? false)
:classes {:btn "btn-primary px-4 py-2"
:progress-bar "text-[rgba(255,255,255,0.5)]"}}
(t :tr/publish)]])
[:div.flex
[:h1.font-medium.text-2xl.flex-auto.px-body.flex.items-center.pt-6
[entity.ui/persisted-attr project :entity/title (merge field-params
{:field/label false
:field/multi-line? false
:field/unstyled? (some-> (:entity/title project)
(not= "Untitled"))})]]


[:div.flex.px-1.rounded-bl-lg.border-b.border-l.absolute.top-0.right-0
dev-panel

(when (:role/board-admin roles)
;; - archive
[radix/dropdown-menu
{:trigger [:div.flex.items-center [icons/ellipsis-horizontal "rotate-90 icon-gray"]]
:items [[{} [entity.ui/persisted-attr project :project/sticky? (assoc field-params :field/label "Sticky?")]]]}])

[radix/tooltip "Back to board"
[:a.modal-title-icon {:href (routing/entity-path (:entity/parent project) 'ui/show)}
[icons/arrow-left]]]
(when (:entity/id project)
[radix/tooltip "Link to project"
[:a.modal-title-icon {:href (routing/entity-path project :show)}
[icons/link-2]]])
[radix/dialog-close
[:div.modal-title-icon [icons/close]]]]]]

[:div.px-body.flex-v.gap-6

[entity.ui/persisted-attr project :project/badges field-params]
[entity.ui/persisted-attr project :entity/description (merge field-params
{:field/label false
:placeholder "Description"})]
[entity.ui/persisted-attr project :entity/video field-params]

[entity.ui/persisted-attr project
:entity/field-entries
{:entity/fields (->> project :entity/parent :entity/project-fields)
:membership/roles roles
:field/can-edit? can-edit?}]

[project-members project field-params]

[:section.flex-v.gap-2.items-start
[manage-community-actions project (:project/community-actions project)]]]]))
[:<>
(when (:entity/draft? project)
[:div.border-b-2.border-dashed.px-body.py-2.flex-center.gap-3.bg-gray-100
[:div.mr-auto.text-gray-500 "Draft - only visible to you."]
[field.ui/action-btn {:on-click #(entity.data/save-attribute! nil (:entity/id project) :entity/draft? false)
:classes {:btn "btn-primary px-4 py-1"
:progress-bar "text-[rgba(255,255,255,0.5)]"}}
(t :tr/publish)]])
[:div.flex-v.gap-6.pb-6.rounded-lg.relative
(when (:project/sticky? project)
{:class "outline outline-4"
:style {:outline-color (-> project :entity/parent :board/sticky-color)
:margin 4}})
;; title row
[:div.flex-v.mt-6
[:div.flex
[:h1.font-medium.text-2xl.flex-auto.px-body.flex.items-center.pt-6
[entity.ui/persisted-attr project :entity/title (merge field-params
{:field/label false
:field/multi-line? false
:field/unstyled? (some-> (:entity/title project)
(not= "Untitled"))})]]


[:div.flex.px-1.rounded-bl-lg.border-b.border-l.absolute.top-0.right-0
dev-panel

(when (:role/board-admin roles)
;; - archive
[radix/dropdown-menu
{:trigger [:div.flex.items-center [icons/ellipsis-horizontal "rotate-90 icon-gray"]]
:items [[{} [entity.ui/persisted-attr project :project/sticky? (assoc field-params :field/label "Sticky?")]]]}])

[radix/tooltip "Back to board"
[:a.modal-title-icon {:href (routing/entity-path (:entity/parent project) 'ui/show)}
[icons/arrow-left]]]
(when (:entity/id project)
[radix/tooltip "Link to project"
[:a.modal-title-icon {:href (routing/entity-path project :show)}
[icons/link-2]]])
[radix/dialog-close
[:div.modal-title-icon [icons/close]]]]]]

[:div.px-body.flex-v.gap-6

[entity.ui/persisted-attr project :project/badges field-params]
[entity.ui/persisted-attr project :entity/description (merge field-params
{:field/label false
:placeholder "Description"})]
[entity.ui/persisted-attr project :entity/video field-params]

[entity.ui/persisted-attr project
:entity/field-entries
{:entity/fields (->> project :entity/parent :entity/project-fields)
:membership/roles roles
:field/can-edit? can-edit?}]

[project-members project field-params]

#_[:section.flex-v.gap-2.items-start
[manage-community-actions project (:project/community-actions project)]]]]]))

(defn membership-colors [membership]
(into []
Expand Down

0 comments on commit d70a32e

Please sign in to comment.