@aiconomy/aico-components 0.0.53 → 0.0.57

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.
Files changed (128) hide show
  1. package/README.md +67 -57
  2. package/dist/aico-components/aico-components.esm.js +1 -1
  3. package/dist/aico-components/aico-components.esm.js.map +1 -1
  4. package/dist/aico-components/p-0ca1f065.entry.js +2 -0
  5. package/dist/aico-components/p-0ca1f065.entry.js.map +1 -0
  6. package/dist/aico-components/{p-a58972e9.entry.js → p-1c4a07ef.entry.js} +3 -3
  7. package/dist/aico-components/p-1c4a07ef.entry.js.map +1 -0
  8. package/dist/aico-components/p-406fa2e5.entry.js +2 -0
  9. package/dist/aico-components/p-406fa2e5.entry.js.map +1 -0
  10. package/dist/aico-components/{p-42b98baf.entry.js → p-4c0f3325.entry.js} +2 -2
  11. package/dist/aico-components/{p-776352ba.entry.js → p-5109399b.entry.js} +2 -2
  12. package/dist/aico-components/{p-b0325a83.entry.js → p-6464810e.entry.js} +2 -2
  13. package/dist/aico-components/{p-b78d7799.entry.js → p-68930822.entry.js} +2 -2
  14. package/dist/aico-components/{p-1a6625c0.entry.js → p-90c2d3dc.entry.js} +2 -2
  15. package/dist/aico-components/p-ae20e789.js +3 -0
  16. package/dist/aico-components/{p-2aae1a0e.js.map → p-ae20e789.js.map} +1 -1
  17. package/dist/aico-components/p-b1f8308f.entry.js +2 -0
  18. package/dist/aico-components/p-b1f8308f.entry.js.map +1 -0
  19. package/dist/aico-components/p-dfd3b0d3.js +2 -0
  20. package/dist/aico-components/p-dfd3b0d3.js.map +1 -0
  21. package/dist/cjs/aico-album-content_19.cjs.entry.js +3 -5
  22. package/dist/cjs/aico-album-content_19.cjs.entry.js.map +1 -1
  23. package/dist/cjs/aico-article-detail.cjs.entry.js +1 -1
  24. package/dist/cjs/aico-asking-list-content.cjs.entry.js +1 -1
  25. package/dist/cjs/aico-collection-content.cjs.entry.js +1 -1
  26. package/dist/cjs/aico-components.cjs.js +2 -2
  27. package/dist/cjs/aico-fetch-article-detail.cjs.entry.js +11 -3
  28. package/dist/cjs/aico-fetch-article-detail.cjs.entry.js.map +1 -1
  29. package/dist/cjs/aico-news-list-item.cjs.entry.js +6 -3
  30. package/dist/cjs/aico-news-list-item.cjs.entry.js.map +1 -1
  31. package/dist/cjs/aico-news-list.cjs.entry.js +6 -6
  32. package/dist/cjs/aico-news-list.cjs.entry.js.map +1 -1
  33. package/dist/cjs/aico-no-content_2.cjs.entry.js +1 -1
  34. package/dist/cjs/aico-special-news-carousel.cjs.entry.js +2 -2
  35. package/dist/cjs/{index-75c0e002.js → index-e52034b7.js} +1 -6
  36. package/dist/cjs/index-e52034b7.js.map +1 -0
  37. package/dist/cjs/loader.cjs.js +2 -2
  38. package/dist/cjs/{utils-406a9df3.js → utils-095ed22b.js} +10 -1
  39. package/dist/cjs/utils-095ed22b.js.map +1 -0
  40. package/dist/collection/collection-manifest.json +0 -1
  41. package/dist/collection/components/aico-fetch-article-detail/aico-fetch-article-detail.js +32 -7
  42. package/dist/collection/components/aico-fetch-article-detail/aico-fetch-article-detail.js.map +1 -1
  43. package/dist/collection/components/aico-fetch-article-detail/aico-fetch-article-detail.stories.js +6 -0
  44. package/dist/collection/components/aico-fetch-article-detail/aico-fetch-article-detail.stories.js.map +1 -1
  45. package/dist/collection/components/aico-news-list/aico-news-list.css +0 -113
  46. package/dist/collection/components/aico-news-list/aico-news-list.js +4 -4
  47. package/dist/collection/components/aico-news-list/aico-news-list.js.map +1 -1
  48. package/dist/collection/components/aico-news-list/aico-news-list.stories.js +3 -0
  49. package/dist/collection/components/aico-news-list/aico-news-list.stories.js.map +1 -1
  50. package/dist/collection/components/aico-news-list-item/aico-news-list-item.js +6 -3
  51. package/dist/collection/components/aico-news-list-item/aico-news-list-item.js.map +1 -1
  52. package/dist/collection/components/content/aico-text-content/aico-text-content.js +2 -2
  53. package/dist/collection/components/content/aico-text-content/aico-text-content.js.map +1 -1
  54. package/dist/collection/utils/utils.js +8 -0
  55. package/dist/collection/utils/utils.js.map +1 -1
  56. package/dist/components/aico-fetch-article-detail.js +12 -3
  57. package/dist/components/aico-fetch-article-detail.js.map +1 -1
  58. package/dist/components/aico-news-list-item2.js +5 -2
  59. package/dist/components/aico-news-list-item2.js.map +1 -1
  60. package/dist/components/aico-news-list.js +5 -5
  61. package/dist/components/aico-news-list.js.map +1 -1
  62. package/dist/components/aico-special-news-carousel.js +1 -1
  63. package/dist/components/aico-text-content2.js +1 -3
  64. package/dist/components/aico-text-content2.js.map +1 -1
  65. package/dist/components/utils.js +9 -1
  66. package/dist/components/utils.js.map +1 -1
  67. package/dist/esm/aico-album-content_19.entry.js +3 -5
  68. package/dist/esm/aico-album-content_19.entry.js.map +1 -1
  69. package/dist/esm/aico-article-detail.entry.js +1 -1
  70. package/dist/esm/aico-asking-list-content.entry.js +1 -1
  71. package/dist/esm/aico-collection-content.entry.js +1 -1
  72. package/dist/esm/aico-components.js +3 -3
  73. package/dist/esm/aico-fetch-article-detail.entry.js +11 -3
  74. package/dist/esm/aico-fetch-article-detail.entry.js.map +1 -1
  75. package/dist/esm/aico-news-list-item.entry.js +6 -3
  76. package/dist/esm/aico-news-list-item.entry.js.map +1 -1
  77. package/dist/esm/aico-news-list.entry.js +6 -6
  78. package/dist/esm/aico-news-list.entry.js.map +1 -1
  79. package/dist/esm/aico-no-content_2.entry.js +1 -1
  80. package/dist/esm/aico-special-news-carousel.entry.js +2 -2
  81. package/dist/esm/{index-f9f11572.js → index-4621a8ba.js} +2 -6
  82. package/dist/esm/index-4621a8ba.js.map +1 -0
  83. package/dist/esm/loader.js +3 -3
  84. package/dist/esm/{utils-2b7ec879.js → utils-54ffec33.js} +10 -2
  85. package/dist/esm/utils-54ffec33.js.map +1 -0
  86. package/dist/types/components/aico-fetch-article-detail/aico-fetch-article-detail.d.ts +14 -1
  87. package/dist/types/components/aico-news-list/aico-news-list.d.ts +1 -1
  88. package/dist/types/components/aico-news-list/aico-news-list.stories.d.ts +2 -1
  89. package/dist/types/components/aico-news-list-item/aico-news-list-item.d.ts +1 -1
  90. package/dist/types/components.d.ts +20 -19
  91. package/dist/types/utils/utils.d.ts +1 -0
  92. package/package.json +1 -1
  93. package/dist/aico-components/p-2aae1a0e.js +0 -3
  94. package/dist/aico-components/p-31666f10.js +0 -2
  95. package/dist/aico-components/p-31666f10.js.map +0 -1
  96. package/dist/aico-components/p-54708dd0.entry.js +0 -2
  97. package/dist/aico-components/p-54708dd0.entry.js.map +0 -1
  98. package/dist/aico-components/p-7c05cd02.entry.js +0 -2
  99. package/dist/aico-components/p-7c05cd02.entry.js.map +0 -1
  100. package/dist/aico-components/p-83655dd4.entry.js +0 -2
  101. package/dist/aico-components/p-83655dd4.entry.js.map +0 -1
  102. package/dist/aico-components/p-a58972e9.entry.js.map +0 -1
  103. package/dist/aico-components/p-c99617a8.entry.js +0 -2
  104. package/dist/aico-components/p-c99617a8.entry.js.map +0 -1
  105. package/dist/cjs/bootstrap-slick-test.cjs.entry.js +0 -38
  106. package/dist/cjs/bootstrap-slick-test.cjs.entry.js.map +0 -1
  107. package/dist/cjs/index-75c0e002.js.map +0 -1
  108. package/dist/cjs/utils-406a9df3.js.map +0 -1
  109. package/dist/collection/components/bootstrap-slick-test/bootstrap-slick-test.css +0 -6
  110. package/dist/collection/components/bootstrap-slick-test/bootstrap-slick-test.js +0 -37
  111. package/dist/collection/components/bootstrap-slick-test/bootstrap-slick-test.js.map +0 -1
  112. package/dist/collection/components/bootstrap-slick-test/bootstrap-slick-test.stories.js +0 -6
  113. package/dist/collection/components/bootstrap-slick-test/bootstrap-slick-test.stories.js.map +0 -1
  114. package/dist/collection/components/content/content-styles.css +0 -113
  115. package/dist/components/bootstrap-slick-test.d.ts +0 -11
  116. package/dist/components/bootstrap-slick-test.js +0 -51
  117. package/dist/components/bootstrap-slick-test.js.map +0 -1
  118. package/dist/esm/bootstrap-slick-test.entry.js +0 -34
  119. package/dist/esm/bootstrap-slick-test.entry.js.map +0 -1
  120. package/dist/esm/index-f9f11572.js.map +0 -1
  121. package/dist/esm/utils-2b7ec879.js.map +0 -1
  122. package/dist/types/components/bootstrap-slick-test/bootstrap-slick-test.d.ts +0 -5
  123. package/dist/types/components/bootstrap-slick-test/bootstrap-slick-test.stories.d.ts +0 -5
  124. /package/dist/aico-components/{p-42b98baf.entry.js.map → p-4c0f3325.entry.js.map} +0 -0
  125. /package/dist/aico-components/{p-776352ba.entry.js.map → p-5109399b.entry.js.map} +0 -0
  126. /package/dist/aico-components/{p-b0325a83.entry.js.map → p-6464810e.entry.js.map} +0 -0
  127. /package/dist/aico-components/{p-b78d7799.entry.js.map → p-68930822.entry.js.map} +0 -0
  128. /package/dist/aico-components/{p-1a6625c0.entry.js.map → p-90c2d3dc.entry.js.map} +0 -0
@@ -2,11 +2,11 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- const index = require('./index-75c0e002.js');
5
+ const index = require('./index-e52034b7.js');
6
6
 
7
7
  const defineCustomElements = (win, options) => {
8
8
  if (typeof window === 'undefined') return undefined;
9
- return index.bootstrapLazy([["aico-fetch-article-detail.cjs",[[2,"aico-fetch-article-detail",{"aicoUrl":[1,"aico-url"],"aicoBearerToken":[1,"aico-bearer-token"],"articleId":[1,"article-id"],"article":[32]}]]],["aico-news-list.cjs",[[2,"aico-news-list",{"aicoUrl":[1,"aico-url"],"aicoBearerToken":[1,"aico-bearer-token"],"nextButtonText":[1,"next-button-text"],"previousButtonText":[1,"previous-button-text"],"newsResponse":[32],"pageNumber":[32]}]]],["aico-asking-list-content.cjs",[[6,"aico-asking-list-content"]]],["aico-collection-content.cjs",[[6,"aico-collection-content"]]],["aico-special-news-carousel.cjs",[[2,"aico-special-news-carousel",{"aicoUrl":[1,"aico-url"],"aicoBearerToken":[1,"aico-bearer-token"],"numberOfArticles":[2,"number-of-articles"],"newsResponse":[32]}]]],["bootstrap-slick-test.cjs",[[2,"bootstrap-slick-test"]]],["aico-no-content_2.cjs",[[2,"aico-title-content",{"content":[16]}],[2,"aico-no-content"]]],["aico-album-content_19.cjs",[[2,"aico-bullet-content",{"content":[16]}],[2,"aico-carousel-content",{"content":[16],"hasArrows":[4,"has-arrows"]}],[2,"aico-content-card-content",{"content":[16]}],[2,"aico-heading-content",{"content":[16]}],[2,"aico-table-content",{"content":[16]}],[2,"aico-text-content",{"content":[16]}],[2,"aico-upload-content",{"content":[16]}],[2,"aico-video-content",{"content":[16]}],[2,"aico-html-content",{"content":[16]}],[2,"aico-album-content",{"content":[16]}],[2,"aico-asking-content",{"content":[16]}],[2,"aico-block-quote-content",{"content":[16]}],[2,"aico-divider-content",{"content":[16]}],[2,"aico-document-content",{"content":[16]}],[2,"aico-faq-content",{"content":[16]}],[2,"aico-link-content",{"content":[16]}],[2,"aico-news-content",{"content":[16]}],[2,"aico-page-content",{"content":[16]}],[2,"aico-testimonial-content",{"content":[16]}]]],["aico-article-detail.cjs",[[2,"aico-article-detail",{"article":[16]}]]],["aico-news-list-item.cjs",[[2,"aico-news-list-item",{"article":[16]}]]]], options);
9
+ return index.bootstrapLazy([["aico-fetch-article-detail.cjs",[[2,"aico-fetch-article-detail",{"aicoUrl":[1,"aico-url"],"aicoBearerToken":[1,"aico-bearer-token"],"articleId":[1,"article-id"],"articleUrlHandle":[1,"article-url-handle"],"article":[32]}]]],["aico-news-list.cjs",[[2,"aico-news-list",{"aicoUrl":[1,"aico-url"],"aicoBearerToken":[1,"aico-bearer-token"],"nextButtonText":[1,"next-button-text"],"previousButtonText":[1,"previous-button-text"],"newsResponse":[32],"pageNumber":[32]}]]],["aico-asking-list-content.cjs",[[6,"aico-asking-list-content"]]],["aico-collection-content.cjs",[[6,"aico-collection-content"]]],["aico-special-news-carousel.cjs",[[2,"aico-special-news-carousel",{"aicoUrl":[1,"aico-url"],"aicoBearerToken":[1,"aico-bearer-token"],"numberOfArticles":[2,"number-of-articles"],"newsResponse":[32]}]]],["aico-no-content_2.cjs",[[2,"aico-title-content",{"content":[16]}],[2,"aico-no-content"]]],["aico-album-content_19.cjs",[[2,"aico-bullet-content",{"content":[16]}],[2,"aico-carousel-content",{"content":[16],"hasArrows":[4,"has-arrows"]}],[2,"aico-content-card-content",{"content":[16]}],[2,"aico-heading-content",{"content":[16]}],[2,"aico-table-content",{"content":[16]}],[2,"aico-text-content",{"content":[16]}],[2,"aico-upload-content",{"content":[16]}],[2,"aico-video-content",{"content":[16]}],[2,"aico-html-content",{"content":[16]}],[2,"aico-album-content",{"content":[16]}],[2,"aico-asking-content",{"content":[16]}],[2,"aico-block-quote-content",{"content":[16]}],[2,"aico-divider-content",{"content":[16]}],[2,"aico-document-content",{"content":[16]}],[2,"aico-faq-content",{"content":[16]}],[2,"aico-link-content",{"content":[16]}],[2,"aico-news-content",{"content":[16]}],[2,"aico-page-content",{"content":[16]}],[2,"aico-testimonial-content",{"content":[16]}]]],["aico-article-detail.cjs",[[2,"aico-article-detail",{"article":[16]}]]],["aico-news-list-item.cjs",[[2,"aico-news-list-item",{"article":[16]}]]]], options);
10
10
  };
11
11
 
12
12
  exports.setNonce = index.setNonce;
@@ -43,6 +43,14 @@ async function fetchNewsArticle(api, articleId, signal) {
43
43
  const article = await response.json();
44
44
  return article.data;
45
45
  }
46
+ async function fetchNewsArticleByHandle(api, urlHandle, signal) {
47
+ const queryParams = new URLSearchParams();
48
+ queryParams.set('filter[urlHandle]', urlHandle);
49
+ const request = getAuthenticatedRequest(api, 'news', queryParams, signal);
50
+ const response = await fetch(request);
51
+ const articles = await response.json();
52
+ return articles.data[0];
53
+ }
46
54
  function getImageWidthPrc(pictureSize) {
47
55
  switch (pictureSize) {
48
56
  case 'extra-small':
@@ -82,6 +90,7 @@ function getClass(conditions) {
82
90
  }
83
91
 
84
92
  exports.fetchNewsArticle = fetchNewsArticle;
93
+ exports.fetchNewsArticleByHandle = fetchNewsArticleByHandle;
85
94
  exports.fetchNewsArticles = fetchNewsArticles;
86
95
  exports.fetchSpecialNewsArticles = fetchSpecialNewsArticles;
87
96
  exports.getClass = getClass;
@@ -89,4 +98,4 @@ exports.getImageWidthPrc = getImageWidthPrc;
89
98
  exports.getYoutubeURL = getYoutubeURL;
90
99
  exports.strIsNullOrEmptyOrWhitespace = strIsNullOrEmptyOrWhitespace;
91
100
 
92
- //# sourceMappingURL=utils-406a9df3.js.map
101
+ //# sourceMappingURL=utils-095ed22b.js.map
@@ -0,0 +1 @@
1
+ {"file":"utils-095ed22b.js","mappings":"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","names":[],"sources":["src/model/AicoApiRequestInfo.ts","src/utils/utils.ts"],"sourcesContent":["export type AicoApiRequestInfo = {\n baseApi: string;\n bearerToken: string;\n};\n\nexport const getAuthenticatedHeaders = (bearerToken: string): Headers => {\n const headers = new Headers();\n headers.append('Accept', 'application/vnd.api+json');\n headers.append('Authorization', `Bearer ${bearerToken}`);\n return headers;\n};\n\nexport const getAuthenticatedRequest = (api: AicoApiRequestInfo, route: string, query: URLSearchParams, signal?: AbortSignal): Request => {\n return new Request(new URL(`${route}?${query.toString()}`, api.baseApi), {\n headers: getAuthenticatedHeaders(api.bearerToken),\n signal,\n });\n};\n","import { Article } from '../components';\nimport { AicoApiRequestInfo, getAuthenticatedHeaders, getAuthenticatedRequest } from '../model/AicoApiRequestInfo';\nimport { NewsResponse } from '../model/NewsResponse';\n\nexport async function fetchNewsArticles(api: AicoApiRequestInfo, page: number, size: number, signal: AbortSignal): Promise<NewsResponse> {\n const queryParams = new URLSearchParams();\n queryParams.set('page[number]', String(page));\n queryParams.set('page[size]', String(size));\n queryParams.set('filter[isActive]', '1');\n queryParams.set('filter[excludeTag][]', 'Eisnull');\n queryParams.set('sort', '-publishDate');\n\n const request = getAuthenticatedRequest(api, 'news', queryParams, signal);\n const response = await fetch(request);\n return await response.json();\n}\n\nexport async function fetchSpecialNewsArticles(api: AicoApiRequestInfo, page: number, size: number, signal: AbortSignal): Promise<NewsResponse> {\n const queryParams = new URLSearchParams();\n queryParams.set('page[number]', String(page));\n queryParams.set('page[size]', String(size));\n queryParams.set('filter[isActive]', '1');\n queryParams.set('filter[isSpecialArticle]', '1');\n queryParams.set('filter[isLightVersion]', 'true');\n queryParams.set('filter[excludeTag][]', 'Eisnull');\n queryParams.set('sort', '-publishDate');\n\n const request = getAuthenticatedRequest(api, 'news', queryParams, signal);\n const response = await fetch(request);\n return await response.json();\n}\n\nexport async function fetchNewsArticle(api: AicoApiRequestInfo, articleId: string, signal: AbortSignal): Promise<Article> {\n const request = getAuthenticatedRequest(api, `news/${articleId}`, new URLSearchParams(), signal);\n const response = await fetch(request);\n const article = await response.json();\n return article.data;\n}\n\nexport async function fetchNewsArticleByHandle(api: AicoApiRequestInfo, urlHandle: string, signal: AbortSignal): Promise<Article> {\n const queryParams = new URLSearchParams();\n queryParams.set('filter[urlHandle]', urlHandle);\n\n const request = getAuthenticatedRequest(api, 'news', queryParams, signal);\n const response = await fetch(request);\n const articles = await response.json();\n return articles.data[0];\n}\n\nexport async function fetchArticle(url: string, bearerToken: string, signal: AbortSignal): Promise<Article> {\n const request = new Request(new URL(url), {\n headers: getAuthenticatedHeaders(bearerToken),\n signal,\n });\n const response = await fetch(request);\n return await response.json();\n}\n\nexport function getImageWidthPrc(pictureSize?: string): string {\n switch (pictureSize) {\n case 'extra-small':\n return '28%';\n case 'small':\n return '40%';\n case 'large':\n return '80%';\n case 'extra large': // TODO: has - or not?\n return '100%';\n default:\n return '60%';\n }\n}\n\nexport function getYoutubeURL(url: string): string | null {\n const regExp = /.*(?:youtu.be\\/|v\\/|u\\/\\w\\/|embed\\/|watch\\?v=)([^#&?]*).*/;\n const match = url.match(regExp);\n if (match && match[1].length == 11) {\n return `https://www.youtube.com/embed/${match[1]}`;\n }\n\n return null;\n}\n\nexport function strIsNullOrEmptyOrWhitespace(str?: string | null): boolean {\n if (!str || str === ' ') {\n return true;\n }\n\n return false;\n}\n\nexport function getClass(conditions: { [key: string]: boolean }): string {\n const classes: string[] = [];\n for (const kvp of Object.entries(conditions)) {\n if (kvp[1]) {\n classes.push(kvp[0]);\n }\n }\n\n return classes.join(' ');\n}\n"],"version":3}
@@ -5,7 +5,6 @@
5
5
  "components/aico-news-list/aico-news-list.js",
6
6
  "components/aico-news-list-item/aico-news-list-item.js",
7
7
  "components/aico-special-news-carousel/aico-special-news-carousel.js",
8
- "components/bootstrap-slick-test/bootstrap-slick-test.js",
9
8
  "components/content/aico-album-content/aico-album-content.js",
10
9
  "components/content/aico-asking-content/aico-asking-content.js",
11
10
  "components/content/aico-asking-list-content/aico-asking-list-content.js",
@@ -1,11 +1,12 @@
1
- import { Host, h } from "@stencil/core";
2
- import { fetchNewsArticle } from "../../utils/utils";
1
+ import { h } from "@stencil/core";
2
+ import { fetchNewsArticle, fetchNewsArticleByHandle } from "../../utils/utils";
3
3
  export class AicoFetchArticleDetail {
4
4
  constructor() {
5
5
  this.article = undefined;
6
6
  this.aicoUrl = undefined;
7
7
  this.aicoBearerToken = undefined;
8
8
  this.articleId = undefined;
9
+ this.articleUrlHandle = undefined;
9
10
  }
10
11
  connectedCallback() {
11
12
  this.articleFetchController = new AbortController();
@@ -15,10 +16,17 @@ export class AicoFetchArticleDetail {
15
16
  this.articleFetchController.abort('disconnected');
16
17
  }
17
18
  async componentWillLoad() {
19
+ if (!this.articleId && !this.articleUrlHandle) {
20
+ throw new Error('Either the article id or the url handle must be provided.');
21
+ }
22
+ if (this.articleUrlHandle) {
23
+ this.article = await fetchNewsArticleByHandle(this.api, this.articleUrlHandle, this.articleFetchController.signal);
24
+ return;
25
+ }
18
26
  this.article = await fetchNewsArticle(this.api, this.articleId, this.articleFetchController.signal);
19
27
  }
20
28
  render() {
21
- return (h(Host, null, h("aico-article-detail", { article: this.article })));
29
+ return h("aico-article-detail", { article: this.article });
22
30
  }
23
31
  static get is() { return "aico-fetch-article-detail"; }
24
32
  static get encapsulation() { return "scoped"; }
@@ -73,17 +81,34 @@ export class AicoFetchArticleDetail {
73
81
  "mutable": false,
74
82
  "complexType": {
75
83
  "original": "string",
76
- "resolved": "string",
84
+ "resolved": "string | undefined",
77
85
  "references": {}
78
86
  },
79
- "required": true,
80
- "optional": false,
87
+ "required": false,
88
+ "optional": true,
81
89
  "docs": {
82
90
  "tags": [],
83
- "text": ""
91
+ "text": "The id will be used to fetch the article.\n\nIf both the {@link AicoFetchArticleDetail#articleId } and {@link AicoFetchArticleDetail#articleUrlHandle } are\nprovided, the latter will be used. If neither are provided, an error is thrown."
84
92
  },
85
93
  "attribute": "article-id",
86
94
  "reflect": false
95
+ },
96
+ "articleUrlHandle": {
97
+ "type": "string",
98
+ "mutable": false,
99
+ "complexType": {
100
+ "original": "string",
101
+ "resolved": "string | undefined",
102
+ "references": {}
103
+ },
104
+ "required": false,
105
+ "optional": true,
106
+ "docs": {
107
+ "tags": [],
108
+ "text": "The url handle will be used to fetch the article.\n\nIf both the {@link AicoFetchArticleDetail#articleId } and {@link AicoFetchArticleDetail#articleUrlHandle } are\nprovided, the latter will be used. If neither are provided, an error is thrown."
109
+ },
110
+ "attribute": "article-url-handle",
111
+ "reflect": false
87
112
  }
88
113
  };
89
114
  }
@@ -1 +1 @@
1
- {"version":3,"file":"aico-fetch-article-detail.js","sourceRoot":"","sources":["../../../src/components/aico-fetch-article-detail/aico-fetch-article-detail.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,eAAe,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AASrD,MAAM,OAAO,sBAAsB;;;;;;;IAYjC,iBAAiB;QACf,IAAI,CAAC,sBAAsB,GAAG,IAAI,eAAe,EAAE,CAAC;QACpD,IAAI,CAAC,GAAG,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC;IAC1E,CAAC;IAED,oBAAoB;QAClB,IAAI,CAAC,sBAAuB,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IACrD,CAAC;IAED,KAAK,CAAC,iBAAiB;QACrB,IAAI,CAAC,OAAO,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,GAAI,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,sBAAuB,CAAC,MAAM,CAAC,CAAC;IACxG,CAAC;IAED,MAAM;QACJ,OAAO,CACL,EAAC,IAAI;YACH,2BAAqB,OAAO,EAAE,IAAI,CAAC,OAAO,GAAI,CACzC,CACR,CAAC;IACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import { Component, Host, Prop, State, h } from '@stencil/core';\nimport { fetchNewsArticle } from '../../utils/utils';\nimport { Article } from '../../model/Article';\nimport { AicoApiRequestInfo } from '../../model/AicoApiRequestInfo';\n\n@Component({\n tag: 'aico-fetch-article-detail',\n styleUrl: 'aico-fetch-article-detail.css',\n scoped: true,\n})\nexport class AicoFetchArticleDetail {\n @State() article!: Article;\n\n @Prop() aicoUrl!: string;\n\n @Prop() aicoBearerToken!: string;\n\n @Prop() articleId!: string;\n\n private api?: AicoApiRequestInfo;\n private articleFetchController?: AbortController;\n\n connectedCallback() {\n this.articleFetchController = new AbortController();\n this.api = { baseApi: this.aicoUrl, bearerToken: this.aicoBearerToken };\n }\n\n disconnectedCallback() {\n this.articleFetchController!.abort('disconnected');\n }\n\n async componentWillLoad(): Promise<void> {\n this.article = await fetchNewsArticle(this.api!, this.articleId, this.articleFetchController!.signal);\n }\n\n render() {\n return (\n <Host>\n <aico-article-detail article={this.article} />\n </Host>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"aico-fetch-article-detail.js","sourceRoot":"","sources":["../../../src/components/aico-fetch-article-detail/aico-fetch-article-detail.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAS/E,MAAM,OAAO,sBAAsB;;;;;;;;IA0BjC,iBAAiB;QACf,IAAI,CAAC,sBAAsB,GAAG,IAAI,eAAe,EAAE,CAAC;QACpD,IAAI,CAAC,GAAG,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC;IAC1E,CAAC;IAED,oBAAoB;QAClB,IAAI,CAAC,sBAAuB,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IACrD,CAAC;IAED,KAAK,CAAC,iBAAiB;QACrB,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;YAC7C,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;SAC9E;QAED,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACzB,IAAI,CAAC,OAAO,GAAG,MAAM,wBAAwB,CAAC,IAAI,CAAC,GAAI,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,sBAAuB,CAAC,MAAM,CAAC,CAAC;YACrH,OAAO;SACR;QAED,IAAI,CAAC,OAAO,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,GAAI,EAAE,IAAI,CAAC,SAAU,EAAE,IAAI,CAAC,sBAAuB,CAAC,MAAM,CAAC,CAAC;IACzG,CAAC;IAED,MAAM;QACJ,OAAO,2BAAqB,OAAO,EAAE,IAAI,CAAC,OAAO,GAAI,CAAC;IACxD,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import { Component, Prop, State, h } from '@stencil/core';\nimport { fetchNewsArticle, fetchNewsArticleByHandle } from '../../utils/utils';\nimport { Article } from '../../model/Article';\nimport { AicoApiRequestInfo } from '../../model/AicoApiRequestInfo';\n\n@Component({\n tag: 'aico-fetch-article-detail',\n styleUrl: 'aico-fetch-article-detail.css',\n scoped: true,\n})\nexport class AicoFetchArticleDetail {\n @State() article!: Article;\n\n @Prop() aicoUrl!: string;\n\n @Prop() aicoBearerToken!: string;\n\n /**\n * The id will be used to fetch the article.\n *\n * If both the {@link AicoFetchArticleDetail#articleId} and {@link AicoFetchArticleDetail#articleUrlHandle} are\n * provided, the latter will be used. If neither are provided, an error is thrown.\n */\n @Prop() articleId?: string;\n\n /**\n * The url handle will be used to fetch the article.\n *\n * If both the {@link AicoFetchArticleDetail#articleId} and {@link AicoFetchArticleDetail#articleUrlHandle} are\n * provided, the latter will be used. If neither are provided, an error is thrown.\n */\n @Prop() articleUrlHandle?: string;\n\n private api?: AicoApiRequestInfo;\n private articleFetchController?: AbortController;\n\n connectedCallback() {\n this.articleFetchController = new AbortController();\n this.api = { baseApi: this.aicoUrl, bearerToken: this.aicoBearerToken };\n }\n\n disconnectedCallback() {\n this.articleFetchController!.abort('disconnected');\n }\n\n async componentWillLoad(): Promise<void> {\n if (!this.articleId && !this.articleUrlHandle) {\n throw new Error('Either the article id or the url handle must be provided.');\n }\n\n if (this.articleUrlHandle) {\n this.article = await fetchNewsArticleByHandle(this.api!, this.articleUrlHandle, this.articleFetchController!.signal);\n return;\n }\n\n this.article = await fetchNewsArticle(this.api!, this.articleId!, this.articleFetchController!.signal);\n }\n\n render() {\n return <aico-article-detail article={this.article} />;\n }\n}\n"]}
@@ -1,5 +1,11 @@
1
1
  const meta = {
2
2
  component: 'aico-fetch-article-detail',
3
+ argTypes: {
4
+ aicoUrl: { type: 'string', description: 'The Aico api url.' },
5
+ aicoBearerToken: { type: 'string', description: 'The Aico api access token.' },
6
+ articleId: { type: 'string' },
7
+ articleUrlHandle: { type: 'string' },
8
+ },
3
9
  };
4
10
  export default meta;
5
11
  export const Kj = {
@@ -1 +1 @@
1
- {"version":3,"file":"aico-fetch-article-detail.stories.js","sourceRoot":"","sources":["../../../src/components/aico-fetch-article-detail/aico-fetch-article-detail.stories.ts"],"names":[],"mappings":"AAGA,MAAM,IAAI,GAAqC;IAC7C,SAAS,EAAE,2BAA2B;CACvC,CAAC;AAEF,eAAe,IAAI,CAAC;AAIpB,MAAM,CAAC,MAAM,EAAE,GAAU;IACvB,IAAI,EAAE;QACJ,OAAO,EAAE,0CAA0C;QACnD,eAAe,EAAE,kDAAkD;QACnE,SAAS,EAAE,IAAI;KAChB;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,GAAG,GAAU;IACxB,IAAI,EAAE;QACJ,OAAO,EAAE,sCAAsC;QAC/C,eAAe,EAAE,0CAA0C;QAC3D,SAAS,EAAE,OAAO;KACnB;CACF,CAAC","sourcesContent":["import type { Meta, StoryObj } from '@storybook/web-components';\nimport { JSX } from '../../components';\n\nconst meta: Meta<JSX.AicoFetchArticleDetail> = {\n component: 'aico-fetch-article-detail',\n};\n\nexport default meta;\n\ntype Story = StoryObj;\n\nexport const Kj: Story = {\n args: {\n aicoUrl: 'https://kj-acceptance.aico.swiss/api/v1/',\n aicoBearerToken: 'Sq4WkveRPJ64SHR9zqZW8oLjIDjnlBg0gXHSuIMweb966802',\n articleId: '32',\n },\n};\n\nexport const Fcz: Story = {\n args: {\n aicoUrl: 'https://app.aico.swiss/19838/api/v1/',\n aicoBearerToken: 'B3NXuTbnCeppJl9NHu27Kjs7Hm3EOKSGCkR6CVwO',\n articleId: '44239',\n },\n};\n"]}
1
+ {"version":3,"file":"aico-fetch-article-detail.stories.js","sourceRoot":"","sources":["../../../src/components/aico-fetch-article-detail/aico-fetch-article-detail.stories.ts"],"names":[],"mappings":"AAGA,MAAM,IAAI,GAAqC;IAC7C,SAAS,EAAE,2BAA2B;IACtC,QAAQ,EAAE;QACR,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,mBAAmB,EAAE;QAC7D,eAAe,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,4BAA4B,EAAE;QAC9E,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC7B,gBAAgB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;KACrC;CACF,CAAC;AAEF,eAAe,IAAI,CAAC;AAIpB,MAAM,CAAC,MAAM,EAAE,GAAU;IACvB,IAAI,EAAE;QACJ,OAAO,EAAE,0CAA0C;QACnD,eAAe,EAAE,kDAAkD;QACnE,SAAS,EAAE,IAAI;KAChB;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,GAAG,GAAU;IACxB,IAAI,EAAE;QACJ,OAAO,EAAE,sCAAsC;QAC/C,eAAe,EAAE,0CAA0C;QAC3D,SAAS,EAAE,OAAO;KACnB;CACF,CAAC","sourcesContent":["import type { Meta, StoryObj } from '@storybook/web-components';\nimport { JSX } from '../../components';\n\nconst meta: Meta<JSX.AicoFetchArticleDetail> = {\n component: 'aico-fetch-article-detail',\n argTypes: {\n aicoUrl: { type: 'string', description: 'The Aico api url.' },\n aicoBearerToken: { type: 'string', description: 'The Aico api access token.' },\n articleId: { type: 'string' },\n articleUrlHandle: { type: 'string' },\n },\n};\n\nexport default meta;\n\ntype Story = StoryObj;\n\nexport const Kj: Story = {\n args: {\n aicoUrl: 'https://kj-acceptance.aico.swiss/api/v1/',\n aicoBearerToken: 'Sq4WkveRPJ64SHR9zqZW8oLjIDjnlBg0gXHSuIMweb966802',\n articleId: '32',\n },\n};\n\nexport const Fcz: Story = {\n args: {\n aicoUrl: 'https://app.aico.swiss/19838/api/v1/',\n aicoBearerToken: 'B3NXuTbnCeppJl9NHu27Kjs7Hm3EOKSGCkR6CVwO',\n articleId: '44239',\n },\n};\n"]}
@@ -1,113 +0,0 @@
1
- /* :host { */
2
- /* display: block; */
3
- /* } */
4
- /**/
5
- /* .grid-wrapper { */
6
- /* display: grid; */
7
- /* height: 100%; */
8
- /* width: 100%; */
9
- /* justify-items: center; */
10
- /* align-items: stretch; */
11
- /* grid-template-columns: repeat(4, minmax(auto, 1fr)); */
12
- /* grid-auto-rows: minmax(0, 1fr); */
13
- /* grid-gap: 10px; */
14
- /* } */
15
- /**/
16
- /* .navigation-wrapper { */
17
- /* display: flex; */
18
- /* justify-content: space-around; */
19
- /* justify-items: center; */
20
- /* align-content: center; */
21
- /* } */
22
- /**/
23
- /* .navigation-button { */
24
- /* display: inline-block; */
25
- /* outline: none; */
26
- /* cursor: pointer; */
27
- /* font-size: 14px; */
28
- /* padding: 0 12px; */
29
- /* line-height: 20px; */
30
- /* height: 30px; */
31
- /* max-height: 30px; */
32
- /* background: none; */
33
- /* font-weight: 700; */
34
- /* border: 0; */
35
- /* border-radius: 0; */
36
- /* color: #9ca3af; */
37
- /* transition-timing-function: ease-in-out; */
38
- /* transition-property: background; */
39
- /* transition-duration: 150ms; */
40
- /* box-shadow: none; */
41
- /* &:enabled &:hover { */
42
- /* color: #374151; */
43
- /* } */
44
- /* } */
45
- /**/
46
- /* .navigation-pages { */
47
- /* display: inline-flex; */
48
- /* list-style-type: none; */
49
- /* margin: 0; */
50
- /* padding: 0; */
51
- /* margin-left: -1px; */
52
- /* font-size: 14px; */
53
- /* line-height: 20px; */
54
- /* } */
55
- /**/
56
- /* .navigation-pages > li { */
57
- /* display: flex; */
58
- /* padding-left: 12px; */
59
- /* padding-right: 12px; */
60
- /* justify-content: center; */
61
- /* align-items: center; */
62
- /* border-width: 1px; */
63
- /* border-color: #d1d5db; */
64
- /* border-radius: 8px; */
65
- /* height: 2rem; */
66
- /* line-height: 1.25; */
67
- /* color: #6b7280; */
68
- /* background-color: #ffffff; */
69
- /* } */
70
- /**/
71
- /* .navigation-pages > li.page-number { */
72
- /* cursor: pointer; */
73
- /* &:hover { */
74
- /* color: #374151; */
75
- /* background-color: #f3f4f6; */
76
- /* } */
77
- /* } */
78
- /**/
79
- /* .navigation-pages > li.page-selected { */
80
- /* display: flex; */
81
- /* padding-left: 12px; */
82
- /* padding-right: 12px; */
83
- /* justify-content: center; */
84
- /* align-items: center; */
85
- /* border-width: 1px; */
86
- /* border-color: #d1d5db; */
87
- /* border-radius: 8px; */
88
- /* height: 2rem; */
89
- /* color: #2563eb; */
90
- /* background-color: #eff6ff; */
91
- /**/
92
- /* &:hover { */
93
- /* color: #1d4ed8; */
94
- /* background-color: #dbeafe; */
95
- /* } */
96
- /* } */
97
- /**/
98
- /* /* Tablet */ */
99
- /* @media only screen and (min-width: 768px) and (max-width: 1023px) { */
100
- /* .grid-wrapper { */
101
- /* grid-template-columns: repeat(2, minmax(auto, 1fr)); */
102
- /* } */
103
- /* } */
104
- /**/
105
- /* /* Mobile */ */
106
- /* @media only screen and (max-width: 767px) { */
107
- /* .grid-wrapper { */
108
- /* grid-template-columns: minmax(auto, 1fr); */
109
- /* } */
110
- /* .navigation-pages { */
111
- /* display: none; */
112
- /* } */
113
- /* } */
@@ -27,9 +27,9 @@ export class AicoNewsList {
27
27
  }
28
28
  render() {
29
29
  var _a, _b, _c;
30
- return (h(Host, null, h("div", { class: "axaxa row row-cols-1 row-cols-sm-2 row-cols-lg-4 g-4 mb-4" }, (_a = this.newsResponse) === null || _a === void 0 ? void 0 : _a.data.map(article => (h("div", { class: "col" }, h("aico-news-list-item", { article: article, onArticleClicked: e => {
30
+ return (h(Host, null, h("div", { class: "row row-cols-1 row-cols-sm-2 row-cols-lg-4 g-4 mb-4" }, (_a = this.newsResponse) === null || _a === void 0 ? void 0 : _a.data.map(article => (h("div", { class: "col" }, h("aico-news-list-item", { article: article, onArticleClick: e => {
31
31
  var _a;
32
- (_a = this.articleClicked) === null || _a === void 0 ? void 0 : _a.emit(e.detail);
32
+ (_a = this.articleClick) === null || _a === void 0 ? void 0 : _a.emit(e.detail);
33
33
  } }))))), h("nav", { class: "w-100", "aria-label": "News navigation" }, h("ul", { class: "pagination justify-content-center" }, h("li", { class: `page-item page-link user-select-none d-flex align-items-center ${!((_b = this.newsResponse) === null || _b === void 0 ? void 0 : _b.links.prev) ? 'disabled' : ''}`, style: { cursor: 'pointer' }, onClick: () => {
34
34
  if (this.pageNumber > 1) {
35
35
  this.pageNumber -= 1;
@@ -169,8 +169,8 @@ export class AicoNewsList {
169
169
  }
170
170
  static get events() {
171
171
  return [{
172
- "method": "articleClicked",
173
- "name": "articleClicked",
172
+ "method": "articleClick",
173
+ "name": "articleClick",
174
174
  "bubbles": true,
175
175
  "cancelable": true,
176
176
  "composed": true,
@@ -1 +1 @@
1
- {"version":3,"file":"aico-news-list.js","sourceRoot":"","sources":["../../../src/components/aico-news-list/aico-news-list.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Event, EventEmitter, Host, Prop, State, h } from '@stencil/core';\nimport { fetchNewsArticles } from '../../utils/utils';\nimport { NewsResponse } from '../../model/NewsResponse';\nimport { AicoApiRequestInfo } from '../../model/AicoApiRequestInfo';\nimport { Article } from '../../model/Article';\n\n@Component({\n tag: 'aico-news-list',\n styleUrl: 'aico-news-list.css',\n scoped: true,\n})\nexport class AicoNewsList {\n private readonly pageSize = 16;\n\n @State() newsResponse?: NewsResponse;\n\n @State() pageNumber = 1;\n\n @Prop() aicoUrl!: string;\n\n @Prop() aicoBearerToken!: string;\n\n @Prop() nextButtonText: string = 'Next';\n\n @Prop() previousButtonText: string = 'Previous';\n\n @Event() articleClicked?: EventEmitter<Article>;\n\n private api?: AicoApiRequestInfo;\n private newsListFetchController?: AbortController;\n\n connectedCallback() {\n this.newsListFetchController = new AbortController();\n this.pageNumber = 1;\n\n this.api = { baseApi: this.aicoUrl, bearerToken: this.aicoBearerToken };\n }\n\n disconnectedCallback() {\n this.newsListFetchController!.abort('disconnected');\n }\n\n async componentWillLoad(): Promise<void> {\n this.newsResponse = await fetchNewsArticles(this.api!, this.pageNumber, this.pageSize, this.newsListFetchController!.signal);\n }\n\n async componentWillUpdate(): Promise<void> {\n this.newsListFetchController = new AbortController();\n this.newsResponse = await fetchNewsArticles(this.api!, this.pageNumber, this.pageSize, this.newsListFetchController.signal);\n }\n\n render() {\n return (\n <Host>\n <div class=\"axaxa row row-cols-1 row-cols-sm-2 row-cols-lg-4 g-4 mb-4\">\n {this.newsResponse?.data.map(article => (\n <div class=\"col\">\n <aico-news-list-item\n article={article}\n onArticleClicked={e => {\n this.articleClicked?.emit(e.detail);\n }}\n />\n </div>\n ))}\n </div>\n <nav class=\"w-100\" aria-label=\"News navigation\">\n <ul class=\"pagination justify-content-center\">\n <li\n class={`page-item page-link user-select-none d-flex align-items-center ${!this.newsResponse?.links.prev ? 'disabled' : ''}`}\n style={{ cursor: 'pointer' }}\n onClick={() => {\n if (this.pageNumber > 1) {\n this.pageNumber -= 1;\n }\n\n return false;\n }}\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\" class=\"bi bi-chevron-left me-1 fs-4\" style={{ width: '1em', height: '1em' }} viewBox=\"0 0 16 16\">\n <path fill-rule=\"evenodd\" d=\"M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0\" />\n </svg>\n {this.previousButtonText}\n </li>\n {this.getViewablePages().map(page => (\n <li\n class={`page-item page-link user-select-none ${page === '...' ? 'disabled' : Number(page) === this.pageNumber ? 'active' : ''}`}\n style={{ cursor: 'pointer' }}\n onClick={() => {\n if (page !== '...') {\n this.pageNumber = Number(page);\n }\n return false;\n }}\n >\n {page}\n </li>\n ))}\n <li\n class={`page-item page-link user-select-none d-flex align-items-center ${!this.newsResponse?.links.next ? 'disabled' : ''}`}\n style={{ cursor: 'pointer' }}\n onClick={() => {\n if (this.newsResponse?.meta.page.lastPage && this.pageNumber < this.newsResponse?.meta.page.lastPage) {\n this.pageNumber += 1;\n }\n }}\n >\n {this.nextButtonText}\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\" class=\"bi bi-chevron-right ms-1 fs-4\" style={{ width: '1em', height: '1em' }} viewBox=\"0 0 16 16\">\n <path fill-rule=\"evenodd\" d=\"M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708\" />\n </svg>\n </li>\n </ul>\n </nav>\n </Host>\n );\n }\n\n private getViewablePages(lookAhead: number = 2) {\n const pages: string[] = [];\n if (this.pageNumber - lookAhead >= 2) {\n pages.push('1');\n }\n\n if (this.pageNumber - lookAhead > 2) {\n pages.push('...');\n }\n\n for (let i = this.pageNumber - lookAhead; i < this.pageNumber; i += 1) {\n if (i >= 1) {\n pages.push(`${i}`);\n }\n }\n\n pages.push(`${this.pageNumber}`);\n for (let i = this.pageNumber + 1; i <= this.pageNumber + lookAhead; i += 1) {\n if (i <= (this.newsResponse?.meta.page.lastPage ?? 0)) {\n pages.push(`${i}`);\n }\n }\n\n if (this.pageNumber + lookAhead < (this.newsResponse?.meta.page.lastPage ?? 0) - 1) {\n pages.push('...');\n }\n\n if (this.pageNumber + lookAhead <= (this.newsResponse?.meta.page.lastPage ?? 0) - 1) {\n pages.push(`${this.newsResponse?.meta.page.lastPage}`);\n }\n\n return pages;\n }\n}\n"]}
1
+ {"version":3,"file":"aico-news-list.js","sourceRoot":"","sources":["../../../src/components/aico-news-list/aico-news-list.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Event, EventEmitter, Host, Prop, State, h } from '@stencil/core';\nimport { fetchNewsArticles } from '../../utils/utils';\nimport { NewsResponse } from '../../model/NewsResponse';\nimport { AicoApiRequestInfo } from '../../model/AicoApiRequestInfo';\nimport { Article } from '../../model/Article';\n\n@Component({\n tag: 'aico-news-list',\n styleUrl: 'aico-news-list.css',\n scoped: true,\n})\nexport class AicoNewsList {\n private readonly pageSize = 16;\n\n @State() newsResponse?: NewsResponse;\n\n @State() pageNumber = 1;\n\n @Prop() aicoUrl!: string;\n\n @Prop() aicoBearerToken!: string;\n\n @Prop() nextButtonText: string = 'Next';\n\n @Prop() previousButtonText: string = 'Previous';\n\n @Event() articleClick?: EventEmitter<Article>;\n\n private api?: AicoApiRequestInfo;\n private newsListFetchController?: AbortController;\n\n connectedCallback() {\n this.newsListFetchController = new AbortController();\n this.pageNumber = 1;\n\n this.api = { baseApi: this.aicoUrl, bearerToken: this.aicoBearerToken };\n }\n\n disconnectedCallback() {\n this.newsListFetchController!.abort('disconnected');\n }\n\n async componentWillLoad(): Promise<void> {\n this.newsResponse = await fetchNewsArticles(this.api!, this.pageNumber, this.pageSize, this.newsListFetchController!.signal);\n }\n\n async componentWillUpdate(): Promise<void> {\n this.newsListFetchController = new AbortController();\n this.newsResponse = await fetchNewsArticles(this.api!, this.pageNumber, this.pageSize, this.newsListFetchController.signal);\n }\n\n render() {\n return (\n <Host>\n <div class=\"row row-cols-1 row-cols-sm-2 row-cols-lg-4 g-4 mb-4\">\n {this.newsResponse?.data.map(article => (\n <div class=\"col\">\n <aico-news-list-item\n article={article}\n onArticleClick={e => {\n this.articleClick?.emit(e.detail);\n }}\n />\n </div>\n ))}\n </div>\n <nav class=\"w-100\" aria-label=\"News navigation\">\n <ul class=\"pagination justify-content-center\">\n <li\n class={`page-item page-link user-select-none d-flex align-items-center ${!this.newsResponse?.links.prev ? 'disabled' : ''}`}\n style={{ cursor: 'pointer' }}\n onClick={() => {\n if (this.pageNumber > 1) {\n this.pageNumber -= 1;\n }\n\n return false;\n }}\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\" class=\"bi bi-chevron-left me-1 fs-4\" style={{ width: '1em', height: '1em' }} viewBox=\"0 0 16 16\">\n <path fill-rule=\"evenodd\" d=\"M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0\" />\n </svg>\n {this.previousButtonText}\n </li>\n {this.getViewablePages().map(page => (\n <li\n class={`page-item page-link user-select-none ${page === '...' ? 'disabled' : Number(page) === this.pageNumber ? 'active' : ''}`}\n style={{ cursor: 'pointer' }}\n onClick={() => {\n if (page !== '...') {\n this.pageNumber = Number(page);\n }\n return false;\n }}\n >\n {page}\n </li>\n ))}\n <li\n class={`page-item page-link user-select-none d-flex align-items-center ${!this.newsResponse?.links.next ? 'disabled' : ''}`}\n style={{ cursor: 'pointer' }}\n onClick={() => {\n if (this.newsResponse?.meta.page.lastPage && this.pageNumber < this.newsResponse?.meta.page.lastPage) {\n this.pageNumber += 1;\n }\n }}\n >\n {this.nextButtonText}\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\" class=\"bi bi-chevron-right ms-1 fs-4\" style={{ width: '1em', height: '1em' }} viewBox=\"0 0 16 16\">\n <path fill-rule=\"evenodd\" d=\"M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708\" />\n </svg>\n </li>\n </ul>\n </nav>\n </Host>\n );\n }\n\n private getViewablePages(lookAhead: number = 2) {\n const pages: string[] = [];\n if (this.pageNumber - lookAhead >= 2) {\n pages.push('1');\n }\n\n if (this.pageNumber - lookAhead > 2) {\n pages.push('...');\n }\n\n for (let i = this.pageNumber - lookAhead; i < this.pageNumber; i += 1) {\n if (i >= 1) {\n pages.push(`${i}`);\n }\n }\n\n pages.push(`${this.pageNumber}`);\n for (let i = this.pageNumber + 1; i <= this.pageNumber + lookAhead; i += 1) {\n if (i <= (this.newsResponse?.meta.page.lastPage ?? 0)) {\n pages.push(`${i}`);\n }\n }\n\n if (this.pageNumber + lookAhead < (this.newsResponse?.meta.page.lastPage ?? 0) - 1) {\n pages.push('...');\n }\n\n if (this.pageNumber + lookAhead <= (this.newsResponse?.meta.page.lastPage ?? 0) - 1) {\n pages.push(`${this.newsResponse?.meta.page.lastPage}`);\n }\n\n return pages;\n }\n}\n"]}
@@ -1,5 +1,8 @@
1
1
  const meta = {
2
2
  component: 'aico-news-list',
3
+ argTypes: {
4
+ onArticleClick: { type: 'function' },
5
+ },
3
6
  };
4
7
  export default meta;
5
8
  export const Kj = {
@@ -1 +1 @@
1
- {"version":3,"file":"aico-news-list.stories.js","sourceRoot":"","sources":["../../../src/components/aico-news-list/aico-news-list.stories.ts"],"names":[],"mappings":"AAEA,MAAM,IAAI,GAAS;IACjB,SAAS,EAAE,gBAAgB;CAC5B,CAAC;AAEF,eAAe,IAAI,CAAC;AAIpB,MAAM,CAAC,MAAM,EAAE,GAAU;IACvB,IAAI,EAAE;QACJ,OAAO,EAAE,0CAA0C;QACnD,eAAe,EAAE,kDAAkD;QACnE,cAAc,EAAE,MAAM;QACtB,kBAAkB,EAAE,UAAU;KAC/B;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,GAAG,GAAU;IACxB,IAAI,EAAE;QACJ,OAAO,EAAE,sCAAsC;QAC/C,eAAe,EAAE,0CAA0C;QAC3D,cAAc,EAAE,MAAM;QACtB,kBAAkB,EAAE,UAAU;KAC/B;CACF,CAAC","sourcesContent":["import type { Meta, StoryObj } from '@storybook/web-components';\n\nconst meta: Meta = {\n component: 'aico-news-list',\n};\n\nexport default meta;\n\ntype Story = StoryObj;\n\nexport const Kj: Story = {\n args: {\n aicoUrl: 'https://kj-acceptance.aico.swiss/api/v1/',\n aicoBearerToken: 'Sq4WkveRPJ64SHR9zqZW8oLjIDjnlBg0gXHSuIMweb966802',\n nextButtonText: 'Next',\n previousButtonText: 'Previous',\n },\n};\n\nexport const Fcz: Story = {\n args: {\n aicoUrl: 'https://app.aico.swiss/19838/api/v1/',\n aicoBearerToken: 'B3NXuTbnCeppJl9NHu27Kjs7Hm3EOKSGCkR6CVwO',\n nextButtonText: 'Next',\n previousButtonText: 'Previous',\n },\n};\n"]}
1
+ {"version":3,"file":"aico-news-list.stories.js","sourceRoot":"","sources":["../../../src/components/aico-news-list/aico-news-list.stories.ts"],"names":[],"mappings":"AAGA,MAAM,IAAI,GAA2B;IACnC,SAAS,EAAE,gBAAgB;IAC3B,QAAQ,EAAE;QACR,cAAc,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;KACrC;CACF,CAAC;AAEF,eAAe,IAAI,CAAC;AAIpB,MAAM,CAAC,MAAM,EAAE,GAAU;IACvB,IAAI,EAAE;QACJ,OAAO,EAAE,0CAA0C;QACnD,eAAe,EAAE,kDAAkD;QACnE,cAAc,EAAE,MAAM;QACtB,kBAAkB,EAAE,UAAU;KAC/B;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,GAAG,GAAU;IACxB,IAAI,EAAE;QACJ,OAAO,EAAE,sCAAsC;QAC/C,eAAe,EAAE,0CAA0C;QAC3D,cAAc,EAAE,MAAM;QACtB,kBAAkB,EAAE,UAAU;KAC/B;CACF,CAAC","sourcesContent":["import type { Meta, StoryObj } from '@storybook/web-components';\nimport { JSX } from '../../components';\n\nconst meta: Meta<JSX.AicoNewsList> = {\n component: 'aico-news-list',\n argTypes: {\n onArticleClick: { type: 'function' },\n },\n};\n\nexport default meta;\n\ntype Story = StoryObj;\n\nexport const Kj: Story = {\n args: {\n aicoUrl: 'https://kj-acceptance.aico.swiss/api/v1/',\n aicoBearerToken: 'Sq4WkveRPJ64SHR9zqZW8oLjIDjnlBg0gXHSuIMweb966802',\n nextButtonText: 'Next',\n previousButtonText: 'Previous',\n },\n};\n\nexport const Fcz: Story = {\n args: {\n aicoUrl: 'https://app.aico.swiss/19838/api/v1/',\n aicoBearerToken: 'B3NXuTbnCeppJl9NHu27Kjs7Hm3EOKSGCkR6CVwO',\n nextButtonText: 'Next',\n previousButtonText: 'Previous',\n },\n};\n"]}
@@ -5,7 +5,10 @@ export class AicoNewsListItem {
5
5
  }
6
6
  render() {
7
7
  var _a, _b;
8
- return (h("div", { class: "card h-100" }, h("div", { class: "ratio ratio-4x3 mb-3" }, h("img", { class: "card-img-top w-100 object-fit-cover", style: { 'min-height': '15rem' }, alt: "Article image", src: (_b = (_a = this.article.attributes.optimizedListImage) !== null && _a !== void 0 ? _a : this.article.attributes.optimizedImage) !== null && _b !== void 0 ? _b : this.article.attributes.image })), h("div", { class: "card-img-overlay d-flex justify-content-end" }), h("div", { class: "card-body" }, h("h5", { class: "card-title" }, this.article.attributes.name), h("p", { class: "card-text" }, this.article.attributes.excerpt))));
8
+ return (h("div", { class: "card h-100 pe-auto", style: { cursor: 'pointer' }, onClick: () => {
9
+ var _a;
10
+ (_a = this.articleClick) === null || _a === void 0 ? void 0 : _a.emit(this.article);
11
+ } }, h("div", { class: "ratio ratio-4x3 mb-3" }, h("img", { class: "card-img-top w-100 object-fit-cover", style: { 'min-height': '15rem' }, alt: "Article image", src: (_b = (_a = this.article.attributes.optimizedListImage) !== null && _a !== void 0 ? _a : this.article.attributes.optimizedImage) !== null && _b !== void 0 ? _b : this.article.attributes.image })), h("div", { class: "card-img-overlay d-flex justify-content-end" }), h("div", { class: "card-body" }, h("h5", { class: "card-title" }, this.article.attributes.name), h("p", { class: "card-text" }, this.article.attributes.excerpt))));
9
12
  }
10
13
  static get is() { return "aico-news-list-item"; }
11
14
  static get encapsulation() { return "scoped"; }
@@ -46,8 +49,8 @@ export class AicoNewsListItem {
46
49
  }
47
50
  static get events() {
48
51
  return [{
49
- "method": "articleClicked",
50
- "name": "articleClicked",
52
+ "method": "articleClick",
53
+ "name": "articleClick",
51
54
  "bubbles": true,
52
55
  "cancelable": true,
53
56
  "composed": true,
@@ -1 +1 @@
1
- {"version":3,"file":"aico-news-list-item.js","sourceRoot":"","sources":["../../../src/components/aico-news-list-item/aico-news-list-item.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAgB,CAAC,EAAE,MAAM,eAAe,CAAC;AAQxE,MAAM,OAAO,gBAAgB;;;;IAK3B,MAAM;;QACJ,OAAO,CACL,WAAK,KAAK,EAAC,YAAY;YACrB,WAAK,KAAK,EAAC,sBAAsB;gBAC/B,WACE,KAAK,EAAC,qCAAqC,EAC3C,KAAK,EAAE,EAAE,YAAY,EAAE,OAAO,EAAE,EAChC,GAAG,EAAC,eAAe,EACnB,GAAG,EAAE,MAAA,MAAA,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,kBAAkB,mCAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,cAAc,mCAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,GAC1H,CACE;YACN,WAAK,KAAK,EAAC,6CAA6C,GAA0C;YAClG,WAAK,KAAK,EAAC,WAAW;gBACpB,UAAI,KAAK,EAAC,YAAY,IAAE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAM;gBAC1D,SAAG,KAAK,EAAC,WAAW,IAAE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAK,CACtD,CACF,CACP,CAAC;IACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import { Component, Prop, Event, EventEmitter, h } from '@stencil/core';\nimport { Article } from '../../model/Article';\n\n@Component({\n tag: 'aico-news-list-item',\n styleUrl: 'aico-news-list-item.css',\n scoped: true,\n})\nexport class AicoNewsListItem {\n @Prop() article!: Article;\n\n @Event() articleClicked?: EventEmitter<Article>;\n\n render() {\n return (\n <div class=\"card h-100\">\n <div class=\"ratio ratio-4x3 mb-3\">\n <img\n class=\"card-img-top w-100 object-fit-cover\"\n style={{ 'min-height': '15rem' }}\n alt=\"Article image\"\n src={this.article.attributes.optimizedListImage ?? this.article.attributes.optimizedImage ?? this.article.attributes.image}\n />\n </div>\n <div class=\"card-img-overlay d-flex justify-content-end\">{/*TODO: set the date top-right?*/}</div>\n <div class=\"card-body\">\n <h5 class=\"card-title\">{this.article.attributes.name}</h5>\n <p class=\"card-text\">{this.article.attributes.excerpt}</p>\n </div>\n </div>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"aico-news-list-item.js","sourceRoot":"","sources":["../../../src/components/aico-news-list-item/aico-news-list-item.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAgB,CAAC,EAAE,MAAM,eAAe,CAAC;AAQxE,MAAM,OAAO,gBAAgB;;;;IAK3B,MAAM;;QACJ,OAAO,CACL,WACE,KAAK,EAAC,oBAAoB,EAC1B,KAAK,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,EAC5B,OAAO,EAAE,GAAG,EAAE;;gBACZ,MAAA,IAAI,CAAC,YAAY,0CAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACxC,CAAC;YAED,WAAK,KAAK,EAAC,sBAAsB;gBAC/B,WACE,KAAK,EAAC,qCAAqC,EAC3C,KAAK,EAAE,EAAE,YAAY,EAAE,OAAO,EAAE,EAChC,GAAG,EAAC,eAAe,EACnB,GAAG,EAAE,MAAA,MAAA,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,kBAAkB,mCAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,cAAc,mCAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,GAC1H,CACE;YACN,WAAK,KAAK,EAAC,6CAA6C,GAA0C;YAClG,WAAK,KAAK,EAAC,WAAW;gBACpB,UAAI,KAAK,EAAC,YAAY,IAAE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAM;gBAC1D,SAAG,KAAK,EAAC,WAAW,IAAE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAK,CACtD,CACF,CACP,CAAC;IACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import { Component, Prop, Event, EventEmitter, h } from '@stencil/core';\nimport { Article } from '../../model/Article';\n\n@Component({\n tag: 'aico-news-list-item',\n styleUrl: 'aico-news-list-item.css',\n scoped: true,\n})\nexport class AicoNewsListItem {\n @Prop() article!: Article;\n\n @Event() articleClick?: EventEmitter<Article>;\n\n render() {\n return (\n <div\n class=\"card h-100 pe-auto\"\n style={{ cursor: 'pointer' }}\n onClick={() => {\n this.articleClick?.emit(this.article);\n }}\n >\n <div class=\"ratio ratio-4x3 mb-3\">\n <img\n class=\"card-img-top w-100 object-fit-cover\"\n style={{ 'min-height': '15rem' }}\n alt=\"Article image\"\n src={this.article.attributes.optimizedListImage ?? this.article.attributes.optimizedImage ?? this.article.attributes.image}\n />\n </div>\n <div class=\"card-img-overlay d-flex justify-content-end\">{/*TODO: set the date top-right?*/}</div>\n <div class=\"card-body\">\n <h5 class=\"card-title\">{this.article.attributes.name}</h5>\n <p class=\"card-text\">{this.article.attributes.excerpt}</p>\n </div>\n </div>\n );\n }\n}\n"]}
@@ -90,12 +90,12 @@ export class AicoTextContent {
90
90
  static get encapsulation() { return "scoped"; }
91
91
  static get originalStyleUrls() {
92
92
  return {
93
- "$": ["aico-text-content.css", "../content-styles.css"]
93
+ "$": ["aico-text-content.css"]
94
94
  };
95
95
  }
96
96
  static get styleUrls() {
97
97
  return {
98
- "$": ["aico-text-content.css", "../content-styles.css"]
98
+ "$": ["aico-text-content.css"]
99
99
  };
100
100
  }
101
101
  static get properties() {
@@ -1 +1 @@
1
- {"version":3,"file":"aico-text-content.js","sourceRoot":"","sources":["../../../../src/components/content/aico-text-content/aico-text-content.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Prop, VNode, h } from '@stencil/core';\nimport ConditionalRender from '../../../utils/ConditionalRender';\nimport ConditionalWrap from '../../../utils/ConditionalWrap';\nimport type { TextContent, TextContentTranslation } from '../../../model/article/content/TextContent';\nimport type { TitleContent } from '../../../model/article/content/TitleContent';\nimport { getClass, strIsNullOrEmptyOrWhitespace } from '../../../utils/utils';\nimport 'bootstrap';\n\n@Component({\n tag: 'aico-text-content',\n styleUrls: ['aico-text-content.css', '../content-styles.css'],\n scoped: true,\n})\nexport class AicoTextContent {\n @Prop() content!: TextContent;\n\n render() {\n if (this.content.translations.length === 0) {\n return <aico-no-content />;\n }\n\n const translation = this.content.translations.length > 0 ? this.content.translations[0] : null;\n const contentStyles: { [key: string]: string | undefined } = {};\n\n if (this.content.hasBackgroundColor) {\n contentStyles['background-color'] = this.content.backgroundColor ?? 'white';\n contentStyles['color'] = this.content.textColor ?? 'black';\n contentStyles['width'] = '100%';\n contentStyles['padding'] = '15px';\n contentStyles['margin-top'] = '10px';\n }\n\n if (this.content.addBorder) {\n contentStyles['border'] = `3px solid ${this.content.borderColor}`;\n contentStyles['margin-top'] = '-3px';\n }\n\n if (this.content.alignmentEnabled) {\n contentStyles['display'] = 'flex';\n contentStyles['align-items'] = this.content.verticalAlign ?? 'flex-start';\n }\n\n return (\n <ConditionalRender condition={translation !== null}>\n <ConditionalWrap\n condition={!strIsNullOrEmptyOrWhitespace(translation!.promptText)}\n wrap={children => (\n <div class=\"accordion\" id=\"aico-text-content\">\n <div class=\"accordion-item\">\n <h2 class=\"accordion-header\" id=\"heading\">\n <button class=\"accordion-button collapsed\" type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\"#collapse\" aria-expanded=\"false\" aria-controls=\"collapse\">\n {translation!.promptText}\n </button>\n </h2>\n <div id=\"collapse\" class=\"accordion-collapse collapse\" aria-labelledby=\"heading\" data-bs-parent=\"#aico-text-content\">\n <div class=\"accordion-body\">{children}</div>\n </div>\n </div>\n </div>\n )}\n >\n <div class=\"card\" style={contentStyles}>\n <div class=\"card-body w-100 border-0\">\n <aico-title-content class=\"card-title\" content={this.makeTitleContent(translation!)} />\n <ConditionalRender condition={this.shouldDisplayTextAndPicture(translation!)}>\n <div class=\"row g-4\">\n <div\n class={getClass({\n 'col-md-8': true,\n 'order-1': this.content.picturePosition === 'right',\n 'order-2': this.content.picturePosition === 'left',\n })}\n >\n {this.getTextComponent(translation!)}\n </div>\n <div\n class={getClass({\n 'col-md-4 justify-content-center': true,\n 'order-2': this.content.picturePosition === 'right',\n 'order-1': this.content.picturePosition === 'left',\n })}\n >\n {this.getImageComponent(translation!)}\n </div>\n </div>\n </ConditionalRender>\n <ConditionalRender condition={this.shouldDisplayOnlyPicture(translation!)}>{this.getImageComponent(translation!)}</ConditionalRender>\n <ConditionalRender condition={this.shouldDisplayOnlyText(translation!)}>{this.getTextComponent(translation!)}</ConditionalRender>\n </div>\n </div>\n </ConditionalWrap>\n </ConditionalRender>\n );\n }\n\n private getImageComponent(translation: TextContentTranslation): VNode {\n const imageStyles: { [key: string]: string | undefined } = {};\n\n if (this.content.focusXPercentage && this.content.focusYCoordinate) {\n imageStyles['object-position'] = `${this.content.focusXPercentage}% ${this.content.focusYPercentage}%`;\n }\n\n return (\n <div class=\"card text-bg-dark text-white\">\n <img class=\"card-img img-fluid object-fit-contain\" src={translation.optimizedPicture ?? translation.picture} />\n <ConditionalRender condition={!strIsNullOrEmptyOrWhitespace(translation.pictureLabel)}>\n <div class=\"card-img-overlay\">\n <p\n class={getClass({\n 'card-text': true,\n 'text-end': this.content.pictureLabelPosition === 'right',\n 'text-center': this.content.pictureLabelPosition === 'center',\n })}\n >\n {translation.pictureLabel}\n </p>\n </div>\n </ConditionalRender>\n </div>\n );\n }\n\n private getTextComponent(translation: TextContentTranslation): VNode {\n const textStyles: { [key: string]: string | undefined } = { 'line-height': '1.3', 'white-space': 'pre-line' };\n if (this.content.fontSize) {\n textStyles['font-size'] = `${this.content.fontSize}px`;\n }\n\n if (this.content.fontFamily) {\n textStyles['font-family'] = this.content.fontFamily;\n }\n\n if (this.content.shouldJustifyText) {\n textStyles['text-align'] = 'justify';\n textStyles['text-justify'] = 'inner-word';\n }\n\n return (\n <p class=\"card-text\" style={textStyles}>\n {translation.text}\n </p>\n );\n }\n\n private makeTitleContent(translation: TextContentTranslation): TitleContent {\n return {\n id: this.content.id,\n createdAt: this.content.createdAt,\n updatedAt: this.content.updatedAt,\n hasUnderscore: false,\n size: this.content.titleSize ?? 'h1',\n titleColor: this.content.textColor,\n translations: [{ ...translation }],\n };\n }\n\n private shouldDisplayTextAndPicture(translation: TextContentTranslation): boolean {\n return !strIsNullOrEmptyOrWhitespace(translation.text) && (!strIsNullOrEmptyOrWhitespace(translation.optimizedPicture) || !strIsNullOrEmptyOrWhitespace(translation.picture));\n }\n\n private shouldDisplayOnlyPicture(translation: TextContentTranslation): boolean {\n return strIsNullOrEmptyOrWhitespace(translation.text) && (!strIsNullOrEmptyOrWhitespace(translation.optimizedPicture) || !strIsNullOrEmptyOrWhitespace(translation.picture));\n }\n\n private shouldDisplayOnlyText(translation: TextContentTranslation): boolean {\n return !strIsNullOrEmptyOrWhitespace(translation.text) && strIsNullOrEmptyOrWhitespace(translation.optimizedPicture) && strIsNullOrEmptyOrWhitespace(translation.picture);\n }\n}\n"]}
1
+ {"version":3,"file":"aico-text-content.js","sourceRoot":"","sources":["../../../../src/components/content/aico-text-content/aico-text-content.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Prop, VNode, h } from '@stencil/core';\nimport ConditionalRender from '../../../utils/ConditionalRender';\nimport ConditionalWrap from '../../../utils/ConditionalWrap';\nimport type { TextContent, TextContentTranslation } from '../../../model/article/content/TextContent';\nimport type { TitleContent } from '../../../model/article/content/TitleContent';\nimport { getClass, strIsNullOrEmptyOrWhitespace } from '../../../utils/utils';\nimport 'bootstrap';\n\n@Component({\n tag: 'aico-text-content',\n styleUrl: 'aico-text-content.css',\n scoped: true,\n})\nexport class AicoTextContent {\n @Prop() content!: TextContent;\n\n render() {\n if (this.content.translations.length === 0) {\n return <aico-no-content />;\n }\n\n const translation = this.content.translations.length > 0 ? this.content.translations[0] : null;\n const contentStyles: { [key: string]: string | undefined } = {};\n\n if (this.content.hasBackgroundColor) {\n contentStyles['background-color'] = this.content.backgroundColor ?? 'white';\n contentStyles['color'] = this.content.textColor ?? 'black';\n contentStyles['width'] = '100%';\n contentStyles['padding'] = '15px';\n contentStyles['margin-top'] = '10px';\n }\n\n if (this.content.addBorder) {\n contentStyles['border'] = `3px solid ${this.content.borderColor}`;\n contentStyles['margin-top'] = '-3px';\n }\n\n if (this.content.alignmentEnabled) {\n contentStyles['display'] = 'flex';\n contentStyles['align-items'] = this.content.verticalAlign ?? 'flex-start';\n }\n\n return (\n <ConditionalRender condition={translation !== null}>\n <ConditionalWrap\n condition={!strIsNullOrEmptyOrWhitespace(translation!.promptText)}\n wrap={children => (\n <div class=\"accordion\" id=\"aico-text-content\">\n <div class=\"accordion-item\">\n <h2 class=\"accordion-header\" id=\"heading\">\n <button class=\"accordion-button collapsed\" type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\"#collapse\" aria-expanded=\"false\" aria-controls=\"collapse\">\n {translation!.promptText}\n </button>\n </h2>\n <div id=\"collapse\" class=\"accordion-collapse collapse\" aria-labelledby=\"heading\" data-bs-parent=\"#aico-text-content\">\n <div class=\"accordion-body\">{children}</div>\n </div>\n </div>\n </div>\n )}\n >\n <div class=\"card\" style={contentStyles}>\n <div class=\"card-body w-100 border-0\">\n <aico-title-content class=\"card-title\" content={this.makeTitleContent(translation!)} />\n <ConditionalRender condition={this.shouldDisplayTextAndPicture(translation!)}>\n <div class=\"row g-4\">\n <div\n class={getClass({\n 'col-md-8': true,\n 'order-1': this.content.picturePosition === 'right',\n 'order-2': this.content.picturePosition === 'left',\n })}\n >\n {this.getTextComponent(translation!)}\n </div>\n <div\n class={getClass({\n 'col-md-4 justify-content-center': true,\n 'order-2': this.content.picturePosition === 'right',\n 'order-1': this.content.picturePosition === 'left',\n })}\n >\n {this.getImageComponent(translation!)}\n </div>\n </div>\n </ConditionalRender>\n <ConditionalRender condition={this.shouldDisplayOnlyPicture(translation!)}>{this.getImageComponent(translation!)}</ConditionalRender>\n <ConditionalRender condition={this.shouldDisplayOnlyText(translation!)}>{this.getTextComponent(translation!)}</ConditionalRender>\n </div>\n </div>\n </ConditionalWrap>\n </ConditionalRender>\n );\n }\n\n private getImageComponent(translation: TextContentTranslation): VNode {\n const imageStyles: { [key: string]: string | undefined } = {};\n\n if (this.content.focusXPercentage && this.content.focusYCoordinate) {\n imageStyles['object-position'] = `${this.content.focusXPercentage}% ${this.content.focusYPercentage}%`;\n }\n\n return (\n <div class=\"card text-bg-dark text-white\">\n <img class=\"card-img img-fluid object-fit-contain\" src={translation.optimizedPicture ?? translation.picture} />\n <ConditionalRender condition={!strIsNullOrEmptyOrWhitespace(translation.pictureLabel)}>\n <div class=\"card-img-overlay\">\n <p\n class={getClass({\n 'card-text': true,\n 'text-end': this.content.pictureLabelPosition === 'right',\n 'text-center': this.content.pictureLabelPosition === 'center',\n })}\n >\n {translation.pictureLabel}\n </p>\n </div>\n </ConditionalRender>\n </div>\n );\n }\n\n private getTextComponent(translation: TextContentTranslation): VNode {\n const textStyles: { [key: string]: string | undefined } = { 'line-height': '1.3', 'white-space': 'pre-line' };\n if (this.content.fontSize) {\n textStyles['font-size'] = `${this.content.fontSize}px`;\n }\n\n if (this.content.fontFamily) {\n textStyles['font-family'] = this.content.fontFamily;\n }\n\n if (this.content.shouldJustifyText) {\n textStyles['text-align'] = 'justify';\n textStyles['text-justify'] = 'inner-word';\n }\n\n return (\n <p class=\"card-text\" style={textStyles}>\n {translation.text}\n </p>\n );\n }\n\n private makeTitleContent(translation: TextContentTranslation): TitleContent {\n return {\n id: this.content.id,\n createdAt: this.content.createdAt,\n updatedAt: this.content.updatedAt,\n hasUnderscore: false,\n size: this.content.titleSize ?? 'h1',\n titleColor: this.content.textColor,\n translations: [{ ...translation }],\n };\n }\n\n private shouldDisplayTextAndPicture(translation: TextContentTranslation): boolean {\n return !strIsNullOrEmptyOrWhitespace(translation.text) && (!strIsNullOrEmptyOrWhitespace(translation.optimizedPicture) || !strIsNullOrEmptyOrWhitespace(translation.picture));\n }\n\n private shouldDisplayOnlyPicture(translation: TextContentTranslation): boolean {\n return strIsNullOrEmptyOrWhitespace(translation.text) && (!strIsNullOrEmptyOrWhitespace(translation.optimizedPicture) || !strIsNullOrEmptyOrWhitespace(translation.picture));\n }\n\n private shouldDisplayOnlyText(translation: TextContentTranslation): boolean {\n return !strIsNullOrEmptyOrWhitespace(translation.text) && strIsNullOrEmptyOrWhitespace(translation.optimizedPicture) && strIsNullOrEmptyOrWhitespace(translation.picture);\n }\n}\n"]}
@@ -29,6 +29,14 @@ export async function fetchNewsArticle(api, articleId, signal) {
29
29
  const article = await response.json();
30
30
  return article.data;
31
31
  }
32
+ export async function fetchNewsArticleByHandle(api, urlHandle, signal) {
33
+ const queryParams = new URLSearchParams();
34
+ queryParams.set('filter[urlHandle]', urlHandle);
35
+ const request = getAuthenticatedRequest(api, 'news', queryParams, signal);
36
+ const response = await fetch(request);
37
+ const articles = await response.json();
38
+ return articles.data[0];
39
+ }
32
40
  export async function fetchArticle(url, bearerToken, signal) {
33
41
  const request = new Request(new URL(url), {
34
42
  headers: getAuthenticatedHeaders(bearerToken),
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils/utils.ts"],"names":[],"mappings":"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","sourcesContent":["import { Article } from '../components';\nimport { AicoApiRequestInfo, getAuthenticatedHeaders, getAuthenticatedRequest } from '../model/AicoApiRequestInfo';\nimport { NewsResponse } from '../model/NewsResponse';\n\nexport async function fetchNewsArticles(api: AicoApiRequestInfo, page: number, size: number, signal: AbortSignal): Promise<NewsResponse> {\n const queryParams = new URLSearchParams();\n queryParams.set('page[number]', String(page));\n queryParams.set('page[size]', String(size));\n queryParams.set('filter[isActive]', '1');\n queryParams.set('filter[excludeTag][]', 'Eisnull');\n queryParams.set('sort', '-publishDate');\n\n const request = getAuthenticatedRequest(api, 'news', queryParams, signal);\n const response = await fetch(request);\n return await response.json();\n}\n\nexport async function fetchSpecialNewsArticles(api: AicoApiRequestInfo, page: number, size: number, signal: AbortSignal): Promise<NewsResponse> {\n const queryParams = new URLSearchParams();\n queryParams.set('page[number]', String(page));\n queryParams.set('page[size]', String(size));\n queryParams.set('filter[isActive]', '1');\n queryParams.set('filter[isSpecialArticle]', '1');\n queryParams.set('filter[isLightVersion]', 'true');\n queryParams.set('filter[excludeTag][]', 'Eisnull');\n queryParams.set('sort', '-publishDate');\n\n const request = getAuthenticatedRequest(api, 'news', queryParams, signal);\n const response = await fetch(request);\n return await response.json();\n}\n\nexport async function fetchNewsArticle(api: AicoApiRequestInfo, articleId: string, signal: AbortSignal): Promise<Article> {\n const request = getAuthenticatedRequest(api, `news/${articleId}`, new URLSearchParams(), signal);\n const response = await fetch(request);\n const article = await response.json();\n return article.data;\n}\n\nexport async function fetchArticle(url: string, bearerToken: string, signal: AbortSignal): Promise<Article> {\n const request = new Request(new URL(url), {\n headers: getAuthenticatedHeaders(bearerToken),\n signal,\n });\n const response = await fetch(request);\n return await response.json();\n}\n\nexport function getImageWidthPrc(pictureSize?: string): string {\n switch (pictureSize) {\n case 'extra-small':\n return '28%';\n case 'small':\n return '40%';\n case 'large':\n return '80%';\n case 'extra large': // TODO: has - or not?\n return '100%';\n default:\n return '60%';\n }\n}\n\nexport function getYoutubeURL(url: string): string | null {\n const regExp = /.*(?:youtu.be\\/|v\\/|u\\/\\w\\/|embed\\/|watch\\?v=)([^#&?]*).*/;\n const match = url.match(regExp);\n if (match && match[1].length == 11) {\n return `https://www.youtube.com/embed/${match[1]}`;\n }\n\n return null;\n}\n\nexport function strIsNullOrEmptyOrWhitespace(str?: string | null): boolean {\n if (!str || str === ' ') {\n return true;\n }\n\n return false;\n}\n\nexport function getClass(conditions: { [key: string]: boolean }): string {\n const classes: string[] = [];\n for (const kvp of Object.entries(conditions)) {\n if (kvp[1]) {\n classes.push(kvp[0]);\n }\n }\n\n return classes.join(' ');\n}\n"]}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils/utils.ts"],"names":[],"mappings":"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","sourcesContent":["import { Article } from '../components';\nimport { AicoApiRequestInfo, getAuthenticatedHeaders, getAuthenticatedRequest } from '../model/AicoApiRequestInfo';\nimport { NewsResponse } from '../model/NewsResponse';\n\nexport async function fetchNewsArticles(api: AicoApiRequestInfo, page: number, size: number, signal: AbortSignal): Promise<NewsResponse> {\n const queryParams = new URLSearchParams();\n queryParams.set('page[number]', String(page));\n queryParams.set('page[size]', String(size));\n queryParams.set('filter[isActive]', '1');\n queryParams.set('filter[excludeTag][]', 'Eisnull');\n queryParams.set('sort', '-publishDate');\n\n const request = getAuthenticatedRequest(api, 'news', queryParams, signal);\n const response = await fetch(request);\n return await response.json();\n}\n\nexport async function fetchSpecialNewsArticles(api: AicoApiRequestInfo, page: number, size: number, signal: AbortSignal): Promise<NewsResponse> {\n const queryParams = new URLSearchParams();\n queryParams.set('page[number]', String(page));\n queryParams.set('page[size]', String(size));\n queryParams.set('filter[isActive]', '1');\n queryParams.set('filter[isSpecialArticle]', '1');\n queryParams.set('filter[isLightVersion]', 'true');\n queryParams.set('filter[excludeTag][]', 'Eisnull');\n queryParams.set('sort', '-publishDate');\n\n const request = getAuthenticatedRequest(api, 'news', queryParams, signal);\n const response = await fetch(request);\n return await response.json();\n}\n\nexport async function fetchNewsArticle(api: AicoApiRequestInfo, articleId: string, signal: AbortSignal): Promise<Article> {\n const request = getAuthenticatedRequest(api, `news/${articleId}`, new URLSearchParams(), signal);\n const response = await fetch(request);\n const article = await response.json();\n return article.data;\n}\n\nexport async function fetchNewsArticleByHandle(api: AicoApiRequestInfo, urlHandle: string, signal: AbortSignal): Promise<Article> {\n const queryParams = new URLSearchParams();\n queryParams.set('filter[urlHandle]', urlHandle);\n\n const request = getAuthenticatedRequest(api, 'news', queryParams, signal);\n const response = await fetch(request);\n const articles = await response.json();\n return articles.data[0];\n}\n\nexport async function fetchArticle(url: string, bearerToken: string, signal: AbortSignal): Promise<Article> {\n const request = new Request(new URL(url), {\n headers: getAuthenticatedHeaders(bearerToken),\n signal,\n });\n const response = await fetch(request);\n return await response.json();\n}\n\nexport function getImageWidthPrc(pictureSize?: string): string {\n switch (pictureSize) {\n case 'extra-small':\n return '28%';\n case 'small':\n return '40%';\n case 'large':\n return '80%';\n case 'extra large': // TODO: has - or not?\n return '100%';\n default:\n return '60%';\n }\n}\n\nexport function getYoutubeURL(url: string): string | null {\n const regExp = /.*(?:youtu.be\\/|v\\/|u\\/\\w\\/|embed\\/|watch\\?v=)([^#&?]*).*/;\n const match = url.match(regExp);\n if (match && match[1].length == 11) {\n return `https://www.youtube.com/embed/${match[1]}`;\n }\n\n return null;\n}\n\nexport function strIsNullOrEmptyOrWhitespace(str?: string | null): boolean {\n if (!str || str === ' ') {\n return true;\n }\n\n return false;\n}\n\nexport function getClass(conditions: { [key: string]: boolean }): string {\n const classes: string[] = [];\n for (const kvp of Object.entries(conditions)) {\n if (kvp[1]) {\n classes.push(kvp[0]);\n }\n }\n\n return classes.join(' ');\n}\n"]}