@raketa-cloud/admin 0.0.62 → 0.0.65

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@raketa-cloud/admin",
3
- "version": "0.0.62",
3
+ "version": "0.0.65",
4
4
  "main": "src/index.js",
5
5
  "scripts": {
6
6
  "dev": "npx tailwindcss -i ./src/styles/application.css -o ../../apps/admin/static/application.css --watch",
@@ -7,7 +7,7 @@ import {
7
7
  DeleteArticleDocument,
8
8
  TranslateArticleDocument,
9
9
  ChangeArticleSlugDocument,
10
- MinimalArticlesDocument,
10
+ MiniArticlesDocument,
11
11
  } from "./documents/articlesDocuments";
12
12
  import { toDateTimeInput, toUTCISO8601String } from "../utils";
13
13
 
@@ -42,19 +42,6 @@ export default class Articles extends RaketaClient {
42
42
  ];
43
43
  }
44
44
 
45
- async minimal(query, locale, articleTypeSlug) {
46
- const vars = this.buildListInput(query, locale);
47
-
48
- const { articles: items } = await this.query(MinimalArticlesDocument, {
49
- input: {
50
- ...vars.input,
51
- filters: { ...vars.input.filters, articleTypeSlug },
52
- },
53
- });
54
-
55
- return items;
56
- }
57
-
58
45
  async find(id, locale) {
59
46
  const { article: item } = await this.query(ArticleByIdDocument, {
60
47
  input: {
@@ -66,36 +53,10 @@ export default class Articles extends RaketaClient {
66
53
  return item;
67
54
  }
68
55
 
69
- async minimalAll(query, locale, articleTypeSlug) {
70
- const vars = this.buildAllInput(query, locale);
71
-
72
- const { articles: items } = await this.query(MinimalArticlesDocument, {
73
- input: {
74
- ...vars.input,
75
- filters: { ...vars.input.filters, articleTypeSlug },
76
- },
77
- });
78
-
79
- return items;
80
- }
81
-
82
- async minimalList(query, locale, articleTypeSlug) {
83
- const vars = this.buildListInput(query, locale);
84
-
85
- const { articles: items } = await this.query(MinimalArticlesDocument, {
86
- input: {
87
- ...vars.input,
88
- filters: { ...vars.input.filters, articleTypeSlug },
89
- },
90
- });
91
-
92
- return items;
93
- }
94
-
95
- async all(query, locale, articleTypeSlug) {
56
+ async listAll(query, locale, articleTypeSlug) {
96
57
  const vars = this.buildAllInput(query, locale);
97
58
 
98
- const { articles: items } = await this.query(ArticlesDocument, {
59
+ const { miniArticles: items } = await this.query(MiniArticlesDocument, {
99
60
  input: {
100
61
  ...vars.input,
101
62
  filters: { ...vars.input.filters, articleTypeSlug },
@@ -7,7 +7,7 @@ import {
7
7
  DeleteEventDocument,
8
8
  TranslateEventDocument,
9
9
  ChangeEventSlugDocument,
10
- MinimalEventsDocument,
10
+ MiniEventsDocument,
11
11
  } from "./documents/eventsDocuments";
12
12
  import { toDateTimeInput, toUTCISO8601String } from "../utils";
13
13
 
@@ -63,36 +63,10 @@ export default class Events extends RaketaClient {
63
63
  return item;
64
64
  }
65
65
 
66
- async minimalAll(query, locale, eventTypeSlug) {
66
+ async listAll(query, locale, eventTypeSlug) {
67
67
  const vars = this.buildAllInput(query, locale);
68
68
 
69
- const { events: items } = await this.query(MinimalEventsDocument, {
70
- input: {
71
- ...vars.input,
72
- filters: { ...vars.input.filters, eventTypeSlug },
73
- },
74
- });
75
-
76
- return items;
77
- }
78
-
79
- async minimalList(query, locale, eventTypeSlug) {
80
- const vars = this.buildListInput(query, locale);
81
-
82
- const { events: items } = await this.query(MinimalEventsDocument, {
83
- input: {
84
- ...vars.input,
85
- filters: { ...vars.input.filters, eventTypeSlug },
86
- },
87
- });
88
-
89
- return items;
90
- }
91
-
92
- async all(query, locale, eventTypeSlug) {
93
- const vars = this.buildAllInput(query, locale);
94
-
95
- const { events: items } = await this.query(EventsDocument, {
69
+ const { miniEvents: items } = await this.query(MiniEventsDocument, {
96
70
  input: {
97
71
  ...vars.input,
98
72
  filters: { ...vars.input.filters, eventTypeSlug },
@@ -7,7 +7,7 @@ import {
7
7
  DeletePageDocument,
8
8
  TranslatePageDocument,
9
9
  ChangePageSlugDocument,
10
- MinimalPagesDocument,
10
+ MiniPagesDocument,
11
11
  } from "./documents/pagesDocuments";
12
12
 
13
13
  export default class Pages extends RaketaClient {
@@ -43,36 +43,10 @@ export default class Pages extends RaketaClient {
43
43
  return item;
44
44
  }
45
45
 
46
- async minimalAll(query, locale, pageTypeSlug) {
46
+ async listAll(query, locale, pageTypeSlug) {
47
47
  const vars = this.buildAllInput(query, locale);
48
48
 
49
- const { pages: items } = await this.query(MinimalPagesDocument, {
50
- input: {
51
- ...vars.input,
52
- filters: { ...vars.input.filters, pageTypeSlug },
53
- },
54
- });
55
-
56
- return items;
57
- }
58
-
59
- async minimalList(query, locale, pageTypeSlug) {
60
- const vars = this.buildListInput(query, locale);
61
-
62
- const { pages: items } = await this.query(MinimalPagesDocument, {
63
- input: {
64
- ...vars.input,
65
- filters: { ...vars.input.filters, pageTypeSlug },
66
- },
67
- });
68
-
69
- return items;
70
- }
71
-
72
- async all(query, locale, pageTypeSlug) {
73
- const vars = this.buildAllInput(query, locale);
74
-
75
- const { pages: items } = await this.query(PagesDocument, {
49
+ const { miniPages: items } = await this.query(MiniPagesDocument, {
76
50
  input: {
77
51
  ...vars.input,
78
52
  filters: { ...vars.input.filters, pageTypeSlug },
@@ -6,6 +6,7 @@ import {
6
6
  paginationFragment,
7
7
  revisionMetaFragment,
8
8
  tagFragment,
9
+ summaryChangeFragment,
9
10
  } from "./common";
10
11
 
11
12
  function minimalArticleFragment() {
@@ -14,6 +15,8 @@ function minimalArticleFragment() {
14
15
  id
15
16
  slug
16
17
  title
18
+ visibility
19
+ publishAt
17
20
  }
18
21
  `;
19
22
  }
@@ -31,6 +34,9 @@ function articleFragment() {
31
34
  originalId
32
35
  translations
33
36
  revisionsCount
37
+ insertedAt
38
+ updatedAt
39
+ changes ${summaryChangeFragment()}
34
40
  tags ${tagFragment()}
35
41
  articleType ${articleTypeFragment()}
36
42
  categories ${categoryFragment()}
@@ -67,24 +73,15 @@ const ArticleByIdDocument = gql`
67
73
  const ArticleChangesDocument = gql`
68
74
  query ArticleChanges($input: IdInput!) {
69
75
  articleChanges(input: $input) {
70
- list {
71
- version
72
- title
73
- description
74
- operator
75
- operatorMeta
76
- source
77
- insertedAt
78
- }
76
+ list ${summaryChangeFragment()}
79
77
  }
80
78
  }
81
79
  `;
82
80
 
83
- const MinimalArticlesDocument = gql`
84
- query Articles($input: ArticlesInput!) {
85
- articles(input: $input) {
81
+ const MiniArticlesDocument = gql`
82
+ query MiniArticles($input: ArticlesInput!) {
83
+ miniArticles(input: $input) {
86
84
  list ${minimalArticleFragment()}
87
- pagination ${paginationFragment()}
88
85
  }
89
86
  }
90
87
  `;
@@ -248,7 +245,7 @@ const UnlockArticleRevisionDocument = gql`
248
245
  export {
249
246
  ArticleByIdDocument,
250
247
  ArticlesDocument,
251
- MinimalArticlesDocument,
248
+ MiniArticlesDocument,
252
249
  CreateArticleDocument,
253
250
  UpdateArticleDocument,
254
251
  UpdateArticleWidgetsDocument,
@@ -102,3 +102,17 @@ export function categoryFragment() {
102
102
  }
103
103
  `;
104
104
  }
105
+
106
+ export function summaryChangeFragment() {
107
+ return gql`
108
+ {
109
+ version
110
+ title
111
+ description
112
+ operator
113
+ operatorMeta
114
+ source
115
+ insertedAt
116
+ }
117
+ `;
118
+ }
@@ -6,6 +6,7 @@ import {
6
6
  paginationFragment,
7
7
  revisionMetaFragment,
8
8
  tagFragment,
9
+ summaryChangeFragment,
9
10
  } from "./common";
10
11
 
11
12
  function minimalEventFragment() {
@@ -14,6 +15,10 @@ function minimalEventFragment() {
14
15
  id
15
16
  slug
16
17
  title
18
+ visibility
19
+ publishAt
20
+ startsAt
21
+ endsAt
17
22
  }
18
23
  `;
19
24
  }
@@ -33,6 +38,9 @@ function eventFragment() {
33
38
  originalId
34
39
  translations
35
40
  revisionsCount
41
+ insertedAt
42
+ updatedAt
43
+ changes ${summaryChangeFragment()}
36
44
  tags ${tagFragment()}
37
45
  eventType ${eventTypeFragment()}
38
46
  categories ${categoryFragment()}
@@ -71,24 +79,15 @@ const EventByIdDocument = gql`
71
79
  const EventChangesDocument = gql`
72
80
  query EventChanges($input: IdInput!) {
73
81
  eventChanges(input: $input) {
74
- list {
75
- version
76
- title
77
- description
78
- operator
79
- operatorMeta
80
- source
81
- insertedAt
82
- }
82
+ list ${summaryChangeFragment()}
83
83
  }
84
84
  }
85
85
  `;
86
86
 
87
- const MinimalEventsDocument = gql`
88
- query MinimalEvents($input: EventsInput!) {
89
- events(input: $input) {
87
+ const MiniEventsDocument = gql`
88
+ query MiniEvents($input: EventsInput!) {
89
+ miniEvents(input: $input) {
90
90
  list ${minimalEventFragment()}
91
- pagination ${paginationFragment()}
92
91
  }
93
92
  }
94
93
  `;
@@ -254,7 +253,7 @@ const UnlockEventRevisionDocument = gql`
254
253
  export {
255
254
  EventByIdDocument,
256
255
  EventsDocument,
257
- MinimalEventsDocument,
256
+ MiniEventsDocument,
258
257
  CreateEventDocument,
259
258
  UpdateEventDocument,
260
259
  UpdateEventWidgetsDocument,
@@ -6,6 +6,7 @@ import {
6
6
  paginationFragment,
7
7
  revisionMetaFragment,
8
8
  tagFragment,
9
+ summaryChangeFragment,
9
10
  } from "./common";
10
11
 
11
12
  function minimalPageFragment() {
@@ -14,6 +15,7 @@ function minimalPageFragment() {
14
15
  id
15
16
  slug
16
17
  title
18
+ visibility
17
19
  }
18
20
  `;
19
21
  }
@@ -30,9 +32,12 @@ function pageFragment() {
30
32
  originalId
31
33
  translations
32
34
  revisionsCount
35
+ insertedAt
36
+ updatedAt
33
37
  tags ${tagFragment()}
34
38
  pageType ${pageTypeFragment()}
35
39
  categories ${categoryFragment()}
40
+ changes ${summaryChangeFragment()}
36
41
  }
37
42
  `;
38
43
  }
@@ -65,24 +70,15 @@ const PageByIdDocument = gql`
65
70
  const PageChangesDocument = gql`
66
71
  query PageChanges($input: IdInput!) {
67
72
  pageChanges(input: $input) {
68
- list {
69
- version
70
- title
71
- description
72
- operator
73
- operatorMeta
74
- source
75
- insertedAt
76
- }
73
+ list ${summaryChangeFragment()}
77
74
  }
78
75
  }
79
76
  `;
80
77
 
81
- const MinimalPagesDocument = gql`
82
- query Pages($input: PagesInput!) {
83
- pages(input: $input) {
78
+ const MiniPagesDocument = gql`
79
+ query MiniPages($input: PagesInput!) {
80
+ miniPages(input: $input) {
84
81
  list ${minimalPageFragment()}
85
- pagination ${paginationFragment()}
86
82
  }
87
83
  }
88
84
  `;
@@ -245,7 +241,7 @@ const UnlockPageRevisionDocument = gql`
245
241
  export {
246
242
  PageByIdDocument,
247
243
  PagesDocument,
248
- MinimalPagesDocument,
244
+ MiniPagesDocument,
249
245
  CreatePageDocument,
250
246
  UpdatePageDocument,
251
247
  UpdatePageWidgetsDocument,
@@ -20,6 +20,8 @@
20
20
  <tr>
21
21
  <th><%- sort_button("Title", "title", _context) %></th>
22
22
  <th>Visibility</th>
23
+ <th><%- sort_button("Publish at", "publish_at", _context) %></th>
24
+ <th><%- sort_button("Last change", "updated_at", _context) %></th>
23
25
  <th>Translations</th>
24
26
  </tr>
25
27
  </thead>
@@ -75,6 +77,30 @@
75
77
  </div>
76
78
  </td>
77
79
 
80
+ <td>
81
+ <time data-pretty-datetime datetime="<%= item.publishAt %>"><%= item.publishAt %></time>
82
+ </td>
83
+
84
+ <td>
85
+ <div class="body-3 text-raketa-foreground/50">
86
+ <div class="flex items-center gap-1 mb-0.5">
87
+ <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="size-4 text-raketa-foreground">
88
+ <path stroke-linecap="round" stroke-linejoin="round" d="M12 6v6h4.5m4.5 0a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z" />
89
+ </svg>
90
+ <time data-pretty-datetime datetime="<%= item.updatedAt %>"><%= item.updatedAt %></time>
91
+ </div>
92
+
93
+ <div class="flex items-center gap-1" title="<%= item.changes[0]?.operatorMeta?.name %>">
94
+ <% if (item.changes[0]?.operatorMeta?.avatar) { %>
95
+ <img src="<%= item.changes[0]?.operatorMeta?.avatar %>" class="size-4 rounded-full" alt="<%= item.changes[0]?.operatorMeta?.name %>">
96
+ <% } else { %>
97
+ <div class="size-4 rounded-full"></div>
98
+ <% } %>
99
+ <%= item.changes[0]?.operatorMeta?.name %>
100
+ </div>
101
+ </div>
102
+ </td>
103
+
78
104
  <td>
79
105
  <div class="flex flex-wrap items-center gap-1">
80
106
  <% Object.keys(_context.locales).forEach(key => { %>
@@ -142,4 +168,4 @@
142
168
  searchToggle.addEventListener('click', () => {
143
169
  sidebar.classList.toggle('hidden');
144
170
  });
145
- </script>
171
+ </script>
@@ -77,7 +77,7 @@
77
77
  <path stroke-linecap="round" stroke-linejoin="round" d="M12 6v6h4.5m4.5 0a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z" />
78
78
  </svg>
79
79
 
80
- <%= (new Date(revision.insertedAt)).toLocaleString() %>
80
+ <time data-pretty-datetime datetime="<%= revision.insertedAt %>"><%= revision.insertedAt %></time>
81
81
  </div>
82
82
  </div>
83
83
  </td>
@@ -133,7 +133,7 @@
133
133
  <path stroke-linecap="round" stroke-linejoin="round" d="M12 6v6h4.5m4.5 0a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z" />
134
134
  </svg>
135
135
 
136
- <%= (new Date(change.insertedAt)).toLocaleString() %>
136
+ <time data-pretty-datetime datetime="<%= change.insertedAt %>"><%= change.insertedAt %></time>
137
137
  </div>
138
138
  </div>
139
139
  </td>
@@ -20,6 +20,8 @@
20
20
  <tr>
21
21
  <th><%- sort_button("Title", "title", _context) %></th>
22
22
  <th>Visibility</th>
23
+ <th><%- sort_button("Publish at", "publish_at", _context) %></th>
24
+ <th><%- sort_button("Last change", "updated_at", _context) %></th>
23
25
  <th>Translations</th>
24
26
  </tr>
25
27
  </thead>
@@ -75,6 +77,30 @@
75
77
  </div>
76
78
  </td>
77
79
 
80
+ <td>
81
+ <time data-pretty-datetime datetime="<%= item.publishAt %>"><%= item.publishAt %></time>
82
+ </td>
83
+
84
+ <td>
85
+ <div class="body-3 text-raketa-foreground/50">
86
+ <div class="flex items-center gap-1 mb-0.5">
87
+ <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="size-4 text-raketa-foreground">
88
+ <path stroke-linecap="round" stroke-linejoin="round" d="M12 6v6h4.5m4.5 0a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z" />
89
+ </svg>
90
+ <time data-pretty-datetime datetime="<%= item.updatedAt %>"><%= item.updatedAt %></time>
91
+ </div>
92
+
93
+ <div class="flex items-center gap-1" title="<%= item.changes[0]?.operatorMeta?.name %>">
94
+ <% if (item.changes[0]?.operatorMeta?.avatar) { %>
95
+ <img src="<%= item.changes[0]?.operatorMeta?.avatar %>" class="size-4 rounded-full" alt="<%= item.changes[0]?.operatorMeta?.name %>">
96
+ <% } else { %>
97
+ <div class="size-4 rounded-full"></div>
98
+ <% } %>
99
+ <%= item.changes[0]?.operatorMeta?.name %>
100
+ </div>
101
+ </div>
102
+ </td>
103
+
78
104
  <td>
79
105
  <div class="flex flex-wrap items-center gap-1">
80
106
  <% Object.keys(_context.locales).forEach(key => { %>
@@ -142,4 +168,4 @@
142
168
  searchToggle.addEventListener('click', () => {
143
169
  sidebar.classList.toggle('hidden');
144
170
  });
145
- </script>
171
+ </script>
@@ -77,7 +77,7 @@
77
77
  <path stroke-linecap="round" stroke-linejoin="round" d="M12 6v6h4.5m4.5 0a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z" />
78
78
  </svg>
79
79
 
80
- <%= (new Date(revision.insertedAt)).toLocaleString() %>
80
+ <time data-pretty-datetime datetime="<%= revision.insertedAt %>"><%= revision.insertedAt %></time>
81
81
  </div>
82
82
  </div>
83
83
  </td>
@@ -133,7 +133,7 @@
133
133
  <path stroke-linecap="round" stroke-linejoin="round" d="M12 6v6h4.5m4.5 0a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z" />
134
134
  </svg>
135
135
 
136
- <%= (new Date(change.insertedAt)).toLocaleString() %>
136
+ <time data-pretty-datetime datetime="<%= change.insertedAt %>"><%= change.insertedAt %></time>
137
137
  </div>
138
138
  </div>
139
139
  </td>
@@ -143,10 +143,22 @@
143
143
 
144
144
  parent.querySelectorAll('[data-auto="1"]').forEach(node => node.remove())
145
145
 
146
+ // Add user's localtime
147
+ const strTime = fakeUTCDate.toLocaleString("en-GB", {});
148
+
149
+ const hint = document.createElement("div");
150
+
151
+ hint.classList.add('hint')
152
+ hint.innerText = `In your local time: ${strTime}`;
153
+ hint.dataset.auto = "1";
154
+
155
+ parent.appendChild(hint)
156
+
146
157
  TIMEZONES.forEach(timeZone => {
147
- const strTime = fakeUTCDate.toLocaleString("en-EU", {
158
+ const strTime = fakeUTCDate.toLocaleString("en-GB", {
148
159
  timeZone: `${timeZone.value}`
149
160
  });
161
+
150
162
  const hint = document.createElement("div");
151
163
 
152
164
  hint.classList.add('hint')
@@ -156,12 +168,6 @@
156
168
  parent.appendChild(hint)
157
169
  })
158
170
  }
159
-
160
- document.querySelectorAll('input[type="datetime-local"]').forEach(input => {
161
- enhanceDateTimeInputs(input);
162
-
163
- input.addEventListener("change", (event) => enhanceDateTimeInputs(event.target))
164
- })
165
171
  </script>
166
172
 
167
173
  <script>
@@ -183,6 +189,29 @@
183
189
  })
184
190
  })
185
191
  </script>
192
+
193
+ <script>
194
+ window.addEventListener("load", (_event) => {
195
+
196
+ // Setup datetime inputs
197
+ document.querySelectorAll('input[type="datetime-local"]').forEach(input => {
198
+ enhanceDateTimeInputs(input);
199
+
200
+ input.addEventListener("change", (event) => enhanceDateTimeInputs(event.target))
201
+ })
202
+
203
+
204
+ // Setup time presentation
205
+ document.querySelectorAll('time[data-pretty-datetime]').forEach(item => {
206
+ const dateStr = item.getAttribute("datetime");
207
+
208
+ item.innerText = new Date(dateStr).toLocaleString('en-GB', {
209
+ dateStyle: "short",
210
+ timeStyle: "short"
211
+ })
212
+ })
213
+ })
214
+ </script>
186
215
  </body>
187
216
 
188
217
  </html>
@@ -20,6 +20,7 @@
20
20
  <tr>
21
21
  <th><%- sort_button("Title", "title", _context) %></th>
22
22
  <th>Visibility</th>
23
+ <th><%- sort_button("Last change", "updated_at", _context) %></th>
23
24
  <th>Translations</th>
24
25
  </tr>
25
26
  </thead>
@@ -75,6 +76,26 @@
75
76
  </div>
76
77
  </td>
77
78
 
79
+ <td>
80
+ <div class="body-3 text-raketa-foreground/50">
81
+ <div class="flex items-center gap-1 mb-0.5">
82
+ <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="size-4 text-raketa-foreground">
83
+ <path stroke-linecap="round" stroke-linejoin="round" d="M12 6v6h4.5m4.5 0a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z" />
84
+ </svg>
85
+ <time data-pretty-datetime datetime="<%= item.updatedAt %>"><%= item.updatedAt %></time>
86
+ </div>
87
+
88
+ <div class="flex items-center gap-1" title="<%= item.changes[0]?.operatorMeta?.name %>">
89
+ <% if (item.changes[0]?.operatorMeta?.avatar) { %>
90
+ <img src="<%= item.changes[0]?.operatorMeta?.avatar %>" class="size-4 rounded-full" alt="<%= item.changes[0]?.operatorMeta?.name %>">
91
+ <% } else { %>
92
+ <div class="size-4 rounded-full"></div>
93
+ <% } %>
94
+ <%= item.changes[0]?.operatorMeta?.name %>
95
+ </div>
96
+ </div>
97
+ </td>
98
+
78
99
  <td>
79
100
  <div class="flex flex-wrap items-center gap-1">
80
101
  <% Object.keys(_context.locales).forEach(key => { %>
@@ -142,4 +163,4 @@
142
163
  searchToggle.addEventListener('click', () => {
143
164
  sidebar.classList.toggle('hidden');
144
165
  });
145
- </script>
166
+ </script>
@@ -91,7 +91,7 @@
91
91
  <path stroke-linecap="round" stroke-linejoin="round" d="M12 6v6h4.5m4.5 0a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z" />
92
92
  </svg>
93
93
 
94
- <%= (new Date(revision.insertedAt)).toLocaleString() %>
94
+ <time data-pretty-datetime datetime="<%= revision.insertedAt %>"><%= revision.insertedAt %></time>
95
95
  </div>
96
96
  </div>
97
97
  </td>
@@ -147,7 +147,7 @@
147
147
  <path stroke-linecap="round" stroke-linejoin="round" d="M12 6v6h4.5m4.5 0a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z" />
148
148
  </svg>
149
149
 
150
- <%= (new Date(change.insertedAt)).toLocaleString() %>
150
+ <time data-pretty-datetime datetime="<%= change.insertedAt %>"><%= change.insertedAt %></time>
151
151
  </div>
152
152
  </div>
153
153
  </td>
@@ -54,7 +54,7 @@
54
54
  <path stroke-linecap="round" stroke-linejoin="round" d="M12 6v6h4.5m4.5 0a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z" />
55
55
  </svg>
56
56
 
57
- <%= new Date(item.updatedAt).toLocaleString('en-GB', { dateStyle: "short", timeStyle: "short" }) %>
57
+ <time data-pretty-datetime datetime="<%= item.updatedAt %>"><%= item.updatedAt %></time>
58
58
  </div>
59
59
  </td>
60
60
  <td class="actions">
@@ -72,4 +72,4 @@
72
72
  </table>
73
73
 
74
74
  <%- pagination(items.pagination, _context) %>
75
- </div>
75
+ </div>
@@ -29,7 +29,7 @@
29
29
  </tr>
30
30
  <tr>
31
31
  <th class="w-1 whitespace-nowrap">Updated at</th>
32
- <td><%= new Date(item.updatedAt).toLocaleString('en-GB', { dateStyle: "short", timeStyle: "short" }) %></td>
32
+ <time data-pretty-datetime datetime="<%= item.updatedAt %>"><%= item.updatedAt %></time>
33
33
  </tr>
34
34
  </tbody>
35
35
  </table>
@@ -52,9 +52,9 @@
52
52
  <td><%= item.version %></td>
53
53
  <td><%= item.title %></td>
54
54
  <td><%= item.operatorMeta.name %></td>
55
- <td><%= new Date(item.insertedAt).toLocaleString('en-GB', { dateStyle: "short", timeStyle: "short" }) %></td>
55
+ <td><time data-pretty-datetime datetime="<%= item.insertedAt %>"><%= item.insertedAt %></time></td>
56
56
  </tr>
57
57
  <% }) %>
58
58
  </tbody>
59
59
  </table>
60
- </div>
60
+ </div>