@pega/cosmos-react-demos 5.0.0-dev.13.0 → 5.0.0-dev.14.0

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.
@@ -1 +1 @@
1
- {"version":3,"file":"ArticleBuddy.stories.d.ts","sourceRoot":"","sources":["../../../src/work/ArticleList/ArticleBuddy.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,OAAO,EAAE,MAAM,kBAAkB,CAAC;;AAYtD,wBAGU;AAEV,UAAU,qBAAqB;IAC7B,cAAc,EAAE,OAAO,CAAC;IACxB,cAAc,EAAE,OAAO,CAAC;IACxB,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,OAAO,CAAC;CACvB;AAOD,eAAO,MAAM,gBAAgB,EAAE,OAAO,CAAC,qBAAqB,CAkF3D,CAAC"}
1
+ {"version":3,"file":"ArticleBuddy.stories.d.ts","sourceRoot":"","sources":["../../../src/work/ArticleList/ArticleBuddy.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,OAAO,EAAE,MAAM,kBAAkB,CAAC;;AAYtD,wBAGU;AAEV,UAAU,qBAAqB;IAC7B,cAAc,EAAE,OAAO,CAAC;IACxB,cAAc,EAAE,OAAO,CAAC;IACxB,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,OAAO,CAAC;CACvB;AAOD,eAAO,MAAM,gBAAgB,EAAE,OAAO,CAAC,qBAAqB,CA0F3D,CAAC"}
@@ -12,6 +12,7 @@ export const ArticleBuddyDemo = (args) => {
12
12
  const [commentVal, setCommentVal] = useState('');
13
13
  const [loading, setLoading] = useState(false);
14
14
  const [searchResult, setSearchResult] = useState();
15
+ const [reaction, setReaction] = useState(undefined);
15
16
  const updateBuddyArticles = (mockBuddyArticle) => {
16
17
  const actionItems = [
17
18
  { id: '1', text: 'Share' },
@@ -50,11 +51,17 @@ export const ArticleBuddyDemo = (args) => {
50
51
  value: commentVal,
51
52
  onChange: (e) => setCommentVal(e.target.value)
52
53
  };
54
+ const onReaction = (feedback) => {
55
+ setReaction(feedback);
56
+ };
53
57
  const feedbackProps = {
54
58
  comment: commentParams,
59
+ reaction,
60
+ onReaction,
55
61
  onSubmit: (response) => {
56
- action('onClick')(`actions ${response.reaction} ${response.comment}`);
62
+ action('onClick')(`Response sent ${response.reaction} ${response.comment}`);
57
63
  setCommentVal('');
64
+ setReaction(undefined);
58
65
  }
59
66
  };
60
67
  return (<Card>
@@ -1 +1 @@
1
- {"version":3,"file":"ArticleBuddy.stories.jsx","sourceRoot":"","sources":["../../../src/work/ArticleList/ArticleBuddy.stories.tsx"],"names":[],"mappings":"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","sourcesContent":["import type { Meta, StoryFn } from '@storybook/react';\nimport { useState } from 'react';\nimport type { ChangeEvent } from 'react';\nimport { action } from '@storybook/addon-actions';\n\nimport { HTML, Card } from '@pega/cosmos-react-core';\nimport type { OmitStrict, TextAreaProps } from '@pega/cosmos-react-core';\nimport { ArticleBuddy } from '@pega/cosmos-react-work';\nimport type { ArticleBuddyProps, Reaction } from '@pega/cosmos-react-work';\n\nimport { ArticleBuddyMockData } from './ArticleList.mocks';\n\nexport default {\n title: 'Work/ArticleList',\n component: ArticleBuddy\n} as Meta;\n\ninterface ArticleBuddyDemoProps {\n showDisclaimer: boolean;\n showReferences: boolean;\n showActions: boolean;\n showError: boolean;\n showFeedback: boolean;\n}\n\ntype MockBuddyArticles = OmitStrict<\n ArticleBuddyProps,\n 'query' | 'loading' | 'onSubmit' | 'onClear' | 'feedback'\n>;\n\nexport const ArticleBuddyDemo: StoryFn<ArticleBuddyDemoProps> = (args: ArticleBuddyDemoProps) => {\n const [searchVal, setSearchVal] = useState('');\n const [commentVal, setCommentVal] = useState('');\n const [loading, setLoading] = useState(false);\n const [searchResult, setSearchResult] = useState<MockBuddyArticles>();\n\n const updateBuddyArticles = (mockBuddyArticle: MockBuddyArticles) => {\n const actionItems = [\n { id: '1', text: 'Share' },\n { id: '2', text: 'Copy' }\n ];\n return {\n title: mockBuddyArticle.title,\n content: mockBuddyArticle.content,\n references: mockBuddyArticle.references,\n disclaimer: mockBuddyArticle.disclaimer,\n actions: actionItems\n };\n };\n\n const fetchSearchResult: () => Promise<{\n data: MockBuddyArticles;\n }> = () => {\n return new Promise(resolve => {\n setTimeout(() => {\n resolve({\n data: updateBuddyArticles(ArticleBuddyMockData)\n });\n }, 1000);\n });\n };\n\n const getResults = async () => {\n setLoading(true);\n const res = await fetchSearchResult();\n setSearchResult(res.data);\n setLoading(false);\n };\n\n const queryParams: TextAreaProps = {\n placeholder: 'Ask your question here...',\n value: searchVal,\n onChange: (e: ChangeEvent<HTMLTextAreaElement>) => setSearchVal(e.target.value)\n };\n\n const commentParams: TextAreaProps = {\n placeholder: 'How can I improve...',\n value: commentVal,\n onChange: (e: ChangeEvent<HTMLTextAreaElement>) => setCommentVal(e.target.value)\n };\n\n const feedbackProps: ArticleBuddyProps['feedback'] = {\n comment: commentParams,\n onSubmit: (response: { reaction: Reaction; comment: string }) => {\n action('onClick')(`actions ${response.reaction} ${response.comment}`);\n setCommentVal('');\n }\n };\n\n return (\n <Card>\n <ArticleBuddy\n query={queryParams}\n onSubmit={getResults}\n onClear={() => {\n setSearchVal('');\n }}\n title={searchResult?.title}\n actions={args.showActions ? searchResult?.actions : []}\n content={\n !args.showError && searchResult?.content ? (\n <HTML content={ArticleBuddyMockData.content} />\n ) : undefined\n }\n disclaimer={args.showDisclaimer ? ArticleBuddyMockData.disclaimer : undefined}\n references={args.showReferences ? searchResult?.references : undefined}\n feedback={args.showFeedback ? feedbackProps : undefined}\n loading={loading}\n error={args.showError}\n />\n </Card>\n );\n};\n\nArticleBuddyDemo.args = {\n showDisclaimer: true,\n showActions: true,\n showReferences: true,\n showError: false,\n showFeedback: true\n};\n\nArticleBuddyDemo.argTypes = {\n showDisclaimer: { control: { type: 'boolean' } },\n showActions: { control: { type: 'boolean' } },\n showReferences: { control: { type: 'boolean' } },\n showError: { control: { type: 'boolean' } },\n showFeedback: { control: { type: 'boolean' } }\n};\n"]}
1
+ {"version":3,"file":"ArticleBuddy.stories.jsx","sourceRoot":"","sources":["../../../src/work/ArticleList/ArticleBuddy.stories.tsx"],"names":[],"mappings":"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","sourcesContent":["import type { Meta, StoryFn } from '@storybook/react';\nimport { useState } from 'react';\nimport type { ChangeEvent } from 'react';\nimport { action } from '@storybook/addon-actions';\n\nimport { HTML, Card } from '@pega/cosmos-react-core';\nimport type { OmitStrict, TextAreaProps } from '@pega/cosmos-react-core';\nimport { ArticleBuddy } from '@pega/cosmos-react-work';\nimport type { ArticleBuddyProps, Reaction } from '@pega/cosmos-react-work';\n\nimport { ArticleBuddyMockData } from './ArticleList.mocks';\n\nexport default {\n title: 'Work/ArticleList',\n component: ArticleBuddy\n} as Meta;\n\ninterface ArticleBuddyDemoProps {\n showDisclaimer: boolean;\n showReferences: boolean;\n showActions: boolean;\n showError: boolean;\n showFeedback: boolean;\n}\n\ntype MockBuddyArticles = OmitStrict<\n ArticleBuddyProps,\n 'query' | 'loading' | 'onSubmit' | 'onClear' | 'feedback'\n>;\n\nexport const ArticleBuddyDemo: StoryFn<ArticleBuddyDemoProps> = (args: ArticleBuddyDemoProps) => {\n const [searchVal, setSearchVal] = useState('');\n const [commentVal, setCommentVal] = useState('');\n const [loading, setLoading] = useState(false);\n const [searchResult, setSearchResult] = useState<MockBuddyArticles>();\n const [reaction, setReaction] = useState<Reaction>(undefined);\n\n const updateBuddyArticles = (mockBuddyArticle: MockBuddyArticles) => {\n const actionItems = [\n { id: '1', text: 'Share' },\n { id: '2', text: 'Copy' }\n ];\n return {\n title: mockBuddyArticle.title,\n content: mockBuddyArticle.content,\n references: mockBuddyArticle.references,\n disclaimer: mockBuddyArticle.disclaimer,\n actions: actionItems\n };\n };\n\n const fetchSearchResult: () => Promise<{\n data: MockBuddyArticles;\n }> = () => {\n return new Promise(resolve => {\n setTimeout(() => {\n resolve({\n data: updateBuddyArticles(ArticleBuddyMockData)\n });\n }, 1000);\n });\n };\n\n const getResults = async () => {\n setLoading(true);\n const res = await fetchSearchResult();\n setSearchResult(res.data);\n setLoading(false);\n };\n\n const queryParams: TextAreaProps = {\n placeholder: 'Ask your question here...',\n value: searchVal,\n onChange: (e: ChangeEvent<HTMLTextAreaElement>) => setSearchVal(e.target.value)\n };\n\n const commentParams: TextAreaProps = {\n placeholder: 'How can I improve...',\n value: commentVal,\n onChange: (e: ChangeEvent<HTMLTextAreaElement>) => setCommentVal(e.target.value)\n };\n\n const onReaction = (feedback: Reaction) => {\n setReaction(feedback);\n };\n\n const feedbackProps: ArticleBuddyProps['feedback'] = {\n comment: commentParams,\n reaction,\n onReaction,\n onSubmit: (response: { reaction: Reaction; comment: string }) => {\n action('onClick')(`Response sent ${response.reaction} ${response.comment}`);\n setCommentVal('');\n setReaction(undefined);\n }\n };\n\n return (\n <Card>\n <ArticleBuddy\n query={queryParams}\n onSubmit={getResults}\n onClear={() => {\n setSearchVal('');\n }}\n title={searchResult?.title}\n actions={args.showActions ? searchResult?.actions : []}\n content={\n !args.showError && searchResult?.content ? (\n <HTML content={ArticleBuddyMockData.content} />\n ) : undefined\n }\n disclaimer={args.showDisclaimer ? ArticleBuddyMockData.disclaimer : undefined}\n references={args.showReferences ? searchResult?.references : undefined}\n feedback={args.showFeedback ? feedbackProps : undefined}\n loading={loading}\n error={args.showError}\n />\n </Card>\n );\n};\n\nArticleBuddyDemo.args = {\n showDisclaimer: true,\n showActions: true,\n showReferences: true,\n showError: false,\n showFeedback: true\n};\n\nArticleBuddyDemo.argTypes = {\n showDisclaimer: { control: { type: 'boolean' } },\n showActions: { control: { type: 'boolean' } },\n showReferences: { control: { type: 'boolean' } },\n showError: { control: { type: 'boolean' } },\n showFeedback: { control: { type: 'boolean' } }\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"ArticleList.stories.d.ts","sourceRoot":"","sources":["../../../src/work/ArticleList/ArticleList.stories.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAQ,OAAO,EAAE,MAAM,kBAAkB,CAAC;;AAyBtD,wBAOU;AAIV,UAAU,oBAAoB;IAC5B,sBAAsB,EAAE,OAAO,CAAC;IAChC,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB,cAAc,EAAE,OAAO,CAAC;IACxB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,OAAO,CAAC;IACrB,YAAY,EAAE,OAAO,CAAC;CACvB;AAYD,eAAO,MAAM,eAAe,EAAE,OAAO,CAAC,oBAAoB,CAujBzD,CAAC"}
1
+ {"version":3,"file":"ArticleList.stories.d.ts","sourceRoot":"","sources":["../../../src/work/ArticleList/ArticleList.stories.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAQ,OAAO,EAAE,MAAM,kBAAkB,CAAC;;AAyBtD,wBAOU;AAIV,UAAU,oBAAoB;IAC5B,sBAAsB,EAAE,OAAO,CAAC;IAChC,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB,cAAc,EAAE,OAAO,CAAC;IACxB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,OAAO,CAAC;IACrB,YAAY,EAAE,OAAO,CAAC;CACvB;AAYD,eAAO,MAAM,eAAe,EAAE,OAAO,CAAC,oBAAoB,CA8jBzD,CAAC"}
@@ -29,6 +29,7 @@ export const ArticleListDemo = (args) => {
29
29
  const [buddyContent, setBuddyContent] = useState();
30
30
  const [buddyLoader, setBuddyLoader] = useState(false);
31
31
  const [commentVal, setCommentVal] = useState('');
32
+ const [buddyReaction, setBuddyReaction] = useState(undefined);
32
33
  const selectedSortByOption = useMemo(() => menuHelpers.getSelected(sortBy)[0], [sortBy]);
33
34
  const selectSortByOption = useCallback((id) => {
34
35
  setSortBy(cur => menuHelpers.selectItem(cur, id, 'single-select'));
@@ -375,8 +376,14 @@ export const ArticleListDemo = (args) => {
375
376
  value: commentVal,
376
377
  onChange: (e) => setCommentVal(e.target.value)
377
378
  },
379
+ reaction: buddyReaction,
380
+ onReaction: (reaction) => {
381
+ setBuddyReaction(reaction);
382
+ },
378
383
  onSubmit: (response) => {
379
384
  action('onClick')(`action ${response.reaction} ${response.comment}`);
385
+ setCommentVal('');
386
+ setBuddyReaction(undefined);
380
387
  }
381
388
  };
382
389
  return (<div style={{
@@ -1 +1 @@
1
- {"version":3,"file":"ArticleList.stories.jsx","sourceRoot":"","sources":["../../../src/work/ArticleList/ArticleList.stories.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useCallback, useEffect, useMemo, useState } from 'react';\nimport type { ChangeEvent } from 'react';\nimport type { Meta, StoryFn } from '@storybook/react';\nimport { action } from '@storybook/addon-actions';\n\nimport { createUID, menuHelpers, registerIcon, escapeRegExp, HTML } from '@pega/cosmos-react-core';\nimport type {\n Action,\n MenuItemProps,\n MenuProps,\n SearchInputProps,\n OmitStrict\n} from '@pega/cosmos-react-core';\nimport * as thumbsUpSolidIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/thumbs-up-solid.icon';\nimport * as thumbsDownSolidIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/thumbs-down-solid.icon';\nimport * as bookOpen from '@pega/cosmos-react-core/lib/components/Icon/icons/book-open.icon';\nimport { ArticleList, ArticleSummary, ArticleListFilter } from '@pega/cosmos-react-work';\nimport type {\n ArticleSummaryProps,\n Articles,\n QuickFilter,\n ArticleBuddyProps,\n Reaction\n} from '@pega/cosmos-react-work';\n\nimport { suggestedMock, followedMock, searchMock, ArticleBuddyMockData } from './ArticleList.mocks';\n\nexport default {\n title: 'Work/ArticleList',\n component: ArticleList,\n subcomponents: { ArticleSummary, ArticleListFilter },\n parameters: {\n layout: 'fullscreen'\n }\n} as Meta;\n\nregisterIcon(thumbsUpSolidIcon, thumbsDownSolidIcon, bookOpen);\n\ninterface ArticleListDemoProps {\n isSuggestArticleAction: boolean;\n showAction: boolean;\n showHeader: boolean;\n showHeaderIcon: boolean;\n showQuickFilters: boolean;\n showCount: boolean;\n showResults: boolean;\n showLoadMore: boolean;\n}\n\ntype MockArticles = ArticleSummaryProps & {\n isLiked: boolean;\n isFollowed: boolean;\n};\n\ntype MockBuddyArticles = OmitStrict<\n ArticleBuddyProps,\n 'query' | 'loading' | 'onSubmit' | 'onClear' | 'feedback'\n>;\n\nexport const ArticleListDemo: StoryFn<ArticleListDemoProps> = (args: ArticleListDemoProps) => {\n const [searchVal, setSearchVal] = useState('');\n const [activeTab, setActiveTab] = useState('Suggested');\n const [loading, setLoading] = useState(false);\n const [categoryList, setCategoryList] = useState<MenuProps['items']>([]);\n const [sortBy, setSortBy] = useState<MenuProps['items']>([]);\n const [articles, setArticles] = useState<ArticleSummaryProps[]>([]);\n const [quickFilters, setQuickFilters] = useState<QuickFilter[]>([]);\n const [loadingMore, isSetLoadMore] = useState(false);\n const [hasMore, setHasMore] = useState(true);\n const [filterCategoryValue, setFilterCategoryValue] = useState('');\n const [buddyContent, setBuddyContent] = useState<MockBuddyArticles>();\n const [buddyLoader, setBuddyLoader] = useState(false);\n const [commentVal, setCommentVal] = useState('');\n\n const selectedSortByOption = useMemo(() => menuHelpers.getSelected(sortBy)[0], [sortBy]);\n\n const selectSortByOption = useCallback((id: MenuItemProps['id']) => {\n setSortBy(cur => menuHelpers.selectItem(cur, id, 'single-select'));\n }, []);\n\n const selectedCategory = useMemo(() => {\n return menuHelpers.getSelected(categoryList).map(item => ({ text: item.primary, id: item.id }));\n }, [categoryList]);\n\n const categoryListToRender = useMemo(() => {\n return menuHelpers.mapTree(categoryList, item => ({\n ...item,\n selected: !!item.selected\n }));\n }, [categoryList]);\n\n const toggleItem = (id: MenuItemProps['id']) => {\n setCategoryList(cur => menuHelpers.toggleSelected(cur, id, 'multi-select'));\n };\n\n const onReaction: Required<ArticleSummaryProps>['feedback']['onReaction'] = (\n articleId,\n reaction\n ) => {\n setArticles(prevArticles => {\n const itemIndex = prevArticles.findIndex(article => article?.articleId === articleId);\n const updatedData = [...prevArticles];\n if (itemIndex !== -1) {\n const currentItemFeedback = updatedData[itemIndex].feedback;\n if (currentItemFeedback) {\n const likeValue = currentItemFeedback?.likes || 0;\n const dislikeValue = currentItemFeedback?.dislikes || 0;\n\n if (!reaction) {\n if (currentItemFeedback.reaction === 'liked') {\n currentItemFeedback.likes = likeValue - 1;\n } else {\n currentItemFeedback.dislikes = dislikeValue - 1;\n }\n currentItemFeedback.reaction = undefined;\n }\n\n if (reaction === 'liked') {\n if (currentItemFeedback?.reaction === 'disliked') {\n currentItemFeedback.dislikes = dislikeValue - 1;\n }\n\n currentItemFeedback.likes = likeValue + 1;\n currentItemFeedback.reaction = 'liked';\n }\n\n if (reaction === 'disliked') {\n if (currentItemFeedback.reaction === 'liked') {\n currentItemFeedback.likes = likeValue - 1;\n }\n currentItemFeedback.dislikes = dislikeValue + 1;\n currentItemFeedback.reaction = 'disliked';\n }\n }\n }\n\n return updatedData;\n });\n };\n\n const updateArticles = (mockArticles: MockArticles[]) => {\n const data = Object.values(mockArticles);\n return data.map(\n ({\n isLiked = false,\n isFollowed = false,\n articleId = '',\n title,\n href,\n abstract,\n meta,\n feedback,\n quickFilters: quickFilterTags\n }) => {\n const actionObj = [{ id: '1', text: 'Edit' }];\n if (isLiked) {\n actionObj.push({ id: '3', text: 'Dislike' });\n } else {\n actionObj.push({ id: '3', text: 'Like' });\n }\n if (isFollowed) {\n actionObj.push({ id: '4', text: 'Unfollow' });\n } else {\n actionObj.push({ id: '4', text: 'Follow' });\n }\n\n return {\n articleId,\n href,\n title,\n abstract,\n onTitleClick: action('onTitleClick'),\n primaryActions: actionObj,\n meta,\n feedback,\n quickFilters:\n args.showQuickFilters && quickFilterTags?.length\n ? quickFilterTags?.map(({ id, name }) => {\n return {\n id,\n name\n };\n })\n : []\n };\n }\n );\n };\n\n const fetchArticleContent: (activeTabName: string) => Promise<{\n articles: ArticleSummaryProps[];\n category: MenuProps['items'];\n sortBy: MenuProps['items'];\n }> = activeTabName => {\n return new Promise(resolve => {\n let activeTabContent: any = null;\n\n if (!activeTabName || activeTabName === 'Search') activeTabContent = { ...searchMock };\n else if (activeTabName === 'Suggested') activeTabContent = { ...suggestedMock };\n else if (activeTabName === 'Followed') activeTabContent = { ...followedMock };\n\n setTimeout(() => {\n if (activeTabContent) {\n resolve({\n articles: updateArticles(activeTabContent.articles),\n category: activeTabContent.category || [],\n sortBy: activeTabContent.sortBy || []\n });\n }\n }, 500);\n });\n };\n\n searchMock.articles = searchMock.articles.map(article => {\n return {\n ...article,\n feedback: {\n ...article.feedback,\n id: article.articleId,\n onReaction\n }\n };\n });\n\n suggestedMock.articles = suggestedMock.articles.map(article => {\n return {\n ...article,\n feedback: {\n ...article.feedback,\n id: article.articleId,\n onReaction\n }\n };\n });\n\n followedMock.articles = followedMock.articles.map(article => {\n return {\n ...article,\n feedback: {\n ...article.feedback,\n id: article.articleId,\n onReaction\n }\n };\n });\n\n const handleTabChange = (id: string) => {\n setArticles([]);\n setCategoryList([]);\n setLoading(true);\n fetchArticleContent(id).then(res => {\n setArticles(res.articles);\n setCategoryList(res.category);\n setSortBy(res.sortBy);\n setLoading(false);\n });\n\n setActiveTab(id);\n setSearchVal('');\n if (id !== 'Search') {\n setQuickFilters([]);\n }\n };\n\n useEffect(() => {\n setLoading(true);\n fetchArticleContent(activeTab).then(res => {\n setLoading(false);\n setArticles(res.articles);\n });\n }, [activeTab]);\n\n const filterRegex = useMemo(() => escapeRegExp(filterCategoryValue), [filterCategoryValue]);\n\n const categoryProps: Articles['category'] = {\n label: 'Category',\n placeholder: 'Select categories',\n onChange: e => {\n setFilterCategoryValue(e.target.value);\n },\n value: filterCategoryValue,\n mode: 'multi-select',\n selected: {\n items: selectedCategory\n },\n menu: {\n items: filterCategoryValue\n ? menuHelpers.flatten(categoryList).filter(({ primary }: MenuItemProps) => {\n return filterRegex.toLowerCase().includes(primary.toLowerCase());\n })\n : categoryListToRender,\n onItemClick: toggleItem\n }\n };\n\n const sortByProps: Articles['sortBy'] = {\n label: 'Sort by',\n placeholder: 'Select sort by',\n selected: selectedSortByOption\n ? {\n items: {\n id: selectedSortByOption.id,\n text: selectedSortByOption.primary\n }\n }\n : undefined,\n menu: {\n items: sortBy,\n onItemClick: selectSortByOption\n }\n };\n\n const searchOptions: SearchInputProps = {\n placeholder: 'Search article',\n filters: ['Help site 1', 'Help site 2', 'Help site 3'],\n value: searchVal,\n onSearchChange: (val: string) => {\n setSearchVal(val);\n },\n onFilterChange: (val: string) => {\n return val;\n }\n };\n\n const actionOptions = [\n {\n id: '1',\n text: 'Action 1',\n onClick: (id: string) => action('onClick')(`action ${id}`)\n },\n {\n id: '2',\n text: 'Action 2',\n onClick: (id: string) => action('onClick')(`action ${id}`)\n },\n {\n id: '3',\n text: 'Action 3',\n onClick: (id: string) => action('onClick')(`action ${id}`)\n }\n ];\n\n const suggestNewArticleAction: Action = {\n id: 'Suggest action',\n text: 'Suggest action',\n onClick: (id: string) => action('onClick')(id),\n icon: 'plus'\n };\n\n let actions;\n if (args.showAction) {\n if (args.isSuggestArticleAction) {\n actions = [suggestNewArticleAction];\n } else {\n actions = actionOptions;\n }\n }\n\n const handleClearClick = () => {\n setQuickFilters([]);\n setSearchVal('');\n setCategoryList(curr => {\n return curr?.map(categoryListItem => {\n return {\n ...categoryListItem,\n selected: false\n };\n });\n });\n setSortBy(curr => {\n return curr?.map(sortByListItem => {\n return {\n ...sortByListItem,\n selected: false\n };\n });\n });\n };\n\n let timeoutId: ReturnType<typeof setTimeout>;\n const stopTimeout = () => {\n clearTimeout(timeoutId);\n };\n\n const onLoadMore = useCallback(() => {\n if (!loading && !loadingMore && activeTab) {\n isSetLoadMore(true);\n setLoading(false);\n timeoutId = setTimeout(() => {\n isSetLoadMore(false);\n setLoading(false);\n setHasMore(true);\n setArticles(prevArticles => [\n ...prevArticles,\n {\n articleId: createUID(),\n title: 'Last article alert!!!',\n href: 'design.pega.com',\n abstract:\n 'Last article alert. This is the last article , hence the last index to be noted. This will be appended at the end of the list',\n meta: {\n category: 'Retail',\n publishedDate: '2023-04-06'\n },\n feedback: {\n articleId: createUID(),\n likes: 20,\n dislikes: 80,\n liked: true,\n disliked: false,\n onReaction: () => {}\n },\n isFollowed: false,\n isLiked: true,\n quickFilters: [\n { id: '1', name: 'insurance' },\n { id: '2', name: 'policy' }\n ]\n }\n ]);\n }, 3000);\n }\n }, [loading, loadingMore, activeTab]);\n\n useEffect(() => {\n return () => stopTimeout();\n }, []);\n\n const updateBuddyArticles = (mockBuddyArticle: MockBuddyArticles) => {\n const actionItems = [\n { id: '1', text: 'Share' },\n { id: '2', text: 'Copy' }\n ];\n\n return {\n title: mockBuddyArticle.title,\n content: mockBuddyArticle.content,\n references: mockBuddyArticle.references,\n disclaimer: mockBuddyArticle.disclaimer,\n actions: actionItems\n };\n };\n\n const fetchBuddySearchResult: () => Promise<{\n data: MockBuddyArticles;\n }> = () => {\n return new Promise(resolve => {\n setTimeout(() => {\n resolve({\n data: updateBuddyArticles(ArticleBuddyMockData)\n });\n }, 1000);\n });\n };\n\n const getBuddyResults = async () => {\n setBuddyLoader(true);\n const res = await fetchBuddySearchResult();\n setBuddyContent(res.data);\n setBuddyLoader(false);\n };\n\n const buddyQuery: ArticleBuddyProps['query'] = {\n placeholder: 'Ask your question here...',\n value: searchVal,\n onChange: (e: ChangeEvent<HTMLTextAreaElement>) => setSearchVal(e.target.value)\n };\n const buddyFeedback: ArticleBuddyProps['feedback'] = {\n comment: {\n placeholder: 'How can I improve...',\n value: commentVal,\n onChange: (e: ChangeEvent<HTMLTextAreaElement>) => setCommentVal(e.target.value)\n },\n onSubmit: (response: { reaction: Reaction; comment: string }) => {\n action('onClick')(`action ${response.reaction} ${response.comment}`);\n }\n };\n\n return (\n <div\n style={{\n width: '25rem'\n }}\n >\n <ArticleList\n header={\n args.showHeader\n ? {\n title: 'Knowledge articles',\n icon: args.showHeaderIcon ? 'book-open' : '',\n actions\n }\n : undefined\n }\n activeTab={activeTab}\n onTabClick={handleTabChange}\n skeletonize={false}\n suggested={{\n count: args.showCount ? suggestedMock.count : undefined,\n articles: articles.map(article => {\n if (\n !article.feedback ||\n article.feedback.likes === undefined ||\n article.feedback.dislikes === undefined\n ) {\n return article;\n }\n\n const likesValue =\n (article.feedback?.likes ?? 0 * 100) / article.feedback.likes +\n article.feedback.dislikes;\n const disLikeValue =\n (article.feedback.dislikes ?? 0 * 100) / article.feedback.likes +\n article.feedback.dislikes;\n return {\n ...article,\n feedback: {\n ...article.feedback,\n likes: likesValue,\n\n dislikes: disLikeValue\n }\n };\n })\n }}\n followed={{\n count: args.showCount ? followedMock.count : undefined,\n articles: articles.map(article => {\n if (\n !article.feedback ||\n article.feedback.likes === undefined ||\n article.feedback.dislikes === undefined\n ) {\n return article;\n }\n\n const likesValue =\n (article.feedback?.likes ?? 0 * 100) / article.feedback.likes +\n article.feedback.dislikes;\n const disLikeValue =\n (article.feedback.dislikes ?? 0 * 100) / article.feedback.likes +\n article.feedback.dislikes;\n return {\n ...article,\n feedback: {\n ...article.feedback,\n likes: likesValue,\n\n dislikes: disLikeValue\n }\n };\n }),\n searchInput: searchOptions,\n category: categoryProps,\n sortBy: sortByProps,\n onClearClick: handleClearClick,\n showResults: args.showResults\n }}\n search={{\n count: args.showCount ? searchMock.count : undefined,\n articles: articles.map(article => {\n if (\n !article.feedback ||\n article.feedback.likes === undefined ||\n article.feedback.dislikes === undefined\n ) {\n return article;\n }\n\n const likesValue =\n (article.feedback?.likes ?? 0 * 100) / article.feedback.likes +\n article.feedback.dislikes;\n const disLikeValue =\n (article.feedback.dislikes ?? 0 * 100) / article.feedback.likes +\n article.feedback.dislikes;\n return {\n ...article,\n feedback: {\n ...article.feedback,\n likes: likesValue,\n\n dislikes: disLikeValue\n }\n };\n }),\n searchInput: searchOptions,\n category: categoryProps,\n sortBy: sortByProps,\n onClearClick: handleClearClick,\n quickFilters,\n handleQuickFilterRemove: (id: string) => {\n setQuickFilters(quickFilters.filter(item => item.id !== id));\n },\n showResults: args.showResults\n }}\n buddy={{\n title: 'Ask buddy',\n content: {\n query: buddyQuery,\n onSubmit: getBuddyResults,\n onClear: () => {\n setSearchVal('');\n },\n title: buddyContent?.title ?? '',\n actions: buddyContent?.actions ?? [],\n content: buddyContent?.content ? (\n <HTML content={ArticleBuddyMockData.content} />\n ) : (\n buddyContent?.content\n ),\n references: buddyContent?.references,\n feedback: buddyFeedback,\n disclaimer: ArticleBuddyMockData.disclaimer,\n loading: buddyLoader\n }\n }}\n onQuickFilterClick={(quickFilterParam: QuickFilter) => {\n handleTabChange('Search');\n setQuickFilters([...quickFilters, quickFilterParam]);\n }}\n loading={loading}\n loadingMore={loadingMore}\n onLoadMore={args.showLoadMore && hasMore ? onLoadMore : undefined}\n />\n </div>\n );\n};\n\nArticleListDemo.args = {\n isSuggestArticleAction: true,\n showAction: true,\n showHeader: true,\n showHeaderIcon: true,\n showQuickFilters: true,\n showCount: true,\n showResults: true,\n showLoadMore: false\n};\n\nArticleListDemo.argTypes = {\n isSuggestArticleAction: { control: { type: 'boolean' } },\n showAction: { control: { type: 'boolean' } },\n showHeader: { control: { type: 'boolean' } },\n showHeaderIcon: { control: { type: 'boolean' } },\n showQuickFilters: { control: { type: 'boolean' } },\n showCount: { control: { type: 'boolean' } },\n showResults: { control: { type: 'boolean' } },\n showLoadMore: { control: { type: 'boolean' } }\n};\n"]}
1
+ {"version":3,"file":"ArticleList.stories.jsx","sourceRoot":"","sources":["../../../src/work/ArticleList/ArticleList.stories.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useCallback, useEffect, useMemo, useState } from 'react';\nimport type { ChangeEvent } from 'react';\nimport type { Meta, StoryFn } from '@storybook/react';\nimport { action } from '@storybook/addon-actions';\n\nimport { createUID, menuHelpers, registerIcon, escapeRegExp, HTML } from '@pega/cosmos-react-core';\nimport type {\n Action,\n MenuItemProps,\n MenuProps,\n SearchInputProps,\n OmitStrict\n} from '@pega/cosmos-react-core';\nimport * as thumbsUpSolidIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/thumbs-up-solid.icon';\nimport * as thumbsDownSolidIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/thumbs-down-solid.icon';\nimport * as bookOpen from '@pega/cosmos-react-core/lib/components/Icon/icons/book-open.icon';\nimport { ArticleList, ArticleSummary, ArticleListFilter } from '@pega/cosmos-react-work';\nimport type {\n ArticleSummaryProps,\n Articles,\n QuickFilter,\n ArticleBuddyProps,\n Reaction\n} from '@pega/cosmos-react-work';\n\nimport { suggestedMock, followedMock, searchMock, ArticleBuddyMockData } from './ArticleList.mocks';\n\nexport default {\n title: 'Work/ArticleList',\n component: ArticleList,\n subcomponents: { ArticleSummary, ArticleListFilter },\n parameters: {\n layout: 'fullscreen'\n }\n} as Meta;\n\nregisterIcon(thumbsUpSolidIcon, thumbsDownSolidIcon, bookOpen);\n\ninterface ArticleListDemoProps {\n isSuggestArticleAction: boolean;\n showAction: boolean;\n showHeader: boolean;\n showHeaderIcon: boolean;\n showQuickFilters: boolean;\n showCount: boolean;\n showResults: boolean;\n showLoadMore: boolean;\n}\n\ntype MockArticles = ArticleSummaryProps & {\n isLiked: boolean;\n isFollowed: boolean;\n};\n\ntype MockBuddyArticles = OmitStrict<\n ArticleBuddyProps,\n 'query' | 'loading' | 'onSubmit' | 'onClear' | 'feedback'\n>;\n\nexport const ArticleListDemo: StoryFn<ArticleListDemoProps> = (args: ArticleListDemoProps) => {\n const [searchVal, setSearchVal] = useState('');\n const [activeTab, setActiveTab] = useState('Suggested');\n const [loading, setLoading] = useState(false);\n const [categoryList, setCategoryList] = useState<MenuProps['items']>([]);\n const [sortBy, setSortBy] = useState<MenuProps['items']>([]);\n const [articles, setArticles] = useState<ArticleSummaryProps[]>([]);\n const [quickFilters, setQuickFilters] = useState<QuickFilter[]>([]);\n const [loadingMore, isSetLoadMore] = useState(false);\n const [hasMore, setHasMore] = useState(true);\n const [filterCategoryValue, setFilterCategoryValue] = useState('');\n const [buddyContent, setBuddyContent] = useState<MockBuddyArticles>();\n const [buddyLoader, setBuddyLoader] = useState(false);\n const [commentVal, setCommentVal] = useState('');\n const [buddyReaction, setBuddyReaction] = useState<Reaction>(undefined);\n\n const selectedSortByOption = useMemo(() => menuHelpers.getSelected(sortBy)[0], [sortBy]);\n\n const selectSortByOption = useCallback((id: MenuItemProps['id']) => {\n setSortBy(cur => menuHelpers.selectItem(cur, id, 'single-select'));\n }, []);\n\n const selectedCategory = useMemo(() => {\n return menuHelpers.getSelected(categoryList).map(item => ({ text: item.primary, id: item.id }));\n }, [categoryList]);\n\n const categoryListToRender = useMemo(() => {\n return menuHelpers.mapTree(categoryList, item => ({\n ...item,\n selected: !!item.selected\n }));\n }, [categoryList]);\n\n const toggleItem = (id: MenuItemProps['id']) => {\n setCategoryList(cur => menuHelpers.toggleSelected(cur, id, 'multi-select'));\n };\n\n const onReaction: Required<ArticleSummaryProps>['feedback']['onReaction'] = (\n articleId,\n reaction\n ) => {\n setArticles(prevArticles => {\n const itemIndex = prevArticles.findIndex(article => article?.articleId === articleId);\n const updatedData = [...prevArticles];\n if (itemIndex !== -1) {\n const currentItemFeedback = updatedData[itemIndex].feedback;\n if (currentItemFeedback) {\n const likeValue = currentItemFeedback?.likes || 0;\n const dislikeValue = currentItemFeedback?.dislikes || 0;\n\n if (!reaction) {\n if (currentItemFeedback.reaction === 'liked') {\n currentItemFeedback.likes = likeValue - 1;\n } else {\n currentItemFeedback.dislikes = dislikeValue - 1;\n }\n currentItemFeedback.reaction = undefined;\n }\n\n if (reaction === 'liked') {\n if (currentItemFeedback?.reaction === 'disliked') {\n currentItemFeedback.dislikes = dislikeValue - 1;\n }\n\n currentItemFeedback.likes = likeValue + 1;\n currentItemFeedback.reaction = 'liked';\n }\n\n if (reaction === 'disliked') {\n if (currentItemFeedback.reaction === 'liked') {\n currentItemFeedback.likes = likeValue - 1;\n }\n currentItemFeedback.dislikes = dislikeValue + 1;\n currentItemFeedback.reaction = 'disliked';\n }\n }\n }\n\n return updatedData;\n });\n };\n\n const updateArticles = (mockArticles: MockArticles[]) => {\n const data = Object.values(mockArticles);\n return data.map(\n ({\n isLiked = false,\n isFollowed = false,\n articleId = '',\n title,\n href,\n abstract,\n meta,\n feedback,\n quickFilters: quickFilterTags\n }) => {\n const actionObj = [{ id: '1', text: 'Edit' }];\n if (isLiked) {\n actionObj.push({ id: '3', text: 'Dislike' });\n } else {\n actionObj.push({ id: '3', text: 'Like' });\n }\n if (isFollowed) {\n actionObj.push({ id: '4', text: 'Unfollow' });\n } else {\n actionObj.push({ id: '4', text: 'Follow' });\n }\n\n return {\n articleId,\n href,\n title,\n abstract,\n onTitleClick: action('onTitleClick'),\n primaryActions: actionObj,\n meta,\n feedback,\n quickFilters:\n args.showQuickFilters && quickFilterTags?.length\n ? quickFilterTags?.map(({ id, name }) => {\n return {\n id,\n name\n };\n })\n : []\n };\n }\n );\n };\n\n const fetchArticleContent: (activeTabName: string) => Promise<{\n articles: ArticleSummaryProps[];\n category: MenuProps['items'];\n sortBy: MenuProps['items'];\n }> = activeTabName => {\n return new Promise(resolve => {\n let activeTabContent: any = null;\n\n if (!activeTabName || activeTabName === 'Search') activeTabContent = { ...searchMock };\n else if (activeTabName === 'Suggested') activeTabContent = { ...suggestedMock };\n else if (activeTabName === 'Followed') activeTabContent = { ...followedMock };\n\n setTimeout(() => {\n if (activeTabContent) {\n resolve({\n articles: updateArticles(activeTabContent.articles),\n category: activeTabContent.category || [],\n sortBy: activeTabContent.sortBy || []\n });\n }\n }, 500);\n });\n };\n\n searchMock.articles = searchMock.articles.map(article => {\n return {\n ...article,\n feedback: {\n ...article.feedback,\n id: article.articleId,\n onReaction\n }\n };\n });\n\n suggestedMock.articles = suggestedMock.articles.map(article => {\n return {\n ...article,\n feedback: {\n ...article.feedback,\n id: article.articleId,\n onReaction\n }\n };\n });\n\n followedMock.articles = followedMock.articles.map(article => {\n return {\n ...article,\n feedback: {\n ...article.feedback,\n id: article.articleId,\n onReaction\n }\n };\n });\n\n const handleTabChange = (id: string) => {\n setArticles([]);\n setCategoryList([]);\n setLoading(true);\n fetchArticleContent(id).then(res => {\n setArticles(res.articles);\n setCategoryList(res.category);\n setSortBy(res.sortBy);\n setLoading(false);\n });\n\n setActiveTab(id);\n setSearchVal('');\n if (id !== 'Search') {\n setQuickFilters([]);\n }\n };\n\n useEffect(() => {\n setLoading(true);\n fetchArticleContent(activeTab).then(res => {\n setLoading(false);\n setArticles(res.articles);\n });\n }, [activeTab]);\n\n const filterRegex = useMemo(() => escapeRegExp(filterCategoryValue), [filterCategoryValue]);\n\n const categoryProps: Articles['category'] = {\n label: 'Category',\n placeholder: 'Select categories',\n onChange: e => {\n setFilterCategoryValue(e.target.value);\n },\n value: filterCategoryValue,\n mode: 'multi-select',\n selected: {\n items: selectedCategory\n },\n menu: {\n items: filterCategoryValue\n ? menuHelpers.flatten(categoryList).filter(({ primary }: MenuItemProps) => {\n return filterRegex.toLowerCase().includes(primary.toLowerCase());\n })\n : categoryListToRender,\n onItemClick: toggleItem\n }\n };\n\n const sortByProps: Articles['sortBy'] = {\n label: 'Sort by',\n placeholder: 'Select sort by',\n selected: selectedSortByOption\n ? {\n items: {\n id: selectedSortByOption.id,\n text: selectedSortByOption.primary\n }\n }\n : undefined,\n menu: {\n items: sortBy,\n onItemClick: selectSortByOption\n }\n };\n\n const searchOptions: SearchInputProps = {\n placeholder: 'Search article',\n filters: ['Help site 1', 'Help site 2', 'Help site 3'],\n value: searchVal,\n onSearchChange: (val: string) => {\n setSearchVal(val);\n },\n onFilterChange: (val: string) => {\n return val;\n }\n };\n\n const actionOptions = [\n {\n id: '1',\n text: 'Action 1',\n onClick: (id: string) => action('onClick')(`action ${id}`)\n },\n {\n id: '2',\n text: 'Action 2',\n onClick: (id: string) => action('onClick')(`action ${id}`)\n },\n {\n id: '3',\n text: 'Action 3',\n onClick: (id: string) => action('onClick')(`action ${id}`)\n }\n ];\n\n const suggestNewArticleAction: Action = {\n id: 'Suggest action',\n text: 'Suggest action',\n onClick: (id: string) => action('onClick')(id),\n icon: 'plus'\n };\n\n let actions;\n if (args.showAction) {\n if (args.isSuggestArticleAction) {\n actions = [suggestNewArticleAction];\n } else {\n actions = actionOptions;\n }\n }\n\n const handleClearClick = () => {\n setQuickFilters([]);\n setSearchVal('');\n setCategoryList(curr => {\n return curr?.map(categoryListItem => {\n return {\n ...categoryListItem,\n selected: false\n };\n });\n });\n setSortBy(curr => {\n return curr?.map(sortByListItem => {\n return {\n ...sortByListItem,\n selected: false\n };\n });\n });\n };\n\n let timeoutId: ReturnType<typeof setTimeout>;\n const stopTimeout = () => {\n clearTimeout(timeoutId);\n };\n\n const onLoadMore = useCallback(() => {\n if (!loading && !loadingMore && activeTab) {\n isSetLoadMore(true);\n setLoading(false);\n timeoutId = setTimeout(() => {\n isSetLoadMore(false);\n setLoading(false);\n setHasMore(true);\n setArticles(prevArticles => [\n ...prevArticles,\n {\n articleId: createUID(),\n title: 'Last article alert!!!',\n href: 'design.pega.com',\n abstract:\n 'Last article alert. This is the last article , hence the last index to be noted. This will be appended at the end of the list',\n meta: {\n category: 'Retail',\n publishedDate: '2023-04-06'\n },\n feedback: {\n articleId: createUID(),\n likes: 20,\n dislikes: 80,\n liked: true,\n disliked: false,\n onReaction: () => {}\n },\n isFollowed: false,\n isLiked: true,\n quickFilters: [\n { id: '1', name: 'insurance' },\n { id: '2', name: 'policy' }\n ]\n }\n ]);\n }, 3000);\n }\n }, [loading, loadingMore, activeTab]);\n\n useEffect(() => {\n return () => stopTimeout();\n }, []);\n\n const updateBuddyArticles = (mockBuddyArticle: MockBuddyArticles) => {\n const actionItems = [\n { id: '1', text: 'Share' },\n { id: '2', text: 'Copy' }\n ];\n\n return {\n title: mockBuddyArticle.title,\n content: mockBuddyArticle.content,\n references: mockBuddyArticle.references,\n disclaimer: mockBuddyArticle.disclaimer,\n actions: actionItems\n };\n };\n\n const fetchBuddySearchResult: () => Promise<{\n data: MockBuddyArticles;\n }> = () => {\n return new Promise(resolve => {\n setTimeout(() => {\n resolve({\n data: updateBuddyArticles(ArticleBuddyMockData)\n });\n }, 1000);\n });\n };\n\n const getBuddyResults = async () => {\n setBuddyLoader(true);\n const res = await fetchBuddySearchResult();\n setBuddyContent(res.data);\n setBuddyLoader(false);\n };\n\n const buddyQuery: ArticleBuddyProps['query'] = {\n placeholder: 'Ask your question here...',\n value: searchVal,\n onChange: (e: ChangeEvent<HTMLTextAreaElement>) => setSearchVal(e.target.value)\n };\n const buddyFeedback: ArticleBuddyProps['feedback'] = {\n comment: {\n placeholder: 'How can I improve...',\n value: commentVal,\n onChange: (e: ChangeEvent<HTMLTextAreaElement>) => setCommentVal(e.target.value)\n },\n reaction: buddyReaction,\n onReaction: (reaction: Reaction) => {\n setBuddyReaction(reaction);\n },\n onSubmit: (response: { reaction: Reaction; comment: string }) => {\n action('onClick')(`action ${response.reaction} ${response.comment}`);\n setCommentVal('');\n setBuddyReaction(undefined);\n }\n };\n\n return (\n <div\n style={{\n width: '25rem'\n }}\n >\n <ArticleList\n header={\n args.showHeader\n ? {\n title: 'Knowledge articles',\n icon: args.showHeaderIcon ? 'book-open' : '',\n actions\n }\n : undefined\n }\n activeTab={activeTab}\n onTabClick={handleTabChange}\n skeletonize={false}\n suggested={{\n count: args.showCount ? suggestedMock.count : undefined,\n articles: articles.map(article => {\n if (\n !article.feedback ||\n article.feedback.likes === undefined ||\n article.feedback.dislikes === undefined\n ) {\n return article;\n }\n\n const likesValue =\n (article.feedback?.likes ?? 0 * 100) / article.feedback.likes +\n article.feedback.dislikes;\n const disLikeValue =\n (article.feedback.dislikes ?? 0 * 100) / article.feedback.likes +\n article.feedback.dislikes;\n return {\n ...article,\n feedback: {\n ...article.feedback,\n likes: likesValue,\n\n dislikes: disLikeValue\n }\n };\n })\n }}\n followed={{\n count: args.showCount ? followedMock.count : undefined,\n articles: articles.map(article => {\n if (\n !article.feedback ||\n article.feedback.likes === undefined ||\n article.feedback.dislikes === undefined\n ) {\n return article;\n }\n\n const likesValue =\n (article.feedback?.likes ?? 0 * 100) / article.feedback.likes +\n article.feedback.dislikes;\n const disLikeValue =\n (article.feedback.dislikes ?? 0 * 100) / article.feedback.likes +\n article.feedback.dislikes;\n return {\n ...article,\n feedback: {\n ...article.feedback,\n likes: likesValue,\n\n dislikes: disLikeValue\n }\n };\n }),\n searchInput: searchOptions,\n category: categoryProps,\n sortBy: sortByProps,\n onClearClick: handleClearClick,\n showResults: args.showResults\n }}\n search={{\n count: args.showCount ? searchMock.count : undefined,\n articles: articles.map(article => {\n if (\n !article.feedback ||\n article.feedback.likes === undefined ||\n article.feedback.dislikes === undefined\n ) {\n return article;\n }\n\n const likesValue =\n (article.feedback?.likes ?? 0 * 100) / article.feedback.likes +\n article.feedback.dislikes;\n const disLikeValue =\n (article.feedback.dislikes ?? 0 * 100) / article.feedback.likes +\n article.feedback.dislikes;\n return {\n ...article,\n feedback: {\n ...article.feedback,\n likes: likesValue,\n\n dislikes: disLikeValue\n }\n };\n }),\n searchInput: searchOptions,\n category: categoryProps,\n sortBy: sortByProps,\n onClearClick: handleClearClick,\n quickFilters,\n handleQuickFilterRemove: (id: string) => {\n setQuickFilters(quickFilters.filter(item => item.id !== id));\n },\n showResults: args.showResults\n }}\n buddy={{\n title: 'Ask buddy',\n content: {\n query: buddyQuery,\n onSubmit: getBuddyResults,\n onClear: () => {\n setSearchVal('');\n },\n title: buddyContent?.title ?? '',\n actions: buddyContent?.actions ?? [],\n content: buddyContent?.content ? (\n <HTML content={ArticleBuddyMockData.content} />\n ) : (\n buddyContent?.content\n ),\n references: buddyContent?.references,\n feedback: buddyFeedback,\n disclaimer: ArticleBuddyMockData.disclaimer,\n loading: buddyLoader\n }\n }}\n onQuickFilterClick={(quickFilterParam: QuickFilter) => {\n handleTabChange('Search');\n setQuickFilters([...quickFilters, quickFilterParam]);\n }}\n loading={loading}\n loadingMore={loadingMore}\n onLoadMore={args.showLoadMore && hasMore ? onLoadMore : undefined}\n />\n </div>\n );\n};\n\nArticleListDemo.args = {\n isSuggestArticleAction: true,\n showAction: true,\n showHeader: true,\n showHeaderIcon: true,\n showQuickFilters: true,\n showCount: true,\n showResults: true,\n showLoadMore: false\n};\n\nArticleListDemo.argTypes = {\n isSuggestArticleAction: { control: { type: 'boolean' } },\n showAction: { control: { type: 'boolean' } },\n showHeader: { control: { type: 'boolean' } },\n showHeaderIcon: { control: { type: 'boolean' } },\n showQuickFilters: { control: { type: 'boolean' } },\n showCount: { control: { type: 'boolean' } },\n showResults: { control: { type: 'boolean' } },\n showLoadMore: { control: { type: 'boolean' } }\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"ArticleBuddy.stories.d.ts","sourceRoot":"","sources":["../../../src/work/ArticleList/ArticleBuddy.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,OAAO,EAAE,MAAM,kBAAkB,CAAC;;AAYtD,wBAGU;AAEV,UAAU,qBAAqB;IAC7B,cAAc,EAAE,OAAO,CAAC;IACxB,cAAc,EAAE,OAAO,CAAC;IACxB,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,OAAO,CAAC;CACvB;AAOD,eAAO,MAAM,gBAAgB,EAAE,OAAO,CAAC,qBAAqB,CAkF3D,CAAC"}
1
+ {"version":3,"file":"ArticleBuddy.stories.d.ts","sourceRoot":"","sources":["../../../src/work/ArticleList/ArticleBuddy.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,OAAO,EAAE,MAAM,kBAAkB,CAAC;;AAYtD,wBAGU;AAEV,UAAU,qBAAqB;IAC7B,cAAc,EAAE,OAAO,CAAC;IACxB,cAAc,EAAE,OAAO,CAAC;IACxB,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,OAAO,CAAC;CACvB;AAOD,eAAO,MAAM,gBAAgB,EAAE,OAAO,CAAC,qBAAqB,CA0F3D,CAAC"}
@@ -13,6 +13,7 @@ export const ArticleBuddyDemo = (args) => {
13
13
  const [commentVal, setCommentVal] = useState('');
14
14
  const [loading, setLoading] = useState(false);
15
15
  const [searchResult, setSearchResult] = useState();
16
+ const [reaction, setReaction] = useState(undefined);
16
17
  const updateBuddyArticles = (mockBuddyArticle) => {
17
18
  const actionItems = [
18
19
  { id: '1', text: 'Share' },
@@ -51,11 +52,17 @@ export const ArticleBuddyDemo = (args) => {
51
52
  value: commentVal,
52
53
  onChange: (e) => setCommentVal(e.target.value)
53
54
  };
55
+ const onReaction = (feedback) => {
56
+ setReaction(feedback);
57
+ };
54
58
  const feedbackProps = {
55
59
  comment: commentParams,
60
+ reaction,
61
+ onReaction,
56
62
  onSubmit: (response) => {
57
- action('onClick')(`actions ${response.reaction} ${response.comment}`);
63
+ action('onClick')(`Response sent ${response.reaction} ${response.comment}`);
58
64
  setCommentVal('');
65
+ setReaction(undefined);
59
66
  }
60
67
  };
61
68
  return (_jsx(Card, { children: _jsx(ArticleBuddy, { query: queryParams, onSubmit: getResults, onClear: () => {
@@ -1 +1 @@
1
- {"version":3,"file":"ArticleBuddy.stories.js","sourceRoot":"","sources":["../../../src/work/ArticleList/ArticleBuddy.stories.tsx"],"names":[],"mappings":"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","sourcesContent":["import type { Meta, StoryFn } from '@storybook/react';\nimport { useState } from 'react';\nimport type { ChangeEvent } from 'react';\nimport { action } from '@storybook/addon-actions';\n\nimport { HTML, Card } from '@pega/cosmos-react-core';\nimport type { OmitStrict, TextAreaProps } from '@pega/cosmos-react-core';\nimport { ArticleBuddy } from '@pega/cosmos-react-work';\nimport type { ArticleBuddyProps, Reaction } from '@pega/cosmos-react-work';\n\nimport { ArticleBuddyMockData } from './ArticleList.mocks';\n\nexport default {\n title: 'Work/ArticleList',\n component: ArticleBuddy\n} as Meta;\n\ninterface ArticleBuddyDemoProps {\n showDisclaimer: boolean;\n showReferences: boolean;\n showActions: boolean;\n showError: boolean;\n showFeedback: boolean;\n}\n\ntype MockBuddyArticles = OmitStrict<\n ArticleBuddyProps,\n 'query' | 'loading' | 'onSubmit' | 'onClear' | 'feedback'\n>;\n\nexport const ArticleBuddyDemo: StoryFn<ArticleBuddyDemoProps> = (args: ArticleBuddyDemoProps) => {\n const [searchVal, setSearchVal] = useState('');\n const [commentVal, setCommentVal] = useState('');\n const [loading, setLoading] = useState(false);\n const [searchResult, setSearchResult] = useState<MockBuddyArticles>();\n\n const updateBuddyArticles = (mockBuddyArticle: MockBuddyArticles) => {\n const actionItems = [\n { id: '1', text: 'Share' },\n { id: '2', text: 'Copy' }\n ];\n return {\n title: mockBuddyArticle.title,\n content: mockBuddyArticle.content,\n references: mockBuddyArticle.references,\n disclaimer: mockBuddyArticle.disclaimer,\n actions: actionItems\n };\n };\n\n const fetchSearchResult: () => Promise<{\n data: MockBuddyArticles;\n }> = () => {\n return new Promise(resolve => {\n setTimeout(() => {\n resolve({\n data: updateBuddyArticles(ArticleBuddyMockData)\n });\n }, 1000);\n });\n };\n\n const getResults = async () => {\n setLoading(true);\n const res = await fetchSearchResult();\n setSearchResult(res.data);\n setLoading(false);\n };\n\n const queryParams: TextAreaProps = {\n placeholder: 'Ask your question here...',\n value: searchVal,\n onChange: (e: ChangeEvent<HTMLTextAreaElement>) => setSearchVal(e.target.value)\n };\n\n const commentParams: TextAreaProps = {\n placeholder: 'How can I improve...',\n value: commentVal,\n onChange: (e: ChangeEvent<HTMLTextAreaElement>) => setCommentVal(e.target.value)\n };\n\n const feedbackProps: ArticleBuddyProps['feedback'] = {\n comment: commentParams,\n onSubmit: (response: { reaction: Reaction; comment: string }) => {\n action('onClick')(`actions ${response.reaction} ${response.comment}`);\n setCommentVal('');\n }\n };\n\n return (\n <Card>\n <ArticleBuddy\n query={queryParams}\n onSubmit={getResults}\n onClear={() => {\n setSearchVal('');\n }}\n title={searchResult?.title}\n actions={args.showActions ? searchResult?.actions : []}\n content={\n !args.showError && searchResult?.content ? (\n <HTML content={ArticleBuddyMockData.content} />\n ) : undefined\n }\n disclaimer={args.showDisclaimer ? ArticleBuddyMockData.disclaimer : undefined}\n references={args.showReferences ? searchResult?.references : undefined}\n feedback={args.showFeedback ? feedbackProps : undefined}\n loading={loading}\n error={args.showError}\n />\n </Card>\n );\n};\n\nArticleBuddyDemo.args = {\n showDisclaimer: true,\n showActions: true,\n showReferences: true,\n showError: false,\n showFeedback: true\n};\n\nArticleBuddyDemo.argTypes = {\n showDisclaimer: { control: { type: 'boolean' } },\n showActions: { control: { type: 'boolean' } },\n showReferences: { control: { type: 'boolean' } },\n showError: { control: { type: 'boolean' } },\n showFeedback: { control: { type: 'boolean' } }\n};\n"]}
1
+ {"version":3,"file":"ArticleBuddy.stories.js","sourceRoot":"","sources":["../../../src/work/ArticleList/ArticleBuddy.stories.tsx"],"names":[],"mappings":"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","sourcesContent":["import type { Meta, StoryFn } from '@storybook/react';\nimport { useState } from 'react';\nimport type { ChangeEvent } from 'react';\nimport { action } from '@storybook/addon-actions';\n\nimport { HTML, Card } from '@pega/cosmos-react-core';\nimport type { OmitStrict, TextAreaProps } from '@pega/cosmos-react-core';\nimport { ArticleBuddy } from '@pega/cosmos-react-work';\nimport type { ArticleBuddyProps, Reaction } from '@pega/cosmos-react-work';\n\nimport { ArticleBuddyMockData } from './ArticleList.mocks';\n\nexport default {\n title: 'Work/ArticleList',\n component: ArticleBuddy\n} as Meta;\n\ninterface ArticleBuddyDemoProps {\n showDisclaimer: boolean;\n showReferences: boolean;\n showActions: boolean;\n showError: boolean;\n showFeedback: boolean;\n}\n\ntype MockBuddyArticles = OmitStrict<\n ArticleBuddyProps,\n 'query' | 'loading' | 'onSubmit' | 'onClear' | 'feedback'\n>;\n\nexport const ArticleBuddyDemo: StoryFn<ArticleBuddyDemoProps> = (args: ArticleBuddyDemoProps) => {\n const [searchVal, setSearchVal] = useState('');\n const [commentVal, setCommentVal] = useState('');\n const [loading, setLoading] = useState(false);\n const [searchResult, setSearchResult] = useState<MockBuddyArticles>();\n const [reaction, setReaction] = useState<Reaction>(undefined);\n\n const updateBuddyArticles = (mockBuddyArticle: MockBuddyArticles) => {\n const actionItems = [\n { id: '1', text: 'Share' },\n { id: '2', text: 'Copy' }\n ];\n return {\n title: mockBuddyArticle.title,\n content: mockBuddyArticle.content,\n references: mockBuddyArticle.references,\n disclaimer: mockBuddyArticle.disclaimer,\n actions: actionItems\n };\n };\n\n const fetchSearchResult: () => Promise<{\n data: MockBuddyArticles;\n }> = () => {\n return new Promise(resolve => {\n setTimeout(() => {\n resolve({\n data: updateBuddyArticles(ArticleBuddyMockData)\n });\n }, 1000);\n });\n };\n\n const getResults = async () => {\n setLoading(true);\n const res = await fetchSearchResult();\n setSearchResult(res.data);\n setLoading(false);\n };\n\n const queryParams: TextAreaProps = {\n placeholder: 'Ask your question here...',\n value: searchVal,\n onChange: (e: ChangeEvent<HTMLTextAreaElement>) => setSearchVal(e.target.value)\n };\n\n const commentParams: TextAreaProps = {\n placeholder: 'How can I improve...',\n value: commentVal,\n onChange: (e: ChangeEvent<HTMLTextAreaElement>) => setCommentVal(e.target.value)\n };\n\n const onReaction = (feedback: Reaction) => {\n setReaction(feedback);\n };\n\n const feedbackProps: ArticleBuddyProps['feedback'] = {\n comment: commentParams,\n reaction,\n onReaction,\n onSubmit: (response: { reaction: Reaction; comment: string }) => {\n action('onClick')(`Response sent ${response.reaction} ${response.comment}`);\n setCommentVal('');\n setReaction(undefined);\n }\n };\n\n return (\n <Card>\n <ArticleBuddy\n query={queryParams}\n onSubmit={getResults}\n onClear={() => {\n setSearchVal('');\n }}\n title={searchResult?.title}\n actions={args.showActions ? searchResult?.actions : []}\n content={\n !args.showError && searchResult?.content ? (\n <HTML content={ArticleBuddyMockData.content} />\n ) : undefined\n }\n disclaimer={args.showDisclaimer ? ArticleBuddyMockData.disclaimer : undefined}\n references={args.showReferences ? searchResult?.references : undefined}\n feedback={args.showFeedback ? feedbackProps : undefined}\n loading={loading}\n error={args.showError}\n />\n </Card>\n );\n};\n\nArticleBuddyDemo.args = {\n showDisclaimer: true,\n showActions: true,\n showReferences: true,\n showError: false,\n showFeedback: true\n};\n\nArticleBuddyDemo.argTypes = {\n showDisclaimer: { control: { type: 'boolean' } },\n showActions: { control: { type: 'boolean' } },\n showReferences: { control: { type: 'boolean' } },\n showError: { control: { type: 'boolean' } },\n showFeedback: { control: { type: 'boolean' } }\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"ArticleList.stories.d.ts","sourceRoot":"","sources":["../../../src/work/ArticleList/ArticleList.stories.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAQ,OAAO,EAAE,MAAM,kBAAkB,CAAC;;AAyBtD,wBAOU;AAIV,UAAU,oBAAoB;IAC5B,sBAAsB,EAAE,OAAO,CAAC;IAChC,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB,cAAc,EAAE,OAAO,CAAC;IACxB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,OAAO,CAAC;IACrB,YAAY,EAAE,OAAO,CAAC;CACvB;AAYD,eAAO,MAAM,eAAe,EAAE,OAAO,CAAC,oBAAoB,CAujBzD,CAAC"}
1
+ {"version":3,"file":"ArticleList.stories.d.ts","sourceRoot":"","sources":["../../../src/work/ArticleList/ArticleList.stories.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAQ,OAAO,EAAE,MAAM,kBAAkB,CAAC;;AAyBtD,wBAOU;AAIV,UAAU,oBAAoB;IAC5B,sBAAsB,EAAE,OAAO,CAAC;IAChC,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB,cAAc,EAAE,OAAO,CAAC;IACxB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,OAAO,CAAC;IACrB,YAAY,EAAE,OAAO,CAAC;CACvB;AAYD,eAAO,MAAM,eAAe,EAAE,OAAO,CAAC,oBAAoB,CA8jBzD,CAAC"}
@@ -30,6 +30,7 @@ export const ArticleListDemo = (args) => {
30
30
  const [buddyContent, setBuddyContent] = useState();
31
31
  const [buddyLoader, setBuddyLoader] = useState(false);
32
32
  const [commentVal, setCommentVal] = useState('');
33
+ const [buddyReaction, setBuddyReaction] = useState(undefined);
33
34
  const selectedSortByOption = useMemo(() => menuHelpers.getSelected(sortBy)[0], [sortBy]);
34
35
  const selectSortByOption = useCallback((id) => {
35
36
  setSortBy(cur => menuHelpers.selectItem(cur, id, 'single-select'));
@@ -376,8 +377,14 @@ export const ArticleListDemo = (args) => {
376
377
  value: commentVal,
377
378
  onChange: (e) => setCommentVal(e.target.value)
378
379
  },
380
+ reaction: buddyReaction,
381
+ onReaction: (reaction) => {
382
+ setBuddyReaction(reaction);
383
+ },
379
384
  onSubmit: (response) => {
380
385
  action('onClick')(`action ${response.reaction} ${response.comment}`);
386
+ setCommentVal('');
387
+ setBuddyReaction(undefined);
381
388
  }
382
389
  };
383
390
  return (_jsx("div", { style: {
@@ -1 +1 @@
1
- {"version":3,"file":"ArticleList.stories.js","sourceRoot":"","sources":["../../../src/work/ArticleList/ArticleList.stories.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useCallback, useEffect, useMemo, useState } from 'react';\nimport type { ChangeEvent } from 'react';\nimport type { Meta, StoryFn } from '@storybook/react';\nimport { action } from '@storybook/addon-actions';\n\nimport { createUID, menuHelpers, registerIcon, escapeRegExp, HTML } from '@pega/cosmos-react-core';\nimport type {\n Action,\n MenuItemProps,\n MenuProps,\n SearchInputProps,\n OmitStrict\n} from '@pega/cosmos-react-core';\nimport * as thumbsUpSolidIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/thumbs-up-solid.icon';\nimport * as thumbsDownSolidIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/thumbs-down-solid.icon';\nimport * as bookOpen from '@pega/cosmos-react-core/lib/components/Icon/icons/book-open.icon';\nimport { ArticleList, ArticleSummary, ArticleListFilter } from '@pega/cosmos-react-work';\nimport type {\n ArticleSummaryProps,\n Articles,\n QuickFilter,\n ArticleBuddyProps,\n Reaction\n} from '@pega/cosmos-react-work';\n\nimport { suggestedMock, followedMock, searchMock, ArticleBuddyMockData } from './ArticleList.mocks';\n\nexport default {\n title: 'Work/ArticleList',\n component: ArticleList,\n subcomponents: { ArticleSummary, ArticleListFilter },\n parameters: {\n layout: 'fullscreen'\n }\n} as Meta;\n\nregisterIcon(thumbsUpSolidIcon, thumbsDownSolidIcon, bookOpen);\n\ninterface ArticleListDemoProps {\n isSuggestArticleAction: boolean;\n showAction: boolean;\n showHeader: boolean;\n showHeaderIcon: boolean;\n showQuickFilters: boolean;\n showCount: boolean;\n showResults: boolean;\n showLoadMore: boolean;\n}\n\ntype MockArticles = ArticleSummaryProps & {\n isLiked: boolean;\n isFollowed: boolean;\n};\n\ntype MockBuddyArticles = OmitStrict<\n ArticleBuddyProps,\n 'query' | 'loading' | 'onSubmit' | 'onClear' | 'feedback'\n>;\n\nexport const ArticleListDemo: StoryFn<ArticleListDemoProps> = (args: ArticleListDemoProps) => {\n const [searchVal, setSearchVal] = useState('');\n const [activeTab, setActiveTab] = useState('Suggested');\n const [loading, setLoading] = useState(false);\n const [categoryList, setCategoryList] = useState<MenuProps['items']>([]);\n const [sortBy, setSortBy] = useState<MenuProps['items']>([]);\n const [articles, setArticles] = useState<ArticleSummaryProps[]>([]);\n const [quickFilters, setQuickFilters] = useState<QuickFilter[]>([]);\n const [loadingMore, isSetLoadMore] = useState(false);\n const [hasMore, setHasMore] = useState(true);\n const [filterCategoryValue, setFilterCategoryValue] = useState('');\n const [buddyContent, setBuddyContent] = useState<MockBuddyArticles>();\n const [buddyLoader, setBuddyLoader] = useState(false);\n const [commentVal, setCommentVal] = useState('');\n\n const selectedSortByOption = useMemo(() => menuHelpers.getSelected(sortBy)[0], [sortBy]);\n\n const selectSortByOption = useCallback((id: MenuItemProps['id']) => {\n setSortBy(cur => menuHelpers.selectItem(cur, id, 'single-select'));\n }, []);\n\n const selectedCategory = useMemo(() => {\n return menuHelpers.getSelected(categoryList).map(item => ({ text: item.primary, id: item.id }));\n }, [categoryList]);\n\n const categoryListToRender = useMemo(() => {\n return menuHelpers.mapTree(categoryList, item => ({\n ...item,\n selected: !!item.selected\n }));\n }, [categoryList]);\n\n const toggleItem = (id: MenuItemProps['id']) => {\n setCategoryList(cur => menuHelpers.toggleSelected(cur, id, 'multi-select'));\n };\n\n const onReaction: Required<ArticleSummaryProps>['feedback']['onReaction'] = (\n articleId,\n reaction\n ) => {\n setArticles(prevArticles => {\n const itemIndex = prevArticles.findIndex(article => article?.articleId === articleId);\n const updatedData = [...prevArticles];\n if (itemIndex !== -1) {\n const currentItemFeedback = updatedData[itemIndex].feedback;\n if (currentItemFeedback) {\n const likeValue = currentItemFeedback?.likes || 0;\n const dislikeValue = currentItemFeedback?.dislikes || 0;\n\n if (!reaction) {\n if (currentItemFeedback.reaction === 'liked') {\n currentItemFeedback.likes = likeValue - 1;\n } else {\n currentItemFeedback.dislikes = dislikeValue - 1;\n }\n currentItemFeedback.reaction = undefined;\n }\n\n if (reaction === 'liked') {\n if (currentItemFeedback?.reaction === 'disliked') {\n currentItemFeedback.dislikes = dislikeValue - 1;\n }\n\n currentItemFeedback.likes = likeValue + 1;\n currentItemFeedback.reaction = 'liked';\n }\n\n if (reaction === 'disliked') {\n if (currentItemFeedback.reaction === 'liked') {\n currentItemFeedback.likes = likeValue - 1;\n }\n currentItemFeedback.dislikes = dislikeValue + 1;\n currentItemFeedback.reaction = 'disliked';\n }\n }\n }\n\n return updatedData;\n });\n };\n\n const updateArticles = (mockArticles: MockArticles[]) => {\n const data = Object.values(mockArticles);\n return data.map(\n ({\n isLiked = false,\n isFollowed = false,\n articleId = '',\n title,\n href,\n abstract,\n meta,\n feedback,\n quickFilters: quickFilterTags\n }) => {\n const actionObj = [{ id: '1', text: 'Edit' }];\n if (isLiked) {\n actionObj.push({ id: '3', text: 'Dislike' });\n } else {\n actionObj.push({ id: '3', text: 'Like' });\n }\n if (isFollowed) {\n actionObj.push({ id: '4', text: 'Unfollow' });\n } else {\n actionObj.push({ id: '4', text: 'Follow' });\n }\n\n return {\n articleId,\n href,\n title,\n abstract,\n onTitleClick: action('onTitleClick'),\n primaryActions: actionObj,\n meta,\n feedback,\n quickFilters:\n args.showQuickFilters && quickFilterTags?.length\n ? quickFilterTags?.map(({ id, name }) => {\n return {\n id,\n name\n };\n })\n : []\n };\n }\n );\n };\n\n const fetchArticleContent: (activeTabName: string) => Promise<{\n articles: ArticleSummaryProps[];\n category: MenuProps['items'];\n sortBy: MenuProps['items'];\n }> = activeTabName => {\n return new Promise(resolve => {\n let activeTabContent: any = null;\n\n if (!activeTabName || activeTabName === 'Search') activeTabContent = { ...searchMock };\n else if (activeTabName === 'Suggested') activeTabContent = { ...suggestedMock };\n else if (activeTabName === 'Followed') activeTabContent = { ...followedMock };\n\n setTimeout(() => {\n if (activeTabContent) {\n resolve({\n articles: updateArticles(activeTabContent.articles),\n category: activeTabContent.category || [],\n sortBy: activeTabContent.sortBy || []\n });\n }\n }, 500);\n });\n };\n\n searchMock.articles = searchMock.articles.map(article => {\n return {\n ...article,\n feedback: {\n ...article.feedback,\n id: article.articleId,\n onReaction\n }\n };\n });\n\n suggestedMock.articles = suggestedMock.articles.map(article => {\n return {\n ...article,\n feedback: {\n ...article.feedback,\n id: article.articleId,\n onReaction\n }\n };\n });\n\n followedMock.articles = followedMock.articles.map(article => {\n return {\n ...article,\n feedback: {\n ...article.feedback,\n id: article.articleId,\n onReaction\n }\n };\n });\n\n const handleTabChange = (id: string) => {\n setArticles([]);\n setCategoryList([]);\n setLoading(true);\n fetchArticleContent(id).then(res => {\n setArticles(res.articles);\n setCategoryList(res.category);\n setSortBy(res.sortBy);\n setLoading(false);\n });\n\n setActiveTab(id);\n setSearchVal('');\n if (id !== 'Search') {\n setQuickFilters([]);\n }\n };\n\n useEffect(() => {\n setLoading(true);\n fetchArticleContent(activeTab).then(res => {\n setLoading(false);\n setArticles(res.articles);\n });\n }, [activeTab]);\n\n const filterRegex = useMemo(() => escapeRegExp(filterCategoryValue), [filterCategoryValue]);\n\n const categoryProps: Articles['category'] = {\n label: 'Category',\n placeholder: 'Select categories',\n onChange: e => {\n setFilterCategoryValue(e.target.value);\n },\n value: filterCategoryValue,\n mode: 'multi-select',\n selected: {\n items: selectedCategory\n },\n menu: {\n items: filterCategoryValue\n ? menuHelpers.flatten(categoryList).filter(({ primary }: MenuItemProps) => {\n return filterRegex.toLowerCase().includes(primary.toLowerCase());\n })\n : categoryListToRender,\n onItemClick: toggleItem\n }\n };\n\n const sortByProps: Articles['sortBy'] = {\n label: 'Sort by',\n placeholder: 'Select sort by',\n selected: selectedSortByOption\n ? {\n items: {\n id: selectedSortByOption.id,\n text: selectedSortByOption.primary\n }\n }\n : undefined,\n menu: {\n items: sortBy,\n onItemClick: selectSortByOption\n }\n };\n\n const searchOptions: SearchInputProps = {\n placeholder: 'Search article',\n filters: ['Help site 1', 'Help site 2', 'Help site 3'],\n value: searchVal,\n onSearchChange: (val: string) => {\n setSearchVal(val);\n },\n onFilterChange: (val: string) => {\n return val;\n }\n };\n\n const actionOptions = [\n {\n id: '1',\n text: 'Action 1',\n onClick: (id: string) => action('onClick')(`action ${id}`)\n },\n {\n id: '2',\n text: 'Action 2',\n onClick: (id: string) => action('onClick')(`action ${id}`)\n },\n {\n id: '3',\n text: 'Action 3',\n onClick: (id: string) => action('onClick')(`action ${id}`)\n }\n ];\n\n const suggestNewArticleAction: Action = {\n id: 'Suggest action',\n text: 'Suggest action',\n onClick: (id: string) => action('onClick')(id),\n icon: 'plus'\n };\n\n let actions;\n if (args.showAction) {\n if (args.isSuggestArticleAction) {\n actions = [suggestNewArticleAction];\n } else {\n actions = actionOptions;\n }\n }\n\n const handleClearClick = () => {\n setQuickFilters([]);\n setSearchVal('');\n setCategoryList(curr => {\n return curr?.map(categoryListItem => {\n return {\n ...categoryListItem,\n selected: false\n };\n });\n });\n setSortBy(curr => {\n return curr?.map(sortByListItem => {\n return {\n ...sortByListItem,\n selected: false\n };\n });\n });\n };\n\n let timeoutId: ReturnType<typeof setTimeout>;\n const stopTimeout = () => {\n clearTimeout(timeoutId);\n };\n\n const onLoadMore = useCallback(() => {\n if (!loading && !loadingMore && activeTab) {\n isSetLoadMore(true);\n setLoading(false);\n timeoutId = setTimeout(() => {\n isSetLoadMore(false);\n setLoading(false);\n setHasMore(true);\n setArticles(prevArticles => [\n ...prevArticles,\n {\n articleId: createUID(),\n title: 'Last article alert!!!',\n href: 'design.pega.com',\n abstract:\n 'Last article alert. This is the last article , hence the last index to be noted. This will be appended at the end of the list',\n meta: {\n category: 'Retail',\n publishedDate: '2023-04-06'\n },\n feedback: {\n articleId: createUID(),\n likes: 20,\n dislikes: 80,\n liked: true,\n disliked: false,\n onReaction: () => {}\n },\n isFollowed: false,\n isLiked: true,\n quickFilters: [\n { id: '1', name: 'insurance' },\n { id: '2', name: 'policy' }\n ]\n }\n ]);\n }, 3000);\n }\n }, [loading, loadingMore, activeTab]);\n\n useEffect(() => {\n return () => stopTimeout();\n }, []);\n\n const updateBuddyArticles = (mockBuddyArticle: MockBuddyArticles) => {\n const actionItems = [\n { id: '1', text: 'Share' },\n { id: '2', text: 'Copy' }\n ];\n\n return {\n title: mockBuddyArticle.title,\n content: mockBuddyArticle.content,\n references: mockBuddyArticle.references,\n disclaimer: mockBuddyArticle.disclaimer,\n actions: actionItems\n };\n };\n\n const fetchBuddySearchResult: () => Promise<{\n data: MockBuddyArticles;\n }> = () => {\n return new Promise(resolve => {\n setTimeout(() => {\n resolve({\n data: updateBuddyArticles(ArticleBuddyMockData)\n });\n }, 1000);\n });\n };\n\n const getBuddyResults = async () => {\n setBuddyLoader(true);\n const res = await fetchBuddySearchResult();\n setBuddyContent(res.data);\n setBuddyLoader(false);\n };\n\n const buddyQuery: ArticleBuddyProps['query'] = {\n placeholder: 'Ask your question here...',\n value: searchVal,\n onChange: (e: ChangeEvent<HTMLTextAreaElement>) => setSearchVal(e.target.value)\n };\n const buddyFeedback: ArticleBuddyProps['feedback'] = {\n comment: {\n placeholder: 'How can I improve...',\n value: commentVal,\n onChange: (e: ChangeEvent<HTMLTextAreaElement>) => setCommentVal(e.target.value)\n },\n onSubmit: (response: { reaction: Reaction; comment: string }) => {\n action('onClick')(`action ${response.reaction} ${response.comment}`);\n }\n };\n\n return (\n <div\n style={{\n width: '25rem'\n }}\n >\n <ArticleList\n header={\n args.showHeader\n ? {\n title: 'Knowledge articles',\n icon: args.showHeaderIcon ? 'book-open' : '',\n actions\n }\n : undefined\n }\n activeTab={activeTab}\n onTabClick={handleTabChange}\n skeletonize={false}\n suggested={{\n count: args.showCount ? suggestedMock.count : undefined,\n articles: articles.map(article => {\n if (\n !article.feedback ||\n article.feedback.likes === undefined ||\n article.feedback.dislikes === undefined\n ) {\n return article;\n }\n\n const likesValue =\n (article.feedback?.likes ?? 0 * 100) / article.feedback.likes +\n article.feedback.dislikes;\n const disLikeValue =\n (article.feedback.dislikes ?? 0 * 100) / article.feedback.likes +\n article.feedback.dislikes;\n return {\n ...article,\n feedback: {\n ...article.feedback,\n likes: likesValue,\n\n dislikes: disLikeValue\n }\n };\n })\n }}\n followed={{\n count: args.showCount ? followedMock.count : undefined,\n articles: articles.map(article => {\n if (\n !article.feedback ||\n article.feedback.likes === undefined ||\n article.feedback.dislikes === undefined\n ) {\n return article;\n }\n\n const likesValue =\n (article.feedback?.likes ?? 0 * 100) / article.feedback.likes +\n article.feedback.dislikes;\n const disLikeValue =\n (article.feedback.dislikes ?? 0 * 100) / article.feedback.likes +\n article.feedback.dislikes;\n return {\n ...article,\n feedback: {\n ...article.feedback,\n likes: likesValue,\n\n dislikes: disLikeValue\n }\n };\n }),\n searchInput: searchOptions,\n category: categoryProps,\n sortBy: sortByProps,\n onClearClick: handleClearClick,\n showResults: args.showResults\n }}\n search={{\n count: args.showCount ? searchMock.count : undefined,\n articles: articles.map(article => {\n if (\n !article.feedback ||\n article.feedback.likes === undefined ||\n article.feedback.dislikes === undefined\n ) {\n return article;\n }\n\n const likesValue =\n (article.feedback?.likes ?? 0 * 100) / article.feedback.likes +\n article.feedback.dislikes;\n const disLikeValue =\n (article.feedback.dislikes ?? 0 * 100) / article.feedback.likes +\n article.feedback.dislikes;\n return {\n ...article,\n feedback: {\n ...article.feedback,\n likes: likesValue,\n\n dislikes: disLikeValue\n }\n };\n }),\n searchInput: searchOptions,\n category: categoryProps,\n sortBy: sortByProps,\n onClearClick: handleClearClick,\n quickFilters,\n handleQuickFilterRemove: (id: string) => {\n setQuickFilters(quickFilters.filter(item => item.id !== id));\n },\n showResults: args.showResults\n }}\n buddy={{\n title: 'Ask buddy',\n content: {\n query: buddyQuery,\n onSubmit: getBuddyResults,\n onClear: () => {\n setSearchVal('');\n },\n title: buddyContent?.title ?? '',\n actions: buddyContent?.actions ?? [],\n content: buddyContent?.content ? (\n <HTML content={ArticleBuddyMockData.content} />\n ) : (\n buddyContent?.content\n ),\n references: buddyContent?.references,\n feedback: buddyFeedback,\n disclaimer: ArticleBuddyMockData.disclaimer,\n loading: buddyLoader\n }\n }}\n onQuickFilterClick={(quickFilterParam: QuickFilter) => {\n handleTabChange('Search');\n setQuickFilters([...quickFilters, quickFilterParam]);\n }}\n loading={loading}\n loadingMore={loadingMore}\n onLoadMore={args.showLoadMore && hasMore ? onLoadMore : undefined}\n />\n </div>\n );\n};\n\nArticleListDemo.args = {\n isSuggestArticleAction: true,\n showAction: true,\n showHeader: true,\n showHeaderIcon: true,\n showQuickFilters: true,\n showCount: true,\n showResults: true,\n showLoadMore: false\n};\n\nArticleListDemo.argTypes = {\n isSuggestArticleAction: { control: { type: 'boolean' } },\n showAction: { control: { type: 'boolean' } },\n showHeader: { control: { type: 'boolean' } },\n showHeaderIcon: { control: { type: 'boolean' } },\n showQuickFilters: { control: { type: 'boolean' } },\n showCount: { control: { type: 'boolean' } },\n showResults: { control: { type: 'boolean' } },\n showLoadMore: { control: { type: 'boolean' } }\n};\n"]}
1
+ {"version":3,"file":"ArticleList.stories.js","sourceRoot":"","sources":["../../../src/work/ArticleList/ArticleList.stories.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useCallback, useEffect, useMemo, useState } from 'react';\nimport type { ChangeEvent } from 'react';\nimport type { Meta, StoryFn } from '@storybook/react';\nimport { action } from '@storybook/addon-actions';\n\nimport { createUID, menuHelpers, registerIcon, escapeRegExp, HTML } from '@pega/cosmos-react-core';\nimport type {\n Action,\n MenuItemProps,\n MenuProps,\n SearchInputProps,\n OmitStrict\n} from '@pega/cosmos-react-core';\nimport * as thumbsUpSolidIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/thumbs-up-solid.icon';\nimport * as thumbsDownSolidIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/thumbs-down-solid.icon';\nimport * as bookOpen from '@pega/cosmos-react-core/lib/components/Icon/icons/book-open.icon';\nimport { ArticleList, ArticleSummary, ArticleListFilter } from '@pega/cosmos-react-work';\nimport type {\n ArticleSummaryProps,\n Articles,\n QuickFilter,\n ArticleBuddyProps,\n Reaction\n} from '@pega/cosmos-react-work';\n\nimport { suggestedMock, followedMock, searchMock, ArticleBuddyMockData } from './ArticleList.mocks';\n\nexport default {\n title: 'Work/ArticleList',\n component: ArticleList,\n subcomponents: { ArticleSummary, ArticleListFilter },\n parameters: {\n layout: 'fullscreen'\n }\n} as Meta;\n\nregisterIcon(thumbsUpSolidIcon, thumbsDownSolidIcon, bookOpen);\n\ninterface ArticleListDemoProps {\n isSuggestArticleAction: boolean;\n showAction: boolean;\n showHeader: boolean;\n showHeaderIcon: boolean;\n showQuickFilters: boolean;\n showCount: boolean;\n showResults: boolean;\n showLoadMore: boolean;\n}\n\ntype MockArticles = ArticleSummaryProps & {\n isLiked: boolean;\n isFollowed: boolean;\n};\n\ntype MockBuddyArticles = OmitStrict<\n ArticleBuddyProps,\n 'query' | 'loading' | 'onSubmit' | 'onClear' | 'feedback'\n>;\n\nexport const ArticleListDemo: StoryFn<ArticleListDemoProps> = (args: ArticleListDemoProps) => {\n const [searchVal, setSearchVal] = useState('');\n const [activeTab, setActiveTab] = useState('Suggested');\n const [loading, setLoading] = useState(false);\n const [categoryList, setCategoryList] = useState<MenuProps['items']>([]);\n const [sortBy, setSortBy] = useState<MenuProps['items']>([]);\n const [articles, setArticles] = useState<ArticleSummaryProps[]>([]);\n const [quickFilters, setQuickFilters] = useState<QuickFilter[]>([]);\n const [loadingMore, isSetLoadMore] = useState(false);\n const [hasMore, setHasMore] = useState(true);\n const [filterCategoryValue, setFilterCategoryValue] = useState('');\n const [buddyContent, setBuddyContent] = useState<MockBuddyArticles>();\n const [buddyLoader, setBuddyLoader] = useState(false);\n const [commentVal, setCommentVal] = useState('');\n const [buddyReaction, setBuddyReaction] = useState<Reaction>(undefined);\n\n const selectedSortByOption = useMemo(() => menuHelpers.getSelected(sortBy)[0], [sortBy]);\n\n const selectSortByOption = useCallback((id: MenuItemProps['id']) => {\n setSortBy(cur => menuHelpers.selectItem(cur, id, 'single-select'));\n }, []);\n\n const selectedCategory = useMemo(() => {\n return menuHelpers.getSelected(categoryList).map(item => ({ text: item.primary, id: item.id }));\n }, [categoryList]);\n\n const categoryListToRender = useMemo(() => {\n return menuHelpers.mapTree(categoryList, item => ({\n ...item,\n selected: !!item.selected\n }));\n }, [categoryList]);\n\n const toggleItem = (id: MenuItemProps['id']) => {\n setCategoryList(cur => menuHelpers.toggleSelected(cur, id, 'multi-select'));\n };\n\n const onReaction: Required<ArticleSummaryProps>['feedback']['onReaction'] = (\n articleId,\n reaction\n ) => {\n setArticles(prevArticles => {\n const itemIndex = prevArticles.findIndex(article => article?.articleId === articleId);\n const updatedData = [...prevArticles];\n if (itemIndex !== -1) {\n const currentItemFeedback = updatedData[itemIndex].feedback;\n if (currentItemFeedback) {\n const likeValue = currentItemFeedback?.likes || 0;\n const dislikeValue = currentItemFeedback?.dislikes || 0;\n\n if (!reaction) {\n if (currentItemFeedback.reaction === 'liked') {\n currentItemFeedback.likes = likeValue - 1;\n } else {\n currentItemFeedback.dislikes = dislikeValue - 1;\n }\n currentItemFeedback.reaction = undefined;\n }\n\n if (reaction === 'liked') {\n if (currentItemFeedback?.reaction === 'disliked') {\n currentItemFeedback.dislikes = dislikeValue - 1;\n }\n\n currentItemFeedback.likes = likeValue + 1;\n currentItemFeedback.reaction = 'liked';\n }\n\n if (reaction === 'disliked') {\n if (currentItemFeedback.reaction === 'liked') {\n currentItemFeedback.likes = likeValue - 1;\n }\n currentItemFeedback.dislikes = dislikeValue + 1;\n currentItemFeedback.reaction = 'disliked';\n }\n }\n }\n\n return updatedData;\n });\n };\n\n const updateArticles = (mockArticles: MockArticles[]) => {\n const data = Object.values(mockArticles);\n return data.map(\n ({\n isLiked = false,\n isFollowed = false,\n articleId = '',\n title,\n href,\n abstract,\n meta,\n feedback,\n quickFilters: quickFilterTags\n }) => {\n const actionObj = [{ id: '1', text: 'Edit' }];\n if (isLiked) {\n actionObj.push({ id: '3', text: 'Dislike' });\n } else {\n actionObj.push({ id: '3', text: 'Like' });\n }\n if (isFollowed) {\n actionObj.push({ id: '4', text: 'Unfollow' });\n } else {\n actionObj.push({ id: '4', text: 'Follow' });\n }\n\n return {\n articleId,\n href,\n title,\n abstract,\n onTitleClick: action('onTitleClick'),\n primaryActions: actionObj,\n meta,\n feedback,\n quickFilters:\n args.showQuickFilters && quickFilterTags?.length\n ? quickFilterTags?.map(({ id, name }) => {\n return {\n id,\n name\n };\n })\n : []\n };\n }\n );\n };\n\n const fetchArticleContent: (activeTabName: string) => Promise<{\n articles: ArticleSummaryProps[];\n category: MenuProps['items'];\n sortBy: MenuProps['items'];\n }> = activeTabName => {\n return new Promise(resolve => {\n let activeTabContent: any = null;\n\n if (!activeTabName || activeTabName === 'Search') activeTabContent = { ...searchMock };\n else if (activeTabName === 'Suggested') activeTabContent = { ...suggestedMock };\n else if (activeTabName === 'Followed') activeTabContent = { ...followedMock };\n\n setTimeout(() => {\n if (activeTabContent) {\n resolve({\n articles: updateArticles(activeTabContent.articles),\n category: activeTabContent.category || [],\n sortBy: activeTabContent.sortBy || []\n });\n }\n }, 500);\n });\n };\n\n searchMock.articles = searchMock.articles.map(article => {\n return {\n ...article,\n feedback: {\n ...article.feedback,\n id: article.articleId,\n onReaction\n }\n };\n });\n\n suggestedMock.articles = suggestedMock.articles.map(article => {\n return {\n ...article,\n feedback: {\n ...article.feedback,\n id: article.articleId,\n onReaction\n }\n };\n });\n\n followedMock.articles = followedMock.articles.map(article => {\n return {\n ...article,\n feedback: {\n ...article.feedback,\n id: article.articleId,\n onReaction\n }\n };\n });\n\n const handleTabChange = (id: string) => {\n setArticles([]);\n setCategoryList([]);\n setLoading(true);\n fetchArticleContent(id).then(res => {\n setArticles(res.articles);\n setCategoryList(res.category);\n setSortBy(res.sortBy);\n setLoading(false);\n });\n\n setActiveTab(id);\n setSearchVal('');\n if (id !== 'Search') {\n setQuickFilters([]);\n }\n };\n\n useEffect(() => {\n setLoading(true);\n fetchArticleContent(activeTab).then(res => {\n setLoading(false);\n setArticles(res.articles);\n });\n }, [activeTab]);\n\n const filterRegex = useMemo(() => escapeRegExp(filterCategoryValue), [filterCategoryValue]);\n\n const categoryProps: Articles['category'] = {\n label: 'Category',\n placeholder: 'Select categories',\n onChange: e => {\n setFilterCategoryValue(e.target.value);\n },\n value: filterCategoryValue,\n mode: 'multi-select',\n selected: {\n items: selectedCategory\n },\n menu: {\n items: filterCategoryValue\n ? menuHelpers.flatten(categoryList).filter(({ primary }: MenuItemProps) => {\n return filterRegex.toLowerCase().includes(primary.toLowerCase());\n })\n : categoryListToRender,\n onItemClick: toggleItem\n }\n };\n\n const sortByProps: Articles['sortBy'] = {\n label: 'Sort by',\n placeholder: 'Select sort by',\n selected: selectedSortByOption\n ? {\n items: {\n id: selectedSortByOption.id,\n text: selectedSortByOption.primary\n }\n }\n : undefined,\n menu: {\n items: sortBy,\n onItemClick: selectSortByOption\n }\n };\n\n const searchOptions: SearchInputProps = {\n placeholder: 'Search article',\n filters: ['Help site 1', 'Help site 2', 'Help site 3'],\n value: searchVal,\n onSearchChange: (val: string) => {\n setSearchVal(val);\n },\n onFilterChange: (val: string) => {\n return val;\n }\n };\n\n const actionOptions = [\n {\n id: '1',\n text: 'Action 1',\n onClick: (id: string) => action('onClick')(`action ${id}`)\n },\n {\n id: '2',\n text: 'Action 2',\n onClick: (id: string) => action('onClick')(`action ${id}`)\n },\n {\n id: '3',\n text: 'Action 3',\n onClick: (id: string) => action('onClick')(`action ${id}`)\n }\n ];\n\n const suggestNewArticleAction: Action = {\n id: 'Suggest action',\n text: 'Suggest action',\n onClick: (id: string) => action('onClick')(id),\n icon: 'plus'\n };\n\n let actions;\n if (args.showAction) {\n if (args.isSuggestArticleAction) {\n actions = [suggestNewArticleAction];\n } else {\n actions = actionOptions;\n }\n }\n\n const handleClearClick = () => {\n setQuickFilters([]);\n setSearchVal('');\n setCategoryList(curr => {\n return curr?.map(categoryListItem => {\n return {\n ...categoryListItem,\n selected: false\n };\n });\n });\n setSortBy(curr => {\n return curr?.map(sortByListItem => {\n return {\n ...sortByListItem,\n selected: false\n };\n });\n });\n };\n\n let timeoutId: ReturnType<typeof setTimeout>;\n const stopTimeout = () => {\n clearTimeout(timeoutId);\n };\n\n const onLoadMore = useCallback(() => {\n if (!loading && !loadingMore && activeTab) {\n isSetLoadMore(true);\n setLoading(false);\n timeoutId = setTimeout(() => {\n isSetLoadMore(false);\n setLoading(false);\n setHasMore(true);\n setArticles(prevArticles => [\n ...prevArticles,\n {\n articleId: createUID(),\n title: 'Last article alert!!!',\n href: 'design.pega.com',\n abstract:\n 'Last article alert. This is the last article , hence the last index to be noted. This will be appended at the end of the list',\n meta: {\n category: 'Retail',\n publishedDate: '2023-04-06'\n },\n feedback: {\n articleId: createUID(),\n likes: 20,\n dislikes: 80,\n liked: true,\n disliked: false,\n onReaction: () => {}\n },\n isFollowed: false,\n isLiked: true,\n quickFilters: [\n { id: '1', name: 'insurance' },\n { id: '2', name: 'policy' }\n ]\n }\n ]);\n }, 3000);\n }\n }, [loading, loadingMore, activeTab]);\n\n useEffect(() => {\n return () => stopTimeout();\n }, []);\n\n const updateBuddyArticles = (mockBuddyArticle: MockBuddyArticles) => {\n const actionItems = [\n { id: '1', text: 'Share' },\n { id: '2', text: 'Copy' }\n ];\n\n return {\n title: mockBuddyArticle.title,\n content: mockBuddyArticle.content,\n references: mockBuddyArticle.references,\n disclaimer: mockBuddyArticle.disclaimer,\n actions: actionItems\n };\n };\n\n const fetchBuddySearchResult: () => Promise<{\n data: MockBuddyArticles;\n }> = () => {\n return new Promise(resolve => {\n setTimeout(() => {\n resolve({\n data: updateBuddyArticles(ArticleBuddyMockData)\n });\n }, 1000);\n });\n };\n\n const getBuddyResults = async () => {\n setBuddyLoader(true);\n const res = await fetchBuddySearchResult();\n setBuddyContent(res.data);\n setBuddyLoader(false);\n };\n\n const buddyQuery: ArticleBuddyProps['query'] = {\n placeholder: 'Ask your question here...',\n value: searchVal,\n onChange: (e: ChangeEvent<HTMLTextAreaElement>) => setSearchVal(e.target.value)\n };\n const buddyFeedback: ArticleBuddyProps['feedback'] = {\n comment: {\n placeholder: 'How can I improve...',\n value: commentVal,\n onChange: (e: ChangeEvent<HTMLTextAreaElement>) => setCommentVal(e.target.value)\n },\n reaction: buddyReaction,\n onReaction: (reaction: Reaction) => {\n setBuddyReaction(reaction);\n },\n onSubmit: (response: { reaction: Reaction; comment: string }) => {\n action('onClick')(`action ${response.reaction} ${response.comment}`);\n setCommentVal('');\n setBuddyReaction(undefined);\n }\n };\n\n return (\n <div\n style={{\n width: '25rem'\n }}\n >\n <ArticleList\n header={\n args.showHeader\n ? {\n title: 'Knowledge articles',\n icon: args.showHeaderIcon ? 'book-open' : '',\n actions\n }\n : undefined\n }\n activeTab={activeTab}\n onTabClick={handleTabChange}\n skeletonize={false}\n suggested={{\n count: args.showCount ? suggestedMock.count : undefined,\n articles: articles.map(article => {\n if (\n !article.feedback ||\n article.feedback.likes === undefined ||\n article.feedback.dislikes === undefined\n ) {\n return article;\n }\n\n const likesValue =\n (article.feedback?.likes ?? 0 * 100) / article.feedback.likes +\n article.feedback.dislikes;\n const disLikeValue =\n (article.feedback.dislikes ?? 0 * 100) / article.feedback.likes +\n article.feedback.dislikes;\n return {\n ...article,\n feedback: {\n ...article.feedback,\n likes: likesValue,\n\n dislikes: disLikeValue\n }\n };\n })\n }}\n followed={{\n count: args.showCount ? followedMock.count : undefined,\n articles: articles.map(article => {\n if (\n !article.feedback ||\n article.feedback.likes === undefined ||\n article.feedback.dislikes === undefined\n ) {\n return article;\n }\n\n const likesValue =\n (article.feedback?.likes ?? 0 * 100) / article.feedback.likes +\n article.feedback.dislikes;\n const disLikeValue =\n (article.feedback.dislikes ?? 0 * 100) / article.feedback.likes +\n article.feedback.dislikes;\n return {\n ...article,\n feedback: {\n ...article.feedback,\n likes: likesValue,\n\n dislikes: disLikeValue\n }\n };\n }),\n searchInput: searchOptions,\n category: categoryProps,\n sortBy: sortByProps,\n onClearClick: handleClearClick,\n showResults: args.showResults\n }}\n search={{\n count: args.showCount ? searchMock.count : undefined,\n articles: articles.map(article => {\n if (\n !article.feedback ||\n article.feedback.likes === undefined ||\n article.feedback.dislikes === undefined\n ) {\n return article;\n }\n\n const likesValue =\n (article.feedback?.likes ?? 0 * 100) / article.feedback.likes +\n article.feedback.dislikes;\n const disLikeValue =\n (article.feedback.dislikes ?? 0 * 100) / article.feedback.likes +\n article.feedback.dislikes;\n return {\n ...article,\n feedback: {\n ...article.feedback,\n likes: likesValue,\n\n dislikes: disLikeValue\n }\n };\n }),\n searchInput: searchOptions,\n category: categoryProps,\n sortBy: sortByProps,\n onClearClick: handleClearClick,\n quickFilters,\n handleQuickFilterRemove: (id: string) => {\n setQuickFilters(quickFilters.filter(item => item.id !== id));\n },\n showResults: args.showResults\n }}\n buddy={{\n title: 'Ask buddy',\n content: {\n query: buddyQuery,\n onSubmit: getBuddyResults,\n onClear: () => {\n setSearchVal('');\n },\n title: buddyContent?.title ?? '',\n actions: buddyContent?.actions ?? [],\n content: buddyContent?.content ? (\n <HTML content={ArticleBuddyMockData.content} />\n ) : (\n buddyContent?.content\n ),\n references: buddyContent?.references,\n feedback: buddyFeedback,\n disclaimer: ArticleBuddyMockData.disclaimer,\n loading: buddyLoader\n }\n }}\n onQuickFilterClick={(quickFilterParam: QuickFilter) => {\n handleTabChange('Search');\n setQuickFilters([...quickFilters, quickFilterParam]);\n }}\n loading={loading}\n loadingMore={loadingMore}\n onLoadMore={args.showLoadMore && hasMore ? onLoadMore : undefined}\n />\n </div>\n );\n};\n\nArticleListDemo.args = {\n isSuggestArticleAction: true,\n showAction: true,\n showHeader: true,\n showHeaderIcon: true,\n showQuickFilters: true,\n showCount: true,\n showResults: true,\n showLoadMore: false\n};\n\nArticleListDemo.argTypes = {\n isSuggestArticleAction: { control: { type: 'boolean' } },\n showAction: { control: { type: 'boolean' } },\n showHeader: { control: { type: 'boolean' } },\n showHeaderIcon: { control: { type: 'boolean' } },\n showQuickFilters: { control: { type: 'boolean' } },\n showCount: { control: { type: 'boolean' } },\n showResults: { control: { type: 'boolean' } },\n showLoadMore: { control: { type: 'boolean' } }\n};\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pega/cosmos-react-demos",
3
- "version": "5.0.0-dev.13.0",
3
+ "version": "5.0.0-dev.14.0",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/pegasystems/cosmos-react.git",
@@ -19,12 +19,12 @@
19
19
  "build": "tsc -b tsconfig.build.json && tsc -b tsconfig.build-preserve.json"
20
20
  },
21
21
  "dependencies": {
22
- "@pega/cosmos-react-condition-builder": "5.0.0-dev.13.0",
23
- "@pega/cosmos-react-core": "5.0.0-dev.13.0",
24
- "@pega/cosmos-react-dnd": "5.0.0-dev.13.0",
25
- "@pega/cosmos-react-rte": "5.0.0-dev.13.0",
26
- "@pega/cosmos-react-social": "5.0.0-dev.13.0",
27
- "@pega/cosmos-react-work": "5.0.0-dev.13.0",
22
+ "@pega/cosmos-react-condition-builder": "5.0.0-dev.14.0",
23
+ "@pega/cosmos-react-core": "5.0.0-dev.14.0",
24
+ "@pega/cosmos-react-dnd": "5.0.0-dev.14.0",
25
+ "@pega/cosmos-react-rte": "5.0.0-dev.14.0",
26
+ "@pega/cosmos-react-social": "5.0.0-dev.14.0",
27
+ "@pega/cosmos-react-work": "5.0.0-dev.14.0",
28
28
  "@storybook/addon-actions": "~7.5.3",
29
29
  "@storybook/react": "~7.5.3",
30
30
  "@types/dompurify": "^3.0.5",