@telia-ace/knowledge-widget-ui 1.0.20 → 1.0.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/index.d.ts +0 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.js +385 -474
- package/dist/index.js.map +1 -1
- package/dist/styles.d.ts +1 -0
- package/dist/utils/guide-render-instructions.d.ts +2 -0
- package/package.json +5 -5
- package/dist/components/notification-list.d.ts +0 -19
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/components/dialog-link.tsx","../src/components/dialog-list.tsx","../src/components/drawer-list.tsx","../src/components/dropdown-actions.tsx","../src/components/dropdown-list.tsx","../src/components/loader.tsx","../src/styles.ts","../src/components/favorite-button.tsx","../src/components/feedback.tsx","../src/hooks/use-arrow-keys.ts","../src/hooks/use-debounce.ts","../src/hooks/use-favorites.ts","../src/hooks/use-hover.ts","../src/components/metadata.tsx","../src/components/guide-list.tsx","../src/components/notification-list.tsx","../src/utils/embedded-link-mapper.tsx","../src/utils/guide-render-instructions.tsx"],"sourcesContent":["import { Icon, Link, useRouteData } from '@telia-ace/widget-ui';\r\nimport { appendClassNames, createParams, formatUrl } from '@telia-ace/widget-utilities';\r\nimport React from 'react';\r\nimport { LinkProps } from '../missing-type-exports';\r\n\r\nexport type Props = Merge<\r\n LinkProps,\r\n {\r\n parent: {\r\n id: string;\r\n title: string;\r\n };\r\n type: 'guide' | 'link' | 'default';\r\n connection?: string;\r\n }\r\n>;\r\n\r\nconst DialogLink: React.FC<Props> = ({\r\n title = '',\r\n className,\r\n id,\r\n parent,\r\n connection,\r\n type,\r\n target,\r\n href,\r\n children,\r\n}) => {\r\n const props: any = {};\r\n const { name, params } = useRouteData();\r\n\r\n switch (type) {\r\n case 'default':\r\n case 'guide':\r\n const { id: parentId, title: parentTitle } = parent;\r\n props.routeName = name;\r\n props.params = createParams({\r\n ...params,\r\n guide: id,\r\n connection: id === parentId ? connection : undefined,\r\n uriName: id === parentId ? formatUrl(parentTitle) : formatUrl(title),\r\n });\r\n break;\r\n case 'link':\r\n props.href = href;\r\n props.target = target;\r\n break;\r\n }\r\n\r\n return (\r\n <Link className={appendClassNames(className, 'humany-dialog-link')} {...props}>\r\n {children || (\r\n <>\r\n {type === 'link' && <Icon faIcon=\"link\" />}\r\n <span>{title}</span>\r\n </>\r\n )}\r\n </Link>\r\n );\r\n};\r\n\r\nexport default DialogLink;\r\n","import { invertedHoverButton, List, list } from '@telia-ace/widget-ui';\r\nimport { appendClassNames } from '@telia-ace/widget-utilities';\r\nimport React, { forwardRef } from 'react';\r\nimport styled from 'styled-components';\r\nimport DialogLink, { Props as DialogLinkProps } from './dialog-link';\r\n\r\ntype Props = Merge<\r\n React.ComponentProps<'ul'>,\r\n {\r\n dialog: DialogLinkProps[];\r\n }\r\n>;\r\n\r\nexport default forwardRef<HTMLUListElement, Props>(({ className, dialog, ...other }, ref) => {\r\n return !!dialog.length ? (\r\n <StyledList\r\n className={appendClassNames(className, 'humany-dialog')}\r\n items={dialog}\r\n renderItem={(item: DialogLinkProps) => (\r\n <li key={item.connection} data-dialog={item.connection}>\r\n <DialogLink {...item} />\r\n </li>\r\n )}\r\n {...other}\r\n ref={ref}\r\n />\r\n ) : null;\r\n});\r\n\r\nconst StyledList = styled(List)`\r\n ${list}\r\n a {\r\n min-width: 150px;\r\n max-width: 400px;\r\n display: block;\r\n white-space: normal;\r\n ${(p) =>\r\n invertedHoverButton({\r\n primaryColor: p.theme.colors?.primary,\r\n secondaryColor: '#FFFFFF',\r\n })}\r\n }\r\n\r\n i {\r\n margin: 0 ${(p) => p.theme.sizes?.small} 0 0;\r\n }\r\n`;\r\n","import { Drawer, ItemList, itemList } from '@telia-ace/widget-ui';\r\nimport { appendClassNames } from '@telia-ace/widget-utilities';\r\nimport React from 'react';\r\nimport styled from 'styled-components';\r\nimport { DrawerProps, ItemListProps } from '../missing-type-exports';\r\n\r\ntype Props = Merge<ItemListProps, DrawerProps>;\r\n\r\nconst DrawerList: React.FC<Props> = ({\r\n trigger,\r\n header,\r\n className,\r\n animation,\r\n fullScreen,\r\n onToggle,\r\n children,\r\n ref,\r\n closeButtonAriaLabel,\r\n ...other\r\n}) => {\r\n return (\r\n <Drawer\r\n className={appendClassNames(className, 'humany-drawer-list')}\r\n trigger={trigger}\r\n header={header}\r\n animation={animation}\r\n fullScreen={fullScreen}\r\n onToggle={onToggle}\r\n closeButtonAriaLabel={closeButtonAriaLabel}\r\n >\r\n <StyledItemList {...other}>{children}</StyledItemList>\r\n </Drawer>\r\n );\r\n};\r\n\r\nexport default DrawerList;\r\n\r\nconst StyledItemList = styled(ItemList)<any>`\r\n ${itemList}\r\n font-family: ${(p) => p.theme.fonts?.type};\r\n padding: ${(p) => p.theme.sizes?.medium};\r\n > ul > li {\r\n overflow: visible;\r\n font-weight: 300;\r\n font-size: ${(p) => p.theme.fonts?.normal};\r\n }\r\n`;\r\n","import { Dropdown, ItemRenderer, List } from '@telia-ace/widget-ui';\r\nimport React from 'react';\r\nimport styled from 'styled-components';\r\n\r\ntype Props = {\r\n trigger: React.ReactElement;\r\n header?: React.ReactElement;\r\n items?: any[];\r\n renderItem?: ItemRenderer;\r\n className?: string;\r\n};\r\n\r\nconst DropdownActions: React.FC<Props> = ({ items, renderItem, trigger, header, children }) => {\r\n return (\r\n <Dropdown className=\"humany-dropdown-actions\" trigger={trigger}>\r\n <Wrapper>\r\n {!!header && <Header>{header}</Header>}\r\n {items && renderItem && (\r\n <StyledList items={items} renderItem={renderItem}></StyledList>\r\n )}\r\n {children}\r\n </Wrapper>\r\n </Dropdown>\r\n );\r\n};\r\n\r\nexport default DropdownActions;\r\n\r\nconst Wrapper = styled.div`\r\n background: #fff;\r\n border: #ccc 1px solid;\r\n box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.1);\r\n font-family: ${(p) => p.theme.fonts?.type};\r\n font-size: ${(p) => p.theme.fonts?.normal};\r\n`;\r\n\r\nconst Header = styled.div`\r\n padding: ${(p) => p.theme.sizes.normal};\r\n padding-bottom: 0;\r\n font-size: ${(p) => p.theme.fonts?.normal};\r\n font-weight: normal;\r\n white-space: nowrap;\r\n display: flex;\r\n align-items: center;\r\n\r\n h1,\r\n h2,\r\n h3,\r\n h4,\r\n h5,\r\n h6 {\r\n margin: 0;\r\n font-weight: normal;\r\n padding-bottom: 0;\r\n }\r\n\r\n svg,\r\n i {\r\n margin-right: ${(p) => p.theme.sizes.small};\r\n }\r\n`;\r\n\r\nconst StyledList = styled(List)`\r\n list-style: none;\r\n padding: 0;\r\n margin: 0;\r\n padding: ${(p) => p.theme.sizes.small} 0;\r\n\r\n li {\r\n background: #fff;\r\n\r\n a {\r\n display: block;\r\n font-size: ${(p) => p.theme.fonts?.small};\r\n padding: ${(p) => `${p.theme.sizes?.small} ${p.theme.sizes?.normal}`};\r\n cursor: pointer;\r\n color: #555;\r\n text-decoration: none;\r\n\r\n &:hover {\r\n background: #f9f9f9;\r\n color: ${(p) => p.theme.colors?.primary};\r\n }\r\n }\r\n }\r\n`;\r\n","import { Dropdown, headingElement, ItemList, itemList } from '@telia-ace/widget-ui';\r\nimport { appendClassNames } from '@telia-ace/widget-utilities';\r\nimport React from 'react';\r\nimport styled, { css } from 'styled-components';\r\nimport { DropdownProps, ItemListProps } from '../missing-type-exports';\r\n\r\nexport type Props = Merge<DropdownProps, ItemListProps>;\r\n\r\nconst DropdownList: React.FC<Props> = ({\r\n trigger,\r\n className,\r\n children,\r\n closeButtonAriaLabel,\r\n ...other\r\n}) => {\r\n return (\r\n <Dropdown\r\n className={appendClassNames(className, 'humany-dropdown-list')}\r\n closeButtonAriaLabel={closeButtonAriaLabel}\r\n trigger={trigger}\r\n >\r\n <StyledItemList {...other}>{children}</StyledItemList>\r\n </Dropdown>\r\n );\r\n};\r\n\r\nexport default DropdownList;\r\n\r\nconst StyledItemList = styled(ItemList)<any>`\r\n ${itemList}\r\n font-family: ${(p) => p.theme.fonts?.type};\r\n > div {\r\n ${headingElement(\r\n '> h1',\r\n css`\r\n font-size: ${(p) => p.theme.fonts?.normal};\r\n line-height: 1.2em;\r\n `\r\n )}\r\n }\r\n > ul > li {\r\n overflow: visible;\r\n font-weight: 300;\r\n font-size: ${(p) => p.theme.fonts?.normal};\r\n\r\n a {\r\n display: inline-block;\r\n\r\n @media (hover: hover) {\r\n &:hover {\r\n text-decoration: underline;\r\n }\r\n }\r\n }\r\n }\r\n`;\r\n","import React from 'react';\r\nimport styled, { keyframes } from 'styled-components';\r\n\r\ntype Props = {\r\n loading: boolean | undefined;\r\n};\r\n\r\nconst spin = keyframes`\r\n 100% {\r\n transform: rotate(360deg);\r\n }\r\n`;\r\n\r\nconst dash = keyframes`\r\n 0% {\r\n stroke-dasharray: 1, 200;\r\n stroke-dashoffset: 0;\r\n }\r\n 50% {\r\n stroke-dasharray: 89, 200;\r\n stroke-dashoffset: -35px;\r\n }\r\n 100% {\r\n stroke-dasharray: 89, 200;\r\n stroke-dashoffset: -124px;\r\n }\r\n`;\r\n\r\nconst SpinnerSvg = styled.svg`\r\n animation: ${spin} 2s linear infinite;\r\n height: 100%;\r\n transform-origin: center center;\r\n width: 100%;\r\n position: absolute;\r\n top: 0;\r\n bottom: 0;\r\n left: 0;\r\n right: 0;\r\n margin: auto;\r\n transition: 200ms ease-out opacity;\r\n`;\r\n\r\nexport const Wrapper = styled.div<{ 'data-loading': boolean }>`\r\n position: absolute;\r\n top: 0;\r\n bottom: 0;\r\n left: 0;\r\n right: 0;\r\n height: 100%;\r\n width: 100%;\r\n pointer-events: ${(p) => (p['data-loading'] ? 'all' : 'none')}\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: center;\r\n transition: 200ms ease-out opacity;\r\n box-sizing: border-box;\r\n overflow: hidden;\r\n ${SpinnerSvg} {\r\n opacity: ${(p) => (p['data-loading'] ? '1' : '0')}\r\n }\r\n`;\r\n\r\nconst Spinner = styled.div`\r\n position: relative;\r\n margin: 0 auto;\r\n width: 100px;\r\n &:before {\r\n content: '';\r\n display: block;\r\n padding-top: 100%;\r\n }\r\n`;\r\n\r\nconst SpinnerCircle = styled.circle`\r\n stroke-dasharray: 1, 200;\r\n stroke-dashoffset: 0;\r\n animation: ${dash} 1.5s ease-in-out infinite;\r\n stroke-linecap: round;\r\n stroke: ${(p) => p.theme.colors?.primary};\r\n stroke-width: 2px;\r\n`;\r\n\r\nconst Loader: React.SFC<Props> = ({ loading = false }) => {\r\n return (\r\n <Wrapper className=\"humany-loader\" data-loading={loading}>\r\n <Spinner className=\"humany-spinner\">\r\n <SpinnerSvg viewBox=\"25 25 50 50\">\r\n <SpinnerCircle\r\n cx=\"50\"\r\n cy=\"50\"\r\n r=\"20\"\r\n fill=\"none\"\r\n stroke-width=\"2\"\r\n stroke-miterlimit=\"10\"\r\n />\r\n </SpinnerSvg>\r\n </Spinner>\r\n </Wrapper>\r\n );\r\n};\r\n\r\nexport default Loader;\r\n","import { Button, Icon, paddedBorderTabStyle, Text } from '@telia-ace/widget-ui';\r\nimport styled, { css } from 'styled-components';\r\nimport { Wrapper as LoaderWrapper } from './components/loader';\r\n\r\nexport const loadingOpacity = css<{ 'data-loading': boolean }>`\r\n ${(p) => p['data-loading'] && 'position: relative;'};\r\n ${(p) => p['data-loading'] && 'min-height: 150px;'}\r\n > * {\r\n transition: 200ms ease-out opacity;\r\n opacity: ${(p) => (p['data-loading'] ? '0.5' : '1')};\r\n }\r\n ${LoaderWrapper} {\r\n opacity: ${(p) => (p['data-loading'] ? '1' : '0')};\r\n }\r\n`;\r\n\r\nexport const SmallCaret = styled(Icon)`\r\n && {\r\n font-size: ${(p) => p.theme.fonts?.small};\r\n }\r\n width: 1.2em;\r\n`;\r\n\r\nexport const StyledHeaderText = styled(Text)`\r\n font-size: ${(p) => p.theme.fonts?.medium};\r\n font-weight: normal;\r\n line-height: 1.2em;\r\n color: ${(p) => p.theme.colors?.text};\r\n`;\r\n\r\nexport const StyledListButton = styled(Button)<any>`\r\n display: flex;\r\n align-items: center;\r\n\r\n ${(p: any) =>\r\n p['data-has-label'] === 'true' &&\r\n p['data-has-symbol'] === 'true' &&\r\n `\r\n svg, i {\r\n margin: 0 ${p.theme.sizes?.small} 0 0;\r\n }\r\n `}\r\n\r\n &:focus {\r\n ${(p: any) =>\r\n p.theme.accessibility?.isTabbing &&\r\n css`\r\n ${(p: any) => p['data-has-label'] === 'true' && paddedBorderTabStyle}\r\n\r\n svg, i {\r\n ${(p: any) =>\r\n p['data-has-label'] === 'false' &&\r\n p['data-has-symbol'] === 'true' &&\r\n css`\r\n ${paddedBorderTabStyle}\r\n box-sizing: content-box;\r\n `}\r\n }\r\n `};\r\n }\r\n\r\n span {\r\n flex: 1;\r\n font-weight: 300;\r\n }\r\n`;\r\n","import { Confirm, StyledText, SymbolBadge } from '@telia-ace/widget-ui';\r\nimport React, { useCallback } from 'react';\r\nimport styled, { css } from 'styled-components';\r\nimport { FavoriteActions } from '../hooks';\r\nimport { StyledListButton } from '../styles';\r\n\r\ntype Props = {\r\n isFavorite: boolean;\r\n actions: FavoriteActions;\r\n id: string;\r\n addFavoriteTooltip?: string;\r\n removeFavoriteCancelLabel?: string;\r\n removeFavoriteConfirmLabel?: string;\r\n removeFavoriteHeader?: string;\r\n removeFavoriteLabel?: string;\r\n removeFavoriteTooltip?: string;\r\n buttonLabel?: string;\r\n guideTitle?: string;\r\n};\r\n\r\nconst FavoriteButton: React.FC<Props> = ({\r\n addFavoriteTooltip,\r\n removeFavoriteCancelLabel,\r\n removeFavoriteConfirmLabel,\r\n removeFavoriteHeader,\r\n removeFavoriteLabel,\r\n removeFavoriteTooltip,\r\n id,\r\n isFavorite,\r\n guideTitle,\r\n buttonLabel = '',\r\n actions: { addFavorite, removeFavorite },\r\n}) => {\r\n const remove = useCallback(() => {\r\n removeFavorite(id);\r\n }, [id, removeFavorite]);\r\n\r\n const add = useCallback(() => {\r\n addFavorite(id);\r\n }, [id, addFavorite]);\r\n\r\n const tooltip = `${isFavorite ? removeFavoriteTooltip : addFavoriteTooltip}${\r\n guideTitle ? `: \"${guideTitle}\"` : ''\r\n }`;\r\n\r\n return (\r\n <>\r\n {isFavorite ? (\r\n <Confirm\r\n trigger={\r\n <StyledButton\r\n className=\"humany-favorite-button\"\r\n title={tooltip}\r\n aria-label={tooltip}\r\n data-favorite=\"true\"\r\n data-has-label={buttonLabel ? 'true' : 'false'}\r\n data-has-symbol=\"true\"\r\n >\r\n <SymbolBadge\r\n size={16}\r\n symbol={{ type: 'Svg', content: 'star-empty' }}\r\n />\r\n {buttonLabel && <StyledText>{buttonLabel}</StyledText>}\r\n </StyledButton>\r\n }\r\n onConfirm={remove}\r\n cancelLabel={removeFavoriteCancelLabel}\r\n confirmLabel={removeFavoriteConfirmLabel}\r\n header={removeFavoriteHeader}\r\n text={removeFavoriteLabel}\r\n />\r\n ) : (\r\n <StyledButton\r\n className=\"humany-favorite-button\"\r\n title={tooltip}\r\n aria-label={tooltip}\r\n onClick={add}\r\n data-favorite=\"false\"\r\n data-has-label={buttonLabel ? 'true' : 'false'}\r\n data-has-symbol=\"true\"\r\n >\r\n <SymbolBadge size={16} symbol={{ type: 'Svg', content: 'star-empty' }} />\r\n {buttonLabel && <StyledText>{buttonLabel}</StyledText>}\r\n </StyledButton>\r\n )}\r\n </>\r\n );\r\n};\r\n\r\nexport default FavoriteButton;\r\n\r\nconst StyledButton = styled(StyledListButton)<any>`\r\n grid-area: favorite;\r\n\r\n &:focus {\r\n ${(p: any) =>\r\n p.theme.accessibility?.isTabbing &&\r\n css`\r\n svg {\r\n ${(p: any) =>\r\n p['data-favorite'] === 'true'\r\n ? `\r\n fill: transparent;\r\n\r\n path {\r\n fill: transparent;\r\n }\r\n `\r\n : `\r\n fill: ${p.theme.colors?.text};\r\n\r\n path {\r\n fill: ${p.theme.colors?.text};\r\n }\r\n `}\r\n }\r\n `};\r\n }\r\n\r\n ${(p: any) =>\r\n p.theme.colors?.text &&\r\n css`\r\n svg {\r\n stroke: ${p.theme.colors?.text};\r\n\r\n path {\r\n stroke: ${p.theme.colors?.text};\r\n }\r\n\r\n ${p['data-favorite'] === 'true' &&\r\n `\r\n fill: ${p.theme.colors?.text};\r\n\r\n path {\r\n fill: ${p.theme.colors?.text};\r\n }\r\n `}\r\n }\r\n\r\n &:hover {\r\n svg {\r\n ${p['data-favorite'] === 'true'\r\n ? `\r\n fill: transparent;\r\n\r\n path {\r\n fill: transparent;\r\n }\r\n `\r\n : `\r\n fill: ${p.theme.colors?.text};\r\n\r\n path {\r\n fill: ${p.theme.colors?.text};\r\n }\r\n `}\r\n }\r\n }\r\n `}\r\n`;\r\n","import {\r\n Button,\r\n convertToStringAttributes,\r\n Icon,\r\n invertedHoverButton,\r\n StyledText,\r\n} from '@telia-ace/widget-ui';\r\nimport { appendClassNames } from '@telia-ace/widget-utilities';\r\nimport React, { forwardRef } from 'react';\r\nimport styled, { css } from 'styled-components';\r\n\r\nexport type Props = Merge<\r\n React.ComponentProps<'div'>,\r\n {\r\n onFeedback?: (feedback: 'positive' | 'negative') => void;\r\n positive?: string;\r\n negative?: string;\r\n header?: string;\r\n selected?: 'positive' | 'negative';\r\n direction?: 'horizontal' | 'vertical';\r\n }\r\n>;\r\n\r\nexport default forwardRef<HTMLDivElement, Props>(\r\n (\r\n {\r\n onFeedback = () => {},\r\n direction = 'horizontal',\r\n className,\r\n header,\r\n positive,\r\n negative,\r\n selected,\r\n ...other\r\n },\r\n ref\r\n ) => {\r\n return (\r\n <Wrapper\r\n className={appendClassNames(className, 'humany-feedback')}\r\n data-direction={direction}\r\n {...convertToStringAttributes(other)}\r\n ref={ref}\r\n >\r\n {!!header && <Header>{header}</Header>}\r\n <FeedbackButton\r\n className=\"humany-feedback-button\"\r\n disabled={!!selected}\r\n aria-pressed={selected === 'positive'}\r\n data-selected={selected === 'positive'}\r\n data-direction={direction}\r\n onClick={() => onFeedback('positive')}\r\n >\r\n <Icon faIcon=\"smile-o\" />\r\n <span>{positive}</span>\r\n </FeedbackButton>\r\n <FeedbackButton\r\n className=\"humany-feedback-button\"\r\n disabled={!!selected}\r\n aria-pressed={selected === 'negative'}\r\n data-selected={selected === 'negative'}\r\n data-direction={direction}\r\n onClick={() => onFeedback('negative')}\r\n >\r\n <Icon faIcon=\"frown-o\" />\r\n <span>{negative}</span>\r\n </FeedbackButton>\r\n </Wrapper>\r\n );\r\n }\r\n);\r\n\r\nconst Header = styled(StyledText)`\r\n font-weight: normal;\r\n margin: 0 0 ${(p) => p.theme.sizes?.normal};\r\n font-size: ${(p) => p.theme.fonts?.normal};\r\n display: block;\r\n`;\r\n\r\nconst FeedbackButton = styled(Button)<{\r\n 'data-selected': boolean;\r\n 'data-direction': 'horizontal' | 'vertical';\r\n}>`\r\n display: inline-block;\r\n font-size: ${(p) => p.theme.fonts?.normal};\r\n font-weight: 300;\r\n && {\r\n margin-right: ${(p) => p.theme.sizes?.large};\r\n }\r\n\r\n ${(p) =>\r\n p['data-direction'] === 'horizontal' &&\r\n css`\r\n width: 225px;\r\n max-width: calc(50% - ${p.theme.sizes?.large} - ${p.theme.sizes?.small});\r\n `}\r\n\r\n ${(p) =>\r\n p['data-direction'] === 'vertical' &&\r\n css`\r\n min-width: 190px;\r\n `}\r\n\r\n ${(p) =>\r\n invertedHoverButton({\r\n active: p['data-selected'],\r\n primaryColor: p.theme.colors?.primary,\r\n secondaryColor: '#FFFFFF',\r\n })}\r\n\r\n i {\r\n margin: 0 ${(p) => p.theme.sizes?.small} 0 0;\r\n }\r\n`;\r\n\r\nconst Wrapper = styled.div<{ 'data-direction': 'horizontal' | 'vertical' } & any>`\r\n ${(p) =>\r\n p['data-direction'] === 'vertical' &&\r\n css`\r\n > button {\r\n width: 100%;\r\n &:not(:last-child) {\r\n margin-bottom: ${(p) => p.theme.sizes?.normal};\r\n }\r\n }\r\n `}\r\n`;\r\n","import { useKeyPress } from '@telia-ace/widget-ui';\r\nimport { useEffect, useState } from 'react';\r\n\r\ntype ArrowKey = 'up' | 'down' | 'left' | 'right';\r\n\r\nconst useArrowKeys = (): ArrowKey | null => {\r\n // State for keeping track of whether key is pressed\r\n const [keyPressed, setKeyPressed] = useState<ArrowKey | null>(null);\r\n\r\n const left = useKeyPress('ArrowLeft');\r\n const right = useKeyPress('ArrowRight');\r\n const up = useKeyPress('ArrowUp');\r\n const down = useKeyPress('ArrowDown');\r\n\r\n const effect = () => {\r\n if (left) {\r\n setKeyPressed('left');\r\n } else if (right) {\r\n setKeyPressed('right');\r\n } else if (up) {\r\n setKeyPressed('up');\r\n } else if (down) {\r\n setKeyPressed('down');\r\n } else {\r\n setKeyPressed(null);\r\n }\r\n };\r\n\r\n useEffect(effect, [left, right, up, down]);\r\n\r\n return keyPressed;\r\n};\r\n\r\nexport default useArrowKeys;\r\n","import { useCallback, useEffect, useState } from 'react';\r\n\r\nconst useDebounce = (value: string, delay: number) => {\r\n // State and setters for debounced value\r\n const [debouncedValue, setDebouncedValue] = useState(value);\r\n\r\n const handler = useCallback(() => {\r\n // Update debounced value after delay\r\n return setTimeout(() => {\r\n setDebouncedValue(value);\r\n }, delay);\r\n }, [delay, setDebouncedValue, value]);\r\n\r\n useEffect(\r\n () => {\r\n const timeout = handler();\r\n\r\n // Cancel the timeout if value changes (also on delay change or unmount)\r\n // This is how we prevent debounced value from updating if value is changed\r\n // within the delay period. Timeout gets cleared and restarted.\r\n return () => {\r\n clearTimeout(timeout);\r\n };\r\n },\r\n [handler] // Only re-call effect if value or delay changes\r\n );\r\n\r\n return debouncedValue;\r\n};\r\n\r\nexport default useDebounce;\r\n","import { Widget } from '@telia-ace/knowledge-widget-core';\r\nimport { useContainer } from '@telia-ace/widget-ui';\r\nimport { useCallback, useEffect, useMemo, useState } from 'react';\r\n\r\nexport type FavoriteActions = {\r\n addFavorite: (guideId: string) => Promise<string[]>;\r\n clearFavorites: () => Promise<string[]>;\r\n removeFavorite: (guideId: string) => Promise<string[]>;\r\n toggleFavorite: (guideId: string) => Promise<string[]>;\r\n};\r\n\r\nconst useFavorites = (): [string[], FavoriteActions] => {\r\n const container = useContainer();\r\n const [favorites, setFavorites] = useState<string[]>([]);\r\n const platform = container.get('favorites');\r\n\r\n useEffect(() => {\r\n if (platform) {\r\n setFavorites(platform.get());\r\n\r\n const { events } = container.get('$widget') as Widget;\r\n const unsubscribe = events.subscribe('widget:favorites-updated', (_, { updated }) => {\r\n setFavorites([...updated]);\r\n });\r\n\r\n return unsubscribe;\r\n }\r\n }, []);\r\n\r\n const add = (guideId: string): Promise<string[]> => {\r\n if (!platform) {\r\n return Promise.resolve([]);\r\n }\r\n return platform.add(guideId);\r\n };\r\n\r\n const remove = (guideId: string) => {\r\n if (!platform) {\r\n return Promise.resolve([]);\r\n }\r\n return platform.remove(guideId);\r\n };\r\n\r\n const clear = () => {\r\n if (!platform) {\r\n return Promise.resolve([]);\r\n }\r\n return platform.clear();\r\n };\r\n\r\n const toggle = useCallback(\r\n (guideId: string) => {\r\n if (favorites.indexOf(guideId) > -1) {\r\n return remove(guideId);\r\n } else {\r\n return add(guideId);\r\n }\r\n },\r\n [favorites]\r\n );\r\n\r\n return [\r\n favorites,\r\n useMemo(\r\n () => ({\r\n addFavorite: add,\r\n removeFavorite: remove,\r\n clearFavorites: clear,\r\n toggleFavorite: toggle,\r\n }),\r\n [favorites]\r\n ),\r\n ];\r\n};\r\n\r\nexport default useFavorites;\r\n","import { useEventListener } from '@telia-ace/widget-ui';\r\nimport { useCallback, useRef, useState } from 'react';\r\n\r\nexport default (): [boolean, React.MutableRefObject<HTMLElement | undefined>] => {\r\n const [hovering, setHovering] = useState(false);\r\n const elem = useRef<HTMLElement>();\r\n\r\n const onMouseEnter = useCallback(() => setHovering(true), [setHovering]);\r\n\r\n const onMouseLeave = useCallback(() => setHovering(false), [setHovering]);\r\n\r\n useEventListener('mouseenter', onMouseEnter, elem.current);\r\n\r\n useEventListener('mouseleave', onMouseLeave, elem.current);\r\n\r\n return [hovering, elem];\r\n};\r\n","import { DateFormats, Text, Timestamp } from '@telia-ace/widget-ui';\r\nimport { appendClassNames } from '@telia-ace/widget-utilities';\r\nimport React from 'react';\r\nimport styled from 'styled-components';\r\n\r\nexport type Props = {\r\n className?: string;\r\n modified?: string;\r\n published?: string;\r\n modifiedBy?: string | null;\r\n publishedBy?: string | null;\r\n showModified?: boolean;\r\n showPublished?: boolean;\r\n modifiedLabel?: string;\r\n publishedLabel?: string;\r\n byLabel?: string;\r\n format?: DateFormats;\r\n};\r\n\r\nconst Metadata: React.FC<Props> = ({\r\n format = DateFormats.YYYY_MM_DD_HH_MM,\r\n className = '',\r\n byLabel = '',\r\n modifiedLabel = '',\r\n publishedLabel = '',\r\n modifiedBy = '',\r\n publishedBy = '',\r\n showModified = false,\r\n showPublished = false,\r\n modified,\r\n published,\r\n}) => {\r\n const publishedTimestamp =\r\n showPublished && published ? (\r\n <StyledTimestamp format={format} timestamp={published} />\r\n ) : null;\r\n const modifiedTimestamp =\r\n showModified && modified ? <StyledTimestamp format={format} timestamp={modified} /> : null;\r\n\r\n if (!publishedTimestamp && !modifiedTimestamp) {\r\n return null;\r\n }\r\n\r\n return (\r\n <StyledText className={appendClassNames(className, 'humany-metadata')}>\r\n {publishedTimestamp && (\r\n <StyledText className=\"humany-published\">\r\n {publishedLabel}\r\n {publishedTimestamp}\r\n {byLabel && publishedBy && ` ${byLabel.replace('{{editor}}', publishedBy)}`}\r\n </StyledText>\r\n )}\r\n {modifiedTimestamp && (\r\n <StyledText className=\"humany-modified\">\r\n {publishedTimestamp && ', '}\r\n {modifiedLabel}\r\n {modifiedTimestamp}\r\n {byLabel && modifiedBy && ` ${byLabel.replace('{{editor}}', modifiedBy)}`}\r\n </StyledText>\r\n )}\r\n </StyledText>\r\n );\r\n};\r\n\r\nexport default Metadata;\r\n\r\nconst StyledTimestamp = styled(Timestamp)`\r\n &:not(:first-child) {\r\n margin-left: 4px;\r\n }\r\n &:not(:last-child) {\r\n margin-right: 4px;\r\n }\r\n`;\r\n\r\nconst StyledText = styled(Text)`\r\n font-style: italic;\r\n`;\r\n","import { Guide, Symbol, Tag } from '@telia-ace/knowledge-widget-core';\r\nimport {\r\n borderTabStyle,\r\n convertToStringAttributes,\r\n DispatchAction,\r\n headingElement,\r\n ItemList,\r\n itemList,\r\n ItemRenderer,\r\n List,\r\n list,\r\n SymbolBadge,\r\n TextLink,\r\n usePrevious,\r\n useRouteData,\r\n} from '@telia-ace/widget-ui';\r\nimport {\r\n appendClassNames,\r\n createParams,\r\n htmlParentContains,\r\n Params,\r\n} from '@telia-ace/widget-utilities';\r\nimport React, {\r\n forwardRef,\r\n useCallback,\r\n useContext,\r\n useEffect,\r\n useImperativeHandle,\r\n useRef,\r\n} from 'react';\r\nimport styled, { css, ThemeContext } from 'styled-components';\r\nimport { useFavorites } from '../hooks';\r\nimport { ItemListProps } from '../missing-type-exports';\r\nimport FavoriteButton from './favorite-button';\r\nimport Metadata, { Props as MetadataProps } from './metadata';\r\n\r\ntype Routing = {\r\n guide?: string;\r\n page?: string;\r\n};\r\n\r\ntype ParamMappers = {\r\n guide?: (guide: Guide) => Params;\r\n page?: () => Params;\r\n};\r\n\r\nexport type Props = Merge<\r\n ItemListProps,\r\n {\r\n paramMappers?: ParamMappers;\r\n routing?: Routing;\r\n pageLabel?: string;\r\n symbolSize?: number;\r\n renderItem?: ItemRenderer;\r\n pageRole?: 'link' | 'button';\r\n pageCaret?: 'right' | 'down';\r\n showTags?: boolean;\r\n showFavoriteToggle?: boolean;\r\n addFavoriteTooltip?: string;\r\n removeFavoriteCancelLabel?: string;\r\n removeFavoriteConfirmLabel?: string;\r\n removeFavoriteHeader?: string;\r\n removeFavoriteLabel?: string;\r\n removeFavoriteTooltip?: string;\r\n metadata?: Partial<MetadataProps>;\r\n dispatch?: DispatchAction;\r\n localPaging?: boolean;\r\n expandable?: boolean;\r\n onItemClick?: (e: React.MouseEvent, guide: Guide) => void;\r\n }\r\n>;\r\n\r\nconst Tags: React.FC<{ tags: Tag[] }> = ({ tags }) => {\r\n if (!tags.filter((t) => t.symbol).length) {\r\n return null;\r\n }\r\n\r\n return (\r\n <StyledTagList\r\n className=\"humany-guide-list-tags\"\r\n items={tags}\r\n renderItem={({ id, symbol, title }: Tag) =>\r\n symbol && (\r\n <li key={id} data-tag={id}>\r\n <StyledTagIcon size={18} symbol={symbol} title={title} />\r\n </li>\r\n )\r\n }\r\n />\r\n );\r\n};\r\n\r\nexport const AccordionListItem = forwardRef<\r\n HTMLLIElement,\r\n {\r\n title: string;\r\n id: string;\r\n route: string;\r\n symbolSize?: number;\r\n collapseUri?: string;\r\n children?: React.ReactNode;\r\n }\r\n>(({ title, id, route, symbolSize, collapseUri, children }, ref) => {\r\n const { params } = useRouteData();\r\n\r\n return (\r\n <ActiveAccordionListItem ref={ref} data-guide={id}>\r\n <TextLink\r\n title={title}\r\n aria-label={title}\r\n routeName={route}\r\n params={createParams({\r\n ...params,\r\n uriName: collapseUri ? collapseUri : undefined,\r\n id: undefined,\r\n guide: undefined,\r\n accordion: undefined,\r\n })}\r\n text={title}\r\n >\r\n <SymbolBadge size={symbolSize} symbol={{ type: 'Svg', content: 'caret-up' }} />\r\n </TextLink>\r\n {children}\r\n </ActiveAccordionListItem>\r\n );\r\n});\r\n\r\nconst ActiveAccordionListItem = styled.li`\r\n > a { \r\n grid-column: 1 / -1\r\n font-weight: bold;\r\n margin: 0 0 ${(p) => p.theme.sizes?.normal} 0;\r\n }\r\n\r\n > div {\r\n grid-column: 1 / -1\r\n }\r\n`;\r\n\r\nexport default forwardRef<HTMLDivElement, Props>(\r\n (\r\n {\r\n expandable = false,\r\n routing = {},\r\n paramMappers = {},\r\n symbolSize = 11,\r\n pageRole = 'link',\r\n pageCaret = 'down',\r\n showTags = false,\r\n showFavoriteToggle = false,\r\n localPaging = false,\r\n onItemClick = () => {},\r\n dispatch = () => {},\r\n metadata = {},\r\n pageLabel,\r\n className,\r\n children,\r\n items,\r\n renderItem,\r\n addFavoriteTooltip,\r\n removeFavoriteCancelLabel,\r\n removeFavoriteConfirmLabel,\r\n removeFavoriteHeader,\r\n removeFavoriteLabel,\r\n removeFavoriteTooltip,\r\n ...other\r\n },\r\n ref\r\n ) => {\r\n const {\r\n accessibility: { isTabbing = false },\r\n } = useContext(ThemeContext);\r\n const innerRef = useRef() as React.MutableRefObject<HTMLElement>;\r\n const prevItems = usePrevious(items);\r\n const { guide: guideRoute = 'guide', page: pageRoute = 'index' } = routing;\r\n const {\r\n guide: mapGuideParams = ({ id }: Guide) => createParams({ guide: id }),\r\n page: mapPageParams = () => createParams(),\r\n } = paramMappers;\r\n const [favorites, actions] = useFavorites();\r\n\r\n useImperativeHandle(ref, () => innerRef.current as any);\r\n\r\n const defaultRenderer: ItemRenderer = (guide: Guide) => {\r\n const { id, title, tags, published, modified, publishedBy, modifiedBy } = guide;\r\n\r\n return (\r\n <li\r\n key={id}\r\n data-guide={id}\r\n has-metadata={(\r\n (!!metadata?.showPublished && !!published) ||\r\n (!!metadata?.showModified && !!modified)\r\n ).toString()}\r\n >\r\n <TextLink\r\n className=\"humany-guide-link\"\r\n title={title}\r\n aria-label={title}\r\n routeName={guideRoute}\r\n onClick={(e: React.MouseEvent) => onItemClick(e, guide)}\r\n params={mapGuideParams(guide)}\r\n text={title}\r\n >\r\n <SymbolBadge\r\n size={symbolSize}\r\n symbol={{\r\n type: 'Svg',\r\n content: expandable ? 'caret-down' : 'caret-right',\r\n }}\r\n />\r\n </TextLink>\r\n {showFavoriteToggle && (\r\n <FavoriteButton\r\n guideTitle={title}\r\n addFavoriteTooltip={addFavoriteTooltip}\r\n removeFavoriteCancelLabel={removeFavoriteCancelLabel}\r\n removeFavoriteConfirmLabel={removeFavoriteConfirmLabel}\r\n removeFavoriteHeader={removeFavoriteHeader}\r\n removeFavoriteLabel={removeFavoriteLabel}\r\n removeFavoriteTooltip={removeFavoriteTooltip}\r\n isFavorite={favorites.indexOf(id) > -1}\r\n actions={actions}\r\n id={id}\r\n />\r\n )}\r\n {showTags && <Tags tags={tags} />}\r\n <StyledMetadata\r\n {...metadata}\r\n indent={expandable ? undefined : symbolSize}\r\n modified={modified}\r\n published={published}\r\n publishedBy={publishedBy}\r\n modifiedBy={modifiedBy}\r\n />\r\n </li>\r\n );\r\n };\r\n\r\n const renderer = useCallback(\r\n (guide: Guide, index: number, items: Guide[]) => {\r\n if (renderItem) {\r\n return renderItem(guide, index, items, defaultRenderer);\r\n }\r\n\r\n return defaultRenderer(guide, index, items);\r\n },\r\n [renderItem, defaultRenderer]\r\n );\r\n\r\n const onPageClick = useCallback(\r\n (e: React.MouseEvent) => {\r\n if (localPaging) {\r\n e.preventDefault();\r\n dispatch('page', mapPageParams());\r\n }\r\n },\r\n [dispatch, localPaging]\r\n );\r\n\r\n useEffect(() => {\r\n if (isTabbing && prevItems && prevItems.length < items.length && innerRef.current) {\r\n const elements = innerRef.current.querySelectorAll('.humany-guide-list > ul > li');\r\n const listItemElem = elements[prevItems.length] as HTMLElement;\r\n\r\n if (elements.length === items.length && prevItems.length) {\r\n const nextListItem = elements[prevItems.length] as HTMLElement;\r\n\r\n if (nextListItem) {\r\n const focusNext = nextListItem.querySelector(\r\n '.humany-guide-link'\r\n ) as HTMLElement | null;\r\n focusNext && focusNext.focus();\r\n }\r\n } else if (listItemElem) {\r\n const observer = new MutationObserver((mutations, observer) => {\r\n mutations.forEach((mutation) => {\r\n if (mutation.addedNodes) {\r\n const found = Array.from(\r\n mutation.addedNodes as NodeListOf<HTMLElement>\r\n ).find((node) => node.tagName === 'A');\r\n\r\n if (\r\n found &&\r\n htmlParentContains(innerRef.current, document.activeElement)\r\n ) {\r\n isTabbing && found.focus();\r\n observer.disconnect();\r\n }\r\n }\r\n });\r\n });\r\n\r\n observer.observe(listItemElem, {\r\n attributes: false,\r\n characterData: false,\r\n childList: true,\r\n subtree: true,\r\n attributeOldValue: false,\r\n characterDataOldValue: false,\r\n });\r\n }\r\n }\r\n });\r\n\r\n const hasMetaData = !!Object.keys(metadata).filter(\r\n (k) => typeof (metadata as any)[k] !== 'undefined'\r\n ).length;\r\n return (\r\n <StyledItemList\r\n className={appendClassNames(className, 'humany-guide-list')}\r\n data-item-count={items.length}\r\n items={items}\r\n renderItem={renderer}\r\n expandable={expandable ? 'true' : 'false'}\r\n grid-items={showTags || showFavoriteToggle || hasMetaData ? 'true' : 'false'}\r\n {...convertToStringAttributes(other)}\r\n ref={innerRef as React.Ref<HTMLDivElement>}\r\n >\r\n {pageLabel ? (\r\n <TextLink\r\n text={pageLabel}\r\n title={pageLabel}\r\n aria-label={pageLabel}\r\n routeName={pageRoute}\r\n role={pageRole}\r\n params={mapPageParams()}\r\n onClick={onPageClick}\r\n >\r\n <SymbolBadge\r\n size={symbolSize}\r\n symbol={{ type: 'Svg', content: `caret-${pageCaret}` }}\r\n />\r\n </TextLink>\r\n ) : null}\r\n {children}\r\n </StyledItemList>\r\n );\r\n }\r\n);\r\n\r\nconst StyledItemList = styled(ItemList)<{\r\n 'grid-items': 'true' | 'false';\r\n expandable: 'true' | 'false';\r\n}>`\r\n ${itemList}\r\n padding: ${(p) => p.theme.sizes?.large};\r\n overflow: auto;\r\n justify-content: flex-start;\r\n white-space: nowrap;\r\n font-weight: 300;\r\n text-decoration: none;\r\n\r\n > div {\r\n ${headingElement(\r\n '> h1',\r\n css`\r\n white-space: pre-wrap;\r\n `\r\n )}\r\n }\r\n\r\n > ul > li {\r\n ${(p) =>\r\n p['grid-items'] === 'true' &&\r\n css`\r\n display: grid;\r\n grid-template-columns: auto 1fr 1fr;\r\n gap: 0px 0px;\r\n grid-template-areas: '. favorite tags';\r\n align-items: center;\r\n\r\n > button {\r\n margin: 0 0 0 ${(p) => p.theme.sizes?.small};\r\n\r\n &[data-favorite='false'] {\r\n ${(p) =>\r\n p.theme.accessibility?.isTabbing ? 'opacity: 0;' : 'display: none;'};\r\n &:focus {\r\n opacity: 1;\r\n }\r\n }\r\n }\r\n\r\n > span {\r\n font-size: ${(p) => p.theme.fonts?.small};\r\n }\r\n\r\n &:hover {\r\n button[data-favorite='false'] {\r\n display: flex;\r\n justify-self: flex-start;\r\n }\r\n }\r\n\r\n &[has-metadata='true'] {\r\n grid-template-rows: 1fr 1fr;\r\n grid-template-areas:\r\n '. favorite tags'\r\n 'metadata metadata metadata';\r\n }\r\n `}\r\n > a {\r\n color: ${(p) => p.theme.colors?.primary};\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n max-width: 100%;\r\n display: inline-block;\r\n\r\n svg {\r\n margin: 0 calc(${(p) => p.theme.sizes?.small}*2) 0 0;\r\n line {\r\n stroke: ${(p) => p.theme.colors?.primary};\r\n }\r\n }\r\n\r\n ${(p) =>\r\n p.expandable === 'true' &&\r\n css`\r\n display: flex;\r\n flex-direction: row-reverse;\r\n justify-content: flex-end;\r\n align-items: center;\r\n\r\n span {\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n }\r\n\r\n svg {\r\n margin: 0 0 0 ${(p) => p.theme.sizes?.small};\r\n }\r\n `}\r\n\r\n &:focus {\r\n ${(p) =>\r\n p.theme.accessibility?.isTabbing &&\r\n css`\r\n ${borderTabStyle}\r\n text-decoration: underline;\r\n `};\r\n }\r\n\r\n @media (hover: hover) {\r\n &:hover {\r\n text-decoration: underline;\r\n }\r\n }\r\n }\r\n }\r\n\r\n > a {\r\n color: ${(p) => p.theme.colors?.text};\r\n margin: ${(p) => p.theme.sizes?.normal} 0 0;\r\n align-self: flex-start;\r\n align-items: center;\r\n display: flex;\r\n\r\n span {\r\n text-decoration: underline;\r\n }\r\n\r\n svg {\r\n margin: 0 calc(${(p) => p.theme.sizes?.small}*2) 0 0;\r\n line {\r\n stroke: ${(p) => p.theme.colors?.text};\r\n }\r\n }\r\n\r\n &:focus {\r\n ${(p) =>\r\n p.theme.accessibility?.isTabbing &&\r\n css`\r\n ${borderTabStyle}\r\n text-decoration: underline;\r\n `};\r\n }\r\n }\r\n`;\r\n\r\nconst StyledTagList = styled(List)`\r\n ${list}\r\n display: flex;\r\n margin: 0 0 0 auto;\r\n grid-area: tags;\r\n\r\n li,\r\n li:last-child {\r\n margin: 0 0 0 ${(p) => p.theme.sizes?.small};\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n }\r\n`;\r\n\r\nconst StyledTagIcon = styled(SymbolBadge)<{ size: number; symbol: Symbol }>`\r\n display: block;\r\n color: ${(p) => p.theme.colors?.primary};\r\n ${(p: any) => {\r\n if (p.symbol.type === 'Uri') {\r\n return `\r\n width: ${p.size}px;\r\n height: ${p.size}px;\r\n `;\r\n }\r\n\r\n if (p.symbol.type === 'FontAwesome') {\r\n return `\r\n font-size: ${p.size}px;\r\n `;\r\n }\r\n }}\r\n`;\r\n\r\nconst StyledMetadata = styled(Metadata)<{ indent?: number }>`\r\n grid-area: metadata;\r\n text-overflow: ellipsis;\r\n overflow: hidden;\r\n font-size: ${(p) => p.theme.fonts?.small};\r\n ${(p) =>\r\n typeof p.indent === 'number' &&\r\n `text-indent: calc(${p.theme.sizes?.small} * 2 + ${p.indent}px);`}\r\n`;\r\n","import { Notification } from '@telia-ace/knowledge-widget-core';\r\nimport {\r\n borderTabStyle,\r\n Button,\r\n DateFormats,\r\n genericHtml,\r\n headingElement,\r\n itemList,\r\n ItemList,\r\n Paragraph,\r\n Symbol,\r\n SymbolBadge,\r\n Timestamp,\r\n} from '@telia-ace/widget-ui';\r\nimport { appendClassNames } from '@telia-ace/widget-utilities';\r\nimport React, { useState } from 'react';\r\nimport styled, { css } from 'styled-components';\r\nimport { loadingOpacity } from '../styles';\r\nimport Loader from './loader';\r\n\r\ntype Props = {\r\n className?: string;\r\n showHeader?: boolean;\r\n loading: boolean;\r\n notificationList?: {\r\n id: string;\r\n title?: string;\r\n symbol?: Symbol;\r\n notifications: Notification[];\r\n defaultHeaderOptions?: {\r\n visible: boolean;\r\n };\r\n };\r\n};\r\n\r\nconst NotificationList: React.FC<Props> = ({\r\n className,\r\n showHeader,\r\n notificationList,\r\n loading,\r\n ...other\r\n}) => {\r\n const [expanded, setExpanded] = useState<string | null>(null);\r\n\r\n const {\r\n id,\r\n title,\r\n symbol,\r\n notifications = [],\r\n defaultHeaderOptions = { visible: true },\r\n } = notificationList || {};\r\n\r\n if (!notifications.length && !loading) {\r\n return null;\r\n }\r\n\r\n return (\r\n <StyledItemList\r\n {...other}\r\n data-loading={loading}\r\n data-show-header={\r\n typeof showHeader === 'boolean' ? showHeader : defaultHeaderOptions.visible\r\n }\r\n className={appendClassNames(className, 'humany-notification-list')}\r\n data-notification-category={id}\r\n header={title}\r\n symbol={symbol}\r\n items={notifications}\r\n renderItem={({ id, title, body, modified, expandable }: Notification) => (\r\n <StyledItem\r\n key={id}\r\n data-notification={id}\r\n data-expanded={expandable ? expanded === id : true}\r\n >\r\n {expandable ? (\r\n <>\r\n <StyledButton\r\n title={title}\r\n aria-label={title}\r\n aria-expanded={expanded === id}\r\n onClick={() => setExpanded(expanded === id ? null : id)}\r\n >\r\n <span>{title}</span>\r\n <StyledSymbolBadge\r\n size={11}\r\n symbol={{\r\n type: 'Svg',\r\n content: `caret-${expanded === id ? 'up' : 'down'}`,\r\n }}\r\n />\r\n </StyledButton>\r\n <StyledParagraph html={body} />\r\n {modified && (\r\n <StyledTimestamp\r\n format={DateFormats.YYYY_MM_DD}\r\n timestamp={modified}\r\n />\r\n )}\r\n </>\r\n ) : (\r\n <StyledParagraph html={body} />\r\n )}\r\n </StyledItem>\r\n )}\r\n >\r\n <Loader loading={loading} />\r\n </StyledItemList>\r\n );\r\n};\r\n\r\nconst StyledButton = styled(Button)`\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n width: 100%;\r\n text-align: left;\r\n svg,\r\n i {\r\n color: ${(p) => p.theme.colors?.primary};\r\n }\r\n span {\r\n color: ${(p) => p.theme.colors?.text};\r\n font-size: ${(p) => p.theme.fonts?.normal};\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n flex: 1;\r\n white-space: nowrap;\r\n }\r\n &:focus {\r\n ${(p) =>\r\n p.theme.accessibility?.isTabbing &&\r\n css`\r\n ${borderTabStyle}\r\n span {\r\n color: ${p.theme.colors?.primary};\r\n text-decoration: underline;\r\n }\r\n `};\r\n }\r\n`;\r\n\r\nconst StyledItemList = styled(ItemList)<\r\n {\r\n 'data-loading': boolean;\r\n 'data-show-header': boolean;\r\n } & any\r\n>`\r\n ${loadingOpacity}\r\n ${itemList}\r\n overflow: hidden;\r\n justify-content: flex-start;\r\n padding: ${(p) => p.theme.sizes?.large};\r\n ${(p) =>\r\n !p['data-show-header'] &&\r\n css`\r\n > div {\r\n ${headingElement(\r\n 'h1',\r\n css`\r\n display: none;\r\n `\r\n )}\r\n }\r\n `}\r\n\r\n @media (hover: hover) {\r\n button:hover {\r\n text-decoration: underline;\r\n }\r\n }\r\n`;\r\n\r\nconst StyledParagraph = styled(Paragraph)`\r\n ${genericHtml}\r\n font-weight: 300;\r\n\r\n p {\r\n white-space: normal;\r\n }\r\n`;\r\n\r\nconst StyledItem = styled.li<{ 'data-expanded': boolean }>`\r\n ${StyledParagraph} {\r\n display: none;\r\n &:not(:only-child) {\r\n ${(p) =>\r\n p.theme.sizes?.cardinal &&\r\n p.theme.sizes?.normal &&\r\n css`\r\n margin: ${p.theme.sizes?.normal} 0;\r\n `}\r\n }\r\n }\r\n\r\n ${(p) =>\r\n p['data-expanded'] &&\r\n css`\r\n ${StyledParagraph} {\r\n display: block;\r\n }\r\n `}\r\n\r\n > span {\r\n display: block;\r\n font-weight: 300;\r\n color: ${(p) => p.theme.colors?.accent};\r\n }\r\n`;\r\n\r\nconst StyledSymbolBadge = styled(SymbolBadge)`\r\n margin: 0 0 0 ${(p) => p.theme.sizes?.small};\r\n line {\r\n stroke: ${(p) => p.theme.colors?.primary};\r\n }\r\n`;\r\n\r\nconst StyledTimestamp = styled(Timestamp)`\r\n font-size: ${(p) => p.theme.fonts?.small};\r\n font-weight: 300;\r\n`;\r\n\r\nexport default NotificationList;\r\n","import { Implementation } from '@telia-ace/knowledge-widget-core';\r\nimport { AnchorLink, WidgetLink } from '@telia-ace/widget-ui';\r\nimport { Container } from '@webprovisions/platform';\r\nimport React from 'react';\r\n\r\n// Determine if href starts with a hashtag\r\nconst isAnchorLink = (href: string) => {\r\n const re = new RegExp('^#', 'i');\r\n const match = re.test(href);\r\n\r\n return match;\r\n};\r\n\r\nconst embeddedLinkMapper =\r\n (container: Container) =>\r\n ({ children, ...props }: any) => {\r\n const {\r\n implementation,\r\n name: currentWidgetName,\r\n }: { implementation: Implementation; name: string } = container.get('$widget');\r\n\r\n const { href = '' } = props;\r\n\r\n if (isAnchorLink(href)) {\r\n return (\r\n <AnchorLink smooth to={href}>\r\n {children}\r\n </AnchorLink>\r\n );\r\n }\r\n\r\n const escapedBindings = implementation.bindings\r\n .map((binding: string) => binding.replace(/\\./g, '\\\\.'))\r\n .join('|');\r\n const regexp = new RegExp(`^((http[s]?:)?\\/\\/)?(${escapedBindings})\\/([^\\\\s]+)`);\r\n\r\n const expArray = regexp.exec(href);\r\n\r\n if (expArray && expArray.length >= 4) {\r\n const targetWidgetName = expArray[4];\r\n const targetWidget = implementation.widgets.get(targetWidgetName);\r\n\r\n // blob links should not be treated as a widget link\r\n if (\r\n targetWidget &&\r\n !targetWidgetName.startsWith('blob?') &&\r\n !targetWidgetName.startsWith(currentWidgetName)\r\n ) {\r\n return <WidgetLink widgetName={targetWidgetName}>{children}</WidgetLink>;\r\n }\r\n }\r\n\r\n return <a {...props}>{children}</a>;\r\n };\r\n\r\nexport default embeddedLinkMapper;\r\n","import { Container } from '@webprovisions/platform';\r\nimport React from 'react';\r\nimport { DialogLink } from '../components';\r\nimport embeddedLinkMapper from './embedded-link-mapper';\r\n\r\nconst guideRenderInstructions = (container: Container, dialog: any[] = []) => {\r\n return {\r\n transform: {\r\n a: (attr: any) => {\r\n const { children, ...otherAttr } = attr;\r\n const connectionId = otherAttr['data-target'];\r\n if (connectionId && dialog.length) {\r\n const item = dialog.find(({ connection }: any) => connection === connectionId);\r\n if (item) {\r\n return <DialogLink {...item}>{children}</DialogLink>;\r\n }\r\n }\r\n\r\n const defaultInstructions = embeddedLinkMapper(container);\r\n\r\n return defaultInstructions(attr);\r\n },\r\n },\r\n };\r\n};\r\n\r\nexport default guideRenderInstructions;\r\n"],"names":["StyledList","StyledItemList","Wrapper","Header","LoaderWrapper","StyledButton","StyledText","StyledTimestamp"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/components/dialog-link.tsx","../src/components/dialog-list.tsx","../src/components/drawer-list.tsx","../src/components/dropdown-actions.tsx","../src/components/dropdown-list.tsx","../src/components/loader.tsx","../src/styles.ts","../src/components/favorite-button.tsx","../src/components/feedback.tsx","../src/hooks/use-arrow-keys.ts","../src/hooks/use-debounce.ts","../src/hooks/use-favorites.ts","../src/hooks/use-hover.ts","../src/components/metadata.tsx","../src/components/guide-list.tsx","../src/utils/embedded-link-mapper.tsx","../src/utils/guide-render-instructions.tsx"],"sourcesContent":["import { Icon, Link, useRouteData } from '@telia-ace/widget-ui';\r\nimport { appendClassNames, createParams, formatUrl } from '@telia-ace/widget-utilities';\r\nimport React from 'react';\r\nimport { LinkProps } from '../missing-type-exports';\r\n\r\nexport type Props = Merge<\r\n LinkProps,\r\n {\r\n parent: {\r\n id: string;\r\n title: string;\r\n };\r\n type: 'guide' | 'link' | 'default';\r\n connection?: string;\r\n }\r\n>;\r\n\r\nconst DialogLink: React.FC<Props> = ({\r\n title = '',\r\n className,\r\n id,\r\n parent,\r\n connection,\r\n type,\r\n target,\r\n href,\r\n children,\r\n}) => {\r\n const props: any = {};\r\n const { name, params } = useRouteData();\r\n\r\n switch (type) {\r\n case 'default':\r\n case 'guide':\r\n const { id: parentId, title: parentTitle } = parent;\r\n props.routeName = name;\r\n props.params = createParams({\r\n ...params,\r\n guide: id,\r\n connection: id === parentId ? connection : undefined,\r\n uriName: id === parentId ? formatUrl(parentTitle) : formatUrl(title),\r\n });\r\n break;\r\n case 'link':\r\n props.href = href;\r\n props.target = target;\r\n break;\r\n }\r\n\r\n return (\r\n <Link className={appendClassNames(className, 'humany-dialog-link')} {...props}>\r\n {children || (\r\n <>\r\n {type === 'link' && <Icon faIcon=\"link\" />}\r\n <span>{title}</span>\r\n </>\r\n )}\r\n </Link>\r\n );\r\n};\r\n\r\nexport default DialogLink;\r\n","import { invertedHoverButton, List, list } from '@telia-ace/widget-ui';\r\nimport { appendClassNames } from '@telia-ace/widget-utilities';\r\nimport React, { forwardRef } from 'react';\r\nimport styled from 'styled-components';\r\nimport DialogLink, { Props as DialogLinkProps } from './dialog-link';\r\n\r\ntype Props = Merge<\r\n React.ComponentProps<'ul'>,\r\n {\r\n dialog: DialogLinkProps[];\r\n }\r\n>;\r\n\r\nexport default forwardRef<HTMLUListElement, Props>(({ className, dialog, ...other }, ref) => {\r\n return !!dialog.length ? (\r\n <StyledList\r\n className={appendClassNames(className, 'humany-dialog')}\r\n items={dialog}\r\n renderItem={(item: DialogLinkProps) => (\r\n <li key={item.connection} data-dialog={item.connection}>\r\n <DialogLink {...item} />\r\n </li>\r\n )}\r\n {...other}\r\n ref={ref}\r\n />\r\n ) : null;\r\n});\r\n\r\nconst StyledList = styled(List)`\r\n ${list}\r\n a {\r\n min-width: 150px;\r\n max-width: 400px;\r\n display: block;\r\n white-space: normal;\r\n ${(p) =>\r\n invertedHoverButton({\r\n primaryColor: p.theme.colors?.primary,\r\n secondaryColor: '#FFFFFF',\r\n })}\r\n }\r\n\r\n i {\r\n margin: 0 ${(p) => p.theme.sizes?.small} 0 0;\r\n }\r\n`;\r\n","import { Drawer, ItemList, itemList } from '@telia-ace/widget-ui';\r\nimport { appendClassNames } from '@telia-ace/widget-utilities';\r\nimport React from 'react';\r\nimport styled from 'styled-components';\r\nimport { DrawerProps, ItemListProps } from '../missing-type-exports';\r\n\r\ntype Props = Merge<ItemListProps, DrawerProps>;\r\n\r\nconst DrawerList: React.FC<Props> = ({\r\n trigger,\r\n header,\r\n className,\r\n animation,\r\n fullScreen,\r\n onToggle,\r\n children,\r\n ref,\r\n closeButtonAriaLabel,\r\n ...other\r\n}) => {\r\n return (\r\n <Drawer\r\n className={appendClassNames(className, 'humany-drawer-list')}\r\n trigger={trigger}\r\n header={header}\r\n animation={animation}\r\n fullScreen={fullScreen}\r\n onToggle={onToggle}\r\n closeButtonAriaLabel={closeButtonAriaLabel}\r\n >\r\n <StyledItemList {...other}>{children}</StyledItemList>\r\n </Drawer>\r\n );\r\n};\r\n\r\nexport default DrawerList;\r\n\r\nconst StyledItemList = styled(ItemList)<any>`\r\n ${itemList}\r\n font-family: ${(p) => p.theme.fonts?.type};\r\n padding: ${(p) => p.theme.sizes?.medium};\r\n > ul > li {\r\n overflow: visible;\r\n font-weight: 300;\r\n font-size: ${(p) => p.theme.fonts?.normal};\r\n }\r\n`;\r\n","import { Dropdown, ItemRenderer, List } from '@telia-ace/widget-ui';\r\nimport React from 'react';\r\nimport styled from 'styled-components';\r\n\r\ntype Props = {\r\n trigger: React.ReactElement;\r\n header?: React.ReactElement;\r\n items?: any[];\r\n renderItem?: ItemRenderer;\r\n className?: string;\r\n};\r\n\r\nconst DropdownActions: React.FC<Props> = ({ items, renderItem, trigger, header, children }) => {\r\n return (\r\n <Dropdown className=\"humany-dropdown-actions\" trigger={trigger}>\r\n <Wrapper>\r\n {!!header && <Header>{header}</Header>}\r\n {items && renderItem && (\r\n <StyledList items={items} renderItem={renderItem}></StyledList>\r\n )}\r\n {children}\r\n </Wrapper>\r\n </Dropdown>\r\n );\r\n};\r\n\r\nexport default DropdownActions;\r\n\r\nconst Wrapper = styled.div`\r\n background: #fff;\r\n border: #ccc 1px solid;\r\n box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.1);\r\n font-family: ${(p) => p.theme.fonts?.type};\r\n font-size: ${(p) => p.theme.fonts?.normal};\r\n`;\r\n\r\nconst Header = styled.div`\r\n padding: ${(p) => p.theme.sizes.normal};\r\n padding-bottom: 0;\r\n font-size: ${(p) => p.theme.fonts?.normal};\r\n font-weight: normal;\r\n white-space: nowrap;\r\n display: flex;\r\n align-items: center;\r\n\r\n h1,\r\n h2,\r\n h3,\r\n h4,\r\n h5,\r\n h6 {\r\n margin: 0;\r\n font-weight: normal;\r\n padding-bottom: 0;\r\n }\r\n\r\n svg,\r\n i {\r\n margin-right: ${(p) => p.theme.sizes.small};\r\n }\r\n`;\r\n\r\nconst StyledList = styled(List)`\r\n list-style: none;\r\n padding: 0;\r\n margin: 0;\r\n padding: ${(p) => p.theme.sizes.small} 0;\r\n\r\n li {\r\n background: #fff;\r\n\r\n a {\r\n display: block;\r\n font-size: ${(p) => p.theme.fonts?.small};\r\n padding: ${(p) => `${p.theme.sizes?.small} ${p.theme.sizes?.normal}`};\r\n cursor: pointer;\r\n color: #555;\r\n text-decoration: none;\r\n\r\n &:hover {\r\n background: #f9f9f9;\r\n color: ${(p) => p.theme.colors?.primary};\r\n }\r\n }\r\n }\r\n`;\r\n","import { Dropdown, headingElement, ItemList, itemList } from '@telia-ace/widget-ui';\r\nimport { appendClassNames } from '@telia-ace/widget-utilities';\r\nimport React from 'react';\r\nimport styled, { css } from 'styled-components';\r\nimport { DropdownProps, ItemListProps } from '../missing-type-exports';\r\n\r\nexport type Props = Merge<DropdownProps, ItemListProps>;\r\n\r\nconst DropdownList: React.FC<Props> = ({\r\n trigger,\r\n className,\r\n children,\r\n closeButtonAriaLabel,\r\n ...other\r\n}) => {\r\n return (\r\n <Dropdown\r\n className={appendClassNames(className, 'humany-dropdown-list')}\r\n closeButtonAriaLabel={closeButtonAriaLabel}\r\n trigger={trigger}\r\n >\r\n <StyledItemList {...other}>{children}</StyledItemList>\r\n </Dropdown>\r\n );\r\n};\r\n\r\nexport default DropdownList;\r\n\r\nconst StyledItemList = styled(ItemList)<any>`\r\n ${itemList}\r\n font-family: ${(p) => p.theme.fonts?.type};\r\n > div {\r\n ${headingElement(\r\n '> h1',\r\n css`\r\n font-size: ${(p) => p.theme.fonts?.normal};\r\n line-height: 1.2em;\r\n `\r\n )}\r\n }\r\n > ul > li {\r\n overflow: visible;\r\n font-weight: 300;\r\n font-size: ${(p) => p.theme.fonts?.normal};\r\n\r\n a {\r\n display: inline-block;\r\n\r\n @media (hover: hover) {\r\n &:hover {\r\n text-decoration: underline;\r\n }\r\n }\r\n }\r\n }\r\n`;\r\n","import React from 'react';\r\nimport styled, { keyframes } from 'styled-components';\r\n\r\ntype Props = {\r\n loading: boolean | undefined;\r\n};\r\n\r\nconst spin = keyframes`\r\n 100% {\r\n transform: rotate(360deg);\r\n }\r\n`;\r\n\r\nconst dash = keyframes`\r\n 0% {\r\n stroke-dasharray: 1, 200;\r\n stroke-dashoffset: 0;\r\n }\r\n 50% {\r\n stroke-dasharray: 89, 200;\r\n stroke-dashoffset: -35px;\r\n }\r\n 100% {\r\n stroke-dasharray: 89, 200;\r\n stroke-dashoffset: -124px;\r\n }\r\n`;\r\n\r\nconst SpinnerSvg = styled.svg`\r\n animation: ${spin} 2s linear infinite;\r\n height: 100%;\r\n transform-origin: center center;\r\n width: 100%;\r\n position: absolute;\r\n top: 0;\r\n bottom: 0;\r\n left: 0;\r\n right: 0;\r\n margin: auto;\r\n transition: 200ms ease-out opacity;\r\n`;\r\n\r\nexport const Wrapper = styled.div<{ 'data-loading': boolean }>`\r\n position: absolute;\r\n top: 0;\r\n bottom: 0;\r\n left: 0;\r\n right: 0;\r\n height: 100%;\r\n width: 100%;\r\n pointer-events: ${(p) => (p['data-loading'] ? 'all' : 'none')}\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: center;\r\n transition: 200ms ease-out opacity;\r\n box-sizing: border-box;\r\n overflow: hidden;\r\n ${SpinnerSvg} {\r\n opacity: ${(p) => (p['data-loading'] ? '1' : '0')}\r\n }\r\n`;\r\n\r\nconst Spinner = styled.div`\r\n position: relative;\r\n margin: 0 auto;\r\n width: 100px;\r\n &:before {\r\n content: '';\r\n display: block;\r\n padding-top: 100%;\r\n }\r\n`;\r\n\r\nconst SpinnerCircle = styled.circle`\r\n stroke-dasharray: 1, 200;\r\n stroke-dashoffset: 0;\r\n animation: ${dash} 1.5s ease-in-out infinite;\r\n stroke-linecap: round;\r\n stroke: ${(p) => p.theme.colors?.primary};\r\n stroke-width: 2px;\r\n`;\r\n\r\nconst Loader: React.SFC<Props> = ({ loading = false }) => {\r\n return (\r\n <Wrapper className=\"humany-loader\" data-loading={loading}>\r\n <Spinner className=\"humany-spinner\">\r\n <SpinnerSvg viewBox=\"25 25 50 50\">\r\n <SpinnerCircle\r\n cx=\"50\"\r\n cy=\"50\"\r\n r=\"20\"\r\n fill=\"none\"\r\n stroke-width=\"2\"\r\n stroke-miterlimit=\"10\"\r\n />\r\n </SpinnerSvg>\r\n </Spinner>\r\n </Wrapper>\r\n );\r\n};\r\n\r\nexport default Loader;\r\n","import { Button, Icon, linkTabStyle, paddedBorderTabStyle, Text } from '@telia-ace/widget-ui';\r\nimport styled, { css } from 'styled-components';\r\nimport { Wrapper as LoaderWrapper } from './components/loader';\r\n\r\nexport const loadingOpacity = css<{ 'data-loading': boolean }>`\r\n ${(p) => p['data-loading'] && 'position: relative;'};\r\n ${(p) => p['data-loading'] && 'min-height: 150px;'}\r\n > * {\r\n transition: 200ms ease-out opacity;\r\n opacity: ${(p) => (p['data-loading'] ? '0.5' : '1')};\r\n }\r\n ${LoaderWrapper} {\r\n opacity: ${(p) => (p['data-loading'] ? '1' : '0')};\r\n }\r\n`;\r\n\r\nexport const genericHtml = css<any>`\r\n font-size: ${(p) => p.theme.fonts?.normal};\r\n font-weight: 300;\r\n line-height: 1.5em;\r\n color: ${(p) => p.theme.colors?.text};\r\n\r\n h1,\r\n h2,\r\n h3,\r\n h4,\r\n h5,\r\n h6 {\r\n word-break: break-word;\r\n &:first-child {\r\n margin-top: 0;\r\n }\r\n &:only-child {\r\n margin: 0;\r\n }\r\n &:last-child {\r\n margin-bottom: 0;\r\n }\r\n }\r\n\r\n a {\r\n color: ${(p) => p.theme.colors?.link};\r\n &:focus {\r\n ${(p) => p.theme.accessibility?.isTabbing && linkTabStyle};\r\n }\r\n }\r\n\r\n img {\r\n max-width: 100% !important;\r\n height: auto !important;\r\n }\r\n\r\n p {\r\n word-break: break-word;\r\n margin: ${(p) => p.theme.sizes?.normal} 0;\r\n }\r\n\r\n p:first-child {\r\n margin: 0 0 ${(p) => p.theme.sizes?.normal};\r\n }\r\n\r\n p:last-child {\r\n margin: ${(p) => p.theme.sizes?.normal} 0 0;\r\n }\r\n\r\n p:only-child {\r\n margin: 0;\r\n }\r\n`;\r\n\r\nexport const SmallCaret = styled(Icon)`\r\n && {\r\n font-size: ${(p) => p.theme.fonts?.small};\r\n }\r\n width: 1.2em;\r\n`;\r\n\r\nexport const StyledHeaderText = styled(Text)`\r\n font-size: ${(p) => p.theme.fonts?.medium};\r\n font-weight: normal;\r\n line-height: 1.2em;\r\n color: ${(p) => p.theme.colors?.text};\r\n`;\r\n\r\nexport const StyledListButton = styled(Button)<any>`\r\n display: flex;\r\n align-items: center;\r\n\r\n ${(p: any) =>\r\n p['data-has-label'] === 'true' &&\r\n p['data-has-symbol'] === 'true' &&\r\n `\r\n svg, i {\r\n margin: 0 ${p.theme.sizes?.small} 0 0;\r\n }\r\n `}\r\n\r\n &:focus {\r\n ${(p: any) =>\r\n p.theme.accessibility?.isTabbing &&\r\n css`\r\n ${(p: any) => p['data-has-label'] === 'true' && paddedBorderTabStyle}\r\n\r\n svg, i {\r\n ${(p: any) =>\r\n p['data-has-label'] === 'false' &&\r\n p['data-has-symbol'] === 'true' &&\r\n css`\r\n ${paddedBorderTabStyle}\r\n box-sizing: content-box;\r\n `}\r\n }\r\n `};\r\n }\r\n\r\n span {\r\n flex: 1;\r\n font-weight: 300;\r\n }\r\n`;\r\n","import { Confirm, StyledText, SymbolBadge } from '@telia-ace/widget-ui';\r\nimport React, { useCallback } from 'react';\r\nimport styled, { css } from 'styled-components';\r\nimport { FavoriteActions } from '../hooks';\r\nimport { StyledListButton } from '../styles';\r\n\r\ntype Props = {\r\n isFavorite: boolean;\r\n actions: FavoriteActions;\r\n id: string;\r\n addFavoriteTooltip?: string;\r\n removeFavoriteCancelLabel?: string;\r\n removeFavoriteConfirmLabel?: string;\r\n removeFavoriteHeader?: string;\r\n removeFavoriteLabel?: string;\r\n removeFavoriteTooltip?: string;\r\n buttonLabel?: string;\r\n guideTitle?: string;\r\n};\r\n\r\nconst FavoriteButton: React.FC<Props> = ({\r\n addFavoriteTooltip,\r\n removeFavoriteCancelLabel,\r\n removeFavoriteConfirmLabel,\r\n removeFavoriteHeader,\r\n removeFavoriteLabel,\r\n removeFavoriteTooltip,\r\n id,\r\n isFavorite,\r\n guideTitle,\r\n buttonLabel = '',\r\n actions: { addFavorite, removeFavorite },\r\n}) => {\r\n const remove = useCallback(() => {\r\n removeFavorite(id);\r\n }, [id, removeFavorite]);\r\n\r\n const add = useCallback(() => {\r\n addFavorite(id);\r\n }, [id, addFavorite]);\r\n\r\n const tooltip = `${isFavorite ? removeFavoriteTooltip : addFavoriteTooltip}${\r\n guideTitle ? `: \"${guideTitle}\"` : ''\r\n }`;\r\n\r\n return (\r\n <>\r\n {isFavorite ? (\r\n <Confirm\r\n trigger={\r\n <StyledButton\r\n className=\"humany-favorite-button\"\r\n title={tooltip}\r\n aria-label={tooltip}\r\n data-favorite=\"true\"\r\n data-has-label={buttonLabel ? 'true' : 'false'}\r\n data-has-symbol=\"true\"\r\n >\r\n <SymbolBadge\r\n size={16}\r\n symbol={{ type: 'Svg', content: 'star-empty' }}\r\n />\r\n {buttonLabel && <StyledText>{buttonLabel}</StyledText>}\r\n </StyledButton>\r\n }\r\n onConfirm={remove}\r\n cancelLabel={removeFavoriteCancelLabel}\r\n confirmLabel={removeFavoriteConfirmLabel}\r\n header={removeFavoriteHeader}\r\n text={removeFavoriteLabel}\r\n />\r\n ) : (\r\n <StyledButton\r\n className=\"humany-favorite-button\"\r\n title={tooltip}\r\n aria-label={tooltip}\r\n onClick={add}\r\n data-favorite=\"false\"\r\n data-has-label={buttonLabel ? 'true' : 'false'}\r\n data-has-symbol=\"true\"\r\n >\r\n <SymbolBadge size={16} symbol={{ type: 'Svg', content: 'star-empty' }} />\r\n {buttonLabel && <StyledText>{buttonLabel}</StyledText>}\r\n </StyledButton>\r\n )}\r\n </>\r\n );\r\n};\r\n\r\nexport default FavoriteButton;\r\n\r\nconst StyledButton = styled(StyledListButton)<any>`\r\n grid-area: favorite;\r\n\r\n &:focus {\r\n ${(p: any) =>\r\n p.theme.accessibility?.isTabbing &&\r\n css`\r\n svg {\r\n ${(p: any) =>\r\n p['data-favorite'] === 'true'\r\n ? `\r\n fill: transparent;\r\n\r\n path {\r\n fill: transparent;\r\n }\r\n `\r\n : `\r\n fill: ${p.theme.colors?.text};\r\n\r\n path {\r\n fill: ${p.theme.colors?.text};\r\n }\r\n `}\r\n }\r\n `};\r\n }\r\n\r\n ${(p: any) =>\r\n p.theme.colors?.text &&\r\n css`\r\n svg {\r\n stroke: ${p.theme.colors?.text};\r\n\r\n path {\r\n stroke: ${p.theme.colors?.text};\r\n }\r\n\r\n ${p['data-favorite'] === 'true' &&\r\n `\r\n fill: ${p.theme.colors?.text};\r\n\r\n path {\r\n fill: ${p.theme.colors?.text};\r\n }\r\n `}\r\n }\r\n\r\n &:hover {\r\n svg {\r\n ${p['data-favorite'] === 'true'\r\n ? `\r\n fill: transparent;\r\n\r\n path {\r\n fill: transparent;\r\n }\r\n `\r\n : `\r\n fill: ${p.theme.colors?.text};\r\n\r\n path {\r\n fill: ${p.theme.colors?.text};\r\n }\r\n `}\r\n }\r\n }\r\n `}\r\n`;\r\n","import {\r\n Button,\r\n convertToStringAttributes,\r\n Icon,\r\n invertedHoverButton,\r\n StyledText,\r\n} from '@telia-ace/widget-ui';\r\nimport { appendClassNames } from '@telia-ace/widget-utilities';\r\nimport React, { forwardRef } from 'react';\r\nimport styled, { css } from 'styled-components';\r\n\r\nexport type Props = Merge<\r\n React.ComponentProps<'div'>,\r\n {\r\n onFeedback?: (feedback: 'positive' | 'negative') => void;\r\n positive?: string;\r\n negative?: string;\r\n header?: string;\r\n selected?: 'positive' | 'negative';\r\n direction?: 'horizontal' | 'vertical';\r\n }\r\n>;\r\n\r\nexport default forwardRef<HTMLDivElement, Props>(\r\n (\r\n {\r\n onFeedback = () => {},\r\n direction = 'horizontal',\r\n className,\r\n header,\r\n positive,\r\n negative,\r\n selected,\r\n ...other\r\n },\r\n ref\r\n ) => {\r\n return (\r\n <Wrapper\r\n className={appendClassNames(className, 'humany-feedback')}\r\n data-direction={direction}\r\n {...convertToStringAttributes(other)}\r\n ref={ref}\r\n >\r\n {!!header && <Header>{header}</Header>}\r\n <FeedbackButton\r\n className=\"humany-feedback-button\"\r\n disabled={!!selected}\r\n aria-pressed={selected === 'positive'}\r\n data-selected={selected === 'positive'}\r\n data-direction={direction}\r\n onClick={() => onFeedback('positive')}\r\n >\r\n <Icon faIcon=\"smile-o\" />\r\n <span>{positive}</span>\r\n </FeedbackButton>\r\n <FeedbackButton\r\n className=\"humany-feedback-button\"\r\n disabled={!!selected}\r\n aria-pressed={selected === 'negative'}\r\n data-selected={selected === 'negative'}\r\n data-direction={direction}\r\n onClick={() => onFeedback('negative')}\r\n >\r\n <Icon faIcon=\"frown-o\" />\r\n <span>{negative}</span>\r\n </FeedbackButton>\r\n </Wrapper>\r\n );\r\n }\r\n);\r\n\r\nconst Header = styled(StyledText)`\r\n font-weight: normal;\r\n margin: 0 0 ${(p) => p.theme.sizes?.normal};\r\n font-size: ${(p) => p.theme.fonts?.normal};\r\n display: block;\r\n`;\r\n\r\nconst FeedbackButton = styled(Button)<{\r\n 'data-selected': boolean;\r\n 'data-direction': 'horizontal' | 'vertical';\r\n}>`\r\n display: inline-block;\r\n font-size: ${(p) => p.theme.fonts?.normal};\r\n font-weight: 300;\r\n && {\r\n margin-right: ${(p) => p.theme.sizes?.large};\r\n }\r\n\r\n ${(p) =>\r\n p['data-direction'] === 'horizontal' &&\r\n css`\r\n width: 225px;\r\n max-width: calc(50% - ${p.theme.sizes?.large} - ${p.theme.sizes?.small});\r\n `}\r\n\r\n ${(p) =>\r\n p['data-direction'] === 'vertical' &&\r\n css`\r\n min-width: 190px;\r\n `}\r\n\r\n ${(p) =>\r\n invertedHoverButton({\r\n active: p['data-selected'],\r\n primaryColor: p.theme.colors?.primary,\r\n secondaryColor: '#FFFFFF',\r\n })}\r\n\r\n i {\r\n margin: 0 ${(p) => p.theme.sizes?.small} 0 0;\r\n }\r\n`;\r\n\r\nconst Wrapper = styled.div<{ 'data-direction': 'horizontal' | 'vertical' } & any>`\r\n ${(p) =>\r\n p['data-direction'] === 'vertical' &&\r\n css`\r\n > button {\r\n width: 100%;\r\n &:not(:last-child) {\r\n margin-bottom: ${(p) => p.theme.sizes?.normal};\r\n }\r\n }\r\n `}\r\n`;\r\n","import { useKeyPress } from '@telia-ace/widget-ui';\r\nimport { useEffect, useState } from 'react';\r\n\r\ntype ArrowKey = 'up' | 'down' | 'left' | 'right';\r\n\r\nconst useArrowKeys = (): ArrowKey | null => {\r\n // State for keeping track of whether key is pressed\r\n const [keyPressed, setKeyPressed] = useState<ArrowKey | null>(null);\r\n\r\n const left = useKeyPress('ArrowLeft');\r\n const right = useKeyPress('ArrowRight');\r\n const up = useKeyPress('ArrowUp');\r\n const down = useKeyPress('ArrowDown');\r\n\r\n const effect = () => {\r\n if (left) {\r\n setKeyPressed('left');\r\n } else if (right) {\r\n setKeyPressed('right');\r\n } else if (up) {\r\n setKeyPressed('up');\r\n } else if (down) {\r\n setKeyPressed('down');\r\n } else {\r\n setKeyPressed(null);\r\n }\r\n };\r\n\r\n useEffect(effect, [left, right, up, down]);\r\n\r\n return keyPressed;\r\n};\r\n\r\nexport default useArrowKeys;\r\n","import { useCallback, useEffect, useState } from 'react';\r\n\r\nconst useDebounce = (value: string, delay: number) => {\r\n // State and setters for debounced value\r\n const [debouncedValue, setDebouncedValue] = useState(value);\r\n\r\n const handler = useCallback(() => {\r\n // Update debounced value after delay\r\n return setTimeout(() => {\r\n setDebouncedValue(value);\r\n }, delay);\r\n }, [delay, setDebouncedValue, value]);\r\n\r\n useEffect(\r\n () => {\r\n const timeout = handler();\r\n\r\n // Cancel the timeout if value changes (also on delay change or unmount)\r\n // This is how we prevent debounced value from updating if value is changed\r\n // within the delay period. Timeout gets cleared and restarted.\r\n return () => {\r\n clearTimeout(timeout);\r\n };\r\n },\r\n [handler] // Only re-call effect if value or delay changes\r\n );\r\n\r\n return debouncedValue;\r\n};\r\n\r\nexport default useDebounce;\r\n","import { Widget } from '@telia-ace/knowledge-widget-core';\r\nimport { useContainer } from '@telia-ace/widget-ui';\r\nimport { useCallback, useEffect, useMemo, useState } from 'react';\r\n\r\nexport type FavoriteActions = {\r\n addFavorite: (guideId: string) => Promise<string[]>;\r\n clearFavorites: () => Promise<string[]>;\r\n removeFavorite: (guideId: string) => Promise<string[]>;\r\n toggleFavorite: (guideId: string) => Promise<string[]>;\r\n};\r\n\r\nconst useFavorites = (): [string[], FavoriteActions] => {\r\n const container = useContainer();\r\n const [favorites, setFavorites] = useState<string[]>([]);\r\n const platform = container.get('favorites');\r\n\r\n useEffect(() => {\r\n if (platform) {\r\n setFavorites(platform.get());\r\n\r\n const { events } = container.get('$widget') as Widget;\r\n const unsubscribe = events.subscribe('widget:favorites-updated', (_, { updated }) => {\r\n setFavorites([...updated]);\r\n });\r\n\r\n return unsubscribe;\r\n }\r\n }, []);\r\n\r\n const add = (guideId: string): Promise<string[]> => {\r\n if (!platform) {\r\n return Promise.resolve([]);\r\n }\r\n return platform.add(guideId);\r\n };\r\n\r\n const remove = (guideId: string) => {\r\n if (!platform) {\r\n return Promise.resolve([]);\r\n }\r\n return platform.remove(guideId);\r\n };\r\n\r\n const clear = () => {\r\n if (!platform) {\r\n return Promise.resolve([]);\r\n }\r\n return platform.clear();\r\n };\r\n\r\n const toggle = useCallback(\r\n (guideId: string) => {\r\n if (favorites.indexOf(guideId) > -1) {\r\n return remove(guideId);\r\n } else {\r\n return add(guideId);\r\n }\r\n },\r\n [favorites]\r\n );\r\n\r\n return [\r\n favorites,\r\n useMemo(\r\n () => ({\r\n addFavorite: add,\r\n removeFavorite: remove,\r\n clearFavorites: clear,\r\n toggleFavorite: toggle,\r\n }),\r\n [favorites]\r\n ),\r\n ];\r\n};\r\n\r\nexport default useFavorites;\r\n","import { useEventListener } from '@telia-ace/widget-ui';\r\nimport { useCallback, useRef, useState } from 'react';\r\n\r\nexport default (): [boolean, React.MutableRefObject<HTMLElement | undefined>] => {\r\n const [hovering, setHovering] = useState(false);\r\n const elem = useRef<HTMLElement>();\r\n\r\n const onMouseEnter = useCallback(() => setHovering(true), [setHovering]);\r\n\r\n const onMouseLeave = useCallback(() => setHovering(false), [setHovering]);\r\n\r\n useEventListener('mouseenter', onMouseEnter, elem.current);\r\n\r\n useEventListener('mouseleave', onMouseLeave, elem.current);\r\n\r\n return [hovering, elem];\r\n};\r\n","import { DateFormats, Text, Timestamp } from '@telia-ace/widget-ui';\r\nimport { appendClassNames } from '@telia-ace/widget-utilities';\r\nimport React from 'react';\r\nimport styled from 'styled-components';\r\n\r\nexport type Props = {\r\n className?: string;\r\n modified?: string;\r\n published?: string;\r\n modifiedBy?: string | null;\r\n publishedBy?: string | null;\r\n showModified?: boolean;\r\n showPublished?: boolean;\r\n modifiedLabel?: string;\r\n publishedLabel?: string;\r\n byLabel?: string;\r\n format?: DateFormats;\r\n};\r\n\r\nconst Metadata: React.FC<Props> = ({\r\n format = DateFormats.YYYY_MM_DD_HH_MM,\r\n className = '',\r\n byLabel = '',\r\n modifiedLabel = '',\r\n publishedLabel = '',\r\n modifiedBy = '',\r\n publishedBy = '',\r\n showModified = false,\r\n showPublished = false,\r\n modified,\r\n published,\r\n}) => {\r\n const publishedTimestamp =\r\n showPublished && published ? (\r\n <StyledTimestamp format={format} timestamp={published} />\r\n ) : null;\r\n const modifiedTimestamp =\r\n showModified && modified ? <StyledTimestamp format={format} timestamp={modified} /> : null;\r\n\r\n if (!publishedTimestamp && !modifiedTimestamp) {\r\n return null;\r\n }\r\n\r\n return (\r\n <StyledText className={appendClassNames(className, 'humany-metadata')}>\r\n {publishedTimestamp && (\r\n <StyledText className=\"humany-published\">\r\n {publishedLabel}\r\n {publishedTimestamp}\r\n {byLabel && publishedBy && ` ${byLabel.replace('{{editor}}', publishedBy)}`}\r\n </StyledText>\r\n )}\r\n {modifiedTimestamp && (\r\n <StyledText className=\"humany-modified\">\r\n {publishedTimestamp && ', '}\r\n {modifiedLabel}\r\n {modifiedTimestamp}\r\n {byLabel && modifiedBy && ` ${byLabel.replace('{{editor}}', modifiedBy)}`}\r\n </StyledText>\r\n )}\r\n </StyledText>\r\n );\r\n};\r\n\r\nexport default Metadata;\r\n\r\nconst StyledTimestamp = styled(Timestamp)`\r\n &:not(:first-child) {\r\n margin-left: 4px;\r\n }\r\n &:not(:last-child) {\r\n margin-right: 4px;\r\n }\r\n`;\r\n\r\nconst StyledText = styled(Text)`\r\n font-style: italic;\r\n`;\r\n","import { Guide, Symbol, Tag } from '@telia-ace/knowledge-widget-core';\r\nimport {\r\n borderTabStyle,\r\n convertToStringAttributes,\r\n DispatchAction,\r\n headingElement,\r\n ItemList,\r\n itemList,\r\n ItemRenderer,\r\n List,\r\n list,\r\n SymbolBadge,\r\n TextLink,\r\n usePrevious,\r\n useRouteData,\r\n} from '@telia-ace/widget-ui';\r\nimport {\r\n appendClassNames,\r\n createParams,\r\n htmlParentContains,\r\n Params,\r\n} from '@telia-ace/widget-utilities';\r\nimport React, {\r\n forwardRef,\r\n useCallback,\r\n useContext,\r\n useEffect,\r\n useImperativeHandle,\r\n useRef,\r\n} from 'react';\r\nimport styled, { css, ThemeContext } from 'styled-components';\r\nimport { useFavorites } from '../hooks';\r\nimport { ItemListProps } from '../missing-type-exports';\r\nimport FavoriteButton from './favorite-button';\r\nimport Metadata, { Props as MetadataProps } from './metadata';\r\n\r\ntype Routing = {\r\n guide?: string;\r\n page?: string;\r\n};\r\n\r\ntype ParamMappers = {\r\n guide?: (guide: Guide) => Params;\r\n page?: () => Params;\r\n};\r\n\r\nexport type Props = Merge<\r\n ItemListProps,\r\n {\r\n paramMappers?: ParamMappers;\r\n routing?: Routing;\r\n pageLabel?: string;\r\n symbolSize?: number;\r\n renderItem?: ItemRenderer;\r\n pageRole?: 'link' | 'button';\r\n pageCaret?: 'right' | 'down';\r\n showTags?: boolean;\r\n showFavoriteToggle?: boolean;\r\n addFavoriteTooltip?: string;\r\n removeFavoriteCancelLabel?: string;\r\n removeFavoriteConfirmLabel?: string;\r\n removeFavoriteHeader?: string;\r\n removeFavoriteLabel?: string;\r\n removeFavoriteTooltip?: string;\r\n metadata?: Partial<MetadataProps>;\r\n dispatch?: DispatchAction;\r\n localPaging?: boolean;\r\n expandable?: boolean;\r\n onItemClick?: (e: React.MouseEvent, guide: Guide) => void;\r\n }\r\n>;\r\n\r\nconst Tags: React.FC<{ tags: Tag[] }> = ({ tags }) => {\r\n if (!tags.filter((t) => t.symbol).length) {\r\n return null;\r\n }\r\n\r\n return (\r\n <StyledTagList\r\n className=\"humany-guide-list-tags\"\r\n items={tags}\r\n renderItem={({ id, symbol, title }: Tag) =>\r\n symbol && (\r\n <li key={id} data-tag={id}>\r\n <StyledTagIcon size={18} symbol={symbol} title={title} />\r\n </li>\r\n )\r\n }\r\n />\r\n );\r\n};\r\n\r\nexport const AccordionListItem = forwardRef<\r\n HTMLLIElement,\r\n {\r\n title: string;\r\n id: string;\r\n route: string;\r\n symbolSize?: number;\r\n collapseUri?: string;\r\n children?: React.ReactNode;\r\n }\r\n>(({ title, id, route, symbolSize, collapseUri, children }, ref) => {\r\n const { params } = useRouteData();\r\n\r\n return (\r\n <ActiveAccordionListItem ref={ref} data-guide={id}>\r\n <TextLink\r\n title={title}\r\n aria-label={title}\r\n routeName={route}\r\n params={createParams({\r\n ...params,\r\n uriName: collapseUri ? collapseUri : undefined,\r\n id: undefined,\r\n guide: undefined,\r\n accordion: undefined,\r\n })}\r\n text={title}\r\n >\r\n <SymbolBadge size={symbolSize} symbol={{ type: 'Svg', content: 'caret-up' }} />\r\n </TextLink>\r\n {children}\r\n </ActiveAccordionListItem>\r\n );\r\n});\r\n\r\nconst ActiveAccordionListItem = styled.li`\r\n > a { \r\n grid-column: 1 / -1\r\n font-weight: bold;\r\n margin: 0 0 ${(p) => p.theme.sizes?.normal} 0;\r\n }\r\n\r\n > div {\r\n grid-column: 1 / -1\r\n }\r\n`;\r\n\r\nexport default forwardRef<HTMLDivElement, Props>(\r\n (\r\n {\r\n expandable = false,\r\n routing = {},\r\n paramMappers = {},\r\n symbolSize = 11,\r\n pageRole = 'link',\r\n pageCaret = 'down',\r\n showTags = false,\r\n showFavoriteToggle = false,\r\n localPaging = false,\r\n onItemClick = () => {},\r\n dispatch = () => {},\r\n metadata = {},\r\n pageLabel,\r\n className,\r\n children,\r\n items,\r\n renderItem,\r\n addFavoriteTooltip,\r\n removeFavoriteCancelLabel,\r\n removeFavoriteConfirmLabel,\r\n removeFavoriteHeader,\r\n removeFavoriteLabel,\r\n removeFavoriteTooltip,\r\n ...other\r\n },\r\n ref\r\n ) => {\r\n const {\r\n accessibility: { isTabbing = false },\r\n } = useContext(ThemeContext);\r\n const innerRef = useRef() as React.MutableRefObject<HTMLElement>;\r\n const prevItems = usePrevious(items);\r\n const { guide: guideRoute = 'guide', page: pageRoute = 'index' } = routing;\r\n const {\r\n guide: mapGuideParams = ({ id }: Guide) => createParams({ guide: id }),\r\n page: mapPageParams = () => createParams(),\r\n } = paramMappers;\r\n const [favorites, actions] = useFavorites();\r\n\r\n useImperativeHandle(ref, () => innerRef.current as any);\r\n\r\n const defaultRenderer: ItemRenderer = (guide: Guide) => {\r\n const { id, title, tags, published, modified, publishedBy, modifiedBy } = guide;\r\n\r\n return (\r\n <li\r\n key={id}\r\n data-guide={id}\r\n has-metadata={(\r\n (!!metadata?.showPublished && !!published) ||\r\n (!!metadata?.showModified && !!modified)\r\n ).toString()}\r\n >\r\n <TextLink\r\n className=\"humany-guide-link\"\r\n title={title}\r\n aria-label={title}\r\n routeName={guideRoute}\r\n onClick={(e: React.MouseEvent) => onItemClick(e, guide)}\r\n params={mapGuideParams(guide)}\r\n text={title}\r\n >\r\n <SymbolBadge\r\n size={symbolSize}\r\n symbol={{\r\n type: 'Svg',\r\n content: expandable ? 'caret-down' : 'caret-right',\r\n }}\r\n />\r\n </TextLink>\r\n {showFavoriteToggle && (\r\n <FavoriteButton\r\n guideTitle={title}\r\n addFavoriteTooltip={addFavoriteTooltip}\r\n removeFavoriteCancelLabel={removeFavoriteCancelLabel}\r\n removeFavoriteConfirmLabel={removeFavoriteConfirmLabel}\r\n removeFavoriteHeader={removeFavoriteHeader}\r\n removeFavoriteLabel={removeFavoriteLabel}\r\n removeFavoriteTooltip={removeFavoriteTooltip}\r\n isFavorite={favorites.indexOf(id) > -1}\r\n actions={actions}\r\n id={id}\r\n />\r\n )}\r\n {showTags && <Tags tags={tags} />}\r\n <StyledMetadata\r\n {...metadata}\r\n indent={expandable ? undefined : symbolSize}\r\n modified={modified}\r\n published={published}\r\n publishedBy={publishedBy}\r\n modifiedBy={modifiedBy}\r\n />\r\n </li>\r\n );\r\n };\r\n\r\n const renderer = useCallback(\r\n (guide: Guide, index: number, items: Guide[]) => {\r\n if (renderItem) {\r\n return renderItem(guide, index, items, defaultRenderer);\r\n }\r\n\r\n return defaultRenderer(guide, index, items);\r\n },\r\n [renderItem, defaultRenderer]\r\n );\r\n\r\n const onPageClick = useCallback(\r\n (e: React.MouseEvent) => {\r\n if (localPaging) {\r\n e.preventDefault();\r\n dispatch('page', mapPageParams());\r\n }\r\n },\r\n [dispatch, localPaging]\r\n );\r\n\r\n useEffect(() => {\r\n if (isTabbing && prevItems && prevItems.length < items.length && innerRef.current) {\r\n const elements = innerRef.current.querySelectorAll('.humany-guide-list > ul > li');\r\n const listItemElem = elements[prevItems.length] as HTMLElement;\r\n\r\n if (elements.length === items.length && prevItems.length) {\r\n const nextListItem = elements[prevItems.length] as HTMLElement;\r\n\r\n if (nextListItem) {\r\n const focusNext = nextListItem.querySelector(\r\n '.humany-guide-link'\r\n ) as HTMLElement | null;\r\n focusNext && focusNext.focus();\r\n }\r\n } else if (listItemElem) {\r\n const observer = new MutationObserver((mutations, observer) => {\r\n mutations.forEach((mutation) => {\r\n if (mutation.addedNodes) {\r\n const found = Array.from(\r\n mutation.addedNodes as NodeListOf<HTMLElement>\r\n ).find((node) => node.tagName === 'A');\r\n\r\n if (\r\n found &&\r\n htmlParentContains(innerRef.current, document.activeElement)\r\n ) {\r\n isTabbing && found.focus();\r\n observer.disconnect();\r\n }\r\n }\r\n });\r\n });\r\n\r\n observer.observe(listItemElem, {\r\n attributes: false,\r\n characterData: false,\r\n childList: true,\r\n subtree: true,\r\n attributeOldValue: false,\r\n characterDataOldValue: false,\r\n });\r\n }\r\n }\r\n });\r\n\r\n const hasMetaData = !!Object.keys(metadata).filter(\r\n (k) => typeof (metadata as any)[k] !== 'undefined'\r\n ).length;\r\n return (\r\n <StyledItemList\r\n className={appendClassNames(className, 'humany-guide-list')}\r\n data-item-count={items.length}\r\n items={items}\r\n renderItem={renderer}\r\n expandable={expandable ? 'true' : 'false'}\r\n grid-items={showTags || showFavoriteToggle || hasMetaData ? 'true' : 'false'}\r\n {...convertToStringAttributes(other)}\r\n ref={innerRef as React.Ref<HTMLDivElement>}\r\n >\r\n {pageLabel ? (\r\n <TextLink\r\n text={pageLabel}\r\n title={pageLabel}\r\n aria-label={pageLabel}\r\n routeName={pageRoute}\r\n role={pageRole}\r\n params={mapPageParams()}\r\n onClick={onPageClick}\r\n >\r\n <SymbolBadge\r\n size={symbolSize}\r\n symbol={{ type: 'Svg', content: `caret-${pageCaret}` }}\r\n />\r\n </TextLink>\r\n ) : null}\r\n {children}\r\n </StyledItemList>\r\n );\r\n }\r\n);\r\n\r\nconst StyledItemList = styled(ItemList)<{\r\n 'grid-items': 'true' | 'false';\r\n expandable: 'true' | 'false';\r\n}>`\r\n ${itemList}\r\n padding: ${(p) => p.theme.sizes?.large};\r\n overflow: auto;\r\n justify-content: flex-start;\r\n white-space: nowrap;\r\n font-weight: 300;\r\n text-decoration: none;\r\n\r\n > div {\r\n ${headingElement(\r\n '> h1',\r\n css`\r\n white-space: pre-wrap;\r\n `\r\n )}\r\n }\r\n\r\n > ul > li {\r\n ${(p) =>\r\n p['grid-items'] === 'true' &&\r\n css`\r\n display: grid;\r\n grid-template-columns: auto 1fr 1fr;\r\n gap: 0px 0px;\r\n grid-template-areas: '. favorite tags';\r\n align-items: center;\r\n\r\n > button {\r\n margin: 0 0 0 ${(p) => p.theme.sizes?.small};\r\n\r\n &[data-favorite='false'] {\r\n ${(p) =>\r\n p.theme.accessibility?.isTabbing ? 'opacity: 0;' : 'display: none;'};\r\n &:focus {\r\n opacity: 1;\r\n }\r\n }\r\n }\r\n\r\n > span {\r\n font-size: ${(p) => p.theme.fonts?.small};\r\n }\r\n\r\n &:hover {\r\n button[data-favorite='false'] {\r\n display: flex;\r\n justify-self: flex-start;\r\n }\r\n }\r\n\r\n &[has-metadata='true'] {\r\n grid-template-rows: 1fr 1fr;\r\n grid-template-areas:\r\n '. favorite tags'\r\n 'metadata metadata metadata';\r\n }\r\n `}\r\n > a {\r\n color: ${(p) => p.theme.colors?.primary};\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n max-width: 100%;\r\n display: inline-block;\r\n\r\n svg {\r\n margin: 0 calc(${(p) => p.theme.sizes?.small}*2) 0 0;\r\n line {\r\n stroke: ${(p) => p.theme.colors?.primary};\r\n }\r\n }\r\n\r\n ${(p) =>\r\n p.expandable === 'true' &&\r\n css`\r\n display: flex;\r\n flex-direction: row-reverse;\r\n justify-content: flex-end;\r\n align-items: center;\r\n\r\n span {\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n }\r\n\r\n svg {\r\n margin: 0 0 0 ${(p) => p.theme.sizes?.small};\r\n }\r\n `}\r\n\r\n &:focus {\r\n ${(p) =>\r\n p.theme.accessibility?.isTabbing &&\r\n css`\r\n ${borderTabStyle}\r\n text-decoration: underline;\r\n `};\r\n }\r\n\r\n @media (hover: hover) {\r\n &:hover {\r\n text-decoration: underline;\r\n }\r\n }\r\n }\r\n }\r\n\r\n > a {\r\n color: ${(p) => p.theme.colors?.text};\r\n margin: ${(p) => p.theme.sizes?.normal} 0 0;\r\n align-self: flex-start;\r\n align-items: center;\r\n display: flex;\r\n\r\n span {\r\n text-decoration: underline;\r\n }\r\n\r\n svg {\r\n margin: 0 calc(${(p) => p.theme.sizes?.small}*2) 0 0;\r\n line {\r\n stroke: ${(p) => p.theme.colors?.text};\r\n }\r\n }\r\n\r\n &:focus {\r\n ${(p) =>\r\n p.theme.accessibility?.isTabbing &&\r\n css`\r\n ${borderTabStyle}\r\n text-decoration: underline;\r\n `};\r\n }\r\n }\r\n`;\r\n\r\nconst StyledTagList = styled(List)`\r\n ${list}\r\n display: flex;\r\n margin: 0 0 0 auto;\r\n grid-area: tags;\r\n\r\n li,\r\n li:last-child {\r\n margin: 0 0 0 ${(p) => p.theme.sizes?.small};\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n }\r\n`;\r\n\r\nconst StyledTagIcon = styled(SymbolBadge)<{ size: number; symbol: Symbol }>`\r\n display: block;\r\n color: ${(p) => p.theme.colors?.primary};\r\n ${(p: any) => {\r\n if (p.symbol.type === 'Uri') {\r\n return `\r\n width: ${p.size}px;\r\n height: ${p.size}px;\r\n `;\r\n }\r\n\r\n if (p.symbol.type === 'FontAwesome') {\r\n return `\r\n font-size: ${p.size}px;\r\n `;\r\n }\r\n }}\r\n`;\r\n\r\nconst StyledMetadata = styled(Metadata)<{ indent?: number }>`\r\n grid-area: metadata;\r\n text-overflow: ellipsis;\r\n overflow: hidden;\r\n font-size: ${(p) => p.theme.fonts?.small};\r\n ${(p) =>\r\n typeof p.indent === 'number' &&\r\n `text-indent: calc(${p.theme.sizes?.small} * 2 + ${p.indent}px);`}\r\n`;\r\n","import { Implementation } from '@telia-ace/knowledge-widget-core';\r\nimport { AnchorLink, WidgetLink } from '@telia-ace/widget-ui';\r\nimport { Container } from '@webprovisions/platform';\r\nimport React from 'react';\r\n\r\n// Determine if href starts with a hashtag\r\nconst isAnchorLink = (href: string) => {\r\n const re = new RegExp('^#', 'i');\r\n const match = re.test(href);\r\n\r\n return match;\r\n};\r\n\r\nconst embeddedLinkMapper =\r\n (container: Container) =>\r\n ({ children, ...props }: any) => {\r\n const {\r\n implementation,\r\n name: currentWidgetName,\r\n }: { implementation: Implementation; name: string } = container.get('$widget');\r\n\r\n const { href = '' } = props;\r\n\r\n if (isAnchorLink(href)) {\r\n return (\r\n <AnchorLink smooth to={href}>\r\n {children}\r\n </AnchorLink>\r\n );\r\n }\r\n\r\n const escapedBindings = implementation.bindings\r\n .map((binding: string) => binding.replace(/\\./g, '\\\\.'))\r\n .join('|');\r\n const regexp = new RegExp(`^((http[s]?:)?\\/\\/)?(${escapedBindings})\\/([^\\\\s]+)`);\r\n\r\n const expArray = regexp.exec(href);\r\n\r\n if (expArray && expArray.length >= 4) {\r\n const targetWidgetName = expArray[4];\r\n const targetWidget = implementation.widgets.get(targetWidgetName);\r\n\r\n // blob links should not be treated as a widget link\r\n if (\r\n targetWidget &&\r\n !targetWidgetName.startsWith('blob?') &&\r\n !targetWidgetName.startsWith(currentWidgetName)\r\n ) {\r\n return <WidgetLink widgetName={targetWidgetName}>{children}</WidgetLink>;\r\n }\r\n }\r\n\r\n return <a {...props}>{children}</a>;\r\n };\r\n\r\nexport default embeddedLinkMapper;\r\n","import { Lightbox } from '@telia-ace/widget-ui';\r\nimport { Container } from '@webprovisions/platform';\r\nimport React from 'react';\r\nimport { DialogLink } from '../components';\r\nimport embeddedLinkMapper from './embedded-link-mapper';\r\n\r\nconst imageLightboxRenderer = (\r\n attrs: React.DetailedHTMLProps<React.HtmlHTMLAttributes<HTMLImageElement>, HTMLImageElement>\r\n) => <Lightbox attrs={attrs} />;\r\n\r\nconst guideRenderInstructions = (container: Container, dialog: any[] = []) => {\r\n return {\r\n transform: {\r\n img: imageLightboxRenderer,\r\n a: (attr: any) => {\r\n const { children, ...otherAttr } = attr;\r\n const connectionId = otherAttr['data-target'];\r\n if (connectionId && dialog.length) {\r\n const item = dialog.find(({ connection }: any) => connection === connectionId);\r\n if (item) {\r\n return <DialogLink {...item}>{children}</DialogLink>;\r\n }\r\n }\r\n\r\n const defaultInstructions = embeddedLinkMapper(container);\r\n\r\n return defaultInstructions(attr);\r\n },\r\n },\r\n };\r\n};\r\n\r\nexport default guideRenderInstructions;\r\n"],"names":["StyledList","StyledItemList","Wrapper","Header","LoaderWrapper","StyledText"],"mappings":"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"}
|
package/dist/styles.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export declare const loadingOpacity: import("styled-components").FlattenInterpolation<import("styled-components").ThemedStyledProps<{
|
|
2
2
|
'data-loading': boolean;
|
|
3
3
|
}, any>>;
|
|
4
|
+
export declare const genericHtml: import("styled-components").FlattenInterpolation<any>;
|
|
4
5
|
export declare const SmallCaret: import("styled-components").StyledComponent<import("react").FC<import("@telia-ace/widget-ui").IconProps>, any, {}, never>;
|
|
5
6
|
export declare const StyledHeaderText: import("styled-components").StyledComponent<import("react").FC<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>>, any, {}, never>;
|
|
6
7
|
export declare const StyledListButton: import("styled-components").StyledComponent<import("react").ForwardRefExoticComponent<Pick<import("react").DetailedHTMLProps<import("react").ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, "key" | keyof import("react").ButtonHTMLAttributes<HTMLButtonElement>> & import("react").RefAttributes<HTMLButtonElement>>, any, any, never>;
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { Container } from '@webprovisions/platform';
|
|
2
|
+
import React from 'react';
|
|
2
3
|
declare const guideRenderInstructions: (container: Container, dialog?: any[]) => {
|
|
3
4
|
transform: {
|
|
5
|
+
img: (attrs: React.DetailedHTMLProps<React.HtmlHTMLAttributes<HTMLImageElement>, HTMLImageElement>) => JSX.Element;
|
|
4
6
|
a: (attr: any) => JSX.Element;
|
|
5
7
|
};
|
|
6
8
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@telia-ace/knowledge-widget-ui",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.22",
|
|
4
4
|
"description": "UI components used by ACE Knowledge Widgets.",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE.txt",
|
|
6
6
|
"author": "Telia Company AB",
|
|
@@ -28,9 +28,9 @@
|
|
|
28
28
|
},
|
|
29
29
|
"sideEffects": false,
|
|
30
30
|
"dependencies": {
|
|
31
|
-
"@telia-ace/knowledge-widget-core": "^1.0.
|
|
32
|
-
"@telia-ace/widget-routing": "^1.0.
|
|
33
|
-
"@telia-ace/widget-ui": "^1.0.
|
|
31
|
+
"@telia-ace/knowledge-widget-core": "^1.0.16",
|
|
32
|
+
"@telia-ace/widget-routing": "^1.0.13",
|
|
33
|
+
"@telia-ace/widget-ui": "^1.0.19",
|
|
34
34
|
"@telia-ace/widget-utilities": "^1.0.2",
|
|
35
35
|
"@webprovisions/platform": "^1.1.2"
|
|
36
36
|
},
|
|
@@ -48,5 +48,5 @@
|
|
|
48
48
|
"@types/react-transition-group": "^4.2.3",
|
|
49
49
|
"@types/styled-components": "^5.1.7"
|
|
50
50
|
},
|
|
51
|
-
"gitHead": "
|
|
51
|
+
"gitHead": "321711ae47ffe611d0ce45c51965e6441b4d894e"
|
|
52
52
|
}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { Notification } from '@telia-ace/knowledge-widget-core';
|
|
2
|
-
import { Symbol } from '@telia-ace/widget-ui';
|
|
3
|
-
import React from 'react';
|
|
4
|
-
declare type Props = {
|
|
5
|
-
className?: string;
|
|
6
|
-
showHeader?: boolean;
|
|
7
|
-
loading: boolean;
|
|
8
|
-
notificationList?: {
|
|
9
|
-
id: string;
|
|
10
|
-
title?: string;
|
|
11
|
-
symbol?: Symbol;
|
|
12
|
-
notifications: Notification[];
|
|
13
|
-
defaultHeaderOptions?: {
|
|
14
|
-
visible: boolean;
|
|
15
|
-
};
|
|
16
|
-
};
|
|
17
|
-
};
|
|
18
|
-
declare const NotificationList: React.FC<Props>;
|
|
19
|
-
export default NotificationList;
|