diff --git a/app/components/add-reimbursement/template.hbs b/app/components/add-reimbursement/template.hbs
index 43235b3..0e6a74c 100644
--- a/app/components/add-reimbursement/template.hbs
+++ b/app/components/add-reimbursement/template.hbs
@@ -44,26 +44,10 @@
Expense items
{{#if this.expenses}}
-
+
+
diff --git a/app/components/expense-list/component.js b/app/components/expense-list/component.js
new file mode 100644
index 0000000..640d820
--- /dev/null
+++ b/app/components/expense-list/component.js
@@ -0,0 +1,9 @@
+import Component from '@glimmer/component';
+
+export default class ExpenseListComponent extends Component {
+
+ get showDeleteButton () {
+ return !!this.args.deletable;
+ }
+
+}
diff --git a/app/components/expense-list/template.hbs b/app/components/expense-list/template.hbs
new file mode 100644
index 0000000..3633663
--- /dev/null
+++ b/app/components/expense-list/template.hbs
@@ -0,0 +1,29 @@
+
+ {{#each @expenses as |expense|}}
+ -
+
+ {{fmt-date-localized expense.date}}:
+ {{expense.title}}
+
+
+ {{fmt-fiat-currency expense.amount expense.currency}}
+
+
+ {{expense.description}}
+
+
+ {{#each expense.tags as |tag|}}
+
+ {{/each}}
+
+ {{#if this.showDeleteButton}}
+
+
+
+ {{/if}}
+
+ {{/each}}
+
diff --git a/app/components/reimbursement-list/template.hbs b/app/components/reimbursement-list/template.hbs
index 2a3a187..50dcedf 100644
--- a/app/components/reimbursement-list/template.hbs
+++ b/app/components/reimbursement-list/template.hbs
@@ -14,22 +14,9 @@
{{sats-to-btc reimbursement.amount}} BTC
-
+
+
+
diff --git a/app/helpers/fmt-date-localized.js b/app/helpers/fmt-date-localized.js
new file mode 100644
index 0000000..a27bb28
--- /dev/null
+++ b/app/helpers/fmt-date-localized.js
@@ -0,0 +1,8 @@
+import { helper } from '@ember/component/helper';
+import getLocale from 'kredits-web/utils/get-locale';
+
+export default helper(function(dateStr) {
+ const date = new Date(dateStr);
+ const locale = getLocale();
+ return new Intl.DateTimeFormat(locale).format(date);
+});
diff --git a/app/styles/_buttons.scss b/app/styles/_buttons.scss
index eb0c2ff..db5a8bc 100644
--- a/app/styles/_buttons.scss
+++ b/app/styles/_buttons.scss
@@ -31,32 +31,53 @@ button, input[type=submit], .button {
&.small {
font-size: 0.86rem;
padding: 0.2rem 0.8rem;
+
+ svg {
+ width: 1em;
+ height: 1em;
+ vertical-align: middle;
+ margin-right: 0.4rem;
+ }
}
&.danger:not(:disabled) {
color: $red;
background-color: rgba(40, 21, 21, 0.6);
border-color: rgba(40, 21, 21, 1);
-
- &:hover {
- background-color: rgba(40, 21, 21, 0.8);
- }
- &:focus, &:active, &.active {
- border-color: $red;
- }
+ &:hover { background-color: rgba(40, 21, 21, 0.8); }
+ &:focus, &:active, &.active { border-color: $red; }
}
&.green:not(:disabled) {
color: $green;
background-color: rgba(21, 40, 21, 0.6);
border-color: rgba(21, 40, 21, 1);
+ &:hover { background-color: rgba(21, 40, 21, 0.8); }
+ &:focus, &:active, &.active { border-color: $green; }
+ }
- &:hover {
- background-color: rgba(21, 40, 21, 0.8);
- }
- &:focus, &:active, &.active {
- border-color: $green;
- }
+ &.pink:not(:disabled) {
+ color: $pink;
+ background-color: rgba(40, 21, 40, 0.6);
+ border-color: rgba(40, 21, 40, 1);
+ &:hover { background-color: rgba(40, 21, 40, 0.8); }
+ &:focus, &:active, &.active { border-color: $pink; }
+ }
+
+ &.purple:not(:disabled) {
+ color: $purple;
+ background-color: rgba(24, 21, 40, 0.6);
+ border-color: rgba(24, 21, 40, 1);
+ &:hover { background-color: rgba(24, 21, 40, 0.8); }
+ &:focus, &:active, &.active { border-color: $purple; }
+ }
+
+ &.yellow:not(:disabled) {
+ color: $yellow;
+ background-color: rgba(40, 40, 21, 0.6);
+ border-color: rgba(40, 40, 21, 1);
+ &:hover { background-color: rgba(40, 40, 21, 0.8); }
+ &:focus, &:active, &.active { border-color: $yellow; }
}
&.icon {
diff --git a/app/styles/components/_expense-list.scss b/app/styles/components/_expense-list.scss
index b369f5f..b5a9650 100644
--- a/app/styles/components/_expense-list.scss
+++ b/app/styles/components/_expense-list.scss
@@ -17,32 +17,30 @@ ul.expense-list {
}
}
- .description {
- grid-row-start: 1;
- grid-row-end: 3;
- }
-
- .amount {
- justify-self: end;
- // font-weight: normal;
- }
-
- .actions {
- justify-self: end;
- }
-
h4 {
font-size: 1.2rem;
font-weight: normal;
line-height: 2rem;
}
- p {
- line-height: 2rem;
+ .amount {
+ justify-self: end;
+ }
- &.description {
- font-size: 1rem;
- opacity: 0.7;
+ .description {
+ font-size: 1rem;
+ opacity: 0.7;
+ grid-column-start: span 2;
+ }
+
+ .tags {
+ button {
+ margin-left: 0;
}
}
+
+ .actions {
+ justify-self: end;
+ }
+
}
diff --git a/app/templates/components/icon-tag.hbs b/app/templates/components/icon-tag.hbs
new file mode 100644
index 0000000..7219b15
--- /dev/null
+++ b/app/templates/components/icon-tag.hbs
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/utils/get-locale.js b/app/utils/get-locale.js
new file mode 100644
index 0000000..f80eb77
--- /dev/null
+++ b/app/utils/get-locale.js
@@ -0,0 +1,5 @@
+export default function() {
+ return (navigator.languages && navigator.languages.length) ?
+ navigator.languages[0] :
+ navigator.language;
+}