rebrand.
This commit is contained in:
9520
resources/public/css/bulma.min.css
vendored
9520
resources/public/css/bulma.min.css
vendored
File diff suppressed because one or more lines are too long
@@ -1,7 +1,6 @@
|
||||
form.dz .notification { border: 2px dashed lightgray;}
|
||||
|
||||
html,body {
|
||||
font-family: 'Open Sans', serif;
|
||||
font-size: 14px;
|
||||
line-height: 1.5;
|
||||
height: 100%;
|
||||
@@ -43,38 +42,6 @@
|
||||
translateY(-100%); }
|
||||
}
|
||||
|
||||
@keyframes flashWarning {
|
||||
from {
|
||||
background-color: hsl(348, 100%, 61%);
|
||||
|
||||
}
|
||||
to {
|
||||
background-color: inherit;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes flashPrimary {
|
||||
from {
|
||||
background-color: #00d1b2;
|
||||
|
||||
}
|
||||
to {
|
||||
|
||||
background-color: inherit;
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
tbody tr.live-removed {
|
||||
animation: flashWarning 1.0s ease both;
|
||||
animation-fill-mode: forwards;
|
||||
}
|
||||
tbody tr.live-added {
|
||||
animation: flashPrimary 1.0s ease both;
|
||||
animation-fill-mode: forwards;
|
||||
}
|
||||
.nav.is-dark {
|
||||
background-color: #232B2D;
|
||||
color: #F6F7F7;
|
||||
@@ -382,56 +349,6 @@ nav.navbar .navbar-item.is-active {
|
||||
overflow: visible;
|
||||
}
|
||||
|
||||
.typeahead-menu {
|
||||
position:absolute;
|
||||
display: inline-block;
|
||||
width: 100%;
|
||||
top: 100%;
|
||||
left: 0;
|
||||
z-index: 10000;
|
||||
overflow: auto;
|
||||
float: left;
|
||||
min-width: 160px;
|
||||
padding: 5px 0;
|
||||
margin: 2px 0 0;
|
||||
list-style: none;
|
||||
font-size: 14px;
|
||||
text-align: left;
|
||||
background-color: #ffffff;
|
||||
border: 1px solid #cccccc;
|
||||
border: 1px solid rgba(0, 0, 0, 0.15);
|
||||
border-radius: 4px;
|
||||
-webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
|
||||
box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
|
||||
/* background-clip: padding-box; */
|
||||
|
||||
}
|
||||
.modal-card {
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
.typeahead-suggestion {
|
||||
display: block;
|
||||
overflow: visible;
|
||||
padding: 3px 20px;
|
||||
clear: both;
|
||||
font-weight: normal;
|
||||
line-height: 1.42857143;
|
||||
color: #333333;
|
||||
white-space: nowrap;
|
||||
}
|
||||
.typeahead-suggestion:hover,
|
||||
.typeahead-suggestion:focus,
|
||||
.typeahead-menu:not(:hover) .typeahead-highlighted
|
||||
{
|
||||
color: #ffffff;
|
||||
text-decoration: none;
|
||||
outline: 0;
|
||||
background-color: #00d1b2;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
|
||||
.buttons .dropdown:not(:last-child):not(.is-fullwidth) .button {
|
||||
margin-right: 0.5em;
|
||||
|
||||
@@ -486,22 +403,6 @@ table.balance-sheet th.total {
|
||||
}
|
||||
|
||||
|
||||
.loader.big {
|
||||
height: 150px !important;
|
||||
width: 150px !important;
|
||||
border: 4px solid #00d1b2;
|
||||
border-right-color: transparent;
|
||||
border-top-color: transparent;
|
||||
}
|
||||
|
||||
.loader.is-table-loader {
|
||||
height: 30px !important;
|
||||
width: 30px !important;
|
||||
border: 2px solid #00d1b2;
|
||||
border-right-color: transparent;
|
||||
border-top-color: transparent;
|
||||
}
|
||||
|
||||
|
||||
.ph-item {
|
||||
border: 0px !important;
|
||||
|
||||
@@ -421,7 +421,9 @@
|
||||
(POST "/batch-upload"
|
||||
{{:keys [data]} :edn-params user :identity}
|
||||
(assert-admin user)
|
||||
|
||||
(try
|
||||
#_(throw (Exception. "Unexpected error"))
|
||||
(let [columns [:status :raw-date :description-original :high-level-category nil nil :amount nil nil nil nil nil :bank-account-code :client-code]
|
||||
all-clients (d-clients/get-all)
|
||||
all-bank-accounts (mapcat :client/bank-accounts all-clients)
|
||||
|
||||
@@ -197,7 +197,7 @@
|
||||
(fn []
|
||||
(when-let [error (:error @(re-frame/subscribe [::form id]))]
|
||||
^{:key error}
|
||||
[:div.notification.is-warning.animated.fadeInUp {} error]))
|
||||
[:div.has-text-danger.animated.fadeInUp {} error]))
|
||||
:submit-button (fn [child]
|
||||
(let [error (:error @(re-frame/subscribe [::form id]))
|
||||
status @(re-frame/subscribe [::status/single id])
|
||||
|
||||
@@ -125,7 +125,7 @@
|
||||
(->> states (filter #(:info %)))]
|
||||
[:<>
|
||||
(if (seq error-states)
|
||||
[:div.notification.is-warning
|
||||
[:div.notification.is-danger.is-light
|
||||
(for [state states
|
||||
state (:error state)]
|
||||
(do
|
||||
|
||||
@@ -107,7 +107,7 @@
|
||||
(reduce + 0))]
|
||||
[:div
|
||||
[:div
|
||||
[:a.button.is-primary {:on-click (dispatch-event [::add-split])} "Add split"]]
|
||||
[:a.button.is-outlined {:on-click (dispatch-event [::add-split])} "Add split"]]
|
||||
(form-inline {}
|
||||
[:table.table
|
||||
[:thead
|
||||
|
||||
@@ -57,7 +57,7 @@
|
||||
(let [per-page 100
|
||||
max-buttons 5
|
||||
buttons-before (Math/floor (/ max-buttons 2))
|
||||
total-pages (Math/ceil (/ total per-page))
|
||||
total-pages (Math/max 1 (Math/ceil (/ total per-page)))
|
||||
current-page (Math/floor (/ start per-page))
|
||||
first-page-button (bound 0 (- current-page buttons-before) (- total-pages max-buttons))
|
||||
all-buttons (into [] (for [x (range total-pages)]
|
||||
|
||||
@@ -91,7 +91,8 @@
|
||||
menu (re-frame/subscribe [::subs/menu])
|
||||
client-search @(re-frame/subscribe [::client-search])
|
||||
is-initial-loading @(re-frame/subscribe [::subs/is-initial-loading?])]
|
||||
[:nav {:class "navbar has-shadow is-fixed-top"}
|
||||
[:nav {:class "navbar has-shadow is-fixed-top is-grey"}
|
||||
|
||||
[:div {:class "container"}
|
||||
[:div {:class "navbar-brand"}
|
||||
[:a {:class "navbar-item", :href "../"}
|
||||
@@ -161,7 +162,10 @@
|
||||
(re-frame/dispatch [::events/swap-client client]))
|
||||
} name])]])])]
|
||||
(when-not is-initial-loading
|
||||
[login-dropdown])]]))
|
||||
[login-dropdown])]
|
||||
|
||||
|
||||
]))
|
||||
|
||||
|
||||
(defn footer []
|
||||
|
||||
@@ -82,12 +82,12 @@
|
||||
[:div.notification.is-warning (:message (first (:error status)))]]
|
||||
foot]
|
||||
[:footer.modal-card-foot
|
||||
[:div
|
||||
[:div
|
||||
[appearing {:visible? (= :error (:state status))
|
||||
:timeout 200
|
||||
:enter-class "appear"
|
||||
:exit-class "disappear"}
|
||||
[:div.notification.is-warning (:message (first (:error status)))]]
|
||||
[:div.has-text-danger (:message (first (:error status)))]]
|
||||
|
||||
[:div.buttons
|
||||
(when confirm
|
||||
|
||||
@@ -179,26 +179,29 @@
|
||||
(let [{:keys [form field raw-field error-notification submit-button ]} client-form]
|
||||
[:div.card {:style {:margin-bottom "1em"}}
|
||||
[:header.card-header
|
||||
[:p.card-header-title {:style {:text-overflow "ellipsis"}}
|
||||
[:span.icon.inline
|
||||
(cond
|
||||
(#{:check ":check"} type) [:span.icon-check-payment-sign]
|
||||
[:div.card-header-title {:style {:text-overflow "ellipsis"}}
|
||||
[:div.level {:style {:width "100%"}}
|
||||
[:div.level-left
|
||||
[:div.level-item
|
||||
[:span.icon.inline
|
||||
(cond
|
||||
(#{:check ":check"} type) [:span.icon-check-payment-sign]
|
||||
|
||||
(#{:credit ":credit"} type) [:span.icon-credit-card-1]
|
||||
(#{:credit ":credit"} type) [:span.icon-credit-card-1]
|
||||
|
||||
:else [:span.icon-accounting-bill])]
|
||||
code ": " name]
|
||||
[:p {:style {:padding "0.75em 0.25em"}}
|
||||
[:a.button.is-outlined {:on-click (dispatch-event [::toggle-visible sort-order])} [:span.icon (if visible
|
||||
[:span.fa.fa-eye]
|
||||
[:span.fa.fa-eye-slash]
|
||||
)]]]
|
||||
(when-not last?
|
||||
[:p {:style {:padding "0.75em 0.25em"}}
|
||||
[:a.button.is-primary.is-outlined {:on-click (dispatch-event [::sort-swapped sort-order (inc sort-order)])} [:span.icon [:span.fa.fa-sort-down]]]])
|
||||
(when-not first?
|
||||
[:p {:style {:padding "0.75em 0.25em"}}
|
||||
[:a.button.is-primary.is-outlined {:on-click (dispatch-event [::sort-swapped sort-order (dec sort-order)])} [:span.icon [:span.fa.fa-sort-up]]]])
|
||||
:else [:span.icon-accounting-bill])]]
|
||||
[:div.level-item code ": " name]]
|
||||
[:div.level-right
|
||||
[:div.level-item
|
||||
[:div.buttons
|
||||
[:a.button {:on-click (dispatch-event [::toggle-visible sort-order])} [:span.icon (if visible
|
||||
[:span.fa.fa-eye]
|
||||
[:span.fa.fa-eye-slash]
|
||||
)]]
|
||||
(when-not last?
|
||||
[:a.button {:on-click (dispatch-event [::sort-swapped sort-order (inc sort-order)])} [:span.icon [:span.fa.fa-sort-down]]])
|
||||
(when-not first?
|
||||
[:a.button {:on-click (dispatch-event [::sort-swapped sort-order (dec sort-order)])} [:span.icon [:span.fa.fa-sort-up]]])]]]]]
|
||||
(if active?
|
||||
[:a.card-header-icon
|
||||
{:on-click (dispatch-event [::bank-account-deactivated sort-order])}
|
||||
@@ -443,13 +446,17 @@
|
||||
:field :forecasted-transactions
|
||||
:template [[:input.input {:type "text"
|
||||
:placeholder "Identifier"
|
||||
:style {:width "10em"}
|
||||
:field [ :identifier]}]
|
||||
[:input.input {:type "number"
|
||||
:style {:width "4em"}
|
||||
:placeholder "Day of month"
|
||||
:step "1"
|
||||
:field [:day-of-month]}]
|
||||
[:input.input {:type "number"
|
||||
:placeholder "250.00"
|
||||
:class "has-text-right"
|
||||
:style {:width "7em"}
|
||||
:field [:amount]
|
||||
:step "0.01"}]]}])]]
|
||||
(error-notification)
|
||||
|
||||
@@ -31,7 +31,11 @@
|
||||
:component-did-mount (fn [this]
|
||||
(js/Dropzone. (rdom/dom-node this)
|
||||
(clj->js {:init (fn []
|
||||
(.on (js-this) "addedfiles"
|
||||
(fn []
|
||||
(re-frame/dispatch [::status/completed ::import])))
|
||||
(.on (js-this) "success" (fn [_ files]
|
||||
|
||||
(re-frame/dispatch [::invalidated])))
|
||||
(.on (js-this) "error" (fn [_ error]
|
||||
(re-frame/dispatch [::status/error ::import [(edn/read-string error)]]))))
|
||||
@@ -83,8 +87,7 @@
|
||||
(fn [{:keys [db]} [_ params]]
|
||||
{:dispatch-n [[::params-change @(re-frame/subscribe [::data-page/params :import-invoices])]
|
||||
[::data-page/reset-checked :import-invoices]]
|
||||
:db (update db ::batch inc)}
|
||||
))
|
||||
:db (update db ::batch inc)}))
|
||||
|
||||
(re-frame/reg-event-fx
|
||||
::mounted
|
||||
@@ -161,23 +164,21 @@
|
||||
:on-success on-success}}))
|
||||
|
||||
(defn approve-reject-button [checked]
|
||||
[:div.is-pulled-right
|
||||
[:button.button.is-success {:on-click (dispatch-event [::approve-invoices-clicked checked])
|
||||
[:div.buttons
|
||||
[:button.button.is-primary {:on-click (dispatch-event [::approve-invoices-clicked checked])
|
||||
:class (status/class-for @(re-frame/subscribe [::status/single ::approve]))
|
||||
:disabled (if (seq checked)
|
||||
""
|
||||
"disabled")}
|
||||
:disabled (or (not (boolean (seq checked)))
|
||||
(status/disabled-for @(re-frame/subscribe [::status/single ::approve])))}
|
||||
"Approve "
|
||||
(when (> (count checked ))
|
||||
(str
|
||||
(count checked)
|
||||
" invoices"))
|
||||
[:span " "]]
|
||||
[:button.button.is-danger {:on-click (dispatch-event [::reject-invoices-clicked checked])
|
||||
:class (status/class-for @(re-frame/subscribe [::status/single ::reject]))
|
||||
:disabled (if (seq checked)
|
||||
""
|
||||
"disabled")}
|
||||
[:button.button.is-warning {:on-click (dispatch-event [::reject-invoices-clicked checked])
|
||||
:class (status/class-for @(re-frame/subscribe [::status/single ::reject]))
|
||||
:disabled (or (not (boolean (seq checked)))
|
||||
(status/disabled-for @(re-frame/subscribe [::status/single ::reject])))}
|
||||
"Reject "
|
||||
(when (> (count checked ))
|
||||
(str
|
||||
@@ -199,6 +200,7 @@
|
||||
[::status/single ::import]]}]
|
||||
^{:key (str batch)}
|
||||
[dropzone]
|
||||
[:div.mb-4]
|
||||
[:div {:class "card found-invoices",}
|
||||
[:div {:class "card-header"}
|
||||
[:span {:class "card-header-title"} "Found Invoices"]]
|
||||
|
||||
@@ -232,6 +232,7 @@
|
||||
[layouts/side-bar {:on-close (dispatch-event [::forms/form-closing ::form ])}
|
||||
(let [{:keys [data active? error id]} @(re-frame/subscribe [::forms/form ::form])
|
||||
{:keys [form-inline field raw-field error-notification submit-button ]} invoice-form
|
||||
can-submit? (boolean @(re-frame/subscribe [::can-submit]))
|
||||
status @(re-frame/subscribe [::status/single ::form])
|
||||
exists? (:id data)
|
||||
can-change-amount? (#{:unpaid ":unpaid"} (:status data))
|
||||
@@ -325,14 +326,15 @@
|
||||
[:div.columns
|
||||
(when-not exists?
|
||||
[:div.column
|
||||
[drop-down {:header [:button.button.is-info.is-outlined.is-medium.is-fullwidth {:aria-haspopup true
|
||||
:type "button"
|
||||
:on-click (dispatch-event [::events/toggle-menu ::add-and-print-invoice ])
|
||||
:disabled (status/disabled-for status)
|
||||
:class (status/class-for status)}
|
||||
"Save & Pay "
|
||||
[drop-down {:header [:button.button.is-primary-two.is-medium.is-fullwidth {:aria-haspopup true
|
||||
:type "button"
|
||||
:on-click (dispatch-event [::events/toggle-menu ::add-and-print-invoice ])
|
||||
:disabled (or (status/disabled-for status)
|
||||
(not can-submit?))
|
||||
:class (status/class-for status)}
|
||||
"Pay "
|
||||
[:span " "]
|
||||
[:span.icon.is-small [:i.fa.fa-angle-down {:aria-hidden "true"}]]]
|
||||
[:span.icon [:i.fa.fa-angle-down {:aria-hidden "true"}]]]
|
||||
:class "is-fullwidth"
|
||||
:id ::add-and-print-invoice}
|
||||
[:div
|
||||
|
||||
@@ -114,7 +114,7 @@
|
||||
[:div.buttons
|
||||
[:button.button.is-outlined.is-primary {:on-click (dispatch-event [::manual/opening])}
|
||||
"Manual Yodlee Import"]
|
||||
[:button.button.is-outlined.is-danger {:on-click (dispatch-event [::unapprove-all params])
|
||||
[:button.button.is-warning {:on-click (dispatch-event [::unapprove-all params])
|
||||
:class (status/class-for @(re-frame/subscribe [::status/single ::unapprove-all]))
|
||||
:disabled (status/disabled-for @(re-frame/subscribe [::status/single ::unapprove-all]))}
|
||||
"Unapprove all"]]])
|
||||
|
||||
@@ -273,7 +273,6 @@
|
||||
:type "typeahead-entity"
|
||||
:field [:forecast-match]}]]
|
||||
|
||||
[:hr]
|
||||
|
||||
[error-notification]
|
||||
(when-not should-disable-for-client?
|
||||
@@ -298,9 +297,6 @@
|
||||
:type "typeahead-entity"
|
||||
:field [:forecast-match]}]]
|
||||
|
||||
[:hr]
|
||||
|
||||
[error-notification]
|
||||
(when-not should-disable-for-client?
|
||||
[submit-button "Save"])]
|
||||
)])])
|
||||
[submit-button "Save"])])])])
|
||||
|
||||
@@ -89,10 +89,13 @@
|
||||
{:token (-> db :user)
|
||||
:owns-state {:single ::print-checks}
|
||||
|
||||
:query-obj (print-checks-query (map (fn [{:keys [id outstanding-balance] }]
|
||||
{:invoice-id id
|
||||
:amount outstanding-balance})
|
||||
(vals @(re-frame/subscribe [::data-page/checked :invoices])))
|
||||
:query-obj (print-checks-query (->> @(re-frame/subscribe [::data-page/checked :invoices])
|
||||
(vals )
|
||||
(filter (fn [{:keys [id outstanding-balance] }]
|
||||
(and id outstanding-balance)))
|
||||
(map (fn [{:keys [id outstanding-balance] }]
|
||||
{:invoice-id id
|
||||
:amount outstanding-balance})))
|
||||
bank-account-id
|
||||
type
|
||||
(:client db))
|
||||
@@ -132,9 +135,9 @@
|
||||
[:div
|
||||
[:div.is-pulled-right
|
||||
[:div.buttons
|
||||
[:button.button.is-success {:on-click (dispatch-event [::new-invoice-clicked])} "New Invoice"]
|
||||
[:button.button.is-outlined.is-primary {:on-click (dispatch-event [::new-invoice-clicked])} "New Invoice"]
|
||||
(when current-client
|
||||
[drop-down {:header [:button.button.is-success {:aria-haspopup true
|
||||
[drop-down {:header [:button.button.is-primary {:aria-haspopup true
|
||||
:on-click (dispatch-event [::events/toggle-menu ::print-checks ])
|
||||
:disabled (if (and (seq checked-invoices))
|
||||
""
|
||||
|
||||
@@ -163,7 +163,7 @@
|
||||
@value-repr)))]])
|
||||
]
|
||||
[:div.level-item
|
||||
[:a.button
|
||||
[:a.button.level-item
|
||||
|
||||
{:disabled is-disabled?
|
||||
:on-click (fn []
|
||||
|
||||
Reference in New Issue
Block a user