]> Untitled Git - lemmy.git/blobdiff - ui/src/components/moment-time.tsx
routes.api: fix get_captcha endpoint (#1135)
[lemmy.git] / ui / src / components / moment-time.tsx
index cadd49226fe16f1f0051dc9688d4ea89e636a03b..e3fa0de31bf76ff6b8cad2cf6461e91f742ac5bd 100644 (file)
@@ -1,10 +1,6 @@
 import { Component } from 'inferno';
-import * as moment from 'moment';
-import 'moment/locale/de';
-import 'moment/locale/zh-cn';
-import 'moment/locale/fr';
-import 'moment/locale/sv';
-import { getMomentLanguage } from '../utils';
+import moment from 'moment';
+import { getMomentLanguage, capitalizeFirstLetter } from '../utils';
 import { i18n } from '../i18next';
 
 interface MomentTimeProps {
@@ -12,11 +8,11 @@ interface MomentTimeProps {
     published?: string;
     when_?: string;
     updated?: string;
-  }
+  };
+  showAgo?: boolean;
 }
 
 export class MomentTime extends Component<MomentTimeProps, any> {
-
   constructor(props: any, context: any) {
     super(props, context);
 
@@ -28,13 +24,35 @@ export class MomentTime extends Component<MomentTimeProps, any> {
   render() {
     if (this.props.data.updated) {
       return (
-        <span title={this.props.data.updated} className="font-italics">{i18n.t('modified')} {moment.utc(this.props.data.updated).fromNow()}</span>
-      )
+        <span
+          data-tippy-content={`${capitalizeFirstLetter(
+            i18n.t('modified')
+          )} ${this.format(this.props.data.updated)}`}
+          className="font-italics pointer unselectable"
+        >
+          <svg class="icon icon-inline mr-1">
+            <use xlinkHref="#icon-edit-2"></use>
+          </svg>
+          {moment.utc(this.props.data.updated).fromNow(!this.props.showAgo)}
+        </span>
+      );
     } else {
       let str = this.props.data.published || this.props.data.when_;
       return (
-        <span title={str}>{moment.utc(str).fromNow()}</span>
-      )
+        <span
+          className="pointer unselectable"
+          data-tippy-content={this.format(str)}
+        >
+          {moment.utc(str).fromNow(!this.props.showAgo)}
+        </span>
+      );
     }
   }
+
+  format(input: string): string {
+    return moment
+      .utc(input)
+      .local()
+      .format('LLLL');
+  }
 }