@pega/cosmos-react-social 9.0.0-build.9.3 → 9.0.0-build.9.5

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":"Feed.d.ts","sourceRoot":"","sources":["../../../src/components/Feed/Feed.tsx"],"names":[],"mappings":"AAiCA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAY9C,eAAO,MAAM,kBAAkB,4RAc7B,CAAC;AAyBH,QAAA,MAAM,IAAI,mHAsMT,CAAC;AAEF,eAAe,IAAI,CAAC"}
1
+ {"version":3,"file":"Feed.d.ts","sourceRoot":"","sources":["../../../src/components/Feed/Feed.tsx"],"names":[],"mappings":"AAiCA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAY9C,eAAO,MAAM,kBAAkB,4RAc7B,CAAC;AAyBH,QAAA,MAAM,IAAI,mHAuMT,CAAC;AAEF,eAAe,IAAI,CAAC"}
@@ -83,9 +83,9 @@ const Feed = forwardRef(function Feed(props, ref) {
83
83
  };
84
84
  }, []);
85
85
  const id = useUID();
86
- useItemIntersection(feedRef, posts.length - 1, () => {
86
+ useItemIntersection({ current: null }, posts.length - 1, () => {
87
87
  onLoadMore?.();
88
- }, `#${id} > article[role='none']`);
88
+ }, `#${id} > article[role='none']`, feedRef);
89
89
  useEffect(() => {
90
90
  if (loadingPosts) {
91
91
  announcePolite({ message: t('loading_post') });
@@ -1 +1 @@
1
- {"version":3,"file":"Feed.js","sourceRoot":"","sources":["../../../src/components/Feed/Feed.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useState, useRef, useEffect, forwardRef } from 'react';\nimport type { ChangeEvent, PropsWithoutRef, KeyboardEvent as ReactKeyboardEvent } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport {\n Button,\n Card,\n CardContent,\n CardHeader,\n defaultThemeProp,\n Flex,\n getFocusables,\n Icon,\n registerIcon,\n StyledCard,\n Switch,\n Text,\n Progress,\n usePrevious,\n useLiveLog,\n useItemIntersection,\n useUID,\n useConsolidatedRef,\n type RefElement\n} from '@pega/cosmos-react-core';\nimport { useArrows, useElement, useI18n, useOuterEvent } from '@pega/cosmos-react-core/lib/hooks';\nimport * as filterIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/filter.icon';\nimport * as filterOnIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/filter-on.icon';\nimport { StyledCardHeader } from '@pega/cosmos-react-core/lib/components/Card/CardHeader';\nimport Dialog from '@pega/cosmos-react-core/lib/components/Dialog/Dialog';\n\nimport { FeedContext } from './Feed.context';\nimport FeedButton from './FeedButton';\nimport type { FeedProps } from './Feed.types';\n\nregisterIcon(filterIcon, filterOnIcon);\n\nconst StyledFeed = styled.div`\n ${StyledCardHeader}:not(${StyledCard} ${StyledCard} > ${StyledCardHeader}) {\n padding-bottom: 0.25rem;\n }\n`;\n\nStyledFeed.defaultProps = defaultThemeProp;\n\nexport const StyledFilterDialog = styled(Dialog)(({ theme }) => {\n return css`\n min-width: fit-content;\n fieldset {\n padding-block-end: calc(2 * ${theme.base.spacing});\n border: none;\n max-height: inherit;\n\n legend {\n padding-block-start: calc(2 * ${theme.base.spacing});\n padding-inline: calc(2 * ${theme.base.spacing});\n }\n }\n `;\n});\n\nStyledFilterDialog.defaultProps = defaultThemeProp;\n\nconst StyledFilterList = styled.ul(({ theme }) => {\n return css`\n list-style-type: none;\n min-width: ${theme.base['content-width'].xs};\n padding-inline: calc(2 * ${theme.base.spacing});\n overflow: auto;\n `;\n});\n\nStyledFilterList.defaultProps = defaultThemeProp;\n\nconst StyledLoadMore = styled.div(({ theme }) => {\n return css`\n margin-top: ${theme.base.spacing};\n min-height: 2rem;\n min-width: 2rem;\n `;\n});\n\nStyledLoadMore.defaultProps = defaultThemeProp;\n\nconst Feed = forwardRef<RefElement<FeedProps>, PropsWithoutRef<FeedProps>>(\n function Feed(props, ref) {\n const {\n loadingPosts = false,\n children,\n userInfo,\n className,\n title,\n searchTypes,\n onDecoratorSearch,\n searchResults = [],\n autopilotInfo = {\n id: 'autopilot',\n label: 'Autopilot'\n },\n onAutopilotClick,\n onMentionClick,\n onMentionPreview,\n onTagClick,\n interactionRenderers = [],\n markdownMap,\n filters,\n onFilterChange,\n onLoadMore,\n onLinkRender,\n newPostRegion,\n posts = [],\n ...restProps\n } = props;\n const t = useI18n();\n const dialogRef = useRef<HTMLDivElement>(null);\n const [buttonEl, setButtonEl] = useElement<HTMLButtonElement>();\n const headingId = useUID();\n const dialogId = useUID();\n const [mountDialog, setMountDialog] = useState(false);\n const [showSearchResults, setShowSearchResults] = useState(false);\n const prevPosts = usePrevious(posts);\n const { announcePolite } = useLiveLog();\n\n const feedRef = useConsolidatedRef(ref);\n\n const filterRef = useRef(null);\n useArrows(filterRef);\n\n useOuterEvent('mousedown', [dialogRef, buttonEl], () => {\n setMountDialog(false);\n });\n\n useOuterEvent('focusin', [dialogRef, buttonEl], () => {\n setMountDialog(false);\n });\n\n const onKeydown = ({ key }: KeyboardEvent) => {\n if (key === 'Escape') setMountDialog(false);\n };\n\n useEffect(() => {\n document.addEventListener('keydown', onKeydown);\n return () => {\n document.removeEventListener('keydown', onKeydown);\n };\n }, []);\n\n const id = useUID();\n useItemIntersection(\n feedRef,\n posts.length - 1,\n () => {\n onLoadMore?.();\n },\n `#${id} > article[role='none']`\n );\n\n useEffect(() => {\n if (loadingPosts) {\n announcePolite({ message: t('loading_post') });\n }\n }, [loadingPosts]);\n\n useEffect(() => {\n if (prevPosts) {\n const difference = posts.length - prevPosts.length;\n if (difference < 0) announcePolite({ message: t('feed_post_removed') });\n else if (difference > 0) {\n announcePolite({\n message: t('feed_new_post_added', [difference], { count: difference })\n });\n }\n }\n }, [posts]);\n\n useEffect(() => {\n if (mountDialog) {\n setTimeout(() => {\n const focusables = getFocusables(filterRef);\n focusables[0]?.focus();\n }, 0);\n }\n }, [mountDialog]);\n\n return (\n <FeedContext.Provider\n // eslint-disable-next-line react/jsx-no-constructed-context-values\n value={{\n searchTypes,\n onSearch: onDecoratorSearch,\n searchResults,\n showSearchResults,\n setShowSearchResults,\n autopilotInfo,\n onLinkRender,\n onAutopilotClick,\n onMentionClick,\n onMentionPreview,\n onTagClick,\n interactionRenderers,\n markdownMap,\n userInfo,\n feedRef\n }}\n >\n <StyledFeed ref={feedRef} {...restProps}>\n <Card>\n <CardHeader>\n <Text variant='h2'>{title}</Text>\n {filters && filters.length > 0 && (\n <Button\n as={FeedButton}\n ref={setButtonEl}\n variant='simple'\n icon\n onClick={() => setMountDialog(curr => !curr)}\n label={t('filters')}\n aria-label={`${t('filters')} - ${t('pulse')}`}\n aria-expanded={!!filters && mountDialog}\n aria-owns={!!filters && mountDialog && buttonEl ? dialogId : undefined}\n emphasized\n >\n <Icon\n name={\n filters?.map(filter => !!filter.on).reduce((acc, curr) => acc || curr)\n ? 'filter-on'\n : 'filter'\n }\n />\n </Button>\n )}\n\n {!!filters && mountDialog && buttonEl && (\n <StyledFilterDialog\n ref={dialogRef}\n target={buttonEl}\n aria-labelledby={headingId}\n id={dialogId}\n onKeyDown={(event: ReactKeyboardEvent) => {\n if (event.key === 'Escape') {\n event.preventDefault();\n buttonEl?.focus();\n }\n }}\n >\n <Flex container={{ direction: 'column', gap: 2 }} as='fieldset'>\n <Text variant='h3' as='legend' id={headingId}>\n {t('filters')}\n </Text>\n <StyledFilterList ref={filterRef}>\n {filters?.map(filter => {\n return (\n <li key={filter.id}>\n <Switch\n {...filter}\n onChange={(event: ChangeEvent<HTMLInputElement>) =>\n onFilterChange?.(event.target.id, event.target.checked)\n }\n />\n </li>\n );\n })}\n </StyledFilterList>\n </Flex>\n </StyledFilterDialog>\n )}\n </CardHeader>\n\n <CardContent>{newPostRegion}</CardContent>\n </Card>\n\n <div id={id}>{posts}</div>\n\n {loadingPosts && (\n <Flex container={{ justify: 'center' }} as={StyledLoadMore}>\n <Progress placement='inline' />\n </Flex>\n )}\n </StyledFeed>\n </FeedContext.Provider>\n );\n }\n);\n\nexport default Feed;\n"]}
1
+ {"version":3,"file":"Feed.js","sourceRoot":"","sources":["../../../src/components/Feed/Feed.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAEhE,OAAO,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EACL,MAAM,EACN,IAAI,EACJ,WAAW,EACX,UAAU,EACV,gBAAgB,EAChB,IAAI,EACJ,aAAa,EACb,IAAI,EACJ,YAAY,EACZ,UAAU,EACV,MAAM,EACN,IAAI,EACJ,QAAQ,EACR,WAAW,EACX,UAAU,EACV,mBAAmB,EACnB,MAAM,EACN,kBAAkB,EAEnB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAClG,OAAO,KAAK,UAAU,MAAM,+DAA+D,CAAC;AAC5F,OAAO,KAAK,YAAY,MAAM,kEAAkE,CAAC;AACjG,OAAO,EAAE,gBAAgB,EAAE,MAAM,wDAAwD,CAAC;AAC1F,OAAO,MAAM,MAAM,sDAAsD,CAAC;AAE1E,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,UAAU,MAAM,cAAc,CAAC;AAGtC,YAAY,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;AAEvC,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAA;IACzB,gBAAgB,QAAQ,UAAU,IAAI,UAAU,MAAM,gBAAgB;;;CAGzE,CAAC;AAEF,UAAU,CAAC,YAAY,GAAG,gBAAgB,CAAC;AAE3C,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;IAC7D,OAAO,GAAG,CAAA;;;oCAGwB,KAAK,CAAC,IAAI,CAAC,OAAO;;;;;wCAKd,KAAK,CAAC,IAAI,CAAC,OAAO;mCACvB,KAAK,CAAC,IAAI,CAAC,OAAO;;;GAGlD,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,kBAAkB,CAAC,YAAY,GAAG,gBAAgB,CAAC;AAEnD,MAAM,gBAAgB,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;IAC/C,OAAO,GAAG,CAAA;;iBAEK,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,EAAE;+BAChB,KAAK,CAAC,IAAI,CAAC,OAAO;;GAE9C,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,gBAAgB,CAAC,YAAY,GAAG,gBAAgB,CAAC;AAEjD,MAAM,cAAc,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;IAC9C,OAAO,GAAG,CAAA;kBACM,KAAK,CAAC,IAAI,CAAC,OAAO;;;GAGjC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,cAAc,CAAC,YAAY,GAAG,gBAAgB,CAAC;AAE/C,MAAM,IAAI,GAAG,UAAU,CACrB,SAAS,IAAI,CAAC,KAAK,EAAE,GAAG;IACtB,MAAM,EACJ,YAAY,GAAG,KAAK,EACpB,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,KAAK,EACL,WAAW,EACX,iBAAiB,EACjB,aAAa,GAAG,EAAE,EAClB,aAAa,GAAG;QACd,EAAE,EAAE,WAAW;QACf,KAAK,EAAE,WAAW;KACnB,EACD,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,UAAU,EACV,oBAAoB,GAAG,EAAE,EACzB,WAAW,EACX,OAAO,EACP,cAAc,EACd,UAAU,EACV,YAAY,EACZ,aAAa,EACb,KAAK,GAAG,EAAE,EACV,GAAG,SAAS,EACb,GAAG,KAAK,CAAC;IACV,MAAM,CAAC,GAAG,OAAO,EAAE,CAAC;IACpB,MAAM,SAAS,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IAC/C,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,UAAU,EAAqB,CAAC;IAChE,MAAM,SAAS,GAAG,MAAM,EAAE,CAAC;IAC3B,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC;IAC1B,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACtD,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClE,MAAM,SAAS,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IACrC,MAAM,EAAE,cAAc,EAAE,GAAG,UAAU,EAAE,CAAC;IAExC,MAAM,OAAO,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;IAExC,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IAC/B,SAAS,CAAC,SAAS,CAAC,CAAC;IAErB,aAAa,CAAC,WAAW,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,GAAG,EAAE;QACrD,cAAc,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,aAAa,CAAC,SAAS,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,GAAG,EAAE;QACnD,cAAc,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,MAAM,SAAS,GAAG,CAAC,EAAE,GAAG,EAAiB,EAAE,EAAE;QAC3C,IAAI,GAAG,KAAK,QAAQ;YAAE,cAAc,CAAC,KAAK,CAAC,CAAC;IAC9C,CAAC,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE;QACb,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAChD,OAAO,GAAG,EAAE;YACV,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QACrD,CAAC,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC;IACpB,mBAAmB,CACjB,EAAE,OAAO,EAAE,IAAI,EAAE,EACjB,KAAK,CAAC,MAAM,GAAG,CAAC,EAChB,GAAG,EAAE;QACH,UAAU,EAAE,EAAE,CAAC;IACjB,CAAC,EACD,IAAI,EAAE,yBAAyB,EAC/B,OAAO,CACR,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,YAAY,EAAE,CAAC;YACjB,cAAc,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;QACjD,CAAC;IACH,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;IAEnB,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;YACnD,IAAI,UAAU,GAAG,CAAC;gBAAE,cAAc,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC;iBACnE,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;gBACxB,cAAc,CAAC;oBACb,OAAO,EAAE,CAAC,CAAC,qBAAqB,EAAE,CAAC,UAAU,CAAC,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;iBACvE,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAEZ,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,WAAW,EAAE,CAAC;YAChB,UAAU,CAAC,GAAG,EAAE;gBACd,MAAM,UAAU,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;gBAC5C,UAAU,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;YACzB,CAAC,EAAE,CAAC,CAAC,CAAC;QACR,CAAC;IACH,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;IAElB,OAAO,CACL,KAAC,WAAW,CAAC,QAAQ;IACnB,mEAAmE;;QAAnE,mEAAmE;QACnE,KAAK,EAAE;YACL,WAAW;YACX,QAAQ,EAAE,iBAAiB;YAC3B,aAAa;YACb,iBAAiB;YACjB,oBAAoB;YACpB,aAAa;YACb,YAAY;YACZ,gBAAgB;YAChB,cAAc;YACd,gBAAgB;YAChB,UAAU;YACV,oBAAoB;YACpB,WAAW;YACX,QAAQ;YACR,OAAO;SACR,YAED,MAAC,UAAU,IAAC,GAAG,EAAE,OAAO,KAAM,SAAS,aACrC,MAAC,IAAI,eACH,MAAC,UAAU,eACT,KAAC,IAAI,IAAC,OAAO,EAAC,IAAI,YAAE,KAAK,GAAQ,EAChC,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,CAChC,KAAC,MAAM,IACL,EAAE,EAAE,UAAU,EACd,GAAG,EAAE,WAAW,EAChB,OAAO,EAAC,QAAQ,EAChB,IAAI,QACJ,OAAO,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,EAC5C,KAAK,EAAE,CAAC,CAAC,SAAS,CAAC,gBACP,GAAG,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,mBAC9B,CAAC,CAAC,OAAO,IAAI,WAAW,eAC5B,CAAC,CAAC,OAAO,IAAI,WAAW,IAAI,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,EACtE,UAAU,kBAEV,KAAC,IAAI,IACH,IAAI,EACF,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,IAAI,IAAI,CAAC;4CACpE,CAAC,CAAC,WAAW;4CACb,CAAC,CAAC,QAAQ,GAEd,GACK,CACV,EAEA,CAAC,CAAC,OAAO,IAAI,WAAW,IAAI,QAAQ,IAAI,CACvC,KAAC,kBAAkB,IACjB,GAAG,EAAE,SAAS,EACd,MAAM,EAAE,QAAQ,qBACC,SAAS,EAC1B,EAAE,EAAE,QAAQ,EACZ,SAAS,EAAE,CAAC,KAAyB,EAAE,EAAE;wCACvC,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;4CAC3B,KAAK,CAAC,cAAc,EAAE,CAAC;4CACvB,QAAQ,EAAE,KAAK,EAAE,CAAC;wCACpB,CAAC;oCACH,CAAC,YAED,MAAC,IAAI,IAAC,SAAS,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,EAAC,UAAU,aAC7D,KAAC,IAAI,IAAC,OAAO,EAAC,IAAI,EAAC,EAAE,EAAC,QAAQ,EAAC,EAAE,EAAE,SAAS,YACzC,CAAC,CAAC,SAAS,CAAC,GACR,EACP,KAAC,gBAAgB,IAAC,GAAG,EAAE,SAAS,YAC7B,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE;oDACrB,OAAO,CACL,uBACE,KAAC,MAAM,OACD,MAAM,EACV,QAAQ,EAAE,CAAC,KAAoC,EAAE,EAAE,CACjD,cAAc,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,GAEzD,IANK,MAAM,CAAC,EAAE,CAOb,CACN,CAAC;gDACJ,CAAC,CAAC,GACe,IACd,GACY,CACtB,IACU,EAEb,KAAC,WAAW,cAAE,aAAa,GAAe,IACrC,EAEP,cAAK,EAAE,EAAE,EAAE,YAAG,KAAK,GAAO,EAEzB,YAAY,IAAI,CACf,KAAC,IAAI,IAAC,SAAS,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,cAAc,YACxD,KAAC,QAAQ,IAAC,SAAS,EAAC,QAAQ,GAAG,GAC1B,CACR,IACU,GACQ,CACxB,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,eAAe,IAAI,CAAC","sourcesContent":["import { useState, useRef, useEffect, forwardRef } from 'react';\nimport type { ChangeEvent, PropsWithoutRef, KeyboardEvent as ReactKeyboardEvent } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport {\n Button,\n Card,\n CardContent,\n CardHeader,\n defaultThemeProp,\n Flex,\n getFocusables,\n Icon,\n registerIcon,\n StyledCard,\n Switch,\n Text,\n Progress,\n usePrevious,\n useLiveLog,\n useItemIntersection,\n useUID,\n useConsolidatedRef,\n type RefElement\n} from '@pega/cosmos-react-core';\nimport { useArrows, useElement, useI18n, useOuterEvent } from '@pega/cosmos-react-core/lib/hooks';\nimport * as filterIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/filter.icon';\nimport * as filterOnIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/filter-on.icon';\nimport { StyledCardHeader } from '@pega/cosmos-react-core/lib/components/Card/CardHeader';\nimport Dialog from '@pega/cosmos-react-core/lib/components/Dialog/Dialog';\n\nimport { FeedContext } from './Feed.context';\nimport FeedButton from './FeedButton';\nimport type { FeedProps } from './Feed.types';\n\nregisterIcon(filterIcon, filterOnIcon);\n\nconst StyledFeed = styled.div`\n ${StyledCardHeader}:not(${StyledCard} ${StyledCard} > ${StyledCardHeader}) {\n padding-bottom: 0.25rem;\n }\n`;\n\nStyledFeed.defaultProps = defaultThemeProp;\n\nexport const StyledFilterDialog = styled(Dialog)(({ theme }) => {\n return css`\n min-width: fit-content;\n fieldset {\n padding-block-end: calc(2 * ${theme.base.spacing});\n border: none;\n max-height: inherit;\n\n legend {\n padding-block-start: calc(2 * ${theme.base.spacing});\n padding-inline: calc(2 * ${theme.base.spacing});\n }\n }\n `;\n});\n\nStyledFilterDialog.defaultProps = defaultThemeProp;\n\nconst StyledFilterList = styled.ul(({ theme }) => {\n return css`\n list-style-type: none;\n min-width: ${theme.base['content-width'].xs};\n padding-inline: calc(2 * ${theme.base.spacing});\n overflow: auto;\n `;\n});\n\nStyledFilterList.defaultProps = defaultThemeProp;\n\nconst StyledLoadMore = styled.div(({ theme }) => {\n return css`\n margin-top: ${theme.base.spacing};\n min-height: 2rem;\n min-width: 2rem;\n `;\n});\n\nStyledLoadMore.defaultProps = defaultThemeProp;\n\nconst Feed = forwardRef<RefElement<FeedProps>, PropsWithoutRef<FeedProps>>(\n function Feed(props, ref) {\n const {\n loadingPosts = false,\n children,\n userInfo,\n className,\n title,\n searchTypes,\n onDecoratorSearch,\n searchResults = [],\n autopilotInfo = {\n id: 'autopilot',\n label: 'Autopilot'\n },\n onAutopilotClick,\n onMentionClick,\n onMentionPreview,\n onTagClick,\n interactionRenderers = [],\n markdownMap,\n filters,\n onFilterChange,\n onLoadMore,\n onLinkRender,\n newPostRegion,\n posts = [],\n ...restProps\n } = props;\n const t = useI18n();\n const dialogRef = useRef<HTMLDivElement>(null);\n const [buttonEl, setButtonEl] = useElement<HTMLButtonElement>();\n const headingId = useUID();\n const dialogId = useUID();\n const [mountDialog, setMountDialog] = useState(false);\n const [showSearchResults, setShowSearchResults] = useState(false);\n const prevPosts = usePrevious(posts);\n const { announcePolite } = useLiveLog();\n\n const feedRef = useConsolidatedRef(ref);\n\n const filterRef = useRef(null);\n useArrows(filterRef);\n\n useOuterEvent('mousedown', [dialogRef, buttonEl], () => {\n setMountDialog(false);\n });\n\n useOuterEvent('focusin', [dialogRef, buttonEl], () => {\n setMountDialog(false);\n });\n\n const onKeydown = ({ key }: KeyboardEvent) => {\n if (key === 'Escape') setMountDialog(false);\n };\n\n useEffect(() => {\n document.addEventListener('keydown', onKeydown);\n return () => {\n document.removeEventListener('keydown', onKeydown);\n };\n }, []);\n\n const id = useUID();\n useItemIntersection(\n { current: null },\n posts.length - 1,\n () => {\n onLoadMore?.();\n },\n `#${id} > article[role='none']`,\n feedRef\n );\n\n useEffect(() => {\n if (loadingPosts) {\n announcePolite({ message: t('loading_post') });\n }\n }, [loadingPosts]);\n\n useEffect(() => {\n if (prevPosts) {\n const difference = posts.length - prevPosts.length;\n if (difference < 0) announcePolite({ message: t('feed_post_removed') });\n else if (difference > 0) {\n announcePolite({\n message: t('feed_new_post_added', [difference], { count: difference })\n });\n }\n }\n }, [posts]);\n\n useEffect(() => {\n if (mountDialog) {\n setTimeout(() => {\n const focusables = getFocusables(filterRef);\n focusables[0]?.focus();\n }, 0);\n }\n }, [mountDialog]);\n\n return (\n <FeedContext.Provider\n // eslint-disable-next-line react/jsx-no-constructed-context-values\n value={{\n searchTypes,\n onSearch: onDecoratorSearch,\n searchResults,\n showSearchResults,\n setShowSearchResults,\n autopilotInfo,\n onLinkRender,\n onAutopilotClick,\n onMentionClick,\n onMentionPreview,\n onTagClick,\n interactionRenderers,\n markdownMap,\n userInfo,\n feedRef\n }}\n >\n <StyledFeed ref={feedRef} {...restProps}>\n <Card>\n <CardHeader>\n <Text variant='h2'>{title}</Text>\n {filters && filters.length > 0 && (\n <Button\n as={FeedButton}\n ref={setButtonEl}\n variant='simple'\n icon\n onClick={() => setMountDialog(curr => !curr)}\n label={t('filters')}\n aria-label={`${t('filters')} - ${t('pulse')}`}\n aria-expanded={!!filters && mountDialog}\n aria-owns={!!filters && mountDialog && buttonEl ? dialogId : undefined}\n emphasized\n >\n <Icon\n name={\n filters?.map(filter => !!filter.on).reduce((acc, curr) => acc || curr)\n ? 'filter-on'\n : 'filter'\n }\n />\n </Button>\n )}\n\n {!!filters && mountDialog && buttonEl && (\n <StyledFilterDialog\n ref={dialogRef}\n target={buttonEl}\n aria-labelledby={headingId}\n id={dialogId}\n onKeyDown={(event: ReactKeyboardEvent) => {\n if (event.key === 'Escape') {\n event.preventDefault();\n buttonEl?.focus();\n }\n }}\n >\n <Flex container={{ direction: 'column', gap: 2 }} as='fieldset'>\n <Text variant='h3' as='legend' id={headingId}>\n {t('filters')}\n </Text>\n <StyledFilterList ref={filterRef}>\n {filters?.map(filter => {\n return (\n <li key={filter.id}>\n <Switch\n {...filter}\n onChange={(event: ChangeEvent<HTMLInputElement>) =>\n onFilterChange?.(event.target.id, event.target.checked)\n }\n />\n </li>\n );\n })}\n </StyledFilterList>\n </Flex>\n </StyledFilterDialog>\n )}\n </CardHeader>\n\n <CardContent>{newPostRegion}</CardContent>\n </Card>\n\n <div id={id}>{posts}</div>\n\n {loadingPosts && (\n <Flex container={{ justify: 'center' }} as={StyledLoadMore}>\n <Progress placement='inline' />\n </Flex>\n )}\n </StyledFeed>\n </FeedContext.Provider>\n );\n }\n);\n\nexport default Feed;\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pega/cosmos-react-social",
3
- "version": "9.0.0-build.9.3",
3
+ "version": "9.0.0-build.9.5",
4
4
  "license": "SEE LICENSE IN LICENSE",
5
5
  "author": "Pegasystems",
6
6
  "sideEffects": [
@@ -17,9 +17,9 @@
17
17
  "build": "tsc -b tsconfig.build.json"
18
18
  },
19
19
  "dependencies": {
20
- "@pega/cosmos-react-core": "9.0.0-build.9.3",
21
- "@pega/cosmos-react-rte": "9.0.0-build.9.3",
22
- "@pega/cosmos-react-work": "9.0.0-build.9.3",
20
+ "@pega/cosmos-react-core": "9.0.0-build.9.5",
21
+ "@pega/cosmos-react-rte": "9.0.0-build.9.5",
22
+ "@pega/cosmos-react-work": "9.0.0-build.9.5",
23
23
  "@types/parse5": "^6.0.0",
24
24
  "@types/react": "^17.0.62 || ^18.3.3",
25
25
  "@types/react-dom": "^17.0.20 || ^18.3.0",