Skip to content

Commit 6b46f41

Browse files
generate uuid in context
1 parent 94f0d81 commit 6b46f41

File tree

17 files changed

+251
-77
lines changed

17 files changed

+251
-77
lines changed
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="./_next/static/css/a0dca1379a01e5cf.css" as="style"/><link rel="stylesheet" href="./_next/static/css/a0dca1379a01e5cf.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="./_next/static/chunks/polyfills-c67a75d1b6f99dc8.js"></script><script src="./_next/static/chunks/webpack-e50e9853db18b759.js" defer=""></script><script src="./_next/static/chunks/framework-2c79e2a64abdb08b.js" defer=""></script><script src="./_next/static/chunks/main-2ba37e62325cc71b.js" defer=""></script><script src="./_next/static/chunks/pages/_app-77983e68be50f72a.js" defer=""></script><script src="./_next/static/chunks/pages/_error-54de1933a164a1ff.js" defer=""></script><script src="./_next/static/hVjtt3DRTxwTZ0w7LdK0j/_buildManifest.js" defer=""></script><script src="./_next/static/hVjtt3DRTxwTZ0w7LdK0j/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><div id="settings-container"></div><div id="notifications-container"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":404}},"page":"/_error","query":{},"buildId":"hVjtt3DRTxwTZ0w7LdK0j","assetPrefix":".","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
1+
<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="./_next/static/css/a0dca1379a01e5cf.css" as="style"/><link rel="stylesheet" href="./_next/static/css/a0dca1379a01e5cf.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="./_next/static/chunks/polyfills-c67a75d1b6f99dc8.js"></script><script src="./_next/static/chunks/webpack-e50e9853db18b759.js" defer=""></script><script src="./_next/static/chunks/framework-2c79e2a64abdb08b.js" defer=""></script><script src="./_next/static/chunks/main-2ba37e62325cc71b.js" defer=""></script><script src="./_next/static/chunks/pages/_app-77983e68be50f72a.js" defer=""></script><script src="./_next/static/chunks/pages/_error-54de1933a164a1ff.js" defer=""></script><script src="./_next/static/TVn7effaNDB-y4J8-lg34/_buildManifest.js" defer=""></script><script src="./_next/static/TVn7effaNDB-y4J8-lg34/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><div id="settings-container"></div><div id="notifications-container"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":404}},"page":"/_error","query":{},"buildId":"TVn7effaNDB-y4J8-lg34","assetPrefix":".","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>

resources/newssite/news-next/dist/_next/static/hVjtt3DRTxwTZ0w7LdK0j/_buildManifest.js renamed to resources/newssite/news-next/dist/_next/static/TVn7effaNDB-y4J8-lg34/_buildManifest.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
File renamed without changes.

resources/newssite/news-next/dist/_next/static/chunks/pages/index-a6d76b1b73bbfbe0.js renamed to resources/newssite/news-next/dist/_next/static/chunks/pages/index-809b81f2b2340f60.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="./_next/static/css/a0dca1379a01e5cf.css" as="style"/><link rel="stylesheet" href="./_next/static/css/a0dca1379a01e5cf.css" data-n-g=""/><link rel="preload" href="./_next/static/css/2cf5163b53bb0adb.css" as="style"/><link rel="stylesheet" href="./_next/static/css/2cf5163b53bb0adb.css" data-n-p=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="./_next/static/chunks/polyfills-c67a75d1b6f99dc8.js"></script><script src="./_next/static/chunks/webpack-e50e9853db18b759.js" defer=""></script><script src="./_next/static/chunks/framework-2c79e2a64abdb08b.js" defer=""></script><script src="./_next/static/chunks/main-2ba37e62325cc71b.js" defer=""></script><script src="./_next/static/chunks/pages/_app-77983e68be50f72a.js" defer=""></script><script src="./_next/static/chunks/743-fd706aeabb7828e3.js" defer=""></script><script src="./_next/static/chunks/pages/index-a6d76b1b73bbfbe0.js" defer=""></script><script src="./_next/static/hVjtt3DRTxwTZ0w7LdK0j/_buildManifest.js" defer=""></script><script src="./_next/static/hVjtt3DRTxwTZ0w7LdK0j/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><div id="settings-container"></div><div id="notifications-container"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/","query":{},"buildId":"hVjtt3DRTxwTZ0w7LdK0j","assetPrefix":".","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
1+
<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="./_next/static/css/a0dca1379a01e5cf.css" as="style"/><link rel="stylesheet" href="./_next/static/css/a0dca1379a01e5cf.css" data-n-g=""/><link rel="preload" href="./_next/static/css/2cf5163b53bb0adb.css" as="style"/><link rel="stylesheet" href="./_next/static/css/2cf5163b53bb0adb.css" data-n-p=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="./_next/static/chunks/polyfills-c67a75d1b6f99dc8.js"></script><script src="./_next/static/chunks/webpack-e50e9853db18b759.js" defer=""></script><script src="./_next/static/chunks/framework-2c79e2a64abdb08b.js" defer=""></script><script src="./_next/static/chunks/main-2ba37e62325cc71b.js" defer=""></script><script src="./_next/static/chunks/pages/_app-77983e68be50f72a.js" defer=""></script><script src="./_next/static/chunks/743-fd706aeabb7828e3.js" defer=""></script><script src="./_next/static/chunks/pages/index-809b81f2b2340f60.js" defer=""></script><script src="./_next/static/TVn7effaNDB-y4J8-lg34/_buildManifest.js" defer=""></script><script src="./_next/static/TVn7effaNDB-y4J8-lg34/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><div id="settings-container"></div><div id="notifications-container"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/","query":{},"buildId":"TVn7effaNDB-y4J8-lg34","assetPrefix":".","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>

resources/newssite/news-next/src/components/article/article-content.jsx

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import { v4 as uuidv4 } from "uuid";
21
import classNames from "classnames";
32

43
import ArticleImage from "./article-image";
@@ -21,7 +20,7 @@ export default function ArticleContent({ type, content, display }) {
2120
<div className={styles["article-content"]}>
2221
<ul className={classNames(styles["article-list"], styles.vertical, { [styles[display]]: display })}>
2322
{content.map((item) =>
24-
<li key={uuidv4()} className={styles["article-list-item"]}>
23+
<li key={item.id} className={styles["article-list-item"]}>
2524
{item.url && !item.title
2625
? <a href={item.url}>
2726
<ArticleText text={item.content} />
@@ -40,7 +39,7 @@ export default function ArticleContent({ type, content, display }) {
4039
<div className={styles["article-list-content"]}>
4140
<ul className={classNames(styles["article-list"], styles.vertical)}>
4241
{content.map((item) =>
43-
<li key={uuidv4()} className={styles["article-list-item"]}>
42+
<li key={item.id} className={styles["article-list-item"]}>
4443
<ArticleText textClass={classNames(styles["article-title"], "truncate-multiline", "truncate-multiline-3")} text={item.title} type="h3" />
4544
{item.url && !item.title
4645
? <a href={item.url}>
@@ -59,7 +58,7 @@ export default function ArticleContent({ type, content, display }) {
5958
return (
6059
<ul className={classNames(styles["article-list"], styles.horizontal)}>
6160
{content.map((item) =>
62-
<li key={uuidv4()} className={styles["article-list-item"]}>
61+
<li key={item.id} className={styles["article-list-item"]}>
6362
<ArticleImage imageClass={styles["article-hero"]} image={item.image} />
6463
<div className={styles["article-content"]}>
6564
<ArticleText textClass="truncate-multiline truncate-multiline-3" text={item.text} type="div" />
@@ -74,7 +73,7 @@ export default function ArticleContent({ type, content, display }) {
7473
return (
7574
<div className={classNames(layoutStyles["grid-container"], { [layoutStyles[display]]: display })}>
7675
{content.map((item) =>
77-
<div key={uuidv4()} className={layoutStyles["grid-item"]}>
76+
<div key={item.id} className={layoutStyles["grid-item"]}>
7877
<ArticleImage imageClass={styles["article-image-container"]} image={item.image} meta={item.meta} />
7978

8079
{item.url
@@ -93,7 +92,7 @@ export default function ArticleContent({ type, content, display }) {
9392
return (
9493
<ul className={classNames(styles["article-list"], styles.vertical)}>
9594
{content.map((item) =>
96-
<li key={uuidv4()} className={styles["article-list-item"]}>
95+
<li key={item.id} className={styles["article-list-item"]}>
9796
<ArticleImage imageClass={styles["article-image-container"]} image={item.image} />
9897
<ArticleText textClass={classNames(styles["article-title"], "truncate-multiline", "truncate-multiline-3")} text={item.title} type="h3" />
9998
</li>

resources/newssite/news-next/src/context/data-context.js

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
import { createContext, useContext } from "react";
22
import { dataSource } from "../data";
33

4+
import { v4 as uuidv4 } from "uuid";
5+
46
const RTL_LOCALES = ["ar", "he", "fa", "ps", "ur"];
57
const DEFAULT_LANG = "en";
68
const DEFAULT_DIR = "ltr";
@@ -16,10 +18,44 @@ export const DataContextProvider = ({ children }) => {
1618
document.documentElement.setAttribute("dir", dir);
1719
document.documentElement.setAttribute("lang", lang);
1820

21+
const { content } = dataSource[lang];
22+
23+
const selected = Object.create(null);
24+
Object.keys(content).forEach(key => {
25+
const { sections } = content[key];
26+
27+
const selectedSections = [];
28+
let index = 0;
29+
30+
for (let i = 0; i < sections.length; i++) {
31+
selectedSections.push({ ...sections[index] });
32+
const numCopy = Math.floor(i / sections.length);
33+
selectedSections[i].id = `${sections[index].id}-${numCopy}`;
34+
35+
const { articles } = selectedSections[i];
36+
for (let j = 0; j < articles.length; j++) {
37+
articles[j].id = uuidv4();
38+
const { content } = articles[j];
39+
if (Array.isArray(content)) {
40+
for (let k = 0; k < content.length; k++)
41+
content[k].id = uuidv4();
42+
}
43+
}
44+
45+
index = (index + 1) % sections.length;
46+
}
47+
48+
selected[key] = {
49+
...content[key],
50+
sections: selectedSections
51+
};
52+
});
53+
1954
const value = {
2055
lang,
2156
dir,
2257
...dataSource[lang],
58+
content: selected
2359
};
2460

2561
return <DataContext.Provider value={value}>{children}</DataContext.Provider>;

resources/newssite/news-nuxt/components/atoms/ArticleContent.vue

Lines changed: 136 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -18,62 +18,146 @@ export default {
1818
</script>
1919

2020
<template>
21-
<!-- type === text -->
22-
<div v-if="type === 'text'" :class="styles['article-content']">
23-
<ArticleText :text="content" />
24-
</div>
25-
26-
<!-- type === list -->
27-
<div v-if="type === 'list'" :class="styles['article-content']">
28-
<ul :class="[styles['article-list'], styles.vertical, { [styles[display]]: display }]">
29-
<li v-for="item in content" :key="item.id" :class="styles['article-list-item']">
30-
<a v-if="item.url && !item.title" :href="item.url">
31-
<ArticleText :text="item.content" />
32-
</a>
33-
<ArticleText v-else :text="item.content" />
34-
</li>
35-
</ul>
36-
</div>
21+
<!-- type === text -->
22+
<div
23+
v-if="type === 'text'"
24+
:class="styles['article-content']"
25+
>
26+
<ArticleText :text="content" />
27+
</div>
3728

38-
<!-- type === articles-list -->
39-
<div v-if="type === 'articles-list'" :class="styles['article-list-content']">
40-
<ul :class="[styles['article-list'], styles.vertical]">
41-
<li v-for="item in content" :key="item.id" :class="styles['article-list-item']">
42-
<ArticleText :text-class="[styles['article-title'], 'truncate-multiline', 'truncate-multiline-3']" :text="item.title" type="h3" />
43-
<a v-if="item.url && !item.title" :href="item.url">
44-
<ArticleText :text="item.content" />
45-
</a>
46-
<ArticleText v-else :text="item.content" />
47-
</li>
48-
</ul>
49-
</div>
29+
<!-- type === list -->
30+
<div
31+
v-if="type === 'list'"
32+
:class="styles['article-content']"
33+
>
34+
<ul :class="[styles['article-list'], styles.vertical, { [styles[display]]: display }]">
35+
<li
36+
v-for="item in content"
37+
:key="item.id"
38+
:class="styles['article-list-item']"
39+
>
40+
<a
41+
v-if="item.url && !item.title"
42+
:href="item.url"
43+
>
44+
<ArticleText :text="item.content" />
45+
</a>
46+
<ArticleText
47+
v-else
48+
:text="item.content"
49+
/>
50+
</li>
51+
</ul>
52+
</div>
5053

51-
<!-- type === excerpt -->
52-
<ul v-if="type === 'excerpt'" :class="[styles['article-list'], styles.horizontal]">
53-
<li v-for="item in content" :key="item.id" :class="styles['article-list-item']">
54-
<ArticleImage :image-class="styles['article-hero']" :image="item.image" />
55-
<div :class="styles['article-content']">
56-
<ArticleText :text-class="['truncate-multiline', 'truncate-multiline-3']" :text="item.text" type="div" />
57-
</div>
58-
</li>
54+
<!-- type === articles-list -->
55+
<div
56+
v-if="type === 'articles-list'"
57+
:class="styles['article-list-content']"
58+
>
59+
<ul :class="[styles['article-list'], styles.vertical]">
60+
<li
61+
v-for="item in content"
62+
:key="item.id"
63+
:class="styles['article-list-item']"
64+
>
65+
<ArticleText
66+
:text-class="[styles['article-title'], 'truncate-multiline', 'truncate-multiline-3']"
67+
:text="item.title"
68+
type="h3"
69+
/>
70+
<a
71+
v-if="item.url && !item.title"
72+
:href="item.url"
73+
>
74+
<ArticleText :text="item.content" />
75+
</a>
76+
<ArticleText
77+
v-else
78+
:text="item.content"
79+
/>
80+
</li>
5981
</ul>
82+
</div>
83+
84+
<!-- type === excerpt -->
85+
<ul
86+
v-if="type === 'excerpt'"
87+
:class="[styles['article-list'], styles.horizontal]"
88+
>
89+
<li
90+
v-for="item in content"
91+
:key="item.id"
92+
:class="styles['article-list-item']"
93+
>
94+
<ArticleImage
95+
:image-class="styles['article-hero']"
96+
:image="item.image"
97+
/>
98+
<div :class="styles['article-content']">
99+
<ArticleText
100+
:text-class="['truncate-multiline', 'truncate-multiline-3']"
101+
:text="item.text"
102+
type="div"
103+
/>
104+
</div>
105+
</li>
106+
</ul>
60107

61-
<!-- type === grid -->
62-
<div v-if="type === 'grid'" :class="[layoutStyles['grid-container'], { [layoutStyles[display]]: display }]">
63-
<div v-for="item in content" :key="item.id" :class="layoutStyles['grid-item']">
64-
<ArticleImage :image-class="styles['article-image-container']" :image="item.image" :meta="item.meta" />
65-
<a v-if="item.url" :href="item.url">
66-
<ArticleText :text-class="[styles['article-content'], 'truncate-multiline', 'truncate-multiline-3']" :text="item.text" type="h3" />
67-
</a>
68-
<ArticleText v-else :text-class="[styles['article-content'], 'truncate-multiline', 'truncate-multiline-3']" :text="item.text" type="h3" />
69-
</div>
108+
<!-- type === grid -->
109+
<div
110+
v-if="type === 'grid'"
111+
:class="[layoutStyles['grid-container'], { [layoutStyles[display]]: display }]"
112+
>
113+
<div
114+
v-for="item in content"
115+
:key="item.id"
116+
:class="layoutStyles['grid-item']"
117+
>
118+
<ArticleImage
119+
:image-class="styles['article-image-container']"
120+
:image="item.image"
121+
:meta="item.meta"
122+
/>
123+
<a
124+
v-if="item.url"
125+
:href="item.url"
126+
>
127+
<ArticleText
128+
:text-class="[styles['article-content'], 'truncate-multiline', 'truncate-multiline-3']"
129+
:text="item.text"
130+
type="h3"
131+
/>
132+
</a>
133+
<ArticleText
134+
v-else
135+
:text-class="[styles['article-content'], 'truncate-multiline', 'truncate-multiline-3']"
136+
:text="item.text"
137+
type="h3"
138+
/>
70139
</div>
140+
</div>
71141

72-
<!-- type === preview -->
73-
<ul v-if="type === 'preview'" :class="[styles['article-list'], styles.vertical]">
74-
<li v-for="item in content" :key="item.id" :class="styles['article-list-item']">
75-
<ArticleImage :image-class="styles['article-image-container']" :image="item.image" />
76-
<ArticleText :text-class="[styles['article-title'], 'truncate-multiline', 'truncate-multiline-3']" :text="item.title" type="h3" />
77-
</li>
78-
</ul>
142+
<!-- type === preview -->
143+
<ul
144+
v-if="type === 'preview'"
145+
:class="[styles['article-list'], styles.vertical]"
146+
>
147+
<li
148+
v-for="item in content"
149+
:key="item.id"
150+
:class="styles['article-list-item']"
151+
>
152+
<ArticleImage
153+
:image-class="styles['article-image-container']"
154+
:image="item.image"
155+
/>
156+
<ArticleText
157+
:text-class="[styles['article-title'], 'truncate-multiline', 'truncate-multiline-3']"
158+
:text="item.title"
159+
type="h3"
160+
/>
161+
</li>
162+
</ul>
79163
</template>

0 commit comments

Comments
 (0)