diff --git a/src/cljs/auto_ap/forms.cljs b/src/cljs/auto_ap/forms.cljs index 913d6051..7f9265e1 100644 --- a/src/cljs/auto_ap/forms.cljs +++ b/src/cljs/auto_ap/forms.cljs @@ -106,6 +106,8 @@ (defn ^:deprecated side-bar-form [{:keys [form]} children] [:div [:a.delete.is-pulled-right {:on-click (dispatch-event [::form-closing form])}] [:div children]]) + +;; TODO ^:deprecated (defn loading [db id] (-> db (assoc-in [::forms id :status] :loading) diff --git a/src/cljs/auto_ap/views/components/modal.cljs b/src/cljs/auto_ap/views/components/modal.cljs index 7fb52cdf..6fb2336e 100644 --- a/src/cljs/auto_ap/views/components/modal.cljs +++ b/src/cljs/auto_ap/views/components/modal.cljs @@ -121,8 +121,8 @@ [:div.buttons (when confirm - [:button.button.is-danger {:class (status/class-for status) - :on-click (:on-click confirm)} + [:button.button {:class (conj (status/class-for status) (:class confirm) ) + :on-click (:on-click confirm)} (:value confirm)]) (when cancel? [:button.button {:on-click (dispatch-event [::modal-closed] )} "Cancel"])]]]))]]))))) diff --git a/src/cljs/auto_ap/views/pages/admin/rules/table.cljs b/src/cljs/auto_ap/views/pages/admin/rules/table.cljs index a5b06ccd..bc26366b 100644 --- a/src/cljs/auto_ap/views/pages/admin/rules/table.cljs +++ b/src/cljs/auto_ap/views/pages/admin/rules/table.cljs @@ -93,6 +93,7 @@ :body [:div "Are you sure you want to delete transaction rule '" (:description which) "'? Any previously transactions will remain updated, but the rule association will be lost."] :cancel? true :confirm {:value "Delete Transaction Rule" + :class "is-danger" :status-from [::status/single ::delete-transaction-rule] :on-click (dispatch-event [::delete-transaction-rule (:id which)] )} :close-event [::status/completed ::delete-transaction-rule]}]})) diff --git a/src/cljs/auto_ap/views/pages/admin/users/form.cljs b/src/cljs/auto_ap/views/pages/admin/users/form.cljs index 89cf7d93..c015427b 100644 --- a/src/cljs/auto_ap/views/pages/admin/users/form.cljs +++ b/src/cljs/auto_ap/views/pages/admin/users/form.cljs @@ -9,7 +9,7 @@ [auto-ap.views.components.admin.side-bar :refer [admin-side-bar]] [auto-ap.views.components.layouts :refer [side-bar-layout]] [auto-ap.views.utils :refer [login-url dispatch-value-change bind-field horizontal-field dispatch-event with-user]] - [auto-ap.views.components.modal :refer [modal action-modal]] + [auto-ap.views.components.modal :refer [modal action-modal] :as modal] [auto-ap.views.components.grid :as grid] [auto-ap.utils :refer [by replace-if]] [cljs.reader :as edn] @@ -29,12 +29,7 @@ (fn [data field value] []))) -(re-frame/reg-event-db - ::editing - (fn [db [_ d]] - (re-frame/dispatch [::events/modal-status ::edit-user {:visible? true}]) - (-> db - (forms/start-form ::form d)))) + (re-frame/reg-event-db ::add-client @@ -52,10 +47,11 @@ (re-frame/reg-event-fx ::saving - [with-user (forms/triggers-loading ::form) (forms/in-form ::form)] + [with-user (forms/in-form ::form)] (fn [{:keys [db user]} [_]] {:graphql {:token user + :owns-state {:single ::form} :query-obj {:venia/operation {:operation/type :mutation :operation/name "EditUser"} :venia/queries [{:query/data [:edit-user @@ -69,7 +65,7 @@ ::saved (forms/triggers-stop ::form) (fn [{:keys [db]} [_ {:keys [edit-user]}]] - (re-frame/dispatch [::events/modal-completed ::edit-user]))) + {:dispatch [::modal/modal-closed]})) (def user-form (forms/vertical-form {:submit-event [::saving] :change-event [::changed] @@ -79,52 +75,54 @@ (defn form [] (let [{:keys [data active? error id]} @(re-frame/subscribe [::forms/form ::form]) {:keys [form-inline field raw-field error-notification submit-button]} user-form] - [action-modal {:title (str "Edit " (:name data)) - :id ::edit-user - :action-text "Save" - :save-event [::saving] - :status-from ::form} - (form-inline {} - [:<> - (field "Name" - [:input.input {:type "text" - :field [:name] - :spec ::entity/name}]) + (form-inline {} + [:<> + (field "Name" + [:input.input {:type "text" + :field [:name] + :spec ::entity/name}]) + [:div.field + [:p.help "Role"] + [:div.control + [:div.select + [raw-field + [:select {:type "select" + :field [:role]} + [:option {:value ":none"} "None"] + [:option {:value ":user"} "User"] + [:option {:value ":manager"} "Manager"] + [:option {:value ":admin"} "Admin"]]]]]] + (when (#{":user" ":manager"} (:role data)) + [:div.field + [:p.help "Clients"] + [:div.control + [:div.field.has-addons + [:div.control + [:div.select + [raw-field + [:select {:type "select" + :field [:adding-client]} + [:option] + (let [used-clients (set (map :id (:clients data)))] + (for [{:keys [id name] :as client} @(re-frame/subscribe [::subs/clients]) + :when (not (used-clients id))] + ^{:key id} [:option {:value id} name]))]]]] + [:p.control + [:button.button.is-primary {:on-click (dispatch-event [::add-client])} "Add"]]] - - [:div.field - [:p.help "Role"] - [:div.control - [:div.select - [raw-field - [:select {:type "select" - :field [:role]} - [:option {:value ":none"} "None"] - [:option {:value ":user"} "User"] - [:option {:value ":manager"} "Manager"] - [:option {:value ":admin"} "Admin"]]]]]]]) - - - - - (when (#{":user" ":manager"} (:role data)) - [:div.field - [:p.help "Clients"] - [:div.control - [:div.field.has-addons - [:div.control - [:div.select - [raw-field - [:select {:type "select" - :field [:adding-client]} - [:option] - (let [used-clients (set (map :id (:clients data)))] - (for [{:keys [id name] :as client} @(re-frame/subscribe [::subs/clients]) - :when (not (used-clients id))] - ^{:key id} [:option {:value id} name]))]]]] - [:p.control - [:button.button.is-primary {:on-click (dispatch-event [::add-client])} "Add"]]] - - [:ul - (for [{:keys [id name]} (:clients data)] - ^{:key id} [:li name [:a.icon {:on-click (dispatch-event [::remove-client id])} [:i.fa.fa-times ]]])]]])])) + [:ul + (for [{:keys [id name]} (:clients data)] + ^{:key id} [:li name [:a.icon {:on-click (dispatch-event [::remove-client id])} [:i.fa.fa-times ]]])]]])]))) +(re-frame/reg-event-fx + ::editing + (fn [{:keys [db]} [_ d]] + {:db (-> db + (forms/start-form ::form d)) + :dispatch [::modal/modal-requested {:title (str "Edit user " (:name d)) + :body [form] + :cancel? false + :confirm {:value "Save" + :status-from [::status/single ::form] + :class "is-primary" + :on-click (dispatch-event [::saving]) + :close-event [::status/completed ::form]}}]}))