@telia-ace/knowledge-widget-components-guide 1.0.14 → 1.0.17
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/guide.858ab7a6.js +792 -0
- package/dist/guide.858ab7a6.js.map +1 -0
- package/dist/index.js +111 -170
- package/dist/index.js.map +1 -1
- package/package.json +14 -10
- package/dist/guide.js +0 -917
- package/dist/guide.js.map +0 -1
package/dist/guide.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"guide.js","sources":["../src/answer-version-picker.tsx","../src/feedback.tsx","../src/categories.tsx","../src/functions.tsx","../src/languages.tsx","../src/toolbar.tsx","../src/guide.tsx"],"sourcesContent":["import { List, paddedBorderTabStyle, TextLink, useRouteData } from '@telia-ace/knowledge-widget-ui';\r\nimport { appendClassNames } from '@telia-ace/widget-utilities';\r\nimport React, { useMemo } from 'react';\r\nimport styled, { css } from 'styled-components';\r\nimport { AvailablePerspectives, GuideProps } from './guide-component';\r\n\r\ntype Props = {\r\n className?: string;\r\n defaultAnswerVersionLabel: string;\r\n availablePerspectives?: AvailablePerspectives[];\r\n guide: GuideProps;\r\n};\r\n\r\ntype Perspective = { label: string; connection: string };\r\n\r\nconst AnswerVersionPicker: React.FC<Props> = ({\r\n className,\r\n defaultAnswerVersionLabel,\r\n guide: { perspective: selectedPerspective, perspectives: guidePerspectives },\r\n availablePerspectives = [],\r\n}) => {\r\n const { name, params } = useRouteData();\r\n\r\n const perspectives: Perspective[] = useMemo(() => {\r\n if (!guidePerspectives || !availablePerspectives.length) {\r\n return [];\r\n }\r\n\r\n return availablePerspectives\r\n .filter(({ name }) => !!guidePerspectives[name])\r\n .map(({ name, title }) => {\r\n return { label: title, connection: guidePerspectives[name] };\r\n });\r\n }, [guidePerspectives, availablePerspectives]);\r\n\r\n return (\r\n <StyledList\r\n className={appendClassNames(className, 'humany-guide-answer-version-picker')}\r\n items={perspectives}\r\n renderItem={(perspective: Perspective) => {\r\n const label =\r\n perspective.label === 'Default' ? defaultAnswerVersionLabel : perspective.label;\r\n const selected = selectedPerspective === perspective.connection;\r\n const isRoot =\r\n selected && (!params.connection || selectedPerspective === params.connection);\r\n\r\n return (\r\n <li key={perspective.connection} data-version={perspective.connection}>\r\n <VersionLink\r\n key={perspective.connection}\r\n forwardedAs={isRoot ? 'span' : undefined}\r\n text={label}\r\n routeName={name}\r\n selected={selected}\r\n aria-label={label}\r\n title={label}\r\n params={{\r\n ...params,\r\n connection: perspective.connection,\r\n }}\r\n />\r\n </li>\r\n );\r\n }}\r\n />\r\n );\r\n};\r\n\r\nexport default AnswerVersionPicker;\r\n\r\nconst StyledList = styled(List)`\r\n display: flex;\r\n align-items: center;\r\n flex-wrap: wrap;\r\n\r\n list-style: none;\r\n padding: 0;\r\n margin: 0;\r\n\r\n li:not(:last-child) {\r\n margin: 0 calc(${(p) => p.theme.sizes?.small} * 2) 0 0;\r\n }\r\n\r\n li > span {\r\n cursor: default;\r\n }\r\n`;\r\n\r\nconst VersionLink = styled(TextLink)<{ selected: boolean }>`\r\n font-weight: 300;\r\n color: ${(p) => p.theme.colors?.text};\r\n text-decoration: none;\r\n\r\n ${(p) =>\r\n p.selected &&\r\n css`\r\n font-weight: bold;\r\n text-decoration: underline;\r\n `}\r\n\r\n &:focus {\r\n ${(p: any) => p.theme.accessibility?.isTabbing && paddedBorderTabStyle};\r\n }\r\n`;\r\n","import { ContactList } from '@telia-ace/knowledge-widget-adapters';\r\nimport {\r\n Feedback as FeedbackUi,\r\n StyledHeaderText,\r\n useDispatch,\r\n useProperties,\r\n} from '@telia-ace/knowledge-widget-ui';\r\nimport React from 'react';\r\nimport styled from 'styled-components';\r\nimport { GuideComponentProps } from './guide-component';\r\n\r\ntype Props = { backButtonShown?: boolean; accordion?: boolean };\r\n\r\nconst StyledContactList = styled(ContactList)<{\r\n accordion: 'true' | 'false';\r\n backButtonShown: 'true' | 'false';\r\n}>`\r\n border-top: ${(p) => p.theme.border};\r\n ${(p) => p.backButtonShown === 'true' && `border-bottom: ${p.theme.border};`}\r\n`;\r\n\r\nconst StyledFeedback = styled(FeedbackUi)<{ accordion: 'true' | 'false' }>`\r\n ${(p) => `padding: ${p.theme.sizes?.large} ${p.theme.sizes?.large};`}\r\n`;\r\n\r\nconst Recognition = styled(StyledHeaderText)<{ accordion: 'true' | 'false' }>`\r\n ${(p) => `padding: ${p.theme.sizes?.large} ${p.theme.sizes?.large};`}\r\n\r\n display: block;\r\n font-size: ${(p) => p.theme.fonts?.normal};\r\n font-weight: bold;\r\n`;\r\n\r\nconst Feedback: React.SFC<Props> = ({ backButtonShown = false, accordion = false }) => {\r\n const dispatch = useDispatch();\r\n const {\r\n loading = false,\r\n dialog = [],\r\n guide,\r\n\r\n handoverContactMethods = [],\r\n contactHeader,\r\n\r\n showFeedback,\r\n feedbackDirection = 'horizontal',\r\n feedbackRecognitionLabel,\r\n feedbackGiven,\r\n feedbackHeader,\r\n positiveFeedbackLabel,\r\n negativeFeedbackLabel,\r\n contactFeedbackLabel,\r\n } = useProperties<GuideComponentProps>();\r\n\r\n if (\r\n !showFeedback ||\r\n !guide ||\r\n !guide.allowFeedback ||\r\n (loading && !feedbackGiven) ||\r\n dialog.length\r\n ) {\r\n return null;\r\n }\r\n\r\n if (feedbackGiven && feedbackRecognitionLabel && !handoverContactMethods.length) {\r\n return (\r\n <Recognition accordion={accordion ? 'true' : 'false'}>\r\n {feedbackRecognitionLabel}\r\n </Recognition>\r\n );\r\n }\r\n\r\n return guide.hasHandover && handoverContactMethods.length ? (\r\n <StyledContactList\r\n backButtonShown={backButtonShown ? 'true' : 'false'}\r\n accordion={accordion ? 'true' : 'false'}\r\n header={contactHeader}\r\n contactMethods={handoverContactMethods}\r\n dispatch={dispatch}\r\n />\r\n ) : (\r\n <StyledFeedback\r\n accordion={accordion ? 'true' : 'false'}\r\n positive={positiveFeedbackLabel}\r\n negative={guide.hasHandover ? contactFeedbackLabel : negativeFeedbackLabel}\r\n header={feedbackHeader}\r\n selected={feedbackGiven}\r\n onFeedback={(feedback) => dispatch('feedback', feedback)}\r\n direction={feedbackDirection}\r\n />\r\n );\r\n};\r\n\r\nexport default Feedback;\r\n","import { Category, PickerTypes } from '@telia-ace/knowledge-widget-core';\r\nimport {\r\n StyledListButton,\r\n SymbolBadge,\r\n Text,\r\n Tooltip,\r\n useContainer,\r\n} from '@telia-ace/knowledge-widget-ui';\r\nimport { buildCategoryTrail } from '@telia-ace/widget-utilities';\r\nimport React, { useEffect, useState } from 'react';\r\nimport styled from 'styled-components';\r\nimport { GuideProps, ToolbarProps } from './guide-component';\r\n\r\ntype Props = {\r\n guide: GuideProps;\r\n toolbar: ToolbarProps;\r\n};\r\n\r\nconst Categories: React.FC<Props> = ({\r\n guide: { categories = [] },\r\n toolbar: { picker = PickerTypes.NONE },\r\n}) => {\r\n const [trail, setTrail] = useState<Category[][]>([]);\r\n const container = useContainer();\r\n\r\n useEffect(() => {\r\n buildCategoryTrail(\r\n 'index',\r\n categories.map((id) => id.toString()),\r\n container\r\n ).then((result) => {\r\n setTrail(result);\r\n });\r\n }, [categories]);\r\n\r\n if (!trail.length) {\r\n return null;\r\n }\r\n\r\n return (\r\n <Tooltip\r\n className=\"humany-guide-category-tooltip\"\r\n sticky={picker === PickerTypes.DRAWER}\r\n content={\r\n <>\r\n {trail.map((segments) => {\r\n return (\r\n <CategoryTrail\r\n className=\"humany-guide-category-trail\"\r\n key={segments.map((c) => c.id).join('.')}\r\n >\r\n {segments.map((category, index: number) => {\r\n return (\r\n <Text\r\n className=\"humany-guide-category-trail-segment\"\r\n key={category.id}\r\n >\r\n {category.symbol && index === 0 && (\r\n <SymbolBadge size={14} symbol={category.symbol} />\r\n )}\r\n {category.title}\r\n {index !== segments.length - 1 && (\r\n <CategorySeparator className=\"humany-category-separator\">\r\n /\r\n </CategorySeparator>\r\n )}\r\n </Text>\r\n );\r\n })}\r\n </CategoryTrail>\r\n );\r\n })}\r\n </>\r\n }\r\n >\r\n {picker === PickerTypes.DRAWER ? (\r\n <StyledListButton\r\n className=\"humany-guide-category-tooltip-button\"\r\n data-has-label=\"false\"\r\n data-has-symbol=\"true\"\r\n >\r\n <CategoriesSymbolBadge\r\n size={19}\r\n symbol={{ type: 'Svg', content: 'information' }}\r\n />\r\n </StyledListButton>\r\n ) : (\r\n <CategoriesSymbolBadge size={19} symbol={{ type: 'Svg', content: 'information' }} />\r\n )}\r\n </Tooltip>\r\n );\r\n};\r\n\r\nexport default Categories;\r\n\r\nconst CategoryTrail = styled.div`\r\n i,\r\n svg {\r\n margin: 0 ${(p) => p.theme.sizes?.small} 0 0;\r\n }\r\n\r\n &:not(:last-child) {\r\n margin: 0 0 ${(p) => p.theme.sizes?.small};\r\n }\r\n`;\r\n\r\nconst CategorySeparator = styled(Text)`\r\n margin: 0 ${(p) => p.theme.sizes?.small};\r\n`;\r\n\r\nconst CategoriesSymbolBadge = styled(SymbolBadge)`\r\n display: block;\r\n`;\r\n","import { PickerTypes } from '@telia-ace/knowledge-widget-core';\r\nimport {\r\n DispatchAction,\r\n DrawerAnimationType,\r\n DrawerList,\r\n DropdownList,\r\n FavoriteButton,\r\n StyledListButton,\r\n StyledText,\r\n SymbolBadge,\r\n useFavorites,\r\n} from '@telia-ace/knowledge-widget-ui';\r\nimport React, { useCallback, useMemo } from 'react';\r\nimport styled from 'styled-components';\r\nimport { GuideProps } from './guide-component';\r\n\r\nexport type FunctionListItem = {\r\n type: string;\r\n child: React.ReactNode;\r\n};\r\n\r\ntype Props = {\r\n header?: string;\r\n tooltip?: string;\r\n printActionLabel?: string;\r\n copyActionLabel?: 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 toolbarFunctionsCloseButtonAriaLabel?: string;\r\n guide: GuideProps;\r\n allowCopy?: boolean;\r\n allowPrint?: boolean;\r\n showFavoriteToggle?: boolean;\r\n picker?: PickerTypes;\r\n dispatch: DispatchAction;\r\n};\r\n\r\nconst Functions: React.FC<Props> = ({\r\n header,\r\n tooltip,\r\n printActionLabel,\r\n copyActionLabel,\r\n addFavoriteTooltip,\r\n removeFavoriteCancelLabel,\r\n removeFavoriteConfirmLabel,\r\n removeFavoriteHeader,\r\n removeFavoriteLabel,\r\n removeFavoriteTooltip,\r\n toolbarFunctionsCloseButtonAriaLabel,\r\n allowCopy = false,\r\n allowPrint = false,\r\n showFavoriteToggle = false,\r\n picker = PickerTypes.NONE,\r\n guide,\r\n dispatch,\r\n}) => {\r\n const [favorites, actions] = useFavorites();\r\n\r\n const handleCopy = useCallback(\r\n (event) => {\r\n if (guide) {\r\n dispatch('copy', guide);\r\n }\r\n },\r\n [guide, dispatch]\r\n );\r\n\r\n const handlePrint = useCallback(() => {\r\n if (guide) {\r\n dispatch('print');\r\n }\r\n }, [guide, dispatch]);\r\n\r\n const items = useMemo(() => {\r\n const { id, title } = guide;\r\n\r\n const items: FunctionListItem[] = [];\r\n\r\n if (allowCopy) {\r\n items.push({\r\n type: 'copy',\r\n child: (\r\n <StyledListButton\r\n data-has-label={copyActionLabel ? 'true' : 'false'}\r\n data-has-symbol=\"true\"\r\n title={copyActionLabel}\r\n aria-label={printActionLabel}\r\n onClick={handleCopy}\r\n >\r\n <ColoredSymbolBadge size={16} symbol={{ type: 'Svg', content: 'copy' }} />\r\n {copyActionLabel && <StyledText>{copyActionLabel}</StyledText>}\r\n </StyledListButton>\r\n ),\r\n });\r\n }\r\n\r\n if (allowPrint) {\r\n items.push({\r\n type: 'print',\r\n child: (\r\n <StyledListButton\r\n data-has-label={printActionLabel ? 'true' : 'false'}\r\n data-has-symbol=\"true\"\r\n title={printActionLabel}\r\n aria-label={printActionLabel}\r\n onClick={handlePrint}\r\n >\r\n <ColoredSymbolBadge size={16} symbol={{ type: 'Svg', content: 'print' }} />\r\n {printActionLabel && <StyledText>{printActionLabel}</StyledText>}\r\n </StyledListButton>\r\n ),\r\n });\r\n }\r\n\r\n if (showFavoriteToggle) {\r\n const isFavorite = favorites.indexOf(id) > -1;\r\n items.push({\r\n type: 'favorite',\r\n child: (\r\n <FavoriteButton\r\n id={id}\r\n guideTitle={title}\r\n isFavorite={isFavorite}\r\n buttonLabel={isFavorite ? removeFavoriteTooltip : addFavoriteTooltip}\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 actions={actions}\r\n />\r\n ),\r\n });\r\n }\r\n\r\n return items;\r\n }, [\r\n favorites,\r\n guide,\r\n allowCopy,\r\n allowPrint,\r\n showFavoriteToggle,\r\n printActionLabel,\r\n copyActionLabel,\r\n addFavoriteTooltip,\r\n removeFavoriteCancelLabel,\r\n removeFavoriteConfirmLabel,\r\n removeFavoriteHeader,\r\n removeFavoriteLabel,\r\n removeFavoriteTooltip,\r\n ]);\r\n\r\n if (!items.length) {\r\n return null;\r\n }\r\n\r\n const trigger = (\r\n <StyledTriggerButton\r\n tabIndex={0}\r\n title={tooltip}\r\n data-has-symbol=\"true\"\r\n data-has-label=\"false\"\r\n >\r\n <ColoredSymbolBadge symbol={{ type: 'Svg', content: 'options' }} size={18} />\r\n </StyledTriggerButton>\r\n );\r\n\r\n const renderListItem = ({ type, child }: FunctionListItem) => {\r\n return (\r\n <li key={type} data-function-type={type}>\r\n {child}\r\n </li>\r\n );\r\n };\r\n\r\n if (picker === PickerTypes.DROPDOWN) {\r\n return (\r\n <StyledDropdownList\r\n className=\"humany-guide-functions-dropdown-list\"\r\n header={header}\r\n items={items}\r\n trigger={trigger}\r\n renderItem={renderListItem}\r\n closeButtonAriaLabel={toolbarFunctionsCloseButtonAriaLabel}\r\n />\r\n );\r\n }\r\n\r\n if (picker === PickerTypes.DRAWER) {\r\n return (\r\n <DrawerList\r\n className=\"humany-guide-functions-drawer-list\"\r\n animation={{ type: DrawerAnimationType.SlideInBottom }}\r\n header={header}\r\n items={items}\r\n trigger={trigger}\r\n renderItem={renderListItem}\r\n closeButtonAriaLabel={toolbarFunctionsCloseButtonAriaLabel}\r\n />\r\n );\r\n }\r\n\r\n return null;\r\n};\r\n\r\nexport default Functions;\r\n\r\nconst ColoredSymbolBadge = styled(SymbolBadge)`\r\n circle {\r\n fill: ${(p) => p.theme.colors?.text};\r\n }\r\n\r\n line,\r\n path,\r\n rect {\r\n stroke: ${(p) => p.theme.colors?.text};\r\n }\r\n`;\r\n\r\nconst StyledDropdownList = styled(DropdownList)`\r\n display: block;\r\n min-height: auto;\r\n`;\r\n\r\nconst StyledTriggerButton = styled(StyledListButton)<any>`\r\n padding: calc(${(p) => p.theme.sizes?.small} * 2) 0;\r\n`;\r\n","import { LanguageProperties } from '@telia-ace/knowledge-widget-component-utilities';\r\nimport { PickerTypes } from '@telia-ace/knowledge-widget-core';\r\nimport {\r\n DrawerAnimationType,\r\n DrawerList,\r\n DropdownList,\r\n paddedBorderTabStyle,\r\n StyledListButton,\r\n SymbolBadge,\r\n Text,\r\n TextLink,\r\n useRouteData,\r\n} from '@telia-ace/knowledge-widget-ui';\r\nimport { createParams } from '@telia-ace/widget-utilities';\r\nimport React, { useMemo } from 'react';\r\nimport styled, { css } from 'styled-components';\r\nimport { GuideProps } from './guide-component';\r\n\r\nexport type LanguageListItem = {\r\n id: string;\r\n key: string;\r\n label: string;\r\n};\r\n\r\ntype Props = Merge<\r\n {\r\n header?: string;\r\n tooltip?: string;\r\n guide: GuideProps;\r\n picker?: PickerTypes;\r\n },\r\n LanguageProperties\r\n>;\r\n\r\nconst getCurrentLanguageLabel = (guide: GuideProps, languages: LanguageListItem[]) => {\r\n return languages.find((l) => l.id === guide.id)?.label || '';\r\n};\r\n\r\nconst Languages: React.FC<Props> = ({\r\n header,\r\n tooltip,\r\n picker = PickerTypes.NONE,\r\n guide,\r\n ...other\r\n}) => {\r\n const { name, params } = useRouteData();\r\n\r\n const items = useMemo(() => {\r\n return Object.keys(guide.translations || {}).reduce((acc: LanguageListItem[], key) => {\r\n const item: Partial<LanguageListItem> = {};\r\n item.key = key;\r\n item.id = (guide.translations || {})[key];\r\n item.label = (other as { [key: string]: string })[`${key}LanguageLabel`];\r\n\r\n if (item.id || item.label) {\r\n acc.push(item as LanguageListItem);\r\n }\r\n\r\n return acc;\r\n }, []);\r\n }, [guide, other]);\r\n\r\n if (!items.length) {\r\n return null;\r\n }\r\n\r\n const currentLanguage = getCurrentLanguageLabel(guide, items);\r\n\r\n const trigger = (\r\n <Trigger\r\n tabIndex={0}\r\n title={tooltip}\r\n data-has-symbol=\"true\"\r\n data-has-label={picker === PickerTypes.DROPDOWN && currentLanguage ? 'true' : 'false'}\r\n >\r\n {picker === PickerTypes.DROPDOWN && (\r\n <>\r\n {currentLanguage && <LanguageButtonText>{currentLanguage}</LanguageButtonText>}\r\n <LanguageCaretSymbolBadge\r\n symbol={{ type: 'Svg', content: 'caret-down' }}\r\n size={11}\r\n />\r\n </>\r\n )}\r\n {picker === PickerTypes.DRAWER && (\r\n <>\r\n <ColoredSymbolBadge symbol={{ type: 'Svg', content: 'language' }} size={20} />\r\n </>\r\n )}\r\n </Trigger>\r\n );\r\n\r\n const renderListItem = ({ label, key, id }: LanguageListItem) => {\r\n return (\r\n <li key={key} data-language={key}>\r\n <LanguageLink\r\n tabIndex={0}\r\n text={label}\r\n routeName={name}\r\n selected={guide.id === id}\r\n params={createParams({\r\n ...params,\r\n connection: undefined,\r\n guide: id,\r\n })}\r\n />\r\n </li>\r\n );\r\n };\r\n\r\n if (picker === PickerTypes.DROPDOWN) {\r\n return (\r\n <StyledDropdownList\r\n className=\"humany-guide-languages-dropdown-list\"\r\n header={header}\r\n items={items}\r\n trigger={trigger}\r\n renderItem={renderListItem}\r\n />\r\n );\r\n }\r\n\r\n if (picker === PickerTypes.DRAWER) {\r\n return (\r\n <DrawerList\r\n className=\"humany-guide-languages-drawer-list\"\r\n animation={{ type: DrawerAnimationType.SlideInBottom }}\r\n header={header}\r\n items={items}\r\n trigger={trigger}\r\n renderItem={renderListItem}\r\n />\r\n );\r\n }\r\n\r\n return null;\r\n};\r\n\r\nexport default Languages;\r\n\r\nconst Trigger = styled(StyledListButton)`\r\n &&& {\r\n margin: 0 ${(p) => `calc(${p.theme.sizes?.small} * 2)`} 0 0;\r\n }\r\n`;\r\n\r\nconst ColoredSymbolBadge = styled(SymbolBadge)`\r\n circle {\r\n fill: ${(p) => p.theme.colors?.text};\r\n }\r\n\r\n line,\r\n path,\r\n rect {\r\n stroke: ${(p) => p.theme.colors?.text};\r\n }\r\n`;\r\n\r\nconst LanguageButtonText = styled(Text)`\r\n margin: 0 ${(p) => p.theme.sizes?.small} 0 0;\r\n font-size: ${(p) => p.theme.fonts?.normal};\r\n`;\r\n\r\nconst LanguageCaretSymbolBadge = styled(SymbolBadge)`\r\n align-self: flex-end;\r\n stroke-width: 2px;\r\n stroke-linecap: round;\r\n\r\n && {\r\n width: 0.6em;\r\n height: 1em;\r\n }\r\n line {\r\n stroke: ${(p) => p.theme.colors?.text};\r\n }\r\n`;\r\n\r\nconst StyledDropdownList = styled(DropdownList)`\r\n display: block;\r\n min-height: auto;\r\n`;\r\n\r\nconst LanguageLink = styled(TextLink)<any>`\r\n color: ${(p) => (p.selected ? p.theme.colors?.primary : p.theme.colors?.text)};\r\n ${(p) => p.selected && 'font-weight: bold;'}\r\n\r\n &:focus {\r\n ${(p) =>\r\n p.theme.accessibility?.isTabbing\r\n ? css`\r\n ${paddedBorderTabStyle}\r\n text-decoration: underline;\r\n `\r\n : 'outline: none;'}\r\n }\r\n`;\r\n","import { PickerTypes } from '@telia-ace/knowledge-widget-core';\r\nimport { DispatchAction, useProperties } from '@telia-ace/knowledge-widget-ui';\r\nimport { appendClassNames } from '@telia-ace/widget-utilities';\r\nimport React from 'react';\r\nimport styled from 'styled-components';\r\nimport Categories from './categories';\r\nimport Functions from './functions';\r\nimport { GuideComponentProps, ToolbarProps } from './guide-component';\r\nimport Languages from './languages';\r\n\r\ntype Props = {\r\n className?: string;\r\n dispatch: DispatchAction;\r\n};\r\n\r\nconst isEmpty = (toolbar: ToolbarProps) => {\r\n const {\r\n allowCopy = false,\r\n allowPrint = false,\r\n guideCategories = false,\r\n language = false,\r\n showFavoriteToggle = false,\r\n picker = PickerTypes.NONE,\r\n } = toolbar;\r\n\r\n if (\r\n (!allowCopy && !allowPrint && !language && !showFavoriteToggle && !guideCategories) ||\r\n picker === PickerTypes.NONE\r\n ) {\r\n return true;\r\n }\r\n\r\n return false;\r\n};\r\n\r\nconst Toolbar: React.FC<Props> = ({ className = '', dispatch }) => {\r\n const {\r\n toolbarLanguageHeader,\r\n toolbarFunctionsHeader,\r\n toolbarLanguageTooltip,\r\n toolbarFunctionsTooltip,\r\n toolbarFunctionsCloseButtonAriaLabel,\r\n printActionLabel,\r\n copyActionLabel,\r\n addFavoriteTooltip,\r\n removeFavoriteCancelLabel,\r\n removeFavoriteConfirmLabel,\r\n removeFavoriteHeader,\r\n removeFavoriteLabel,\r\n removeFavoriteTooltip,\r\n guide,\r\n toolbar,\r\n ...other\r\n } = useProperties<GuideComponentProps>();\r\n\r\n if (!guide || !toolbar || isEmpty(toolbar)) {\r\n return null;\r\n }\r\n\r\n const { language, guideCategories, allowCopy, allowPrint, showFavoriteToggle, picker } =\r\n toolbar;\r\n\r\n return (\r\n <Wrapper className={appendClassNames('humany-guide-toolbar', className)}>\r\n {language && Object.keys(guide.translations || {}).length > 1 && (\r\n <Languages\r\n guide={guide}\r\n header={toolbarLanguageHeader}\r\n tooltip={toolbarLanguageTooltip}\r\n picker={picker}\r\n {...other}\r\n />\r\n )}\r\n {guideCategories && <Categories guide={guide} toolbar={toolbar} />}\r\n {(allowCopy || allowPrint || showFavoriteToggle) && (\r\n <Functions\r\n guide={guide}\r\n header={toolbarFunctionsHeader}\r\n tooltip={toolbarFunctionsTooltip}\r\n printActionLabel={printActionLabel}\r\n copyActionLabel={copyActionLabel}\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 toolbarFunctionsCloseButtonAriaLabel={toolbarFunctionsCloseButtonAriaLabel}\r\n allowCopy={allowCopy}\r\n allowPrint={allowPrint}\r\n showFavoriteToggle={showFavoriteToggle}\r\n picker={picker}\r\n dispatch={dispatch}\r\n />\r\n )}\r\n </Wrapper>\r\n );\r\n};\r\n\r\nexport default Toolbar;\r\n\r\nconst Wrapper = styled.div`\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n margin: 0 0 0 auto;\r\n\r\n > :not(:last-child) {\r\n margin: 0 calc(${(p) => p.theme.sizes?.small} * 2) 0 0;\r\n }\r\n`;\r\n","import { contactLink, ContactList } from '@telia-ace/knowledge-widget-adapters';\r\nimport { Component, NotFound } from '@telia-ace/knowledge-widget-types-grid';\r\nimport {\r\n Button,\r\n contentBox,\r\n createEmptyComponent,\r\n DialogList,\r\n genericHtml,\r\n guideRenderInstructions,\r\n headingElement,\r\n linkTabStyle,\r\n Loader,\r\n loadingOpacity,\r\n Metadata,\r\n Paragraph,\r\n useChildren,\r\n useContainer,\r\n useDispatch,\r\n useProperties,\r\n useRouteData,\r\n} from '@telia-ace/knowledge-widget-ui';\r\nimport { appendClassNames } from '@telia-ace/widget-utilities';\r\nimport React, { forwardRef, useCallback } from 'react';\r\nimport styled, { css } from 'styled-components';\r\nimport AnswerVersionPicker from './answer-version-picker';\r\nimport Feedback from './feedback';\r\nimport { GuideComponentProps } from './guide-component';\r\nimport Toolbar from './toolbar';\r\n\r\ntype Props = { className: string; accordion?: boolean };\r\n\r\nconst Guide = forwardRef<HTMLDivElement, Props>(\r\n ({ className, accordion = false, ...other }, ref) => {\r\n const {\r\n loading = false,\r\n dialog = [],\r\n contactMethods = [],\r\n showHeader = true,\r\n showAnswerVersions = false,\r\n defaultAnswerVersionLabel = 'Default',\r\n backButtonLabel,\r\n metadataByLabel,\r\n metadataModifiedLabel,\r\n metadataPublishedLabel,\r\n availablePerspectives,\r\n metadata,\r\n toolbar,\r\n guide,\r\n error,\r\n } = useProperties<GuideComponentProps>();\r\n const {\r\n params: { connection },\r\n } = useRouteData();\r\n const container = useContainer();\r\n const children = useChildren();\r\n const dispatch = useDispatch();\r\n\r\n const handleBackButtonClick = useCallback(() => {\r\n dispatch('back');\r\n }, [dispatch]);\r\n\r\n if (!guide && !error && !loading) {\r\n return createEmptyComponent(container, {\r\n ...other,\r\n className: appendClassNames(className, 'humany-guide'),\r\n });\r\n }\r\n\r\n const { id = '', title = '', body = '', translations = {} } = guide || {};\r\n\r\n if (error && error.status === 404) {\r\n return <NotFound showSearch={false} />;\r\n }\r\n\r\n const showBackButton = !!accordion && !!connection;\r\n const language = Object.keys(translations).find((key) => translations[key] === `${id}`);\r\n\r\n return (\r\n <Wrapper\r\n ref={ref}\r\n {...other}\r\n data-loading={loading}\r\n className={appendClassNames(className, 'humany-guide')}\r\n >\r\n <Content\r\n data-loading={loading}\r\n accordion={accordion ? 'true' : 'false'}\r\n className=\"humany-guide-content\"\r\n >\r\n {((showAnswerVersions && guide) || !!toolbar) && (\r\n <Top className=\"humany-guide-top\">\r\n {showAnswerVersions && guide && (\r\n <AnswerVersionPicker\r\n defaultAnswerVersionLabel={defaultAnswerVersionLabel}\r\n availablePerspectives={availablePerspectives}\r\n guide={guide}\r\n />\r\n )}\r\n {!!toolbar && <Toolbar dispatch={dispatch} />}\r\n </Top>\r\n )}\r\n {!!(title || body) && (\r\n <Body\r\n className=\"humany-guide-body\"\r\n accordion={accordion ? 'true' : 'false'}\r\n header={(showHeader && title) || undefined}\r\n html={body}\r\n htmlParseInstruction={guideRenderInstructions(container, dialog)}\r\n lang={language}\r\n />\r\n )}\r\n {dialog && body.indexOf('h-option-link') === -1 && (\r\n <StyledDialogList dialog={dialog} />\r\n )}\r\n <StyledContactList\r\n backButtonShown={showBackButton ? 'true' : 'false'}\r\n contactMethods={contactMethods}\r\n dispatch={dispatch}\r\n guideId={guide && guide.id}\r\n />\r\n {!contactMethods.length && (\r\n <Feedback backButtonShown={showBackButton} accordion={accordion} />\r\n )}\r\n {showBackButton && (\r\n <BackButton aria-label={backButtonLabel} onClick={handleBackButtonClick}>\r\n <Caret\r\n width=\"7\"\r\n height=\"13\"\r\n viewBox=\"0 0 7 13\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <line x1=\"6.64645\" y1=\"12.5513\" x2=\"0.648357\" y2=\"6.55319\" />\r\n <line x1=\"0.646447\" y1=\"6.64455\" x2=\"6.64454\" y2=\"0.646465\" />\r\n </Caret>\r\n {backButtonLabel && <span>{backButtonLabel}</span>}\r\n </BackButton>\r\n )}\r\n {metadata && (\r\n <StyledMetadata\r\n {...metadata}\r\n modified={guide?.modified}\r\n published={guide?.published}\r\n modifiedBy={guide?.modifiedBy}\r\n publishedBy={guide?.publishedBy}\r\n byLabel={metadataByLabel}\r\n modifiedLabel={metadataModifiedLabel}\r\n publishedLabel={metadataPublishedLabel}\r\n />\r\n )}\r\n {children.map((child) => (\r\n <StyledComponents\r\n key={child.id}\r\n id={child.id}\r\n branch=\"default\"\r\n {...{ embedded: true }}\r\n />\r\n ))}\r\n </Content>\r\n\r\n <Loader loading={loading} />\r\n </Wrapper>\r\n );\r\n }\r\n);\r\n\r\nexport default Guide;\r\n\r\nconst Wrapper = styled.div<{ 'data-loading': boolean }>`\r\n ${loadingOpacity}\r\n min-width: 0;\r\n`;\r\n\r\nconst Body = styled(Paragraph)<{ accordion: 'true' | 'false' }>`\r\n ${genericHtml}\r\n ${(p) => `padding: ${p.theme.sizes?.large};`}\r\n display: block;\r\n line-height: 1.6em;\r\n ${headingElement(\r\n 'h1',\r\n css`\r\n font-size: ${(p) => p.theme.fonts?.large};\r\n font-weight: normal;\r\n line-height: 1.6em;\r\n line-height: 1.6em;\r\n margin: 0 0 ${(p) => p.theme.sizes?.small};\r\n `\r\n )}\r\n\r\n p {\r\n font-weight: 300;\r\n font-size: ${(p) => p.theme.fonts?.normal};\r\n color: ${(p) => p.theme.colors?.text};\r\n a {\r\n display: inline;\r\n }\r\n }\r\n`;\r\n\r\nconst StyledContactList = styled(ContactList)<{ backButtonShown: 'true' | 'false' }>`\r\n border-top: ${(p) => p.theme.border};\r\n ${(p) => p.backButtonShown === 'true' && `border-bottom: ${p.theme.border};`}\r\n`;\r\n\r\nconst StyledDialogList = styled(DialogList)`\r\n ${(p) => `padding: 0 ${p.theme.sizes?.large} ${p.theme.sizes?.large};`}\r\n display: block;\r\n`;\r\n\r\nconst Top = styled.div`\r\n ${(p) => `padding: calc(${p.theme.sizes?.normal}*2) ${p.theme.sizes?.large};`}\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n border-bottom: ${(p) => p.theme.border};\r\n border-radius: ${(p) => `${p.theme.borderRadius} ${p.theme.borderRadius}`} 0 0;\r\n background-color: #ffffff;\r\n`;\r\n\r\nconst Content = styled.div<{ 'data-loading': boolean; accordion: 'true' | 'false' } & any>`\r\n ${contentBox}\r\n display: block;\r\n > a {\r\n ${contactLink}\r\n }\r\n\r\n ${(p) =>\r\n p.accordion === 'true' &&\r\n css`\r\n white-space: normal;\r\n box-shadow: none;\r\n background-color: #fafafa;\r\n `}\r\n`;\r\n\r\nconst StyledMetadata = styled(Metadata)`\r\n display: block;\r\n ${(p) => `padding: calc(${p.theme.sizes?.normal}*2) ${p.theme.sizes?.large};`}\r\n font-weight: 300;\r\n font-size: ${(p) => p.theme.fonts?.normal};\r\n color: ${(p) => p.theme.colors?.text};\r\n border-top: ${(p) => p.theme.border};\r\n`;\r\n\r\nconst StyledComponents = styled(Component)`\r\n border-top: ${(p) => p.theme.border};\r\n`;\r\n\r\nconst BackButton = styled(Button)`\r\n ${(p) => `padding: ${p.theme.sizes?.normal} calc(${p.theme.sizes?.normal} * 2);`}\r\n color: ${(p) => p.theme.colors?.primary};\r\n text-decoration: underline;\r\n font-size: ${(p) => p.theme.fonts?.normal};\r\n span {\r\n font-weight: 300;\r\n }\r\n &:focus {\r\n ${(p) =>\r\n p.theme.accessibility?.isTabbing &&\r\n css`\r\n ${linkTabStyle}\r\n padding: ${(p) => `calc(${p.theme.sizes?.small} / 2) ${p.theme.sizes?.small}`};\r\n `};\r\n }\r\n`;\r\n\r\nconst Caret = styled.svg`\r\n margin-right: ${(p) => p.theme.sizes?.small};\r\n line {\r\n stroke: ${(p) => p.theme.colors?.primary};\r\n }\r\n`;\r\n"],"names":["StyledContactList","FeedbackUi","ColoredSymbolBadge","StyledDropdownList","Wrapper"],"mappings":"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"}
|