{"version":3,"file":"spotlight-ui.6c647931688289888eed.bundle.js","mappings":"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","sources":["webpack://spotlight.web/./ModernScripts/Spotlight/Hooks/useClickOutside.tsx","webpack://spotlight.web/./ModernScripts/Spotlight/Hooks/usePrevious.tsx","webpack://spotlight.web/./Scripts/Spotlight/Utilities/sort.ts","webpack://spotlight.web/./ui/components/alert/alert.tsx","webpack://spotlight.web/./ui/packages/constants/constants.ts","webpack://spotlight.web/./ui/packages/constants/themes.ts","webpack://spotlight.web/./ui/components/loading-spinner/loading-spinner.tsx","webpack://spotlight.web/./ui/components/loading-spinner/images/spinner-black.ts","webpack://spotlight.web/./ui/components/loading-spinner/images/spinner-white.ts","webpack://spotlight.web/./ui/components/button/button.tsx","webpack://spotlight.web/./ui/components/collapsible-band/collapsible-band.tsx","webpack://spotlight.web/./ui/components/collapsible-band/index.ts","webpack://spotlight.web/./ui/components/grid-row/grid-row.tsx","webpack://spotlight.web/./ui/components/grid-col/grid-col.tsx","webpack://spotlight.web/./ui/components/loading-screen/loading-screen.tsx","webpack://spotlight.web/./ui/components/modal/modal.tsx","webpack://spotlight.web/./ui/components/search-filter/search-filter.tsx","webpack://spotlight.web/./ui/components/chart-selector/atoms/chart-group/chart-group.tsx","webpack://spotlight.web/./ui/components/chart-selector/atoms/chart-icon/chart-icon.tsx","webpack://spotlight.web/./ui/components/chart-selector/atoms/chart-info/chart-info.tsx","webpack://spotlight.web/./ui/components/chart-selector/chart-selector.tsx","webpack://spotlight.web/./ui/components/tabs/tabs.tsx","webpack://spotlight.web/./ui/components/tabs/index.ts","webpack://spotlight.web/./ui/components/color-picker/atoms/color-picker-palette/color-picker-palette.tsx","webpack://spotlight.web/./ui/components/color-picker/atoms/custom-color-picker/custom-color-picker-fields.tsx","webpack://spotlight.web/./ui/components/color-picker/helper.ts","webpack://spotlight.web/./ui/components/color-picker/atoms/custom-color-picker/custom-color-picker-pointer.tsx","webpack://spotlight.web/./ui/components/color-picker/atoms/custom-color-picker/custom-color-picker.tsx","webpack://spotlight.web/./ui/components/color-picker/color-picker.tsx","webpack://spotlight.web/./ui/components/color-picker-popover/color-picker-popover.tsx","webpack://spotlight.web/./ui/components/gallery-browser/atoms/item-group/item-group.tsx","webpack://spotlight.web/./ui/components/gallery-icon/gallery-icon.tsx","webpack://spotlight.web/./ui/components/gallery-browser/gallery-browser.tsx","webpack://spotlight.web/./ui/components/gallery-item-info/gallery-item-info.tsx","webpack://spotlight.web/./ui/components/modal-confirm/modal-confirm.tsx","webpack://spotlight.web/./ui/components/breadcrumbs/breadcrumbs.tsx","webpack://spotlight.web/./ui/components/step-process/step-process.tsx","webpack://spotlight.web/./ui/components/text/text.tsx","webpack://spotlight.web/./ui/components/helper-modal/helper-modal.tsx","webpack://spotlight.web/./ui/components/text-input/text-input.tsx","webpack://spotlight.web/./ui/components/text-field-inline/text-field-inline.tsx","webpack://spotlight.web/./ui/components/radio-input/radio-input.tsx","webpack://spotlight.web/./ui/components/checkbox-input/checkbox-input.tsx","webpack://spotlight.web/./ui/components/tracking-settings/tracking-settings-enums.ts","webpack://spotlight.web/./ui/components/tree-collapse/tree-collapse.tsx","webpack://spotlight.web/./ui/components/select-field/select-field.tsx","webpack://spotlight.web/./ui/components/tracking-settings/atoms/TreeCollapseWrapper/tree-collapse-wrapper.tsx","webpack://spotlight.web/./ui/components/tracking-settings/atoms/DataWrapper/data-wrapper.tsx","webpack://spotlight.web/./ui/components/tracking-settings/tracking-settings.tsx","webpack://spotlight.web/./ui/components/tab-button-group/tab-button-group.tsx","webpack://spotlight.web/./ui/components/tab-button-group/atoms/tab-button/tab-button.tsx","webpack://spotlight.web/./ui/components/password-input/password-input.tsx","webpack://spotlight.web/./ui/components/password-field/password-field.tsx","webpack://spotlight.web/./ui/components/number-input/number-input.tsx","webpack://spotlight.web/./ui/components/number-field/number-field.tsx","webpack://spotlight.web/./ui/components/number-field-inline/number-field-inline.tsx","webpack://spotlight.web/./ui/packages/icons/sort-number-asc/sort-number-asc.tsx","webpack://spotlight.web/./ui/packages/icons/sort-number-asc/index.ts","webpack://spotlight.web/./ui/packages/icons/sort-number-desc/sort-number-desc.tsx","webpack://spotlight.web/./ui/packages/icons/sort-number-desc/index.ts","webpack://spotlight.web/./ui/components/sort-number-asc-desc-field/sort-number-asc-desc-field.tsx","webpack://spotlight.web/./ui/components/preview/atoms/thumbnail/thumbnail.tsx","webpack://spotlight.web/./ui/components/preview/atoms/thumbnail/index.ts","webpack://spotlight.web/./ui/components/preview/preview-page.tsx","webpack://spotlight.web/./ui/components/preview/preview-content.tsx","webpack://spotlight.web/./ui/components/preview/preview-navigation-buttons.tsx","webpack://spotlight.web/./ui/components/preview/preview-pagination.tsx","webpack://spotlight.web/./ui/components/preview/preview.tsx","webpack://spotlight.web/./ui/components/preview/index.ts","webpack://spotlight.web/./ui/packages/icons/circle-with-plus/circle-with-plus.tsx","webpack://spotlight.web/./ui/packages/icons/circle-with-plus/index.ts","webpack://spotlight.web/./ui/packages/icons/circle-with-minus/circle-with-minus.tsx","webpack://spotlight.web/./ui/packages/icons/circle-with-minus/index.ts","webpack://spotlight.web/./ui/packages/icons/elimination/elimination.tsx","webpack://spotlight.web/./ui/packages/icons/elimination/index.ts","webpack://spotlight.web/./ui/components/data-grid/atoms/icons/icons.tsx","webpack://spotlight.web/./ui/components/data-grid/atoms/account-row/account-row.tsx","webpack://spotlight.web/./ui/components/data-grid/atoms/account-cell/account-cell.tsx","webpack://spotlight.web/./ui/components/data-grid/atoms/account-cell-input/account-cell-input.tsx","webpack://spotlight.web/./ui/components/data-grid/atoms/accounts-list/accounts-list.tsx","webpack://spotlight.web/./ui/components/data-grid/atoms/accounts-panel/accounts-panel.tsx","webpack://spotlight.web/./ui/components/data-grid/atoms/data-grid-scroller/data-grid-scroller.tsx","webpack://spotlight.web/./ui/components/data-grid/atoms/add-fy-totals/add-fy-total.tsx","webpack://spotlight.web/./ui/components/data-grid/atoms/table/table.tsx","webpack://spotlight.web/./ui/components/data-grid/atoms/fy-total-column/fy-total-column.tsx","webpack://spotlight.web/./ui/components/data-grid/atoms/header-cell/header-cell.tsx","webpack://spotlight.web/./ui/components/data-grid/atoms/header/header.tsx","webpack://spotlight.web/./ui/components/data-grid/data-grid.tsx","webpack://spotlight.web/./ui/components/data-table/data-table.tsx","webpack://spotlight.web/./ui/packages/icons/triangle-down/triangle-down.tsx","webpack://spotlight.web/./ui/packages/icons/triangle-down/index.ts","webpack://spotlight.web/./ui/components/multi-select-input/multi-select-input.tsx","webpack://spotlight.web/./ui/components/multi-select/multi-select.tsx","webpack://spotlight.web/./ui/components/month-date-picker/month-date-picker.tsx","webpack://spotlight.web/./ui/components/month-date-picker-field/month-date-picker-field.tsx","webpack://spotlight.web/./ui/components/AutoCompleteTextInput/AutoCompleteTextInput.tsx","webpack://spotlight.web/./ui/components/AutoCompleteTextField/AutoCompleteTextField.tsx","webpack://spotlight.web/./ui/components/release-notes/atoms/icons/icons.tsx","webpack://spotlight.web/./ui/components/release-notes/atoms/article/article.tsx","webpack://spotlight.web/./ui/components/release-notes/atoms/images/images.tsx","webpack://spotlight.web/./ui/components/release-notes/release-notes.tsx","webpack://spotlight.web/./ui/components/menu-list/menu-list.tsx","webpack://spotlight.web/./ui/components/dropdown-menu/dropdown-menu.tsx","webpack://spotlight.web/./ui/components/select-menu/atoms/select-menu-button.tsx","webpack://spotlight.web/./ui/components/select-menu/select-menu.tsx","webpack://spotlight.web/./ui/components/select-menu-field/select-menu-field.tsx","webpack://spotlight.web/./ui/components/inline-text-input/inline-text-input.tsx","webpack://spotlight.web/./ui/packages/icons/chevron-left/chevron-left.tsx","webpack://spotlight.web/./ui/packages/icons/chevron-left/index.ts","webpack://spotlight.web/./ui/packages/icons/chevron-right/chevron-right.tsx","webpack://spotlight.web/./ui/packages/icons/chevron-right/index.ts","webpack://spotlight.web/./ui/packages/icons/edit/edit.tsx","webpack://spotlight.web/./ui/packages/icons/edit/index.ts","webpack://spotlight.web/./ui/packages/icons/additional-page/additional-page.tsx","webpack://spotlight.web/./ui/packages/icons/additional-page/index.ts","webpack://spotlight.web/./ui/packages/icons/arrow-right/arrow-right.tsx","webpack://spotlight.web/./ui/packages/icons/circle-with-x/circle-with-x.tsx","webpack://spotlight.web/./ui/packages/icons/circle-with-x/index.ts","webpack://spotlight.web/./ui/packages/icons/circled-tick/circled-tick.tsx","webpack://spotlight.web/./ui/packages/icons/circled-tick/index.ts","webpack://spotlight.web/./ui/packages/icons/circled-x/circled-x.tsx","webpack://spotlight.web/./ui/packages/icons/circled-x/index.ts","webpack://spotlight.web/./ui/packages/icons/exclamation/exclamation.tsx","webpack://spotlight.web/./ui/packages/icons/exclamation/index.ts","webpack://spotlight.web/./ui/packages/icons/info/info.tsx","webpack://spotlight.web/./ui/packages/icons/info/index.ts","webpack://spotlight.web/./ui/packages/icons/new-release-all-products/new-release-all-products.tsx","webpack://spotlight.web/./ui/packages/icons/new-release-all-products/index.ts","webpack://spotlight.web/./ui/packages/icons/new-release-dashboard/new-release-dashboard.tsx","webpack://spotlight.web/./ui/packages/icons/new-release-dashboard/index.ts","webpack://spotlight.web/./ui/packages/icons/new-release-forecasting/new-release-forecasting.tsx","webpack://spotlight.web/./ui/packages/icons/new-release-forecasting/index.ts","webpack://spotlight.web/./ui/packages/icons/new-release-multi/new-release-multi.tsx","webpack://spotlight.web/./ui/packages/icons/new-release-multi/index.ts","webpack://spotlight.web/./ui/packages/icons/new-release-no-data/new-release-no-data.tsx","webpack://spotlight.web/./ui/packages/icons/new-release-no-data/index.ts","webpack://spotlight.web/./ui/packages/icons/new-release-reporting/new-release-reporting.tsx","webpack://spotlight.web/./ui/packages/icons/new-release-reporting/index.ts","webpack://spotlight.web/./ui/packages/icons/search/search.tsx","webpack://spotlight.web/./ui/packages/icons/search/index.ts","webpack://spotlight.web/./ui/packages/icons/sort-down/sort-down.tsx","webpack://spotlight.web/./ui/packages/icons/sort-down/index.ts","webpack://spotlight.web/./ui/packages/icons/spotlight-logo/spotlight-logo.tsx","webpack://spotlight.web/./ui/packages/icons/spotlight-logo/index.ts","webpack://spotlight.web/./ui/packages/icons/tick/tick.tsx","webpack://spotlight.web/./ui/packages/icons/tick/index.ts","webpack://spotlight.web/./ui/packages/icons/trash/trash.tsx","webpack://spotlight.web/./ui/packages/icons/trash/index.ts","webpack://spotlight.web/./ui/packages/icons/star/star.tsx","webpack://spotlight.web/./ui/packages/icons/star/index.ts","webpack://spotlight.web/./ui/packages/icons/svg-base/svg-base.tsx"],"sourcesContent":["import { MutableRefObject, useEffect } from 'react';\r\n\r\n/**\r\n * Helper to handle reacting to a click outside a given element.\r\n * Accepts a ref to the element to monitor for clicks outside of it\r\n * and a function to execute in response.\r\n */\r\nexport const useClickOutside = (\r\n ref: MutableRefObject,\r\n handler: (event: MouseEvent) => void,\r\n): void => {\r\n useEffect(() => {\r\n const handleClickOutside = (event: MouseEvent) => {\r\n const target = event.target as Element;\r\n if (ref.current && target && !ref.current.contains(target)) {\r\n handler(event);\r\n }\r\n };\r\n window.setTimeout(() => {\r\n document.removeEventListener('click', handleClickOutside);\r\n document.addEventListener('click', handleClickOutside);\r\n }, 0);\r\n return () => {\r\n document.removeEventListener('click', handleClickOutside);\r\n };\r\n }, [ref, handler]);\r\n};\r\n","import { useEffect, useRef } from 'react';\r\n\r\nexport const usePrevious = (value: T): T | undefined => {\r\n const ref = useRef();\r\n useEffect(() => {\r\n ref.current = value;\r\n });\r\n return ref.current;\r\n};\r\n","import { Dayjs } from 'dayjs';\r\n\r\nexport const stringCompare = (a: string, b: string): number => (a ?? '').localeCompare(b ?? '');\r\n\r\nexport const dayjsCompare = (a: Dayjs, b: Dayjs): number => {\r\n if (!a && !b) {\r\n return 0;\r\n }\r\n\r\n if (!a) {\r\n return -1;\r\n }\r\n\r\n if (!b) {\r\n return 1;\r\n }\r\n\r\n if (a.isSame(b)) {\r\n return 0;\r\n }\r\n\r\n return a.isAfter(b) ? 1 : -1;\r\n};\r\n\r\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\r\nexport const anyCompare = (a: any, b: any): number => {\r\n if (a === b) {\r\n return 0;\r\n }\r\n\r\n return a < b ? -1 : 1;\r\n};\r\n","import * as React from 'react';\r\n\r\nimport { Xmark } from 'iconoir-react';\r\nimport styled from 'styled-components';\r\n\r\nimport { CircledTick, Exclamation, Info } from '../../packages/icons';\r\n\r\nexport type Severity = 'error' | 'warning' | 'success' | 'info' | 'none';\r\n\r\nexport type Variant = 'outlined' | 'shadowed';\r\n\r\nexport interface AlertProps {\r\n variant: Variant;\r\n children?: React.ReactNode;\r\n dataId?: string;\r\n severity?: Severity;\r\n fadeIn?: boolean;\r\n width?: string;\r\n maxWidth?: string;\r\n /** Can be used to trigger the exit animation manually, by changing from true to false. */\r\n isVisible?: boolean;\r\n /** Function called when the dismiss button is clicked. If not provided, the dismiss button will not be rendered */\r\n onDismiss?: () => void;\r\n}\r\n\r\nconst colors = new Map([\r\n ['error', '#EE7168'],\r\n ['warning', '#FFAC5B'],\r\n ['success', '#4DC082'],\r\n ['info', '#00B1FF'],\r\n]);\r\n\r\ninterface AlertContainerProps {\r\n accentColor?: string;\r\n variant: Variant;\r\n isHidden: boolean;\r\n isDismissable: boolean;\r\n width?: string;\r\n maxWidth?: string;\r\n}\r\n\r\nconst AlertContainer = styled.div`\r\n position: relative;\r\n display: flex;\r\n column-gap: 10px;\r\n box-sizing: border-box;\r\n height: fit-content;\r\n min-width: 100px;\r\n width: ${(props) => props.width ?? 'fit-content'};\r\n max-width: ${(props) => (props.maxWidth ? `min(${props.maxWidth}, 100%)` : '100%')};\r\n font-weight: 600;\r\n font-size: 13px;\r\n line-height: 1.4;\r\n color: #1a1c25;\r\n padding-top: 11px;\r\n padding-bottom: 11px;\r\n padding-left: ${(props) => (props.accentColor ? '14px' : '12px')};\r\n padding-right: ${(props) => (props.isDismissable ? '10px' : '12px')};\r\n background-color: #fff;\r\n opacity: ${(props) => (props.isHidden ? 0 : 1)};\r\n transition: opacity 300ms ease-in-out;\r\n border-radius: 5px;\r\n border: ${(props) => (props.variant === 'outlined' ? `1px solid ${props.accentColor ?? '#CDD3DE'}` : 'none')};\r\n\r\n ${(props) =>\r\n props.variant === 'shadowed' &&\r\n `\r\n box-shadow: 0px 2px 25px rgba(0, 0, 0, 0.08), 0px 1.4px 10.4px rgba(0, 0, 0, 0.055),\r\n 0px 0.9px 5.6px rgba(0, 0, 0, 0.042), 0px 0.6px 3.1px rgba(0, 0, 0, 0.033), 0px 0.3px 1.7px rgba(0, 0, 0, 0.024),\r\n 0px 0.1px 0.7px rgba(0, 0, 0, 0.014);\r\n `}\r\n\r\n ${(props) =>\r\n props.accentColor &&\r\n `\r\n &:before {\r\n content: '';\r\n width: 4px;\r\n background: ${props.accentColor};\r\n position: absolute;\r\n left: 0px;\r\n top: 0;\r\n bottom: 0px;\r\n border-radius: 5px 0 0 5px;\r\n }\r\n `}\r\n`;\r\n\r\nconst IconContainer = styled.div`\r\n flex-shrink: 0;\r\n margin-top: 2px;\r\n`;\r\n\r\nconst ContentContainer = styled.div`\r\n flex-grow: 1;\r\n overflow-wrap: anywhere;\r\n display: flex;\r\n align-items: center;\r\n min-height: 20px;\r\n`;\r\n\r\nconst DismissButton = styled.button`\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n flex-shrink: 0;\r\n padding: 3px;\r\n height: fit-content;\r\n border: none;\r\n border-radius: 50%;\r\n background-color: transparent;\r\n cursor: pointer;\r\n\r\n &:hover {\r\n background-color: #f3f4f7;\r\n }\r\n`;\r\n\r\nexport const Alert: React.FC> = ({\r\n variant,\r\n children,\r\n dataId = 'alert',\r\n severity = 'none',\r\n fadeIn,\r\n width,\r\n maxWidth,\r\n isVisible = true,\r\n onDismiss,\r\n ...props\r\n}) => {\r\n const [isFirstRender, setIsFirstRender] = React.useState(true);\r\n const [isClosing, setIsClosing] = React.useState(false);\r\n\r\n const accentColor = colors.get(severity);\r\n\r\n const handleDismiss = () => {\r\n setIsClosing(true);\r\n onDismiss && onDismiss();\r\n };\r\n\r\n React.useEffect(() => {\r\n setIsFirstRender(false);\r\n }, []);\r\n\r\n React.useEffect(() => {\r\n if (!isVisible) {\r\n setIsClosing(true);\r\n }\r\n\r\n if (isVisible) {\r\n setIsClosing(false);\r\n }\r\n }, [isVisible]);\r\n\r\n return (\r\n \r\n {severity !== 'none' && (\r\n \r\n {severity === 'error' && }\r\n {severity === 'warning' && }\r\n {severity === 'success' && }\r\n {severity === 'info' && }\r\n \r\n )}\r\n\r\n {children}\r\n {onDismiss && (\r\n \r\n \r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nAlert.displayName = 'Alert';\r\n","import { keyframes } from 'styled-components';\r\nimport { transparentize } from 'polished';\r\n\r\nexport const COLOR = {\r\n // primary colours\r\n PRIMARY: {\r\n RED: '#e63327',\r\n GREEN: '#0dd32c',\r\n BLUE: '#0000ff',\r\n YELLOW: '#ffee00',\r\n BLACK: '#000',\r\n WHITE: '#fff',\r\n GREY: '#555',\r\n HOT_PINK: '#ff00be',\r\n HOT_PURPLE: '#CB35FC',\r\n },\r\n\r\n // main colours\r\n MAIN: {\r\n LIGHT_GREY: '#f7f9fb',\r\n MEDIUM_GREY: '#e4e8ed',\r\n DARK_GREY: '#51688d',\r\n DARK_BLUE: '#0b2a51',\r\n\r\n PRIMARY: '#1a2952',\r\n SECONDARY: '#00B1FF',\r\n ICON_BACKGROUND: '#F5F6F7',\r\n\r\n LABEL_TEXT: '#2A3F5E',\r\n FORM_FIELD: '#EDEDED',\r\n FORM_FIELD_DARK: 'rgb(130, 146, 173)',\r\n\r\n BUTTON_GROUP_BG: '#f8f9fa',\r\n BUTTON_GROUP_BORDER: '#e8e8e8',\r\n },\r\n\r\n // brand colours\r\n BRAND: {\r\n REPORTING: '#1ba3e7',\r\n FORECASTING: '#39b873',\r\n DASHBOARDS: '#e8ab36',\r\n MULTI: '#b65bd6',\r\n },\r\n\r\n // modal\r\n MODAL: {\r\n MODAL_PANEL_ACCENT: '#F6F7F9',\r\n MODAL_OVERLAY: transparentize('0.33', '#1A2952'),\r\n },\r\n\r\n // Dropdown\r\n DROPDOWN: {\r\n DROPDOWN_BORDER: '#D9DEE6',\r\n DROPDOWN_OPTION_HOVER: '#E1E5EC',\r\n DROPDOWN_OPTION_SELECTED: '#5897fb',\r\n DROPDOWN_OPTION_TEXT: '#04255B',\r\n DROPDOWN_DISABLED_OPTION_TEXT: '#CDD3DE',\r\n DROPDOWN_ARROW: '#d4d4d4',\r\n DROPDOWN_ARROW_DARK: '#647798',\r\n },\r\n\r\n // DATAGRID\r\n DATAGRID: {\r\n DATAGRID_TITLE_BG: '#F3F3F3',\r\n DATAGRID_HEADER_BG: '#E0EDF6',\r\n DATAGRID_TOTAL_BG: '#F6F9FB',\r\n DATAGRID_BUDGET_BG: '#FFF7DA',\r\n DATAGRID_DIVIDER_LINE: '#BABABA',\r\n DATAGRID_TEXT: '#2A3F5E',\r\n },\r\n\r\n LEGACY: {\r\n DATAGRID_BORDER: '#C7C7C7',\r\n DATAGRID_TH_BG: '#E0EDF6',\r\n DATAGRID_ARCHIVED_BG: '#FCF0F2',\r\n },\r\n};\r\n\r\n// fonts\r\nexport enum FONT_SIZE {\r\n XXX_LARGE = '48px',\r\n XX_LARGE = '36px',\r\n X_LARGE = '22px',\r\n LARGE = '18px',\r\n MEDIUM = '16px',\r\n SMALL = '14px',\r\n X_SMALL = '12px',\r\n XX_SMALL = '8px',\r\n}\r\n\r\nexport const SPACING_SCALE = 8;\r\n\r\nexport enum SPACING {\r\n BUTTON_DEFAULT = '3px 12px',\r\n XXX_LARGE = '58px',\r\n XX_LARGE = '28px',\r\n X_LARGE = '22px',\r\n LARGE = '18px',\r\n MEDIUM = '12px',\r\n SMALL = '6px',\r\n X_SMALL = '4px',\r\n XX_SMALL = '2px',\r\n}\r\n\r\nexport const PROXIMA_NOVA = '\"Proxima Nova\", Arial, sans-serif';\r\nexport const OPEN_SANS = 'open-sans, sans-serif';\r\n\r\nexport const FONT_STACK = `${OPEN_SANS}`;\r\n\r\nexport const FONT = {\r\n PROXIMA_NOVA,\r\n OPEN_SANS,\r\n};\r\n\r\n/**\r\n * Note: line-height is a very distinct concept from the font-size and won't map 1-to-1 with font-size.\r\n * It should also almost always be specified in unitless values.\r\n */\r\nexport enum LINE_HEIGHT {\r\n /**\r\n * line-height: 1.2; is a good standard line-height, it works well for inline text, buttons etc, should be expanded for larger sections of text\r\n */\r\n MEDIUM = 1.2,\r\n /**\r\n * line-height 1.4 lets the text breathe a bit more, which is good for paragraph text\r\n */\r\n LARGE = 1.4,\r\n}\r\n\r\n/**\r\n * Note: generally the margin-bottom of a paragraph should be 1em so it adjusts 1-to-1 with the font-size\r\n */\r\nexport enum TEXT_RELATIVE_MARGIN {\r\n XX_SMALL = '0.4em',\r\n X_SMALL = '0.6em',\r\n SMALL = '0.8em',\r\n MEDIUM = '1em',\r\n LARGE = '1.2em',\r\n X_LARGE = '1.4em',\r\n XX_LARGE = '1.6em',\r\n}\r\n\r\nexport const FONT_SET = {\r\n XX_LARGE: `font-family: ${OPEN_SANS};\r\n font-size: ${FONT_SIZE.XX_LARGE};\r\n line-height: ${LINE_HEIGHT.MEDIUM};\r\n `,\r\n X_LARGE: `font-family: ${OPEN_SANS};\r\n font-size: ${FONT_SIZE.X_LARGE};\r\n line-height: ${LINE_HEIGHT.MEDIUM};\r\n `,\r\n LARGE: `font-family: ${OPEN_SANS};\r\n font-size: ${FONT_SIZE.LARGE};\r\n line-height: ${LINE_HEIGHT.MEDIUM};\r\n `,\r\n MEDIUM: `font-family: ${OPEN_SANS};\r\n font-size: ${FONT_SIZE.MEDIUM};\r\n line-height: ${LINE_HEIGHT.MEDIUM};\r\n `,\r\n SMALL: `font-family: ${OPEN_SANS};\r\n font-size: ${FONT_SIZE.SMALL};\r\n line-height: ${LINE_HEIGHT.MEDIUM};\r\n `,\r\n X_SMALL: `font-family: ${OPEN_SANS};\r\n font-size: ${FONT_SIZE.X_SMALL};\r\n line-height: ${LINE_HEIGHT.MEDIUM};\r\n `,\r\n XX_SMALL: `font-family: ${OPEN_SANS};\r\n font-size: ${FONT_SIZE.XX_SMALL};\r\n line-height: ${LINE_HEIGHT.MEDIUM};\r\n `,\r\n};\r\n\r\nexport const PARAGRAPH = {\r\n DEFAULT: `color: ${COLOR.MAIN.PRIMARY};\r\n font-family: ${OPEN_SANS};\r\n font-size: ${FONT_SIZE.MEDIUM};\r\n line-height: ${LINE_HEIGHT.LARGE};\r\n margin-bottom: ${TEXT_RELATIVE_MARGIN.MEDIUM};\r\n`,\r\n INDENT: `color: ${COLOR.MAIN.FORM_FIELD_DARK};\r\n font-family: ${OPEN_SANS};\r\n font-size: ${FONT_SIZE.MEDIUM};\r\n line-height: ${LINE_HEIGHT.LARGE};\r\n margin-bottom: ${TEXT_RELATIVE_MARGIN.MEDIUM};\r\n border-left: ${SPACING.MEDIUM} solid ${COLOR.MAIN.FORM_FIELD_DARK};\r\n padding-left: ${SPACING.MEDIUM};\r\n`,\r\n};\r\n\r\nexport const HEADER = {\r\n H1: `color: ${COLOR.MAIN.PRIMARY};\r\n font-family: ${OPEN_SANS};\r\n font-size: ${FONT_SIZE.X_LARGE};\r\n font-weight: 800;\r\n line-height: ${LINE_HEIGHT.LARGE};\r\n padding-bottom: ${SPACING.XX_LARGE};\r\n border-bottom: 1px solid ${COLOR.MAIN.PRIMARY};\r\n margin-bottom: ${TEXT_RELATIVE_MARGIN.MEDIUM};\r\n `,\r\n H2: `color: ${COLOR.MAIN.DARK_BLUE};\r\n font-family: ${OPEN_SANS};\r\n font-size: ${FONT_SIZE.LARGE};\r\n font-weight: 800;\r\n line-height: ${LINE_HEIGHT.LARGE};\r\n margin-bottom: ${TEXT_RELATIVE_MARGIN.MEDIUM};\r\n `,\r\n H3: `color: ${COLOR.MAIN.DARK_GREY};\r\n font-family: ${OPEN_SANS};\r\n font-size: ${FONT_SIZE.MEDIUM};\r\n font-weight: 800;\r\n line-height: ${LINE_HEIGHT.LARGE};\r\n margin-bottom: ${TEXT_RELATIVE_MARGIN.MEDIUM};\r\n `,\r\n H4: `color: ${COLOR.MAIN.LABEL_TEXT};\r\n font-family: ${OPEN_SANS};\r\n font-size: ${FONT_SIZE.SMALL};\r\n font-weight: 400;\r\n line-height: ${LINE_HEIGHT.LARGE};\r\n margin-bottom: ${TEXT_RELATIVE_MARGIN.MEDIUM};\r\n `,\r\n H5: `color: ${COLOR.MAIN.PRIMARY};\r\n font-family: ${OPEN_SANS};\r\n font-size: ${FONT_SIZE.X_SMALL};\r\n font-weight: 400;\r\n line-height: ${LINE_HEIGHT.LARGE};\r\n margin-bottom: ${TEXT_RELATIVE_MARGIN.MEDIUM};\r\n `,\r\n H6: `color: ${COLOR.MAIN.PRIMARY};\r\n font-family: ${OPEN_SANS};\r\n font-size: ${FONT_SIZE.SMALL};\r\n font-weight: 800;\r\n text-transform: uppercase;\r\n line-height: ${LINE_HEIGHT.LARGE};\r\n margin-bottom: ${TEXT_RELATIVE_MARGIN.MEDIUM};\r\n `,\r\n};\r\n\r\nexport const BREAKPOINT = {\r\n MOBILE: '320px',\r\n TABLET: '641px',\r\n DESKTOP: '769px',\r\n};\r\n\r\nexport const SPEED = {\r\n TRANSITION: '300ms',\r\n ROTATE: '600ms',\r\n};\r\n\r\nexport const RADIUS = {\r\n FORM_FIELD: '3px',\r\n DEFAULT: '3px',\r\n};\r\n\r\nexport const SHADOW = {\r\n DEFAULT: '0 1px 2px 0 rgb(0 0 0 / 8%)',\r\n};\r\n\r\nexport const ANIMATION = {\r\n FADE_IN: keyframes`\r\n 0% {\r\n opacity: 0;\r\n }\r\n 100% {\r\n opacity: 1;\r\n }\r\n `,\r\n FADE_OUT: keyframes`\r\n 0% {\r\n opacity: 0;\r\n }\r\n 100% {\r\n opacity: 1;\r\n }\r\n `,\r\n SCALE_IN: keyframes`\r\n 0% {\r\n transform: scale(.1);\r\n opacity: 0;\r\n }\r\n 100% {\r\n transform: scale(1);\r\n opacity: 1;\r\n }\r\n `,\r\n ROTATE_CLOCKWISE: keyframes`\r\n 0% {\r\n transform: rotate(0deg);\r\n }\r\n 100% {\r\n transform: rotate(360deg);\r\n }\r\n `,\r\n};\r\n\r\nexport const BUTTON_MIN_WIDTH = {\r\n SMALL: '150px',\r\n};\r\n","import { lighten } from 'polished';\r\n\r\nimport { COLOR } from './constants';\r\n\r\ninterface ThemeSet {\r\n REPORTING: Theme;\r\n FORECASTING: Theme;\r\n DASHBOARDS: Theme;\r\n MULTI: Theme;\r\n GENERIC: Theme;\r\n GENERICBLUE: Theme;\r\n}\r\n\r\nexport interface Theme {\r\n main: string;\r\n mainBorder: string;\r\n mainText: string;\r\n spinnerColor: 'black' | 'white';\r\n hover?: { main?: string; mainBorder?: string; mainText?: string };\r\n}\r\n\r\nconst THEME: ThemeSet = {\r\n REPORTING: {\r\n main: COLOR.BRAND.REPORTING,\r\n mainBorder: COLOR.BRAND.REPORTING,\r\n mainText: COLOR.PRIMARY.WHITE,\r\n spinnerColor: 'white',\r\n hover: {\r\n main: lighten(0.1, COLOR.BRAND.REPORTING),\r\n mainBorder: lighten(0.1, COLOR.BRAND.REPORTING),\r\n mainText: COLOR.PRIMARY.WHITE,\r\n },\r\n },\r\n FORECASTING: {\r\n main: COLOR.BRAND.FORECASTING,\r\n mainBorder: COLOR.BRAND.FORECASTING,\r\n mainText: COLOR.PRIMARY.WHITE,\r\n spinnerColor: 'white',\r\n hover: {\r\n main: lighten(0.1, COLOR.BRAND.FORECASTING),\r\n mainBorder: lighten(0.1, COLOR.BRAND.FORECASTING),\r\n mainText: COLOR.PRIMARY.WHITE,\r\n },\r\n },\r\n DASHBOARDS: {\r\n main: COLOR.BRAND.DASHBOARDS,\r\n mainBorder: COLOR.BRAND.DASHBOARDS,\r\n mainText: COLOR.PRIMARY.WHITE,\r\n spinnerColor: 'white',\r\n hover: {\r\n main: lighten(0.1, COLOR.BRAND.DASHBOARDS),\r\n mainBorder: lighten(0.1, COLOR.BRAND.DASHBOARDS),\r\n mainText: COLOR.PRIMARY.WHITE,\r\n },\r\n },\r\n MULTI: {\r\n main: COLOR.BRAND.MULTI,\r\n mainBorder: COLOR.BRAND.MULTI,\r\n mainText: COLOR.PRIMARY.WHITE,\r\n spinnerColor: 'white',\r\n hover: {\r\n main: lighten(0.1, COLOR.BRAND.MULTI),\r\n mainBorder: lighten(0.1, COLOR.BRAND.MULTI),\r\n mainText: COLOR.PRIMARY.WHITE,\r\n },\r\n },\r\n GENERIC: {\r\n main: COLOR.PRIMARY.WHITE,\r\n mainBorder: COLOR.MAIN.DARK_GREY,\r\n mainText: COLOR.MAIN.DARK_GREY,\r\n spinnerColor: 'black',\r\n hover: {\r\n main: COLOR.MAIN.DARK_GREY,\r\n mainBorder: COLOR.MAIN.DARK_GREY,\r\n mainText: COLOR.PRIMARY.WHITE,\r\n },\r\n },\r\n GENERICBLUE: {\r\n main: COLOR.PRIMARY.WHITE,\r\n mainBorder: COLOR.MAIN.SECONDARY,\r\n mainText: COLOR.MAIN.SECONDARY,\r\n spinnerColor: 'white',\r\n hover: {\r\n main: COLOR.MAIN.SECONDARY,\r\n mainBorder: COLOR.MAIN.SECONDARY,\r\n mainText: COLOR.PRIMARY.WHITE,\r\n },\r\n },\r\n};\r\n\r\nexport default THEME;\r\n","import * as React from 'react';\r\n\r\nimport styled from 'styled-components';\r\n\r\nimport { ANIMATION, SPACING, SPEED } from '../../packages/constants';\r\nimport blackSpinner from './images/spinner-black';\r\nimport whiteSpinner from './images/spinner-white';\r\n\r\nexport interface LoadingSpinnerProps {\r\n children?: React.ReactNode;\r\n onClick?: (e: any) => void;\r\n color?: 'black' | 'white';\r\n justify?: 'flex-start' | 'center' | 'flex-end' | 'space-between' | undefined;\r\n iconWidth?: string;\r\n iconHeight?: string;\r\n className?: string;\r\n}\r\n\r\nexport interface SpinnerIconProps {\r\n width?: string;\r\n height?: string;\r\n}\r\n\r\nconst StyledLoadingSpinner = styled.div`\r\n display: flex;\r\n align-items: center;\r\n justify-content: ${(props: LoadingSpinnerProps): string => (props.justify ? props.justify : 'space-between')};\r\n`;\r\n\r\nexport const Icon = styled.img`\r\n width: ${(props) => props.width};\r\n height: ${(props) => props.height};\r\n margin: 0 0 0 ${SPACING.SMALL};\r\n display: inline-block;\r\n animation: ${ANIMATION.ROTATE_CLOCKWISE} ${SPEED.ROTATE} linear infinite;\r\n`;\r\n\r\nexport const LoadingSpinner = ({\r\n children,\r\n color = 'white',\r\n iconWidth = '20px',\r\n iconHeight = '20px',\r\n ...props\r\n}: LoadingSpinnerProps) => (\r\n \r\n {children}\r\n \r\n \r\n);\r\n","export default `data:image/png;base64,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`;\r\n","export default `data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAygAAAMoCAMAAAATKjTDAAAC/VBMVEUAAAD///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+G1NxwAAAA/3RSTlMACRUhLTlFUVxjanJ5gIePlZ6kqKqtr7G0trm8v7q3tbKwrqumn5iRioJ6dG1lXlNHOy4iFgoBDh8vQFBhlKK9vsDBp5l2QzEgDxEmPGd8u8LD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\\n`;\r\n","import * as React from 'react';\r\n\r\nimport styled, { ThemeContext } from 'styled-components';\r\n\r\nimport { COLOR, FONT_SIZE, FONT_STACK, SPACING, SPEED } from '../../packages/constants/';\r\nimport { LoadingSpinner } from '../loading-spinner';\r\n\r\nexport interface ButtonProps {\r\n /**\r\n * Button content\r\n */\r\n children: React.ReactNode;\r\n /**\r\n * Data Test ID\r\n */\r\n dataId: string;\r\n /**\r\n * Optional click handler\r\n */\r\n onClick?: (e: any) => void;\r\n /**\r\n * Is it disabled?\r\n */\r\n disabled?: boolean;\r\n /**\r\n * Value\r\n */\r\n value?: string;\r\n /**\r\n * Is it loading?\r\n */\r\n loading?: boolean;\r\n /**\r\n * Is it inline?\r\n */\r\n inline?: boolean;\r\n /**\r\n * Theme\r\n */\r\n theme?: {\r\n main: string;\r\n mainText: string;\r\n mainBorder: string;\r\n spinnerColor: 'black' | 'white';\r\n hover?: { main?: string; mainBorder?: string; mainText?: string };\r\n };\r\n themeProvider?: {};\r\n /**\r\n * Minimum width\r\n */\r\n minWidth?: string;\r\n /**\r\n * Color\r\n */\r\n color?: string;\r\n /**\r\n * size\r\n */\r\n size?: string;\r\n /**\r\n * Button type\r\n */\r\n type?: 'button' | 'submit' | 'reset' | undefined;\r\n className?: string;\r\n /** Allows the button to be assosciated with a form it is not a direct child of */\r\n form?: string;\r\n variant?: 'medium' | 'large';\r\n}\r\nexport interface ButtonAsTextProps {\r\n children: React.ReactNode;\r\n /**\r\n * Data Test ID cat\r\n */\r\n dataId: string;\r\n /**\r\n * Optional click handler\r\n */\r\n onClick?: (e: any) => void;\r\n /**\r\n * Is it disabled?\r\n */\r\n disabled?: boolean;\r\n /**\r\n * Value\r\n */\r\n value?: string;\r\n /**\r\n * Is it inline?\r\n */\r\n inline?: boolean;\r\n /**\r\n * Theme\r\n */\r\n theme?: {\r\n main: string;\r\n mainText: string;\r\n mainBorder: string;\r\n spinnerColor: 'black' | 'white';\r\n hover?: { main?: string; mainBorder?: string; mainText?: string };\r\n };\r\n themeProvider?: {};\r\n /**\r\n * Minimum width\r\n */\r\n minWidth?: string;\r\n /**\r\n * size\r\n */\r\n size?: string;\r\n /**\r\n * Button type\r\n */\r\n type?: 'button' | 'submit' | 'reset' | undefined;\r\n className?: string;\r\n}\r\nexport interface ButtonGroupProps {\r\n /**\r\n * ButtonGroup content\r\n */\r\n children: React.ReactNode;\r\n /**\r\n * ButtonGroup alignment\r\n */\r\n justify?: 'left' | 'center' | 'right' | 'space-between' | undefined;\r\n}\r\n\r\nconst StyledButton = styled.button.attrs(({ dataId }) => ({\r\n 'data-test-id': dataId,\r\n}))`\r\n display: ${(props) => (props.inline ? 'inline-flex' : 'flex')};\r\n justify-content: center;\r\n align-items: center;\r\n border-radius: ${(props) => (props.variant === 'large' ? '5px' : '2px')};\r\n border-width: 2px;\r\n border-style: solid;\r\n border-color: ${(props) => (props.theme ? props.theme.mainBorder : COLOR.BRAND.REPORTING)};\r\n background-color: ${(props) => (props.theme ? props.theme.main : COLOR.BRAND.REPORTING)};\r\n color: ${(props) => (props.theme ? props.theme.mainText : COLOR.PRIMARY.WHITE)};\r\n cursor: pointer;\r\n font-size: ${(props) =>\r\n props.size ? props.size : props.variant === 'large' ? FONT_SIZE.SMALL : FONT_SIZE.X_SMALL};\r\n font-weight: 700;\r\n line-height: 20px;\r\n text-decoration: none;\r\n padding: ${(props) => (props.variant === 'large' ? '10px 20px' : SPACING.BUTTON_DEFAULT)};\r\n min-width: ${(props) => props.minWidth || '0'};\r\n\r\n :disabled {\r\n opacity: 0.3;\r\n cursor: default;\r\n }\r\n\r\n :hover:not(:disabled) {\r\n border-color: ${({ theme }) => (theme && theme.hover ? theme.hover.mainBorder : COLOR.BRAND.REPORTING)};\r\n background-color: ${({ theme }) => (theme && theme.hover ? theme.hover.main : COLOR.BRAND.REPORTING)};\r\n color: ${({ theme }) => (theme && theme.hover ? theme.hover.mainText : COLOR.PRIMARY.WHITE)};\r\n }\r\n`;\r\n\r\n/**\r\n * Primary UI component for user interaction\r\n *\r\n * - Use the primary button to help users know what to access next.\r\n * - ~~Use a secondary button where the action is not compulsory and there is already a primary button.~~ (We have\r\n * yet to decide on secondary button styles)\r\n * - Use a generic button for cancelling, or configuration.\r\n * - Don't use the primary button in conjunction with another primary button.\r\n **/\r\n\r\nconst Button = React.forwardRef(\r\n (\r\n {\r\n children,\r\n onClick,\r\n disabled = false,\r\n inline,\r\n color,\r\n size,\r\n type = 'button',\r\n loading,\r\n variant = 'medium',\r\n ...props\r\n },\r\n ref,\r\n ) => {\r\n const themeContext = React.useContext(ThemeContext);\r\n return (\r\n \r\n {loading ? (\r\n \r\n {children}\r\n \r\n ) : (\r\n children\r\n )}\r\n \r\n );\r\n },\r\n);\r\n\r\nButton.displayName = 'Button';\r\n\r\nconst StyledTextButton = styled.button.attrs(({ dataId }) => ({\r\n 'data-test-id': dataId,\r\n}))`\r\n background-color: transparent;\r\n display: ${(props: ButtonProps) => (props.inline ? 'inline-flex' : 'flex')};\r\n justify-content: flex-start;\r\n align-items: center;\r\n color: ${(props) =>\r\n props.theme\r\n ? props.theme.mainBorder\r\n ? props.theme.mainBorder\r\n : COLOR.BRAND.REPORTING\r\n : COLOR.BRAND.REPORTING};\r\n cursor: pointer;\r\n font-family: ${FONT_STACK};\r\n font-size: ${(props: ButtonProps) => props.size || FONT_SIZE.X_SMALL};\r\n font-weight: 700;\r\n line-height: ${FONT_SIZE.SMALL};\r\n text-decoration: none;\r\n padding: 0 0 1px;\r\n margin-right: ${SPACING.X_LARGE};\r\n border: 0;\r\n border-bottom: 1px solid transparent;\r\n transition: border-bottom-color ${SPEED.TRANSITION};\r\n\r\n &:disabled {\r\n opacity: 0.3;\r\n cursor: default;\r\n }\r\n\r\n &:last-of-type {\r\n margin-right: 0;\r\n }\r\n\r\n &:hover:not(:disabled) {\r\n border-bottom-width: 1px;\r\n border-bottom-style: solid;\r\n border-bottom-color: ${(props: ButtonProps) =>\r\n props.theme && props.theme.hover ? props.theme.hover.main : COLOR.BRAND.REPORTING};\r\n }\r\n`;\r\n\r\n/**\r\n * Text UI component for user interaction\r\n */\r\nconst ButtonAsText = React.forwardRef(\r\n ({ children, onClick, disabled, inline, size, type, ...props }, ref) => (\r\n \r\n {children}\r\n \r\n ),\r\n);\r\nButtonAsText.displayName = 'ButtonAsText';\r\n\r\nconst StyledButtonGroup = styled.div`\r\n display: flex;\r\n align-items: center;\r\n justify-content: ${({ justify }) =>\r\n justify === 'left'\r\n ? 'flex-start'\r\n : justify === 'center'\r\n ? 'center'\r\n : justify === 'right'\r\n ? 'flex-end'\r\n : justify === 'space-between'\r\n ? 'space-between'\r\n : 'center'};\r\n\r\n ${StyledButton} {\r\n margin-right: ${SPACING.XX_LARGE};\r\n\r\n &:last-child {\r\n margin-right: 0;\r\n }\r\n }\r\n`;\r\n\r\nconst ButtonGroup = ({ children, justify, ...props }: ButtonGroupProps) => (\r\n \r\n {children}\r\n \r\n);\r\n\r\nexport { Button, ButtonAsText, ButtonGroup };\r\n","import * as React from 'react';\r\n\r\nimport styled from 'styled-components';\r\n\r\nimport { COLOR, FONT, FONT_SIZE, SPACING } from '../../packages/constants';\r\nimport { ChevronRight } from '../../packages/icons';\r\n\r\nexport interface CollapsibleBandProps {\r\n heading: React.ReactNode;\r\n rightColumn?: React.ReactNode;\r\n dataId: string;\r\n onClick?: () => void;\r\n expand: boolean;\r\n theme?: {\r\n main: string;\r\n };\r\n className?: string;\r\n}\r\n\r\ninterface StyledChevronProps {\r\n isExpanded: boolean;\r\n}\r\n\r\ninterface StyledHeadingProps {\r\n isExpanded: boolean;\r\n theme?: {\r\n main: string;\r\n };\r\n}\r\n\r\nconst StyledCollapsibleBand = styled.div`\r\n display: flex;\r\n border-top: 1px solid;\r\n border-bottom: 1px solid;\r\n border-color: ${COLOR.MAIN.MEDIUM_GREY};\r\n align-items: center;\r\n`;\r\n\r\nconst StyledButton = styled.button`\r\n flex-grow: 1;\r\n border: 0;\r\n padding: 10px;\r\n cursor: pointer;\r\n text-align: left;\r\n background-color: transparent;\r\n`;\r\n\r\nconst StyledChevron = styled(ChevronRight)`\r\n display: inline-block;\r\n margin-top: -2px;\r\n margin-right: 6px;\r\n vertical-align: text-top;\r\n width: 12px;\r\n height: 12px;\r\n fill: ${COLOR.MAIN.DARK_GREY};\r\n margin-right: ${SPACING.X_SMALL};\r\n transform: ${(props: StyledChevronProps): string => (props.isExpanded ? 'rotate(-90deg)' : 'rotate(90deg)')};\r\n`;\r\n\r\nconst StyledHeading = styled.p`\r\n display: inline-block;\r\n font-family: ${FONT.OPEN_SANS};\r\n font-size: ${FONT_SIZE.LARGE};\r\n font-weight: 700;\r\n line-height: 1.2;\r\n color: ${(props: StyledHeadingProps): string =>\r\n props.isExpanded ? (props.theme ? props.theme.main : COLOR.BRAND.REPORTING) : COLOR.MAIN.DARK_GREY};\r\n`;\r\n\r\nconst RightColumnContainer = styled.div`\r\n padding: 10px;\r\n`;\r\n\r\nconst CollapsibleBand = React.forwardRef(\r\n ({ heading, rightColumn, expand = false, dataId, onClick, ...props }, ref) => {\r\n return (\r\n \r\n \r\n \r\n \r\n {heading}\r\n \r\n \r\n {rightColumn && {rightColumn}}\r\n \r\n );\r\n },\r\n);\r\nCollapsibleBand.displayName = 'CollapsibleBand';\r\n\r\nexport default CollapsibleBand;\r\n","import CollapsibleBand from './collapsible-band';\r\nexport * from './collapsible-band';\r\nexport default CollapsibleBand;\r\n","import * as React from 'react';\r\n\r\nimport styled from 'styled-components';\r\n\r\nimport { BREAKPOINT } from '../../packages/constants';\r\n\r\nexport interface GridRowProps {\r\n children: React.ReactNode;\r\n bgColor?: string;\r\n}\r\n\r\nconst GridRow = styled.div`\r\n box-sizing: border-box;\r\n display: flex;\r\n flex-direction: column;\r\n background-color: ${(props: GridRowProps): string => (props.bgColor ? props.bgColor : 'transparent')};\r\n width: 100%;\r\n\r\n @media (min-width: ${BREAKPOINT.TABLET}) {\r\n flex-direction: row;\r\n }\r\n`;\r\n\r\nexport default GridRow;\r\n","import * as React from 'react'; // eslint-disable-line\r\nimport styled from 'styled-components';\r\n\r\nimport { BREAKPOINT } from '../../packages/constants';\r\n\r\nexport interface GridColProps {\r\n children: React.ReactNode;\r\n bgColor?: string;\r\n width?: string;\r\n dev?: boolean;\r\n}\r\n\r\ninterface Widths {\r\n oneQuarter: string;\r\n oneThird: string;\r\n oneHalf: string;\r\n twoThirds: string;\r\n threeQuarters: string;\r\n full: string;\r\n [key: string]: string;\r\n}\r\n\r\nconst widths: Widths = {\r\n oneQuarter: '25%',\r\n oneThird: '33.3333%',\r\n oneHalf: '50%',\r\n twoThirds: '66.6667%',\r\n threeQuarters: '75%',\r\n full: '100%',\r\n};\r\n\r\nconst getWidth = (value: string) => widths[value];\r\n\r\n// TODO: use configurable gutter\r\nconst GridCol = styled.div`\r\n border: ${(props: GridColProps): string => (props.dev ? '1px solid red' : 'none')};\r\n background-color: ${(props: GridColProps) => props.bgColor || 'transparent'};\r\n box-sizing: border-box;\r\n padding: ${(props: GridColProps): string => (props.dev ? '5px' : '0')};\r\n margin-bottom: ${(props: GridColProps): string => (props.dev ? '5px' : '0')};\r\n width: 100%;\r\n\r\n @media (min-width: ${BREAKPOINT.TABLET}) {\r\n width: ${(props: GridColProps) => (props.width ? getWidth(props.width) : widths.full)};\r\n }\r\n`;\r\n\r\nexport default GridCol;\r\n","import * as React from 'react';\r\n\r\nimport { Portal } from 'react-portal';\r\nimport styled from 'styled-components';\r\n\r\nimport { COLOR, FONT_SIZE } from '../../packages/constants';\r\nimport { LoadingSpinner } from '../loading-spinner';\r\n\r\nexport interface LoadingScreenProps {\r\n message?: string;\r\n}\r\n\r\nconst StyledLoadingScreen = styled.div`\r\n position: sticky;\r\n top: 25vh;\r\n margin-top: 20px;\r\n margin-bottom: 12px;\r\n display: flex;\r\n background: #fff;\r\n border-radius: 5px;\r\n box-shadow: 0px 0px 6px 0px rgba(0, 0, 0, 0.08), 0 2.2px 1.7px -10px rgba(0, 0, 0, 0.08),\r\n 0 5.3px 4px -10px rgba(0, 0, 0, 0.06), 0 10px 7.5px -10px rgba(0, 0, 0, 0.06),\r\n 0 17.9px 13.4px -10px rgba(0, 0, 0, 0.05), 0 33.4px 25.1px -10px rgba(0, 0, 0, 0.04),\r\n 0 80px 60px -10px rgba(0, 0, 0, 0.04);\r\n padding: 10px;\r\n padding-right: 16px; // temporary to balance because the spinner adds 6px left margin\r\n font-size: bu(2);\r\n height: fit-content;\r\n line-height: normal;\r\n`;\r\n\r\nconst Overlay = styled.div`\r\n background-color: ${COLOR.MODAL.MODAL_OVERLAY};\r\n position: fixed;\r\n top: 0;\r\n bottom: 0;\r\n left: 0;\r\n right: 0;\r\n display: flex;\r\n justify-content: center;\r\n z-index: 9999;\r\n`;\r\n\r\nconst StyledLoadingSpinner = styled(LoadingSpinner)`\r\n margin-right: 10px;\r\n`;\r\n\r\nconst StyledMessage = styled.p`\r\n display: block;\r\n flex-grow: 1;\r\n text-align: center;\r\n font-weight: bold;\r\n font-size: ${FONT_SIZE.MEDIUM};\r\n color: ${COLOR.PRIMARY.BLACK};\r\n`;\r\n\r\nexport const LoadingScreen = React.forwardRef(\r\n ({ message = 'Loading...', ...props }, ref) => (\r\n \r\n \r\n \r\n \r\n {message}\r\n \r\n \r\n \r\n ),\r\n);\r\nLoadingScreen.displayName = 'LoadingScreen';\r\n","import * as React from 'react';\r\nimport { useEffect } from 'react';\r\n\r\nimport styled from 'styled-components';\r\n\r\nimport { COLOR, FONT_SIZE, SPACING, THEME } from '../../packages/constants';\r\nimport type { Theme } from '../../packages/constants';\r\nimport { Button } from '../button';\r\n\r\nexport interface ModalProps {\r\n children: React.ReactNode;\r\n /**\r\n * Modal buttons\r\n */\r\n buttons?: React.ReactNode;\r\n /**\r\n * Button group arrangement type\r\n */\r\n buttonGroupType?: ButtonGroupType;\r\n theme?: Theme | string;\r\n /**\r\n * Title of modal\r\n */\r\n title?: string;\r\n /**\r\n * Cancel button text\r\n */\r\n cancelText?: string;\r\n /**\r\n * Primary button text\r\n */\r\n primaryText?: string;\r\n /**\r\n * Function to handle cancel button\r\n */\r\n handleCancelButton?: (e: any) => void;\r\n /**\r\n * Function to handle primary button\r\n */\r\n handlePrimaryButton?: (e: any) => void;\r\n /**\r\n * Width of modal (420px)\r\n */\r\n width?: string;\r\n /**\r\n * Height of modal\r\n */\r\n height?: string;\r\n /**\r\n * Focus on a particular button\r\n */\r\n focusOnButton?: string;\r\n themeProvider?: {};\r\n}\r\n\r\nexport enum ButtonGroupType {\r\n Left = 'LEFT',\r\n Right = 'RIGHT',\r\n}\r\n\r\nexport interface ButtonGroupProps {\r\n buttonGroupType?: ButtonGroupType;\r\n}\r\n\r\ninterface ModalTheme {\r\n theme?: {\r\n main: string;\r\n mainText: string;\r\n mainBorder: string;\r\n spinnerColor: 'black' | 'white';\r\n hover?: { main?: string; mainBorder?: string; mainText?: string };\r\n };\r\n}\r\n\r\nconst Overlay = styled.div`\r\n background-color: ${COLOR.MODAL.MODAL_OVERLAY};\r\n position: fixed;\r\n top: 0;\r\n bottom: 0;\r\n left: 0;\r\n right: 0;\r\n width: 100%;\r\n height: 100%;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n z-index: 9999;\r\n`;\r\n\r\nconst StyledModal = styled.div`\r\n border-radius: 4px;\r\n width: ${(props: ModalProps) => (props.width ? props.width : '900px')};\r\n height: ${(props: ModalProps) => (props.height ? props.height : '70vh')};\r\n display: flex;\r\n flex-direction: column;\r\n`;\r\n\r\nconst StyledModalTitleBar = styled.div`\r\n background-color: ${(props: ModalTheme) => (props.theme ? props.theme.main : COLOR.BRAND.REPORTING)};\r\n color: ${COLOR.PRIMARY.WHITE};\r\n padding: 12px;\r\n border-top-left-radius: 4px;\r\n border-top-right-radius: 4px;\r\n font-size: ${FONT_SIZE.MEDIUM};\r\n font-weight: 700;\r\n`;\r\n\r\nconst StyledModalContent = styled.div`\r\n background-color: ${COLOR.PRIMARY.WHITE};\r\n height: calc(100% - 42px - 65px);\r\n`; // 42px = titlebar, 65px = button bar\r\n\r\nconst StyledButton = styled(Button)``;\r\n\r\nconst StyledButtonGroup = styled.div`\r\n display: flex;\r\n justify-content: ${(props: ButtonGroupProps) =>\r\n props.buttonGroupType === ButtonGroupType.Right ? 'flex-start' : ''};\r\n flex-direction: ${(props: ButtonGroupProps) =>\r\n props.buttonGroupType === ButtonGroupType.Right ? 'row-reverse' : ''};\r\n background-color: ${COLOR.MAIN.BUTTON_GROUP_BG};\r\n border-top: 1px solid ${COLOR.MAIN.BUTTON_GROUP_BORDER};\r\n border-bottom-left-radius: 4px;\r\n border-bottom-right-radius: 4px;\r\n padding: 16px;\r\n\r\n ${StyledButton} {\r\n margin-left: ${SPACING.X_LARGE};\r\n margin-right: ${SPACING.X_LARGE};\r\n\r\n &:first-child {\r\n margin-left: 0;\r\n margin-right: 0;\r\n }\r\n }\r\n`;\r\n\r\nexport const Modal = React.forwardRef(\r\n (\r\n {\r\n children,\r\n buttons = null,\r\n buttonGroupType = ButtonGroupType.Left,\r\n title,\r\n cancelText,\r\n primaryText,\r\n handleCancelButton,\r\n handlePrimaryButton,\r\n width,\r\n focusOnButton,\r\n ...props\r\n },\r\n ref,\r\n ) => {\r\n const cancelButtonRef = React.useRef(null);\r\n const primaryButtonRef = React.useRef(null);\r\n\r\n useEffect(() => {\r\n if (focusOnButton === 'cancel' && cancelButtonRef.current) cancelButtonRef.current.focus();\r\n if (focusOnButton === 'primary' && primaryButtonRef.current) primaryButtonRef.current.focus();\r\n });\r\n\r\n return (\r\n \r\n {title}\r\n {children}\r\n {buttons ? (\r\n buttons\r\n ) : (\r\n \r\n \r\n {primaryText || 'Add'}\r\n \r\n \r\n {cancelText || 'Cancel'}\r\n \r\n \r\n )}\r\n \r\n );\r\n },\r\n);\r\nModal.displayName = 'Modal';\r\n\r\nexport { Overlay, StyledModal, StyledModalTitleBar, StyledModalContent, StyledButton, StyledButtonGroup };\r\n","import * as React from 'react';\r\nimport { useState } from 'react';\r\n\r\nimport { darken, lighten } from 'polished';\r\nimport styled from 'styled-components';\r\n\r\nimport { COLOR, RADIUS } from '../../packages/constants';\r\nimport { CircleWithX, Search } from '../../packages/icons';\r\n\r\nexport interface SearchFilterProps {\r\n assistAccess: boolean;\r\n handleChange?: (e: any) => void;\r\n handleClearButton?: (e: any) => void;\r\n placeholder?: string;\r\n searchTerm?: string;\r\n ref?: any;\r\n isExpandable?: boolean;\r\n isRounded?: boolean;\r\n dataId?: string;\r\n hasFocus?: boolean;\r\n hasClearButton?: boolean;\r\n hasSearchIcon?: boolean;\r\n}\r\n\r\ninterface StyledInputProps {\r\n assistAccess: boolean;\r\n dataTestId: string;\r\n autoComplete?: string;\r\n hideExpandButton?: boolean;\r\n isRounded?: boolean;\r\n isExpandable?: boolean;\r\n hasEndContent: boolean;\r\n ref?: any;\r\n rel?: string;\r\n}\r\n\r\ninterface DataTestIdProps {\r\n dataTestId: string;\r\n}\r\n\r\ninterface ExpandButtonProps {\r\n isRounded?: boolean;\r\n hideExpandButton?: boolean;\r\n}\r\n\r\ninterface StyledFilterProps {\r\n isExpanded: boolean;\r\n isRounded?: boolean;\r\n}\r\n\r\nconst StyledFilter = styled.div`\r\n display: flex;\r\n min-height: 34px;\r\n border: ${(props) => (props.isExpanded ? `1px solid ${COLOR.MAIN.FORM_FIELD}` : 'none')};\r\n border-radius: ${(props): string => (props.isRounded ? '25px' : RADIUS.FORM_FIELD)};\r\n\r\n &:focus-within {\r\n border-color: ${COLOR.BRAND.REPORTING};\r\n }\r\n`;\r\n\r\nconst StyledCircleWithX = styled(CircleWithX)`\r\n width: 18px;\r\n height: 22px;\r\n`;\r\n\r\nconst StyledSearch = styled(Search)`\r\n width: 18px;\r\n height: 22px;\r\n fill: #9ba8bd;\r\n`;\r\n\r\nconst Button = styled.button.attrs(({ dataTestId }) => ({\r\n 'data-test-id': dataTestId,\r\n}))``;\r\n\r\ninterface StyledButtonProps {\r\n isRounded?: boolean;\r\n isExpandable?: boolean;\r\n assistAccess?: boolean;\r\n hideExpandButton?: boolean;\r\n}\r\n\r\nconst StyledButton = styled(Button)`\r\n fill: ${COLOR.MAIN.FORM_FIELD_DARK};\r\n background-color: ${COLOR.PRIMARY.WHITE};\r\n border-radius: ${(props): string =>\r\n props.isRounded ? '0 25px 25px 0' : `0 ${RADIUS.FORM_FIELD} ${RADIUS.FORM_FIELD} 0`};\r\n border: none;\r\n padding: 6px;\r\n cursor: pointer;\r\n display: ${(props) => (!props.isExpandable ? 'block' : props.hideExpandButton ? 'block' : 'none')};\r\n\r\n &:focus {\r\n outline: ${(props): string => (props.assistAccess ? '1px dotted #212121' : '0')};\r\n outline: ${(props): string => (props.assistAccess ? '5px auto -webkit-focus-ring-color' : '0')};\r\n\r\n ${StyledCircleWithX} {\r\n fill: ${COLOR.BRAND.REPORTING};\r\n }\r\n }\r\n\r\n &:hover {\r\n ${StyledCircleWithX} {\r\n fill: ${darken('0.2', COLOR.MAIN.FORM_FIELD_DARK)};\r\n }\r\n }\r\n\r\n &:disabled {\r\n cursor: default;\r\n\r\n ${StyledCircleWithX} {\r\n opacity: 0.15;\r\n }\r\n }\r\n`;\r\n\r\ninterface StyledSearchIconContainerProps {\r\n isRounded?: boolean;\r\n}\r\n\r\nconst StyledSearchIconContainer = styled.div`\r\n fill: ${COLOR.MAIN.FORM_FIELD_DARK};\r\n background-color: ${COLOR.PRIMARY.WHITE};\r\n border-radius: ${(props): string =>\r\n props.isRounded ? '0 25px 25px 0' : `0 ${RADIUS.FORM_FIELD} ${RADIUS.FORM_FIELD} 0`};\r\n padding: 6px;\r\n display: flex;\r\n align-items: center;\r\n`;\r\n\r\nconst TextInput = styled.input.attrs(({ dataTestId }) => ({\r\n 'data-test-id': dataTestId,\r\n}))``;\r\n\r\nconst StyledInput = styled(TextInput)`\r\n font-size: 14px;\r\n color: ${darken('0.2', COLOR.MAIN.FORM_FIELD_DARK)};\r\n border-radius: ${(props) => (props.isRounded ? '25px' : RADIUS.FORM_FIELD)};\r\n\r\n ${(props) =>\r\n props.hasEndContent &&\r\n `\r\n border-top-right-radius: 0;\r\n border-bottom-right-radius: 0;\r\n `};\r\n\r\n border: none;\r\n padding: ${(props) => (!props.isExpandable ? '2px 6px' : props.hideExpandButton ? '2px 6px' : 0)};\r\n width: ${(props) => (props.isExpandable ? (props.hideExpandButton ? '100%' : '0') : '100%')};\r\n background-color: ${(props) =>\r\n props.isExpandable ? (props.hideExpandButton ? COLOR.PRIMARY.WHITE : 'transparent') : COLOR.PRIMARY.WHITE};\r\n\r\n &::placeholder {\r\n opacity: ${(props) => (!props.isExpandable ? 1 : props.hideExpandButton ? 1 : 0)};\r\n color: ${lighten('0.2', COLOR.MAIN.FORM_FIELD_DARK)};\r\n }\r\n\r\n &:focus {\r\n border-color: ${COLOR.BRAND.REPORTING};\r\n outline: ${(props: StyledInputProps): string => (props.assistAccess ? '1px dotted #212121' : '0')};\r\n outline: ${(props: StyledInputProps): string =>\r\n props.assistAccess ? '5px auto -webkit-focus-ring-color' : '0'};\r\n\r\n ~ ${StyledButton} {\r\n border-color: ${COLOR.BRAND.REPORTING};\r\n }\r\n ~ ${StyledSearchIconContainer} {\r\n border-color: ${COLOR.BRAND.REPORTING};\r\n }\r\n }\r\n\r\n /* 'fix' for removing the internal clear button on Microsoft Edge */\r\n &::-ms-clear {\r\n display: none;\r\n }\r\n`;\r\n\r\nconst ExpandButton = styled.button`\r\n font-size: 14px;\r\n color: ${darken('0.2', COLOR.MAIN.FORM_FIELD_DARK)};\r\n cursor: pointer;\r\n border: 1px solid ${darken(0.04, COLOR.MAIN.MEDIUM_GREY)};\r\n background-color: ${COLOR.PRIMARY.WHITE};\r\n border-radius: ${(props) => (props.isRounded ? '25px' : `${RADIUS.FORM_FIELD}`)};\r\n padding: 2px 8px;\r\n min-height: 36px;\r\n display: ${({ hideExpandButton }) => (hideExpandButton ? 'none' : 'flex')};\r\n align-items: center;\r\n justify-content: center;\r\n\r\n &:hover {\r\n border-color: ${lighten(0.5, COLOR.MAIN.LABEL_TEXT)};\r\n background-color: ${lighten(0.65, COLOR.MAIN.LABEL_TEXT)};\r\n\r\n ${StyledSearch} {\r\n fill: ${darken('0.2', COLOR.MAIN.FORM_FIELD_DARK)};\r\n }\r\n }\r\n`;\r\n\r\nconst SearchFilter = React.forwardRef(\r\n (\r\n {\r\n assistAccess,\r\n placeholder,\r\n handleChange,\r\n handleClearButton,\r\n searchTerm,\r\n isRounded,\r\n isExpandable,\r\n dataId,\r\n hasFocus,\r\n hasClearButton = true,\r\n hasSearchIcon = false,\r\n ...props\r\n },\r\n ref,\r\n ) => {\r\n const [hideExpandButton, setHideExpandButton] = useState(false);\r\n\r\n // If the input has a search icon, only show the clear button if a search term has been entered\r\n // Otherwise, show the search icon\r\n const isExpanded = !isExpandable || hideExpandButton;\r\n const showClearButton = hasClearButton && (!hasSearchIcon || !!searchTerm);\r\n const showSearchIcon = isExpanded && hasSearchIcon && !showClearButton;\r\n\r\n const handleExpandButton = () => {\r\n setHideExpandButton(true);\r\n // @ts-ignore\r\n ref.current.focus();\r\n };\r\n\r\n const handleBlur = () => {\r\n if (!isExpandable) return;\r\n // @ts-ignore\r\n if (!ref.current.value) setHideExpandButton(false);\r\n };\r\n\r\n return (\r\n \r\n {isExpandable && (\r\n \r\n \r\n \r\n )}\r\n \r\n {showClearButton && (\r\n \r\n \r\n \r\n )}\r\n {showSearchIcon && (\r\n \r\n \r\n \r\n )}\r\n \r\n );\r\n },\r\n);\r\nSearchFilter.displayName = 'SearchFilter';\r\n\r\nexport { SearchFilter };\r\n","import * as React from 'react';\r\n\r\nimport { transparentize } from 'polished';\r\nimport styled from 'styled-components';\r\n\r\nimport { COLOR, FONT, FONT_SIZE, SPACING } from '../../../../packages/constants';\r\nimport { ChevronRight } from '../../../../packages/icons/';\r\n\r\ninterface ChartGroupProps {\r\n onChange?: (e: any) => void;\r\n chartData?: any;\r\n hideFavourites?: boolean;\r\n hideRecent?: boolean;\r\n checked?: any;\r\n assistAccess?: boolean;\r\n}\r\n\r\ninterface DataTestIdProps {\r\n dataTestId: string;\r\n}\r\n\r\ninterface StyledGroupItemProps {\r\n children: React.ReactNode;\r\n checked: boolean;\r\n radioValue: string;\r\n assistAccess?: boolean;\r\n dataTestId?: string;\r\n onChange?: (e: any) => void;\r\n onClick?: (e: any) => void;\r\n ref?: any;\r\n}\r\n\r\ninterface StyledInputProps {\r\n assistAccess?: boolean;\r\n ref?: any;\r\n rel?: string;\r\n autoComplete?: string;\r\n dataTestId?: string;\r\n}\r\n\r\ninterface StyledLabelTextProps {\r\n checked?: boolean;\r\n assistAccess?: boolean;\r\n}\r\n\r\nexport const ChartGroupScroller = styled.div`\r\n margin-top: ${SPACING.LARGE};\r\n height: 100%;\r\n overflow: auto;\r\n padding-top: 5px;\r\n padding-left: ${SPACING.SMALL};\r\n`;\r\n\r\nexport const ChartGroupTitle = styled.h3`\r\n font-weight: 700;\r\n font-family: ${FONT.OPEN_SANS};\r\n font-size: ${FONT_SIZE.SMALL};\r\n color: #6f788a;\r\n padding: 5px;\r\n margin: 0;\r\n margin-top: ${SPACING.MEDIUM};\r\n`;\r\n\r\nconst ClickableLi = styled.li.attrs(({ dataTestId }) => ({\r\n 'data-test-id': dataTestId,\r\n}))``;\r\n\r\nexport const StyledClickableListItem = styled(ClickableLi)`\r\n list-style-type: none;\r\n margin: 0;\r\n padding: 0;\r\n line-height: 1;\r\n data-test-id: ${(props: DataTestIdProps): string => props.dataTestId};\r\n`;\r\n\r\nexport const StyledListItem = styled.li`\r\n list-style-type: none;\r\n margin: 0;\r\n padding: 0;\r\n line-height: 1;\r\n`;\r\n\r\nexport const StyledList = styled.ul`\r\n list-style-type: none;\r\n margin: 0 0 ${SPACING.MEDIUM};\r\n padding: 0;\r\n\r\n ${StyledClickableListItem} {\r\n margin-right: ${SPACING.MEDIUM};\r\n\r\n ${StyledClickableListItem} {\r\n margin-right: 0;\r\n }\r\n }\r\n`;\r\n\r\nconst ChartGroupWrapperPaddingTop = `26px`;\r\n\r\nexport const ChartGroupWrapper = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n background-color: ${COLOR.MODAL.MODAL_PANEL_ACCENT};\r\n padding: ${ChartGroupWrapperPaddingTop} 0 0 ${SPACING.SMALL};\r\n width: 240px;\r\n height: calc(100% - ${ChartGroupWrapperPaddingTop});\r\n\r\n > ${StyledList}:first-child {\r\n margin-left: ${SPACING.SMALL};\r\n }\r\n`;\r\n\r\nexport const HorizontalRule = styled.hr`\r\n border: 0;\r\n border-bottom: 1px solid #b2bccd;\r\n width: calc(100% - ${SPACING.X_LARGE});\r\n margin: ${SPACING.MEDIUM} ${SPACING.X_LARGE} ${SPACING.MEDIUM} ${SPACING.SMALL};\r\n`;\r\n\r\nconst StyledLabel = styled.label`\r\n background-color: ${COLOR.MODAL.MODAL_PANEL_ACCENT};\r\n position: relative;\r\n`;\r\n\r\nconst StyledLabelText = styled.div`\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n font-family: ${FONT.OPEN_SANS};\r\n font-size: ${FONT_SIZE.SMALL};\r\n font-weight: 400;\r\n background-color: ${(props: StyledLabelTextProps): string => (props.checked ? COLOR.PRIMARY.WHITE : 'transparent')};\r\n color: ${COLOR.BRAND.REPORTING};\r\n padding: 5px;\r\n cursor: pointer;\r\n\r\n &:hover {\r\n background-color: ${(props: StyledLabelTextProps): string =>\r\n props.checked ? COLOR.PRIMARY.WHITE : transparentize('0.5', COLOR.PRIMARY.WHITE)};\r\n }\r\n`;\r\n\r\nconst StyledChevron = styled(ChevronRight)`\r\n fill: #b2bccd;\r\n height: 12px;\r\n width: 12px;\r\n opacity: ${(props: StyledLabelTextProps): number => (props.checked ? 1 : 0)};\r\n`;\r\n\r\nconst StyledRadio = styled.input`\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n opacity: 0;\r\n z-index: -1;\r\n\r\n &:focus ~ ${StyledLabelText} {\r\n outline: ${(props: StyledInputProps): string => (props.assistAccess ? '1px dotted #212121' : '0')};\r\n outline: ${(props: StyledInputProps): string =>\r\n props.assistAccess ? '5px auto -webkit-focus-ring-color' : '0'};\r\n }\r\n`;\r\n\r\nexport const StyledGroupItem = React.forwardRef(\r\n ({ children, onChange, onClick, radioValue, checked, assistAccess, dataTestId, ...props }, ref) => (\r\n \r\n \r\n \r\n \r\n {children} \r\n \r\n \r\n \r\n ),\r\n);\r\nStyledGroupItem.displayName = 'StyledGroupItem';\r\n\r\nconst ChartGroup = React.forwardRef(\r\n ({ onChange, chartData, hideFavourites, hideRecent, checked, assistAccess, ...props }, ref) => (\r\n \r\n \r\n \r\n Create a new chart\r\n \r\n {!hideRecent && (\r\n \r\n Recent\r\n \r\n )}\r\n {!hideFavourites && (\r\n \r\n Favourites\r\n \r\n )}\r\n \r\n\r\n \r\n \r\n \r\n \r\n All...\r\n \r\n {chartData &&\r\n Object.keys(chartData).map((groupTitle) => {\r\n return (\r\n \r\n {chartData[groupTitle].title}\r\n \r\n {Object.keys(chartData[groupTitle].groups).map((groupItem) => {\r\n return (\r\n \r\n {chartData[groupTitle].groups[groupItem].title}\r\n \r\n );\r\n })}\r\n \r\n \r\n );\r\n })}\r\n \r\n \r\n \r\n ),\r\n);\r\nChartGroup.displayName = 'ChartGroup';\r\n\r\nexport default ChartGroup;\r\n","import * as React from 'react';\r\n\r\nimport styled from 'styled-components';\r\n\r\nimport { COLOR, FONT_SIZE, SPEED, Theme } from '../../../../packages/constants';\r\n\r\ninterface ChartIconProps {\r\n iconName: string;\r\n iconLabel: string;\r\n id: string;\r\n onChange: (e: any) => void;\r\n isSelected: boolean;\r\n assistAccess?: boolean;\r\n dataTestId?: string;\r\n imagePath?: string;\r\n onKeyDown?: (e: any) => void;\r\n hasModernStyles?: boolean;\r\n}\r\n\r\ninterface StyledIconProps {\r\n iconName: string;\r\n imagePath?: string;\r\n assistAccess?: boolean;\r\n}\r\n\r\ninterface StyledInputProps {\r\n assistAccess?: boolean;\r\n ref?: any;\r\n rel?: string;\r\n autoComplete?: string;\r\n dataTestId?: string;\r\n hasModernStyles?: boolean;\r\n theme?: Theme;\r\n}\r\n\r\ninterface DataTestIdProps {\r\n dataTestId: string;\r\n}\r\n\r\nconst ChartIconWrapper = styled.div`\r\n display: flex;\r\n justify-content: center;\r\n margin-bottom: 100px;\r\n width: 33%;\r\n flex-basis: 33%;\r\n`;\r\n\r\nconst StyledLabel = styled.label`\r\n width: 100px;\r\n height: 100px;\r\n display: block;\r\n position: relative;\r\n cursor: pointer;\r\n`;\r\n\r\nexport const StyledIcon = styled.div`\r\n box-sizing: border-box;\r\n margin-bottom: 12px;\r\n border: 3px solid ${COLOR.MAIN.ICON_BACKGROUND};\r\n border-radius: 15px;\r\n width: 100px;\r\n height: 100px;\r\n background-image: url(${(props) => `${props.imagePath ?? ''}${props.iconName}.svg`});\r\n background-color: ${COLOR.MAIN.ICON_BACKGROUND};\r\n background-repeat: no-repeat;\r\n background-position: center;\r\n background-size: 120% auto;\r\n box-shadow: 2px 2px 4px rgba(4, 37, 91, 0.15);\r\n transition: box-shadow ${SPEED.TRANSITION};\r\n`;\r\n\r\nconst StyledLabelText = styled.div`\r\n color: black;\r\n border-radius: 3px;\r\n font-size: ${FONT_SIZE.SMALL};\r\n font-family: sans-serif;\r\n line-height: ${FONT_SIZE.LARGE};\r\n padding: 5px 2px;\r\n text-align: center;\r\n background-color: ${COLOR.PRIMARY.WHITE};\r\n box-shadow: 0 0 15px rgba(4, 37, 91, 0);\r\n`;\r\n\r\nconst Radio = styled.input.attrs(({ dataTestId }) => ({\r\n 'data-test-id': dataTestId,\r\n}))``;\r\n\r\nconst StyledRadio = styled(Radio)`\r\n position: absolute;\r\n opacity: 0;\r\n top: 0;\r\n left: 0;\r\n z-index: -1;\r\n\r\n &:hover {\r\n ~ ${StyledIcon} {\r\n box-shadow: 0 0 15px rgba(4, 37, 91, 0.3);\r\n }\r\n }\r\n\r\n &:focus ~ ${StyledIcon} {\r\n outline: ${(props) => (props.assistAccess ? '1px dotted #212121' : '0')};\r\n outline: ${(props) => (props.assistAccess ? '5px auto -webkit-focus-ring-color' : '0')};\r\n }\r\n\r\n &:checked {\r\n ~ ${StyledIcon} {\r\n border-color: ${(props: StyledInputProps) =>\r\n props.hasModernStyles && props.theme?.mainBorder ? props.theme.mainBorder : COLOR.BRAND.REPORTING};\r\n box-shadow: 0 0 15px rgba(4, 37, 91, 0.3);\r\n }\r\n\r\n ${(props) =>\r\n !props.hasModernStyles &&\r\n `\r\n ~ ${StyledLabelText} {\r\n color: white;\r\n background-color: ${COLOR.BRAND.REPORTING};\r\n box-shadow: 0 0 15px rgba(4, 37, 91, 0.3);\r\n }\r\n `}\r\n }\r\n`;\r\n\r\nexport const StyledChartWrapper = styled.div`\r\n display: flex;\r\n flex-wrap: wrap;\r\n align-content: flex-start;\r\n overflow: auto;\r\n padding: 15px 0 0 0;\r\n height: calc(100% - 95px);\r\n position: relative;\r\n`;\r\n\r\nconst ChartIcon = React.forwardRef(\r\n (\r\n {\r\n iconName,\r\n iconLabel,\r\n id,\r\n onChange,\r\n onKeyDown,\r\n assistAccess,\r\n isSelected,\r\n dataTestId,\r\n imagePath,\r\n hasModernStyles,\r\n },\r\n ref,\r\n ) => (\r\n \r\n \r\n \r\n \r\n {iconLabel}\r\n \r\n \r\n ),\r\n);\r\nChartIcon.displayName = 'ChartIcon';\r\n\r\nexport default ChartIcon;\r\n","import * as React from 'react';\r\n\r\nimport styled from 'styled-components';\r\n\r\nimport { camelToKebab } from '../../../../../Scripts/Spotlight/Components/CamelToKebab';\r\nimport { COLOR, FONT, FONT_SIZE, SPACING } from '../../../../packages/constants';\r\nimport Star from '../../../../packages/icons/star';\r\nimport { StyledIcon as ChartIcon } from '../chart-icon/chart-icon';\r\n\r\nexport interface ChartInfoProps {\r\n onClick?: (e: any) => void;\r\n iconName: string;\r\n chartTitle: string;\r\n description: string;\r\n imagePath?: string;\r\n reportCodes?: any;\r\n hideFavourites?: boolean;\r\n isFavourite?: boolean;\r\n assistAccess: boolean;\r\n}\r\n\r\nexport interface StyledButtonProps {\r\n assistAccess: boolean;\r\n}\r\n\r\nconst CHART_INFO_WIDTH = '196px';\r\n\r\nconst StyledChartInfo = styled.div`\r\n background-color: ${COLOR.PRIMARY.WHITE};\r\n box-shadow: inset 7px 0 9px -7px rgba(0, 0, 0, 0.15);\r\n width: 100%;\r\n height: 100%;\r\n`;\r\n\r\nconst StyledChartInfoInner = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n padding: 23px ${SPACING.X_LARGE} ${SPACING.X_LARGE};\r\n height: 100%;\r\n`;\r\n\r\nconst StyledChartIcon = styled(ChartIcon)`\r\n margin-left: 44px;\r\n`;\r\n\r\nconst StyledChartTitle = styled.h2`\r\n font-family: ${FONT.OPEN_SANS};\r\n font-size: ${FONT_SIZE.LARGE};\r\n font-weight: 500;\r\n line-height: ${FONT_SIZE.X_LARGE};\r\n text-align: center;\r\n margin-bottom: 18px;\r\n color: ${COLOR.MAIN.LABEL_TEXT};\r\n width: ${CHART_INFO_WIDTH};\r\n`;\r\n\r\nconst StyledDescription = styled.p`\r\n font-family: ${FONT.OPEN_SANS};\r\n font-size: ${FONT_SIZE.SMALL};\r\n font-weight: 400;\r\n line-height: ${FONT_SIZE.LARGE};\r\n margin-bottom: ${SPACING.X_LARGE};\r\n align-self: flex-start;\r\n color: ${COLOR.MAIN.LABEL_TEXT};\r\n width: ${CHART_INFO_WIDTH};\r\n`;\r\n\r\nconst StyledHeading = styled.h3`\r\n font-family: ${FONT.OPEN_SANS};\r\n font-size: ${FONT_SIZE.SMALL};\r\n font-weight: 700;\r\n align-self: flex-start;\r\n color: ${COLOR.MAIN.LABEL_TEXT};\r\n margin-top: ${SPACING.X_SMALL};\r\n margin-bottom: ${SPACING.X_SMALL};\r\n width: ${CHART_INFO_WIDTH};\r\n`;\r\n\r\nconst StyledList = styled.ul`\r\n display: flex;\r\n flex-wrap: wrap;\r\n font-family: ${FONT.OPEN_SANS};\r\n font-size: ${FONT_SIZE.SMALL};\r\n font-weight: 400;\r\n line-height: ${FONT_SIZE.MEDIUM};\r\n margin: 0;\r\n padding: 0;\r\n list-style-type: none;\r\n align-self: flex-start;\r\n color: ${COLOR.MAIN.LABEL_TEXT};\r\n width: ${CHART_INFO_WIDTH};\r\n`;\r\n\r\nconst StyledStar = styled(Star)`\r\n width: 20px;\r\n margin-right: ${SPACING.MEDIUM};\r\n`;\r\n\r\nconst StyledFavouriteButton = styled.button`\r\n font-family: ${FONT.OPEN_SANS};\r\n font-size: ${FONT_SIZE.SMALL};\r\n font-weight: 400;\r\n line-height: ${FONT_SIZE.MEDIUM};\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n align-self: flex-start;\r\n background-color: ${COLOR.PRIMARY.WHITE};\r\n color: ${COLOR.MAIN.DARK_GREY};\r\n border: 0;\r\n padding: ${SPACING.SMALL} ${SPACING.SMALL} ${SPACING.SMALL} 0;\r\n margin-top: auto;\r\n cursor: pointer;\r\n\r\n &:focus {\r\n outline: ${(props: StyledButtonProps): string => (props.assistAccess ? '1px dotted #212121' : '0')};\r\n outline: ${(props: StyledButtonProps): string =>\r\n props.assistAccess ? '5px auto -webkit-focus-ring-color' : '0'};\r\n }\r\n\r\n &:hover ${StyledStar} {\r\n fill: ${COLOR.PRIMARY.YELLOW};\r\n }\r\n`;\r\n\r\nconst StyledListItem = styled.li`\r\n font-family: ${FONT.OPEN_SANS};\r\n font-size: ${FONT_SIZE.X_SMALL};\r\n font-weight: 400;\r\n line-height: ${FONT_SIZE.LARGE};\r\n align-self: flex-start;\r\n color: ${COLOR.MAIN.LABEL_TEXT};\r\n margin-right: ${SPACING.X_SMALL};\r\n\r\n &::after {\r\n content: ',';\r\n }\r\n\r\n &:last-child {\r\n margin-right: 0;\r\n\r\n &::after {\r\n content: '';\r\n }\r\n }\r\n`;\r\n\r\nconst ChartInfo = React.forwardRef(\r\n (\r\n {\r\n iconName,\r\n chartTitle,\r\n description,\r\n reportCodes,\r\n isFavourite = false,\r\n hideFavourites,\r\n assistAccess,\r\n imagePath,\r\n ...props\r\n },\r\n ref,\r\n ) => {\r\n const [favourite, setFavourite] = React.useState(isFavourite);\r\n const handleFavourite = () => {\r\n setFavourite(!favourite);\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n {chartTitle}\r\n \r\n {description}\r\n {reportCodes && reportCodes.length > 0 && (\r\n <>\r\n Report codes\r\n \r\n {reportCodes.map((code: string, index: number) => (\r\n {code}\r\n ))}\r\n \r\n \r\n )}\r\n {!hideFavourites && (\r\n \r\n \r\n {favourite ? 'Remove from' : 'Add to'} favourites\r\n \r\n )}\r\n \r\n \r\n );\r\n },\r\n);\r\nChartInfo.displayName = 'ChartInfo';\r\n\r\nexport default ChartInfo;\r\n","import * as React from 'react'; // eslint-disable-line\r\nimport styled, { keyframes } from 'styled-components';\r\n\r\nimport { COLOR, FONT, FONT_SIZE, SPEED, THEME } from '../../packages/constants';\r\nimport {\r\n StyledModal,\r\n StyledModalTitleBar,\r\n StyledModalContent,\r\n StyledButton,\r\n StyledButtonGroup,\r\n ButtonGroupType,\r\n} from '../modal';\r\nimport { SearchFilter } from '../search-filter/search-filter';\r\nimport ChartGroup, {\r\n ChartGroupWrapper,\r\n StyledList,\r\n StyledListItem,\r\n ChartGroupTitle,\r\n HorizontalRule,\r\n StyledGroupItem,\r\n ChartGroupScroller,\r\n} from './atoms/chart-group/chart-group';\r\nimport ChartIcon, { StyledChartWrapper } from './atoms/chart-icon/chart-icon';\r\nimport ChartInfo from './atoms/chart-info/chart-info';\r\n\r\nexport interface ChartSelectorProps {\r\n chartData: any;\r\n assistAccess: boolean;\r\n hideFavourites?: boolean;\r\n hideRecent?: boolean;\r\n imagePath?: string;\r\n existingChart?: string;\r\n handleCancelButton?: (e: any) => void;\r\n handlePrimaryButton?: (e: any) => void;\r\n themeProvider?: {};\r\n hasModernStyles?: boolean;\r\n}\r\n\r\ninterface StyledContentProps {\r\n isChartSelected: boolean;\r\n imagePath?: string;\r\n}\r\n\r\nconst DefaultGroups = {\r\n NewChart: 'create-a-new-chart',\r\n NewTextPanel: 'create-a-new-text-panel',\r\n Recent: 'recent',\r\n Favourites: 'favourites',\r\n All: 'all',\r\n};\r\n\r\nconst exampleAnimation = keyframes`\r\n from {\r\n width: 0;\r\n }\r\n \r\n to {\r\n width: 240px;\r\n }\r\n`;\r\n\r\nconst StyledChartGroup = styled(ChartGroup)``;\r\n\r\nconst StyledChartInfo = styled(ChartInfo)`\r\n overflow: hidden;\r\n width: ${(props: StyledContentProps) => (props.isChartSelected ? '240px' : '0')};\r\n animation: ${exampleAnimation} ${SPEED.TRANSITION} ease-in 1 forwards;\r\n`;\r\n\r\nconst StyledContent = styled.div`\r\n background-color: ${COLOR.PRIMARY.WHITE};\r\n height: 100%;\r\n transition: all ${SPEED.TRANSITION} ease-in;\r\n width: ${(props: StyledContentProps) => (props.isChartSelected ? '420px' : '660px')};\r\n`;\r\n\r\nconst StyledChartSelector = styled.div`\r\n display: flex;\r\n height: 100%;\r\n width: 900px;\r\n\r\n ${StyledChartGroup} {\r\n max-width: 240px;\r\n width: 240px;\r\n min-width: 240px;\r\n }\r\n`;\r\n\r\nconst StyledFilterWrapper = styled.div`\r\n background-color: ${COLOR.PRIMARY.WHITE};\r\n padding: 22px;\r\n`;\r\n\r\nconst StyledMessage = styled.p`\r\n font-family: ${FONT.OPEN_SANS};\r\n font-size: ${FONT_SIZE.MEDIUM};\r\n text-align: center;\r\n color: ${COLOR.MAIN.FORM_FIELD_DARK};\r\n padding-top: 18vh;\r\n width: 100%;\r\n`;\r\n\r\nexport const ChartSelector = React.forwardRef(\r\n (\r\n {\r\n chartData,\r\n hideFavourites,\r\n hideRecent,\r\n assistAccess,\r\n imagePath,\r\n existingChart,\r\n handleCancelButton,\r\n handlePrimaryButton,\r\n hasModernStyles,\r\n ...props\r\n },\r\n ref,\r\n ) => {\r\n const [groupItemChecked, setGroupItemChecked] = React.useState(DefaultGroups.All);\r\n const [filterValue, setFilterValue] = React.useState('');\r\n const [chartList, setChartList] = React.useState([]);\r\n const [ignoreScrollIntoView, setIgnoreScrollIntoView] = React.useState(false);\r\n // tslint:disable-next-line:no-null-keyword\r\n const filterInputRef = React.useRef(null);\r\n // tslint:disable-next-line:no-null-keyword\r\n const chartWrapperRef = React.useRef(null);\r\n\r\n // create an array of all the charts\r\n const chartsArray: any = [];\r\n\r\n // if the user is changing a chart (chart is already selected), set as temp variable\r\n let temporaryChartSelected: any = {};\r\n\r\n // loop through all the charts and unselect each\r\n const unselectAllCharts = () => {\r\n Object.keys(chartData).map((groupTitle) =>\r\n Object.keys(chartData[groupTitle].groups).map((groupItem) =>\r\n Object.keys(chartData[groupTitle].groups[groupItem].charts).map((chartItem) => {\r\n const chart = chartData[groupTitle].groups[groupItem].charts[chartItem];\r\n return (chart.selected = false);\r\n }),\r\n ),\r\n );\r\n };\r\n\r\n // loop through all of the charts and build chartsArray\r\n const renderCharts = (groupItemSelected: any) => {\r\n if (groupItemSelected === DefaultGroups.All) {\r\n Object.keys(chartData).map((groupTitle) =>\r\n Object.keys(chartData[groupTitle].groups).map((groupItem) =>\r\n Object.keys(chartData[groupTitle].groups[groupItem].charts).map((chartItem) => {\r\n const chart = chartData[groupTitle].groups[groupItem].charts[chartItem];\r\n // if a chart is selected, add it to the temp variable\r\n if (chart.selected) {\r\n temporaryChartSelected = chart;\r\n }\r\n return chartsArray.push(chart);\r\n }),\r\n ),\r\n );\r\n // TODO: add favourites & recent\r\n // } else if (groupItemSelected === DefaultGroups.Favourites) {\r\n // console.log('handle favourites'); // de-scoped for the time being\r\n // } else if (groupItemSelected === DefaultGroups.Recent) {\r\n // console.log('handle recent'); // de-scoped for the time being\r\n } else if (groupItemSelected === DefaultGroups.NewChart) {\r\n chartsArray.push(\r\n {\r\n title: 'Custom Pie Chart',\r\n description:\r\n \"If you can't find the pie chart you're looking for, you can easily build your own.\",\r\n reportCodes: [],\r\n isFavourite: false,\r\n iconName: 'custom-pie',\r\n id: 'CustomPie',\r\n },\r\n {\r\n title: 'Custom Chart',\r\n description: \"If you can't find the chart you're looking for, you can easily build your own.\",\r\n reportCodes: [],\r\n isFavourite: false,\r\n iconName: 'custom-line',\r\n id: 'Custom',\r\n },\r\n );\r\n } else if (groupItemSelected === DefaultGroups.NewTextPanel) {\r\n chartsArray.push({\r\n title: 'Text Panel',\r\n description: 'Add text to your page, customise colours, and include auto-text or custom tags.',\r\n reportCodes: [],\r\n isFavourite: false,\r\n iconName: 'text-panel',\r\n id: 'TextPanel',\r\n type: 'TEXT',\r\n });\r\n }\r\n };\r\n renderCharts(groupItemChecked);\r\n\r\n // set the initial states for selected chart & isChartSelected, if one is selected\r\n const [selectedChart, setSelectedChart] = React.useState(temporaryChartSelected);\r\n const [isChartSelected, setIsChartSelected] = React.useState(\r\n Object.prototype.hasOwnProperty.call(temporaryChartSelected, 'title'),\r\n );\r\n\r\n // handle click when user clicks on chart icon\r\n const handleChartIconChange = (chart: any) => {\r\n unselectAllCharts();\r\n chart.selected = true;\r\n setSelectedChart(chart);\r\n setIsChartSelected(true);\r\n setIgnoreScrollIntoView(true);\r\n };\r\n\r\n // handle click when user clicks on left column group name\r\n const handleGroupItemClick = (event: any, charts?: any) => {\r\n setIgnoreScrollIntoView(true);\r\n setGroupItemChecked(event.target.value);\r\n if (event.target.value !== DefaultGroups.All) {\r\n setFilterValue('');\r\n }\r\n setChartList(charts);\r\n // @ts-ignore\r\n chartWrapperRef.current.scrollTop = 0;\r\n };\r\n\r\n // handle change when user starts typing in the search-filter\r\n const handleFilterChange = (event: any) => {\r\n setFilterValue(event.target.value.toLowerCase());\r\n setGroupItemChecked(DefaultGroups.All);\r\n };\r\n\r\n // handle click when user clicks the clear search-filter button\r\n const handleFilterClearButton = () => {\r\n setFilterValue('');\r\n // @ts-ignore\r\n filterInputRef.current.focus();\r\n };\r\n\r\n // searchable charts that contains the search string in the title\r\n const filteredData = chartsArray.filter((item: any) => {\r\n const isSearching = filterValue.trim().length > 0;\r\n const isSearchable = !(item.hideInSearch && isSearching);\r\n const isSearchStringInTitle = item.title.toLowerCase().includes(filterValue);\r\n return Object.keys(item).some(() => isSearchable && isSearchStringInTitle);\r\n });\r\n\r\n // scroll to selected chart\r\n React.useEffect(() => {\r\n const selectedChart = document.querySelector(`input[value=\"${temporaryChartSelected.id}\"]`);\r\n // only scroll the view if there is a preselected chart, dont scroll if user clicks a chart\r\n if (selectedChart && !ignoreScrollIntoView) {\r\n selectedChart.scrollIntoView({ behavior: 'smooth', block: 'center', inline: 'nearest' });\r\n }\r\n });\r\n\r\n return (\r\n <>\r\n \r\n {existingChart ? 'Change Chart' : 'Add Chart'}\r\n \r\n \r\n \r\n \r\n handleGroupItemClick(e)}\r\n radioValue={DefaultGroups.NewChart}\r\n checked={groupItemChecked === DefaultGroups.NewChart}\r\n assistAccess={assistAccess}\r\n dataTestId={'chart-group-name__create-a-new-chart'}\r\n >\r\n Create a new chart\r\n \r\n handleGroupItemClick(e)}\r\n radioValue={DefaultGroups.NewTextPanel}\r\n checked={groupItemChecked === DefaultGroups.NewTextPanel}\r\n assistAccess={assistAccess}\r\n dataTestId={'chart-group-name__create-a-new-text-panel'}\r\n >\r\n Create a text panel\r\n \r\n {!hideRecent && (\r\n handleGroupItemClick(e)}\r\n radioValue={DefaultGroups.Recent}\r\n checked={groupItemChecked === DefaultGroups.Recent}\r\n assistAccess={assistAccess}\r\n dataTestId={'chart-group-name__recent'}\r\n >\r\n Recent\r\n \r\n )}\r\n {!hideFavourites && (\r\n handleGroupItemClick(e)}\r\n radioValue={DefaultGroups.Favourites}\r\n checked={groupItemChecked === DefaultGroups.Favourites}\r\n assistAccess={assistAccess}\r\n dataTestId={'chart-group-name__favourites'}\r\n >\r\n Favourites\r\n \r\n )}\r\n \r\n\r\n \r\n\r\n \r\n \r\n handleGroupItemClick(e)}\r\n radioValue={DefaultGroups.All}\r\n checked={groupItemChecked === DefaultGroups.All}\r\n assistAccess={assistAccess}\r\n dataTestId={'chart-group-name__all'}\r\n >\r\n All charts...\r\n \r\n {chartData &&\r\n Object.keys(chartData).map((groupTitle: any) => {\r\n return (\r\n \r\n {\r\n \r\n {chartData[groupTitle].title}\r\n \r\n }\r\n \r\n {Object.keys(chartData[groupTitle].groups).map(\r\n (groupItem) => {\r\n const group =\r\n chartData[groupTitle].groups[groupItem];\r\n return (\r\n \r\n handleGroupItemClick(e, group.charts)\r\n }\r\n radioValue={group.id}\r\n key={`group-item-${groupItem}`}\r\n checked={groupItemChecked === group.id}\r\n assistAccess={assistAccess}\r\n dataTestId={`chart-group-name__${group.id}`}\r\n >\r\n {group.title}\r\n \r\n );\r\n },\r\n )}\r\n \r\n \r\n );\r\n })}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {Object.values(DefaultGroups).includes(groupItemChecked) ? (\r\n filteredData.length >= 1 ? (\r\n filteredData.map((chart: any) => {\r\n return (\r\n handleChartIconChange(chart)}\r\n key={chart.id}\r\n assistAccess={assistAccess}\r\n isSelected={chart.selected}\r\n dataTestId={`chart-icon__${chart.id}`}\r\n hasModernStyles={hasModernStyles}\r\n />\r\n );\r\n })\r\n ) : (\r\n \r\n {groupItemChecked === DefaultGroups.Recent\r\n ? 'No charts have been used recently'\r\n : groupItemChecked === DefaultGroups.Favourites\r\n ? 'No favourites have been added'\r\n : `No charts found matching \"${filterValue}\"`}\r\n \r\n )\r\n ) : (\r\n chartList.map((chart: any) => {\r\n return (\r\n handleChartIconChange(chart)}\r\n key={chart.id}\r\n assistAccess={assistAccess}\r\n isSelected={chart.selected}\r\n dataTestId={`chart-icon__${chart.id}`}\r\n hasModernStyles={hasModernStyles}\r\n />\r\n );\r\n })\r\n )}\r\n \r\n \r\n\r\n {isChartSelected && (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n {existingChart ? 'Select' : 'Add'}\r\n \r\n \r\n Cancel\r\n \r\n \r\n \r\n \r\n );\r\n },\r\n);\r\nChartSelector.displayName = 'ChartSelector';\r\n","import * as React from 'react';\r\n\r\nimport { darken } from 'polished';\r\nimport styled from 'styled-components';\r\n\r\nimport { COLOR, FONT_SIZE, RADIUS, SPACING } from '../../packages/constants';\r\n\r\ninterface TabsProps {\r\n children: React.ReactNode;\r\n onClick?: (e: any) => void;\r\n className?: string;\r\n}\r\n\r\ninterface TabListContainerProps {\r\n children: React.ReactNode;\r\n}\r\n\r\ninterface TabListProps {\r\n children: React.ReactNode;\r\n spacingRight?: number;\r\n}\r\n\r\ninterface TabListItemProps {\r\n children: React.ReactNode;\r\n className?: string;\r\n}\r\n\r\ninterface TabTitleProps {\r\n children: React.ReactNode;\r\n onClick: (e: any) => void;\r\n selected: boolean;\r\n dataId: string;\r\n firstTab?: boolean;\r\n lastTab?: boolean;\r\n title: string;\r\n}\r\n\r\ninterface TabContentProps {\r\n children: React.ReactNode;\r\n selected: boolean;\r\n className?: string;\r\n}\r\n\r\ninterface TabListStyleProps {\r\n spacingRight?: number; // this number would typically be determined by the width of an 'add tab' button occupying the space if there is one\r\n}\r\n\r\ninterface TabTitleStyleProps {\r\n selected: boolean;\r\n firstTab?: boolean;\r\n lastTab?: boolean;\r\n}\r\n\r\nconst StyledTabs = styled.div``;\r\nconst StyledList = styled.ul`\r\n display: inline-flex;\r\n max-width: calc(100% - ${(props) => (props.spacingRight ? props.spacingRight : `0`)}px);\r\n overflow: hidden;\r\n`;\r\nconst StyledTabListContainer = styled.div`\r\n overflow: hidden;\r\n margin-bottom: -1px;\r\n`;\r\n\r\nconst StyledListItem = styled.li`\r\n &:not(:first-child) {\r\n margin-left: -1px;\r\n }\r\n`;\r\nconst StyledTitle = styled.button`\r\n margin: 0px;\r\n border-top: 1px solid ${COLOR.MAIN.MEDIUM_GREY};\r\n border-top-left-radius: ${(props) => (props.firstTab ? RADIUS.FORM_FIELD : `0`)};\r\n border-top-right-radius: ${(props) => (props.lastTab ? RADIUS.FORM_FIELD : `0`)};\r\n border-right: 1px solid ${COLOR.MAIN.MEDIUM_GREY};\r\n border-bottom: ${(props) =>\r\n props.selected ? `1px solid ${COLOR.PRIMARY.WHITE}` : `1px solid ${COLOR.MAIN.MEDIUM_GREY}`};\r\n border-left: 1px solid ${COLOR.MAIN.MEDIUM_GREY};\r\n font-size: ${FONT_SIZE.X_SMALL};\r\n font-weight: 700;\r\n line-height: 20px;\r\n padding: ${SPACING.X_SMALL} ${SPACING.MEDIUM};\r\n background-color: ${COLOR.PRIMARY.WHITE};\r\n color: ${(props) => (props.selected && props.theme ? props.theme.main : COLOR.MAIN.LABEL_TEXT)};\r\n cursor: ${(props) => (props.selected ? 'default' : 'pointer')};\r\n max-width: 130px;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n\r\n &:hover {\r\n background-color: ${(props) => (props.selected ? COLOR.PRIMARY.WHITE : darken(0.1, COLOR.PRIMARY.WHITE))};\r\n }\r\n`;\r\nconst StyledContent = styled.div`\r\n background-color: ${COLOR.PRIMARY.WHITE};\r\n border: 1px solid ${COLOR.MAIN.MEDIUM_GREY};\r\n border-top-right-radius: ${RADIUS.FORM_FIELD};\r\n border-bottom-left-radius: ${RADIUS.FORM_FIELD};\r\n border-bottom-right-radius: ${RADIUS.FORM_FIELD};\r\n padding: ${SPACING.MEDIUM} ${SPACING.SMALL};\r\n display: ${(props) => (props.selected ? 'block' : 'none')};\r\n`;\r\n\r\nconst Tabs = React.forwardRef(({ children, ...props }, ref) => (\r\n \r\n {children}\r\n \r\n));\r\nTabs.displayName = 'Tabs';\r\n\r\nconst TabListContainer = ({ children, ...props }: TabListContainerProps) => (\r\n {children}\r\n);\r\nconst TabList = ({ children, ...props }: TabListProps) => {children};\r\nconst TabListItem = ({ children, ...props }: TabListItemProps) => (\r\n {children}\r\n);\r\n\r\nconst TabTitle = React.forwardRef(\r\n ({ children, firstTab, lastTab, selected, dataId, title, ...props }, ref) => (\r\n \r\n {children}\r\n \r\n ),\r\n);\r\nTabTitle.displayName = 'TabTitle';\r\n\r\nconst TabContent = React.forwardRef(({ children, selected, ...props }, ref) => (\r\n \r\n {children}\r\n \r\n));\r\nTabContent.displayName = 'TabContent';\r\n\r\nexport default Tabs;\r\nexport { TabListContainer, TabList, TabListItem, TabTitle, TabContent };\r\n","import Tabs from './tabs';\r\nexport * from './tabs';\r\nexport default Tabs;\r\n","import * as React from 'react';\r\n\r\nimport styled from 'styled-components';\r\n\r\nimport { Color } from '../../color-picker-config';\r\n\r\nexport interface ColorPickerPaletteProps {\r\n color: string;\r\n palette: {\r\n [colorName: string]: Color;\r\n };\r\n dataId: string;\r\n onColorSelect: (color: any) => void;\r\n}\r\n\r\ninterface StyledShadeProps {\r\n color: string;\r\n}\r\n\r\nconst StyledColorPickerPalette = styled.table`\r\n padding: 16px;\r\n border-collapse: separate;\r\n width: 100%;\r\n`;\r\n\r\nconst StyledColorName = styled.td`\r\n font: 400 12px open-sans;\r\n width: 8em;\r\n`;\r\n\r\nconst StyledShade = styled.td`\r\n width: 30px;\r\n height: 20px;\r\n background-color: ${(props) => props.color};\r\n cursor: pointer;\r\n`;\r\n\r\nconst StyledDiv = styled.div`\r\n width: 100%;\r\n height: 100%;\r\n position: relative;\r\n ${StyledShade}:hover &::before, ${StyledShade}.active &::before {\r\n content: '';\r\n display: block;\r\n border: 2px solid #ffffff;\r\n position: absolute;\r\n top: -1px;\r\n bottom: -1px;\r\n left: -1px;\r\n right: -1px;\r\n }\r\n`;\r\n\r\nconst StyledDivider = styled.td`\r\n width: 5px;\r\n height: 20px;\r\n`;\r\n\r\nexport const ColorPickerPalette: React.FC> = ({\r\n color,\r\n palette,\r\n dataId,\r\n onColorSelect,\r\n ...props\r\n}) => {\r\n const tableRows = Object.keys(palette).map((colorName) => (\r\n \r\n {colorName}\r\n \r\n onColorSelect(palette[colorName].base)}\r\n >\r\n \r\n \r\n \r\n {palette[colorName].shades.map((colorShade, index) => (\r\n onColorSelect(colorShade)}\r\n >\r\n \r\n \r\n ))}\r\n \r\n {palette[colorName].tints.map((tint, index) => (\r\n onColorSelect(tint)}\r\n >\r\n \r\n \r\n ))}\r\n \r\n ));\r\n return (\r\n \r\n {tableRows}\r\n \r\n );\r\n};\r\n","import * as React from 'react';\r\n\r\nimport { InjectedColorProps } from 'react-color';\r\nimport { EditableInput } from 'react-color/lib/components/common';\r\nimport styled from 'styled-components';\r\n\r\nimport { isValidColorHex } from '../../helper';\r\n\r\nexport interface CustomColorPickerFieldsProps extends InjectedColorProps {\r\n onChange: (color: any) => void;\r\n}\r\n\r\nconst StyledCustomColorPickerFields = styled.div`\r\n width: 80px;\r\n height: 160px;\r\n position: relative;\r\n`;\r\n\r\nconst styles = {\r\n fieldsWrap: {\r\n position: 'relative',\r\n display: 'flex',\r\n flexDirection: 'row-reverse',\r\n },\r\n input: {\r\n height: 30,\r\n width: 65,\r\n border: '1px solid #f0f0f0',\r\n paddingLeft: 5,\r\n marginBottom: '10px',\r\n boxSizing: 'border-box',\r\n },\r\n label: {\r\n position: 'absolute',\r\n top: '5px',\r\n left: '0px',\r\n width: '14px',\r\n textTransform: 'uppercase',\r\n height: '18px',\r\n lineHeight: '22px',\r\n fontSize: '14px',\r\n },\r\n} as const;\r\n\r\nexport const CustomColorPickerFields = React.forwardRef(\r\n ({ hex, rgb, onChange, ...props }, ref) => {\r\n const handleChange = (data: any) => {\r\n if (data['#']) {\r\n isValidColorHex(data['#']) &&\r\n onChange({\r\n hex: data['#'],\r\n source: 'hex',\r\n });\r\n } else if (data['R'] || data['G'] || data['B']) {\r\n onChange({\r\n r: data['R'] || rgb?.r,\r\n g: data['G'] || rgb?.g,\r\n b: data['B'] || rgb?.b,\r\n source: 'rgb',\r\n });\r\n }\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n },\r\n);\r\n\r\nCustomColorPickerFields.displayName = 'CustomColorPickerFields';\r\n","import tinycolor from 'tinycolor2';\r\n\r\n// https://github.com/casesandberg/react-color/blob/master/LICENSE\r\nexport const isValidColorHex = (hex: string) => {\r\n if (hex === 'transparent') {\r\n return true;\r\n }\r\n // disable hex4 and hex8\r\n const lh = String(hex).charAt(0) === '#' ? 1 : 0;\r\n return hex.length !== 4 + lh && hex.length < 7 + lh && tinycolor(hex).isValid();\r\n};\r\n","import * as React from 'react'; // eslint-disable-line\r\nimport styled from 'styled-components';\r\n\r\nimport { InjectedColorProps } from 'react-color';\r\n\r\nconst StyledCustomColorPickerPointer = styled.div`\r\n position: absolute;\r\n cursor: pointer;\r\n height: 3px;\r\n width: 19px;\r\n top: -3px;\r\n left: -1px;\r\n right: -1px;\r\n border: 1px solid #000;\r\n background: #fff;\r\n opacity: 0.8;\r\n`;\r\n\r\nconst CustomColorPickerPointer = () => {\r\n return ;\r\n};\r\n\r\nconst StyledCustomColorPickerPointerCircle = styled.div`\r\n width: 12px;\r\n height: 12px;\r\n border-radius: 6px;\r\n box-shadow: ${({ hsl }) => {\r\n const isLight = (hsl?.l || 1) > 0.5;\r\n return isLight ? 'inset 0 0 0 1px #000' : 'inset 0 0 0 1px #fff';\r\n }};\r\n transform: translate(-6px, -6px);\r\n`;\r\n\r\nconst CustomColorPickerPointerCircle = ({ hsl }: InjectedColorProps) => (\r\n \r\n);\r\n\r\nexport { CustomColorPickerPointer, CustomColorPickerPointerCircle };\r\n","import * as React from 'react';\r\n\r\nimport { Color, CustomPicker, InjectedColorProps } from 'react-color';\r\nimport { Hue, Saturation } from 'react-color/lib/components/common';\r\nimport styled from 'styled-components';\r\n\r\nimport { CustomColorPickerFields } from './custom-color-picker-fields';\r\nimport { CustomColorPickerPointer, CustomColorPickerPointerCircle } from './custom-color-picker-pointer';\r\n\r\nexport interface SwatchProps {\r\n color: Color;\r\n}\r\n\r\nexport interface CustomColorPickerProps extends InjectedColorProps {\r\n color?: Color;\r\n dataId: string;\r\n onChange: (color: any) => void;\r\n}\r\n\r\nconst StyledSwatch = styled.div`\r\n height: 60px;\r\n width: 80px;\r\n background: ${(props) => props.color};\r\n`;\r\n\r\nconst StyledHue = styled.div`\r\n position: relative;\r\n width: 19px;\r\n margin-left: 5px;\r\n border: 1px solid #b3b3b3;\r\n margin-bottom: 2px solid #f0f0f0;\r\n`;\r\n\r\nconst StyledSaturation = styled.div`\r\n width: 250px;\r\n position: relative;\r\n border: 1px solid #b3b3b3;\r\n border-bottom: 2px solid #f0f0f0;\r\n overflow: hidden;\r\n`;\r\n\r\nconst Controls = styled.div`\r\n flex: 1;\r\n margin-left: 10px;\r\n`;\r\n\r\nconst StyledCustomColorPicker = styled.div`\r\n padding: 16px;\r\n display: flex;\r\n`;\r\n\r\nconst CustomColorPicker = React.forwardRef(\r\n ({ dataId, color, onChange, ...props }, ref) => {\r\n return (\r\n \r\n \r\n {/* @ts-ignore */}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n },\r\n);\r\n\r\nCustomColorPicker.displayName = 'CustomColorPicker';\r\n\r\nexport const SpotlightPicker = CustomPicker(CustomColorPicker);\r\n","import * as React from 'react';\r\nimport { useEffect, useState } from 'react';\r\n\r\nimport styled from 'styled-components';\r\n\r\nimport { camelToKebab } from '../../../Scripts/Spotlight/Components/CamelToKebab';\r\nimport { COLOR } from '../../packages/constants';\r\nimport Tabs, { TabContent, TabListContainer, TabList, TabListItem, TabTitle } from '../tabs';\r\nimport { ColorPickerPalette } from './atoms/color-picker-palette/color-picker-palette';\r\nimport { SpotlightPicker } from './atoms/custom-color-picker';\r\nimport { Color } from './color-picker-config';\r\nimport defaultPalettes from './color-picker-config.json';\r\n\r\nexport interface ColorPickerProps {\r\n color: string;\r\n currentPalette?: string;\r\n palettes?: {\r\n [paletteName: string]: {\r\n [colorName: string]: Color;\r\n };\r\n };\r\n dataId?: string;\r\n onColorChange: (color: any) => void;\r\n}\r\n\r\nexport interface ExtendedColorPickerProps extends ColorPickerProps {\r\n selectedTab?: number;\r\n ref: any;\r\n onTabChange?: (newIndex: number) => void;\r\n}\r\n\r\nconst defaultTabData = [\r\n {\r\n id: 'tab-1',\r\n title: 'Standard',\r\n paletteName: 'Standard',\r\n content: 'Standard color palette',\r\n },\r\n {\r\n id: 'tab-2',\r\n title: 'Deep',\r\n paletteName: 'Deep',\r\n content: 'Deep color palette',\r\n },\r\n {\r\n id: 'tab-3',\r\n title: 'Custom',\r\n paletteName: '',\r\n content: 'Custom color picker',\r\n },\r\n];\r\n\r\nconst StyledTabListContainer = styled(TabListContainer)`\r\n margin: -2px;\r\n`;\r\n\r\nconst StyledTabList = styled(TabList)`\r\n max-width: unset;\r\n`;\r\n\r\nconst StyledListItem = styled(TabListItem)`\r\n &:not(:first-child) {\r\n margin-left: -2px;\r\n }\r\n\r\n &:focus-within {\r\n z-index: 1000;\r\n }\r\n`;\r\n\r\nconst StyledTabTitle = styled(TabTitle)`\r\n border-width: 2px;\r\n`;\r\n\r\nconst StyledTabContent = styled(TabContent)`\r\n border: none;\r\n border-top: 2px solid ${COLOR.MAIN.MEDIUM_GREY};\r\n border-radius: unset;\r\n padding: 0;\r\n`;\r\n\r\nconst StyledColorPicker = styled.div`\r\n width: 390px;\r\n background-color: ${COLOR.PRIMARY.WHITE};\r\n border: 2px solid ${COLOR.MAIN.MEDIUM_GREY};\r\n border-radius: 4px;\r\n`;\r\n\r\nexport const ColorPicker = React.forwardRef(\r\n (\r\n {\r\n color,\r\n palettes,\r\n currentPalette,\r\n selectedTab = 0,\r\n dataId = 'color-picker',\r\n onColorChange,\r\n onTabChange,\r\n ...props\r\n },\r\n ref,\r\n ) => {\r\n const [tabData, setTabData] = useState(defaultTabData);\r\n const [tabIndex, setTabIndex] = useState(\r\n // Default to last tab if selected tab exceeds number of tabs\r\n (selectedTab ?? tabData.length - 1) < tabData.length ? selectedTab : tabData.length - 1,\r\n );\r\n const [currentColor, setCurrentColor] = useState(color);\r\n\r\n const colorPalettes = palettes ?? defaultPalettes.palettes;\r\n\r\n const handleTabChange = (newTabIndex: number) => {\r\n setTabIndex(newTabIndex);\r\n onTabChange && onTabChange(newTabIndex);\r\n };\r\n\r\n const handleColorChange = (color: any) => {\r\n const hex = color.hex ? color.hex : color;\r\n\r\n setCurrentColor(hex);\r\n onColorChange(hex);\r\n };\r\n\r\n useEffect(() => {\r\n const prependCurrentPaletteTab = () => {\r\n const currentPaletteTab = {\r\n id: 'tab-0',\r\n title: 'Current Palette',\r\n paletteName: currentPalette ?? '',\r\n content: 'Current color palette',\r\n };\r\n\r\n const isNotStandardPalette = currentPalette && currentPalette !== 'Standard';\r\n const hasNoCurrentPaletteTab = !tabData.map((s) => s.id).includes(currentPaletteTab.id);\r\n const canPrependTab =\r\n isNotStandardPalette &&\r\n hasNoCurrentPaletteTab &&\r\n Object.keys(colorPalettes).includes(currentPalette);\r\n if (canPrependTab) {\r\n setTabData([currentPaletteTab, ...defaultTabData]);\r\n setTabIndex(selectedTab ?? 0);\r\n }\r\n };\r\n\r\n prependCurrentPaletteTab();\r\n }, [currentPalette, colorPalettes, selectedTab, tabData]);\r\n\r\n useEffect(() => {\r\n // Default to last tab if selected tab exceeds number of tabs\r\n setTabIndex((selectedTab ?? tabData.length - 1) < tabData.length ? selectedTab : tabData.length - 1);\r\n }, [selectedTab, tabData]);\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n {tabData.map((tab: any, index: number) => (\r\n \r\n handleTabChange(index)}\r\n title={tab.title}\r\n >\r\n {tab.title || 'tab'}\r\n \r\n \r\n ))}\r\n \r\n \r\n {tabData.map((tab: any, index: number) => (\r\n \r\n {tab.title === 'Custom' ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n ))}\r\n \r\n \r\n );\r\n },\r\n);\r\n\r\nColorPicker.displayName = 'ColorPicker';\r\n","import * as React from 'react';\r\nimport { useCallback, useEffect, useState } from 'react';\r\n\r\nimport styled from 'styled-components';\r\n\r\nimport { useClickOutside } from '../../../ModernScripts/Spotlight/Hooks/useClickOutside';\r\nimport { ColorPicker, ColorPickerProps } from '../color-picker/color-picker';\r\n\r\nexport interface SwatchProps {\r\n color: string;\r\n width?: number;\r\n height?: number;\r\n}\r\n\r\nexport interface ColorPickerPopoverProps extends ColorPickerProps {\r\n isOpen?: boolean;\r\n width?: number;\r\n height?: number;\r\n dataId?: string;\r\n}\r\n\r\nconst Swatch = styled.div`\r\n display: inline-block;\r\n width: ${({ width }) => `${width}px`};\r\n height: ${({ height }) => `${height}px`};\r\n border: 1px solid #ededed;\r\n border-radius: 3px;\r\n background-color: ${(props) => props.color};\r\n cursor: pointer;\r\n`;\r\n\r\nconst StyledColorPicker = styled(ColorPicker)`\r\n position: absolute;\r\n z-index: 1000;\r\n`;\r\n\r\nconst StyledColorPickerPopover = styled.div``;\r\n\r\nexport const ColorPickerPopover = React.forwardRef(\r\n (\r\n {\r\n color,\r\n currentPalette,\r\n palettes,\r\n isOpen = false,\r\n width = 50,\r\n height = 25,\r\n dataId = 'color-picker-popover',\r\n onColorChange,\r\n ...props\r\n },\r\n ref,\r\n ) => {\r\n const colorPickerRef = React.useRef();\r\n const swatchRef = React.useRef();\r\n const [showColorPicker, setShowColorPicker] = useState(isOpen);\r\n const [currentColor, setCurrentColor] = useState(color);\r\n const [currentTab, setCurrentTab] = useState(0);\r\n\r\n const toggleColorPicker = useCallback(\r\n () => setShowColorPicker(!showColorPicker),\r\n [showColorPicker, setShowColorPicker],\r\n );\r\n\r\n const handleColorChange = (color: any) => {\r\n const hex = color.hex ? color.hex : color;\r\n\r\n setCurrentColor(hex);\r\n onColorChange(hex);\r\n };\r\n\r\n useEffect(() => {\r\n function handleKeyListener(e: any) {\r\n const canCloseOnEsc = showColorPicker && e.key === 'Escape';\r\n canCloseOnEsc && setShowColorPicker(false);\r\n\r\n const isSwatchInFocus = document.activeElement === swatchRef.current;\r\n const canToggleOnSpace = isSwatchInFocus && e.key === ' ';\r\n canToggleOnSpace && toggleColorPicker();\r\n }\r\n\r\n document.addEventListener('keydown', handleKeyListener);\r\n\r\n return function cleanupKeyListener() {\r\n document.removeEventListener('keydown', handleKeyListener);\r\n };\r\n }, [showColorPicker, setShowColorPicker, toggleColorPicker]);\r\n\r\n useEffect(() => {\r\n setCurrentColor(color);\r\n }, [color]);\r\n\r\n useClickOutside(colorPickerRef, toggleColorPicker);\r\n\r\n return (\r\n \r\n \r\n {showColorPicker && (\r\n \r\n )}\r\n \r\n );\r\n },\r\n);\r\n\r\nColorPickerPopover.displayName = 'ColorPickerPopover';\r\n","import * as React from 'react';\r\n\r\nimport { transparentize } from 'polished';\r\nimport styled from 'styled-components';\r\n\r\nimport { COLOR, FONT, FONT_SIZE, SPACING } from '../../../../packages/constants';\r\nimport { ChevronRight } from '../../../../packages/icons';\r\n\r\ninterface ItemGroupProps {\r\n onChange?: (e: any) => void;\r\n itemData?: any;\r\n hideFavourites?: boolean;\r\n hideRecent?: boolean;\r\n checked?: any;\r\n assistAccess?: boolean;\r\n}\r\n\r\ninterface DataTestIdProps {\r\n dataTestId: string;\r\n}\r\n\r\ninterface StyledGroupItemProps {\r\n children: React.ReactNode;\r\n checked: boolean;\r\n radioValue: string;\r\n assistAccess?: boolean;\r\n dataTestId?: string;\r\n onChange?: (e: any) => void;\r\n onClick?: (e: any) => void;\r\n ref?: any;\r\n}\r\n\r\ninterface StyledInputProps {\r\n assistAccess?: boolean;\r\n ref?: any;\r\n rel?: string;\r\n autoComplete?: string;\r\n dataTestId?: string;\r\n}\r\n\r\ninterface StyledLabelTextProps {\r\n checked?: boolean;\r\n assistAccess?: boolean;\r\n}\r\n\r\nexport const ItemGroupScroller = styled.div`\r\n margin-top: ${SPACING.LARGE};\r\n height: 100%;\r\n overflow: auto;\r\n padding-top: 5px;\r\n padding-left: ${SPACING.SMALL};\r\n`;\r\n\r\nexport const ItemGroupTitle = styled.h3`\r\n font-weight: 700;\r\n font-family: ${FONT.OPEN_SANS};\r\n font-size: ${FONT_SIZE.SMALL};\r\n color: #6f788a;\r\n padding: 5px;\r\n margin: 0;\r\n margin-top: ${SPACING.MEDIUM};\r\n`;\r\n\r\nexport const StyledListItem = styled.li`\r\n list-style-type: none;\r\n margin: 0;\r\n padding: 0;\r\n line-height: 1;\r\n`;\r\n\r\nexport const StyledList = styled.ul`\r\n list-style-type: none;\r\n margin: 0 0 ${SPACING.MEDIUM};\r\n padding: 0;\r\n\r\n ${StyledListItem} {\r\n margin-right: ${SPACING.MEDIUM};\r\n\r\n ${StyledListItem} {\r\n margin-right: 0;\r\n }\r\n }\r\n`;\r\n\r\nconst ItemGroupWrapperPaddingTop = `26px`;\r\n\r\nexport const ItemGroupWrapper = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n background-color: ${COLOR.MODAL.MODAL_PANEL_ACCENT};\r\n padding: ${ItemGroupWrapperPaddingTop} 0 0 ${SPACING.SMALL};\r\n width: 240px;\r\n height: auto;\r\n\r\n > ${StyledList}:first-child {\r\n margin-left: ${SPACING.SMALL};\r\n }\r\n`;\r\n\r\nexport const HorizontalRule = styled.hr`\r\n border: 0;\r\n border-bottom: 1px solid #b2bccd;\r\n width: calc(100% - ${SPACING.X_LARGE});\r\n margin: ${SPACING.MEDIUM} ${SPACING.X_LARGE} ${SPACING.MEDIUM} ${SPACING.SMALL};\r\n`;\r\n\r\nconst StyledLabel = styled.label`\r\n background-color: ${COLOR.MODAL.MODAL_PANEL_ACCENT};\r\n position: relative;\r\n`;\r\n\r\nconst StyledLabelText = styled.div`\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n font-family: ${FONT.OPEN_SANS};\r\n font-size: ${FONT_SIZE.SMALL};\r\n font-weight: 400;\r\n background-color: ${(props: StyledLabelTextProps): string => (props.checked ? COLOR.PRIMARY.WHITE : 'transparent')};\r\n color: ${COLOR.BRAND.REPORTING};\r\n padding: 5px;\r\n cursor: pointer;\r\n\r\n &:hover {\r\n background-color: ${(props: StyledLabelTextProps): string =>\r\n props.checked ? COLOR.PRIMARY.WHITE : transparentize('0.5', COLOR.PRIMARY.WHITE)};\r\n }\r\n`;\r\n\r\nconst StyledChevron = styled(ChevronRight)`\r\n fill: #b2bccd;\r\n height: 12px;\r\n width: 12px;\r\n opacity: ${(props: StyledLabelTextProps): number => (props.checked ? 1 : 0)};\r\n`;\r\n\r\nconst Radio = styled.input.attrs(({ dataTestId }) => ({\r\n 'data-test-id': dataTestId,\r\n}))``;\r\n\r\nconst StyledRadio = styled(Radio)`\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n opacity: 0;\r\n z-index: -1;\r\n\r\n &:focus ~ ${StyledLabelText} {\r\n outline: ${(props: StyledInputProps): string => (props.assistAccess ? '1px dotted #212121' : '0')};\r\n outline: ${(props: StyledInputProps): string =>\r\n props.assistAccess ? '5px auto -webkit-focus-ring-color' : '0'};\r\n }\r\n`;\r\n\r\nexport const StyledGroupItem = React.forwardRef(\r\n ({ children, onChange, onClick, radioValue, checked, assistAccess, dataTestId, ...props }, ref) => (\r\n \r\n \r\n \r\n \r\n {children} \r\n \r\n \r\n \r\n ),\r\n);\r\nStyledGroupItem.displayName = 'StyledGroupItem';\r\n\r\nconst ItemGroup = React.forwardRef(\r\n ({ onChange, itemData, hideFavourites, hideRecent, checked, assistAccess, ...props }, ref) => (\r\n \r\n \r\n \r\n Create a new item\r\n \r\n {!hideRecent && (\r\n \r\n Recent\r\n \r\n )}\r\n {!hideFavourites && (\r\n \r\n Favourites\r\n \r\n )}\r\n \r\n\r\n \r\n \r\n \r\n \r\n All...\r\n \r\n {itemData &&\r\n Object.keys(itemData).map((groupTitle) => {\r\n return (\r\n \r\n {itemData[groupTitle].title}\r\n \r\n {Object.keys(itemData[groupTitle].groups).map((groupItem) => {\r\n return (\r\n \r\n {itemData[groupTitle].groups[groupItem].title}\r\n \r\n );\r\n })}\r\n \r\n \r\n );\r\n })}\r\n \r\n \r\n \r\n ),\r\n);\r\nItemGroup.displayName = 'ItemGroup';\r\n\r\nexport default ItemGroup;\r\n","import * as React from 'react';\r\nimport styled from 'styled-components';\r\n\r\nimport { COLOR, FONT_SIZE, SPEED, Theme } from '../../packages/constants';\r\n\r\nexport interface GalleryIconProps {\r\n iconName: string;\r\n iconLabel: string;\r\n id: string;\r\n onChange: (e: any) => void;\r\n isSelected: boolean;\r\n assistAccess?: boolean;\r\n dataTestId?: string;\r\n imagePath?: string;\r\n onKeyDown?: (e: any) => void;\r\n themeProvider?: {};\r\n hasModernStyles?: boolean;\r\n}\r\n\r\ninterface StyledIconProps {\r\n iconName: string;\r\n imagePath?: string;\r\n assistAccess?: boolean;\r\n}\r\n\r\ninterface StyledLabelProps {\r\n dataTestId?: string;\r\n}\r\n\r\ninterface StyledInputProps {\r\n assistAccess?: boolean;\r\n ref?: any;\r\n rel?: string;\r\n autoComplete?: string;\r\n hasModernStyles?: boolean;\r\n theme?: Theme;\r\n}\r\n\r\ninterface DataTestIdProps {\r\n dataTestId: string;\r\n}\r\n\r\nconst GalleryIconWrapper = styled.div`\r\n display: flex;\r\n justify-content: center;\r\n margin-bottom: 100px;\r\n width: 33%;\r\n flex-basis: 33%;\r\n`;\r\n\r\nconst Label = styled.label.attrs(({ dataTestId }) => ({\r\n 'data-test-id': dataTestId,\r\n}))``;\r\n\r\nconst StyledLabel = styled(Label)`\r\n width: 100px;\r\n height: 100px;\r\n display: block;\r\n position: relative;\r\n cursor: pointer;\r\n`;\r\n\r\nexport const StyledIcon = styled.div`\r\n box-sizing: border-box;\r\n margin-bottom: 12px;\r\n border: 3px solid ${COLOR.MAIN.ICON_BACKGROUND};\r\n border-radius: 15px;\r\n width: 100px;\r\n height: 100px;\r\n background-image: url(${(props) => `${props.imagePath ?? ''}${props.iconName}.svg`});\r\n background-color: ${COLOR.MAIN.ICON_BACKGROUND};\r\n background-repeat: no-repeat;\r\n background-position: center;\r\n background-size: 120% auto;\r\n box-shadow: 2px 2px 4px rgba(4, 37, 91, 0.15);\r\n transition: box-shadow ${SPEED.TRANSITION};\r\n`;\r\n\r\nconst StyledLabelText = styled.div`\r\n box-sizing: border-box;\r\n position: relative;\r\n max-height: 80px;\r\n overflow: hidden;\r\n color: black;\r\n border-radius: 3px;\r\n font-size: ${FONT_SIZE.SMALL};\r\n font-family: sans-serif;\r\n line-height: ${FONT_SIZE.LARGE};\r\n padding: 5px 2px;\r\n text-align: center;\r\n background-color: ${COLOR.PRIMARY.WHITE};\r\n box-shadow: 0 0 15px rgba(4, 37, 91, 0);\r\n`;\r\n\r\nconst StyledFadeDiv = styled.div`\r\n position: absolute;\r\n top: 60px;\r\n left: 0px;\r\n right: 0px;\r\n height: 20px;\r\n background: linear-gradient(0deg, #ffffff, rgba(255, 255, 255, 0));\r\n`;\r\n\r\nconst StyledRadio = styled.input`\r\n position: absolute;\r\n opacity: 0;\r\n top: 0;\r\n left: 0;\r\n z-index: -1;\r\n\r\n &:hover {\r\n ~ ${StyledIcon} {\r\n box-shadow: 0 0 15px rgba(4, 37, 91, 0.3);\r\n }\r\n }\r\n\r\n &:focus ~ ${StyledIcon} {\r\n outline: ${(props) => (props.assistAccess ? '1px dotted #212121' : '0')};\r\n outline: ${(props) => (props.assistAccess ? '5px auto -webkit-focus-ring-color' : '0')};\r\n }\r\n\r\n &:checked {\r\n ~ ${StyledIcon} {\r\n border-color: ${(props: StyledInputProps) =>\r\n props.hasModernStyles && props.theme?.mainBorder ? props.theme.mainBorder : COLOR.BRAND.REPORTING};\r\n box-shadow: 0 0 15px rgba(4, 37, 91, 0.3);\r\n }\r\n\r\n ${(props) =>\r\n !props.hasModernStyles &&\r\n `\r\n ~ ${StyledLabelText} {\r\n color: white;\r\n background-color: ${COLOR.BRAND.REPORTING};\r\n box-shadow: 0 0 15px rgba(4, 37, 91, 0.3);\r\n }\r\n \r\n ~ ${StyledLabelText} ${StyledFadeDiv} {\r\n background: linear-gradient(0deg, ${COLOR.BRAND.REPORTING}, rgba(255, 255, 255, 0));\r\n }\r\n `}\r\n }\r\n`;\r\n\r\nexport const StyledGalleryIconWrapper = styled.div`\r\n display: flex;\r\n flex-wrap: wrap;\r\n align-content: flex-start;\r\n overflow: auto;\r\n padding: 15px 0 0 0;\r\n height: calc(100% - 95px);\r\n position: relative;\r\n`;\r\n\r\nexport const GalleryIcon = React.forwardRef(\r\n (\r\n {\r\n iconName,\r\n iconLabel,\r\n id,\r\n onChange,\r\n onKeyDown,\r\n assistAccess,\r\n isSelected,\r\n dataTestId,\r\n imagePath,\r\n hasModernStyles,\r\n },\r\n ref,\r\n ) => (\r\n \r\n \r\n \r\n \r\n \r\n {iconLabel}\r\n \r\n \r\n \r\n \r\n ),\r\n);\r\nGalleryIcon.displayName = 'GalleryIcon';\r\n","import * as React from 'react'; // eslint-disable-line\r\nimport styled from 'styled-components';\r\n\r\nimport { COLOR, FONT, FONT_SIZE, SPEED } from '../../packages/constants';\r\nimport { camelToKebab } from '../../../Scripts/Spotlight/Components/CamelToKebab';\r\nimport ItemGroup, {\r\n ItemGroupWrapper,\r\n StyledList,\r\n StyledListItem,\r\n ItemGroupTitle,\r\n HorizontalRule,\r\n StyledGroupItem,\r\n ItemGroupScroller,\r\n} from './atoms/item-group/item-group';\r\nimport { GalleryIcon, StyledGalleryIconWrapper } from '../gallery-icon/gallery-icon';\r\nimport { SearchFilter } from '../search-filter/search-filter';\r\n\r\ninterface Action {\r\n type: TType;\r\n payload?: TPayload;\r\n}\r\n\r\ninterface ItemDataItem {\r\n type: string;\r\n title: string;\r\n description: string;\r\n iconName: string;\r\n id: string;\r\n selected?: boolean;\r\n}\r\n\r\ninterface ItemDataGroup {\r\n title: string;\r\n id: string;\r\n items: ItemDataItem[];\r\n}\r\n\r\ninterface ItemDataSection {\r\n section: 'main' | 'top';\r\n title: string;\r\n groups: ItemDataGroup[];\r\n}\r\n\r\nexport type ItemData = ItemDataSection[];\r\n\r\nexport enum GalleryBrowserActionTypes {\r\n SELECTED_ITEM = 'SELECTED_ITEM',\r\n}\r\n\r\nexport interface GalleryBrowserProps {\r\n itemData: ItemDataSection[];\r\n /**\r\n * The name of the items being displayed, e.g. Chart or Page.\r\n */\r\n itemNoun: string;\r\n /**\r\n * The plural of the items being displayed, e.g. Charts or Pages.\r\n * Used for empty states / error messages etc.\r\n */\r\n itemNounPlural: string;\r\n assistAccess: boolean;\r\n hideFavourites?: boolean;\r\n hideRecent?: boolean;\r\n imagePath?: string;\r\n themeProvider?: {};\r\n galleryWidth?: string;\r\n /**\r\n * External function to dispatch actions to\r\n */\r\n actionHandler?: (action: Action) => Promise;\r\n hasModernStyles?: boolean;\r\n}\r\n\r\ninterface StyledContentProps {\r\n imagePath?: string;\r\n width?: string;\r\n}\r\n\r\nconst StyledItemGroup = styled(ItemGroup)``;\r\n\r\nconst StyledContent = styled.div`\r\n background-color: ${COLOR.PRIMARY.WHITE};\r\n height: 100%;\r\n transition: all ${SPEED.TRANSITION} ease-in;\r\n width: ${(props: StyledContentProps) => (props.width ? props.width : '660px')};\r\n`;\r\n\r\nconst StyledGalleryBrowser = styled.div`\r\n display: flex;\r\n height: 100%;\r\n width: auto;\r\n\r\n ${StyledItemGroup} {\r\n max-width: 240px;\r\n width: 240px;\r\n min-width: 240px;\r\n }\r\n`;\r\n\r\nconst StyledFilterWrapper = styled.div`\r\n background-color: ${COLOR.PRIMARY.WHITE};\r\n padding: 22px;\r\n`;\r\n\r\nconst StyledMessage = styled.p`\r\n font-family: ${FONT.OPEN_SANS};\r\n font-size: ${FONT_SIZE.MEDIUM};\r\n text-align: center;\r\n color: ${COLOR.MAIN.FORM_FIELD_DARK};\r\n padding-top: 18vh;\r\n width: 100%;\r\n`;\r\n\r\n// loop through all of the items and build itemsArray\r\nconst getAllItems = (itemData: ItemData) => {\r\n const arr = [];\r\n for (let ii = 0; ii < itemData.length; ii++) {\r\n for (let jj = 0; jj < itemData[ii].groups.length; jj++) {\r\n for (let kk = 0; kk < itemData[ii].groups[jj].items.length; kk++) {\r\n const item = itemData[ii].groups[jj].items[kk];\r\n arr.push(item);\r\n }\r\n }\r\n }\r\n return arr;\r\n};\r\n\r\nconst getSelectedItem = (itemData: ItemData) => {\r\n for (let ii = 0; ii < itemData.length; ii++) {\r\n for (let jj = 0; jj < itemData[ii].groups.length; jj++) {\r\n for (let kk = 0; kk < itemData[ii].groups[jj].items.length; kk++) {\r\n if (itemData[ii].groups[jj].items[kk].selected) {\r\n return itemData[ii].groups[jj].items[kk];\r\n }\r\n }\r\n }\r\n }\r\n return {};\r\n};\r\n\r\nexport const GalleryBrowser = React.forwardRef(\r\n (\r\n {\r\n itemData,\r\n itemNoun,\r\n itemNounPlural,\r\n hideFavourites,\r\n hideRecent,\r\n assistAccess,\r\n imagePath,\r\n galleryWidth,\r\n actionHandler,\r\n hasModernStyles,\r\n ...props\r\n },\r\n ref,\r\n ) => {\r\n const [groupItemChecked, setGroupItemChecked] = React.useState('all');\r\n const [filterValue, setFilterValue] = React.useState('');\r\n const [itemList, setItemList] = React.useState([]);\r\n const [ignoreScrollIntoView, setIgnoreScrollIntoView] = React.useState(false);\r\n // tslint:disable-next-line:no-null-keyword\r\n const filterInputRef = React.useRef(null);\r\n // tslint:disable-next-line:no-null-keyword\r\n const itemWrapperRef = React.useRef(null);\r\n\r\n // create a flat array of all the items\r\n const itemsArray = React.useMemo(() => {\r\n return getAllItems(itemData);\r\n }, [itemData]);\r\n\r\n const [filteredItems, setFilteredItems] = React.useState([]);\r\n\r\n // loop through all the items and unselect each\r\n const unselectAllItems = () => {\r\n for (let ii = 0; ii < itemData.length; ii++) {\r\n for (let jj = 0; jj < itemData[ii].groups.length; jj++) {\r\n for (let kk = 0; kk < itemData[ii].groups[jj].items.length; kk++) {\r\n const item = itemData[ii].groups[jj].items[kk];\r\n item.selected = false;\r\n }\r\n }\r\n }\r\n };\r\n\r\n // handle click when user clicks on item icon\r\n const handleGalleryIconChange = async (item: any) => {\r\n unselectAllItems();\r\n item.selected = true;\r\n setIgnoreScrollIntoView(true);\r\n if (typeof actionHandler !== 'function') {\r\n return;\r\n }\r\n // call function to dispatch the selected item state to parent\r\n await actionHandler({\r\n type: GalleryBrowserActionTypes.SELECTED_ITEM,\r\n payload: { itemId: item.id },\r\n });\r\n };\r\n\r\n // handle click when user clicks on left column group name\r\n const handleGroupItemClick = (event: any, items?: any) => {\r\n setIgnoreScrollIntoView(true);\r\n setGroupItemChecked(event.target.value);\r\n if (event.target.value !== 'all') {\r\n setFilterValue('');\r\n }\r\n setItemList(items);\r\n // @ts-ignore\r\n itemWrapperRef.current.scrollTop = 0;\r\n };\r\n\r\n // handle change when user starts typing in the search-filter\r\n const handleFilterChange = (event: any) => {\r\n setFilterValue(event.target.value.toLowerCase());\r\n setGroupItemChecked('all');\r\n };\r\n\r\n // handle click when user clicks the clear search-filter button\r\n const handleFilterClearButton = () => {\r\n setFilterValue('');\r\n // @ts-ignore\r\n filterInputRef.current.focus();\r\n };\r\n\r\n React.useEffect(() => {\r\n // search-filter the itemsArray data based on the filters input\r\n const filteredData = itemsArray.filter((item: any) => {\r\n return Object.keys(item).some(() => item.title.toLowerCase().includes(filterValue));\r\n });\r\n setFilteredItems(filteredData);\r\n }, [itemsArray, filterValue]);\r\n\r\n // scroll to selected item\r\n React.useEffect(() => {\r\n const temporaryItemSelected = getSelectedItem(itemData);\r\n const selectedItem = document.querySelector(`input[value=\"${(temporaryItemSelected as any).id}\"]`);\r\n // only scroll the view if there is a preselected item, dont scroll if user clicks an item\r\n if (selectedItem && !ignoreScrollIntoView) {\r\n setTimeout(() => {\r\n selectedItem.scrollIntoView({ behavior: 'smooth', block: 'center', inline: 'nearest' });\r\n }, 200);\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps -- run only once\r\n }, []);\r\n\r\n const topNavItems = itemData.filter((item) => item.section === 'top');\r\n const mainNavItems = itemData.filter((item) => item.section === 'main');\r\n\r\n return (\r\n \r\n \r\n \r\n {topNavItems &&\r\n Object.entries(topNavItems).map(([, section]) => {\r\n return (\r\n \r\n {Object.entries(section.groups).map(([, group]) => {\r\n return (\r\n handleGroupItemClick(e, group.items)}\r\n radioValue={group.id}\r\n key={`top-group-item-${group.id}`}\r\n checked={groupItemChecked === group.id}\r\n assistAccess={assistAccess}\r\n dataTestId={`gallery-item-group-name__${group.id}`}\r\n >\r\n {group.title}\r\n \r\n );\r\n })}\r\n \r\n );\r\n })}\r\n \r\n\r\n \r\n\r\n \r\n \r\n handleGroupItemClick(e)}\r\n radioValue={'all'}\r\n checked={groupItemChecked === 'all'}\r\n assistAccess={assistAccess}\r\n dataTestId={'gallery-item-group-name__all'}\r\n >\r\n All {itemNounPlural}...\r\n \r\n {mainNavItems &&\r\n Object.entries(mainNavItems).map(([, section]) => {\r\n return (\r\n \r\n {{section.title}}\r\n \r\n {Object.entries(section.groups).map(([, group]) => {\r\n return (\r\n handleGroupItemClick(e, group.items)}\r\n radioValue={group.id}\r\n key={`main-group-item-${group.id}`}\r\n checked={groupItemChecked === group.id}\r\n assistAccess={assistAccess}\r\n dataTestId={`gallery-item-group-name__${group.id}`}\r\n >\r\n {group.title}\r\n \r\n );\r\n })}\r\n \r\n \r\n );\r\n })}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {groupItemChecked === 'all' ||\r\n groupItemChecked === 'create-a-new-item' ||\r\n groupItemChecked === 'recent' ||\r\n groupItemChecked === 'favourites' ? (\r\n filteredItems.length >= 1 ? (\r\n filteredItems.map((item: any) => {\r\n return (\r\n handleGalleryIconChange(item)}\r\n key={item.id}\r\n assistAccess={assistAccess}\r\n isSelected={item.selected}\r\n dataTestId={`modal-add-${itemNoun}__label-${camelToKebab(item.title)}`}\r\n hasModernStyles={hasModernStyles}\r\n />\r\n );\r\n })\r\n ) : (\r\n \r\n {groupItemChecked === 'recent'\r\n ? `No ${itemNounPlural} have been used recently`\r\n : groupItemChecked === 'favourites'\r\n ? 'No favourites have been added'\r\n : `No ${itemNounPlural} found matching \"${filterValue}\"`}\r\n \r\n )\r\n ) : (\r\n itemList.map((item: any) => {\r\n return (\r\n handleGalleryIconChange(item)}\r\n key={item.id}\r\n assistAccess={assistAccess}\r\n isSelected={item.selected}\r\n dataTestId={`modal-add-${itemNoun}__label-${camelToKebab(item.title)}`}\r\n hasModernStyles={hasModernStyles}\r\n />\r\n );\r\n })\r\n )}\r\n \r\n \r\n \r\n );\r\n },\r\n);\r\nGalleryBrowser.displayName = 'GalleryBrowser';\r\n","import * as React from 'react';\r\n\r\nimport styled from 'styled-components';\r\n\r\nimport { COLOR, FONT_SIZE, FONT, SPACING } from '../../packages/constants';\r\nimport Star from '../../packages/icons/star';\r\nimport { StyledIcon as GalleryIcon } from '../gallery-icon/gallery-icon';\r\n\r\nexport interface GalleryItemInfoProps {\r\n onClick?: (e: any) => void;\r\n iconName: string;\r\n title: string;\r\n description: string;\r\n imagePath?: string;\r\n reportCodes?: string[];\r\n hideFavourites?: boolean;\r\n isFavourite?: boolean;\r\n assistAccess: boolean;\r\n themeProvider?: {};\r\n}\r\n\r\nexport interface StyledButtonProps {\r\n assistAccess: boolean;\r\n}\r\n\r\nconst StyledGalleryItemInfo = styled.div`\r\n background-color: ${COLOR.PRIMARY.WHITE};\r\n box-shadow: inset 7px 0 9px -7px rgba(0, 0, 0, 0.15);\r\n width: 100%;\r\n height: 100%;\r\n overflow: auto;\r\n`;\r\n\r\nconst StyledGalleryItemInfoInner = styled.div`\r\n box-sizing: border-box;\r\n display: flex;\r\n flex-direction: column;\r\n padding: 23px ${SPACING.X_LARGE} ${SPACING.X_LARGE};\r\n max-width: 240px;\r\n width: 100%;\r\n height: 100%;\r\n overflow: auto;\r\n`;\r\n\r\nconst StyledGalleryIcon = styled(GalleryIcon)`\r\n margin-left: 44px;\r\n`;\r\n\r\nconst StyledGalleryItemTitle = styled.h2`\r\n font-family: ${FONT.OPEN_SANS};\r\n font-size: ${FONT_SIZE.LARGE};\r\n font-weight: 500;\r\n line-height: ${FONT_SIZE.X_LARGE};\r\n text-align: center;\r\n margin-bottom: 18px;\r\n color: ${COLOR.MAIN.LABEL_TEXT};\r\n width: 100%;\r\n`;\r\n\r\nconst StyledDescription = styled.p`\r\n font-family: ${FONT.OPEN_SANS};\r\n font-size: ${FONT_SIZE.SMALL};\r\n font-weight: 400;\r\n line-height: ${FONT_SIZE.LARGE};\r\n margin-bottom: ${SPACING.X_LARGE};\r\n align-self: flex-start;\r\n color: ${COLOR.MAIN.LABEL_TEXT};\r\n width: 100%;\r\n`;\r\n\r\nconst StyledHeading = styled.h3`\r\n font-family: ${FONT.OPEN_SANS};\r\n font-size: ${FONT_SIZE.SMALL};\r\n font-weight: 700;\r\n align-self: flex-start;\r\n color: ${COLOR.MAIN.LABEL_TEXT};\r\n margin-top: ${SPACING.X_SMALL};\r\n margin-bottom: ${SPACING.X_SMALL};\r\n width: 100%;\r\n`;\r\n\r\nconst StyledList = styled.ul`\r\n display: flex;\r\n flex-wrap: wrap;\r\n font-family: ${FONT.OPEN_SANS};\r\n font-size: ${FONT_SIZE.SMALL};\r\n font-weight: 400;\r\n line-height: ${FONT_SIZE.MEDIUM};\r\n margin: 0;\r\n padding: 0;\r\n list-style-type: none;\r\n align-self: flex-start;\r\n color: ${COLOR.MAIN.LABEL_TEXT};\r\n width: 100%;\r\n`;\r\n\r\nconst StyledStar = styled(Star)`\r\n width: 20px;\r\n margin-right: ${SPACING.MEDIUM};\r\n`;\r\n\r\nconst StyledFavouriteButton = styled.button`\r\n font-family: ${FONT.OPEN_SANS};\r\n font-size: ${FONT_SIZE.SMALL};\r\n font-weight: 400;\r\n line-height: ${FONT_SIZE.MEDIUM};\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n align-self: flex-start;\r\n background-color: ${COLOR.PRIMARY.WHITE};\r\n color: ${COLOR.MAIN.DARK_GREY};\r\n border: 0;\r\n padding: ${SPACING.SMALL} ${SPACING.SMALL} ${SPACING.SMALL} 0;\r\n margin-top: auto;\r\n cursor: pointer;\r\n\r\n &:focus {\r\n outline: ${(props: StyledButtonProps): string => (props.assistAccess ? '1px dotted #212121' : '0')};\r\n outline: ${(props: StyledButtonProps): string =>\r\n props.assistAccess ? '5px auto -webkit-focus-ring-color' : '0'};\r\n }\r\n\r\n &:hover ${StyledStar} {\r\n fill: ${COLOR.PRIMARY.YELLOW};\r\n }\r\n`;\r\n\r\nconst StyledListItem = styled.li`\r\n font-family: ${FONT.OPEN_SANS};\r\n font-size: ${FONT_SIZE.X_SMALL};\r\n font-weight: 400;\r\n line-height: ${FONT_SIZE.LARGE};\r\n align-self: flex-start;\r\n color: ${COLOR.MAIN.LABEL_TEXT};\r\n margin-right: ${SPACING.X_SMALL};\r\n\r\n &::after {\r\n content: ',';\r\n }\r\n\r\n &:last-child {\r\n margin-right: 0;\r\n\r\n &::after {\r\n content: '';\r\n }\r\n }\r\n`;\r\n\r\nexport const GalleryItemInfo = React.forwardRef(\r\n (\r\n {\r\n iconName,\r\n title,\r\n description,\r\n reportCodes,\r\n isFavourite = false,\r\n hideFavourites,\r\n assistAccess,\r\n imagePath,\r\n ...props\r\n },\r\n ref,\r\n ) => {\r\n const [favourite, setFavourite] = React.useState(isFavourite);\r\n const handleFavourite = () => {\r\n setFavourite(!favourite);\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n {title}\r\n {description}\r\n {reportCodes && reportCodes.length > 0 && (\r\n <>\r\n Report codes\r\n \r\n {reportCodes.map((code: string, index: number) => (\r\n {code}\r\n ))}\r\n \r\n \r\n )}\r\n {!hideFavourites && (\r\n \r\n \r\n {favourite ? 'Remove from' : 'Add to'} favourites\r\n \r\n )}\r\n \r\n \r\n );\r\n },\r\n);\r\nGalleryItemInfo.displayName = 'GalleryItemInfo';\r\n","import * as React from 'react';\r\nimport { useEffect } from 'react';\r\n\r\nimport styled from 'styled-components';\r\n\r\nimport { THEME } from '../../packages/constants';\r\nimport { StyledModal, StyledModalTitleBar, StyledModalContent, StyledButton, StyledButtonGroup } from '../modal/modal';\r\nimport type { ModalProps } from '../modal/modal';\r\n\r\nconst StyledModalConfirm = styled(StyledModal)`\r\n width: ${(props: ModalProps) => (props.width ? props.width : '500px')};\r\n height: ${(props: ModalProps) => (props.height ? props.height : 'auto')};\r\n`;\r\n\r\nexport const ModalConfirm = React.forwardRef(\r\n (\r\n {\r\n children,\r\n buttons,\r\n title,\r\n cancelText,\r\n primaryText,\r\n handleCancelButton,\r\n handlePrimaryButton,\r\n width,\r\n height,\r\n focusOnButton,\r\n ...props\r\n },\r\n ref,\r\n ) => {\r\n const cancelButtonRef = React.useRef(null);\r\n const primaryButtonRef = React.useRef(null);\r\n\r\n useEffect(() => {\r\n if (focusOnButton === 'cancel' && cancelButtonRef.current) cancelButtonRef.current.focus();\r\n if (focusOnButton === 'primary' && primaryButtonRef.current) primaryButtonRef.current.focus();\r\n });\r\n\r\n return (\r\n \r\n {title}\r\n {children}\r\n {buttons ? (\r\n buttons\r\n ) : (\r\n \r\n \r\n {primaryText || 'Ok'}\r\n \r\n \r\n {cancelText || 'Cancel'}\r\n \r\n \r\n )}\r\n \r\n );\r\n },\r\n);\r\nModalConfirm.displayName = 'ModalConfirm';\r\n","import * as React from 'react'; // eslint-disable-line\r\nimport styled from 'styled-components';\r\n\r\nimport { COLOR, FONT_SIZE, SPACING, SPACING_SCALE, SPEED } from '../../packages/constants';\r\n\r\nexport interface BreadcrumbsProps {\r\n children: React.ReactNode;\r\n}\r\n\r\ninterface BreadcrumbsLinkProps {\r\n children: React.ReactNode;\r\n dataId: string;\r\n href: string;\r\n target?: '_blank' | '_self' | '_parent' | '_top';\r\n theme?: any;\r\n}\r\n\r\nconst StyledBreadcrumbs = styled.div`\r\n margin-bottom: ${SPACING_SCALE * 8}px;\r\n padding-top: ${SPACING_SCALE * 3}px;\r\n`;\r\n\r\nconst StyledBreadcrumbsList = styled.ol`\r\n display: flex;\r\n flex-wrap: wrap;\r\n`;\r\n\r\nconst StyledBreadcrumbsListItem = styled.li`\r\n display: flex;\r\n margin-right: ${SPACING.MEDIUM};\r\n padding-right: ${SPACING.SMALL};\r\n position: relative;\r\n font-size: ${FONT_SIZE.SMALL};\r\n color: ${COLOR.MAIN.DARK_GREY};\r\n\r\n &::before,\r\n &::after {\r\n left: 100%;\r\n top: 50%;\r\n border: solid transparent;\r\n content: '';\r\n height: 0;\r\n width: 0;\r\n position: absolute;\r\n pointer-events: none;\r\n }\r\n\r\n &::after {\r\n border-color: transparent;\r\n border-left-color: ${COLOR.PRIMARY.WHITE};\r\n border-width: 5px;\r\n margin-top: -5px;\r\n }\r\n\r\n &::before {\r\n border-color: transparent;\r\n border-left-color: ${COLOR.MAIN.FORM_FIELD_DARK};\r\n border-width: 6px;\r\n margin-top: -6px;\r\n }\r\n\r\n &:last-child {\r\n &::before,\r\n &::after {\r\n display: none;\r\n }\r\n }\r\n`;\r\n\r\nconst StyledBreadcrumbsLink = styled.a.attrs(({ dataId }) => ({\r\n 'data-test-id': dataId,\r\n}))`\r\n transition: border-bottom-color ${SPEED.TRANSITION};\r\n color: ${(props) => (props.theme ? props.theme.main : COLOR.BRAND.REPORTING) || COLOR.BRAND.REPORTING};\r\n text-decoration: none;\r\n padding-bottom: 1px;\r\n border-bottom: 1px solid transparent;\r\n\r\n &:hover {\r\n border-bottom: 1px solid ${(props) => (props.theme ? props.theme.main : COLOR.BRAND.REPORTING)};\r\n }\r\n`;\r\n\r\nexport const Breadcrumbs = ({ children, ...props }: BreadcrumbsProps) => (\r\n \r\n \r\n {\r\n //\r\n // @ts-ignore\r\n children.length && children.map ? (\r\n // @ts-ignore\r\n children.map(\r\n (child: any, i: number) =>\r\n child &&\r\n (child.length || child.props) && (\r\n {child}\r\n ),\r\n )\r\n ) : (\r\n {children}\r\n )\r\n }\r\n \r\n \r\n);\r\n\r\nexport const BreadcrumbsLink = ({ children, ...props }: BreadcrumbsLinkProps) => (\r\n {children}\r\n);\r\n","import * as React from 'react'; // eslint-disable-line\r\nimport styled from 'styled-components';\r\nimport { ANIMATION, COLOR, FONT_SIZE, SPACING_SCALE, SPEED } from '../../packages/constants';\r\n\r\nexport interface StepProcessProps {\r\n /**\r\n * Step data\r\n */\r\n steps: any;\r\n /**\r\n * Index of current step\r\n */\r\n currentStep: number;\r\n}\r\n\r\ninterface StepItemsProps {\r\n childLength: number;\r\n active: boolean;\r\n complete: boolean;\r\n}\r\n\r\nconst roundelSize = 22;\r\n\r\nconst StyledStepProcess = styled.ol`\r\n margin: 0 auto ${SPACING_SCALE * 6}px;\r\n width: 100%;\r\n min-height: 64px;\r\n overflow: hidden;\r\n`;\r\n\r\nconst StyledLabel = styled.p`\r\n line-height: ${FONT_SIZE.MEDIUM};\r\n display: inline-block;\r\n max-width: 50%;\r\n`;\r\n\r\nconst StyledStepItem = styled.li`\r\n list-style-type: none;\r\n width: ${(props: StepItemsProps): string => `${100 / props.childLength}%`};\r\n float: left;\r\n font-size: ${FONT_SIZE.SMALL};\r\n position: relative;\r\n text-align: center;\r\n text-transform: uppercase;\r\n color: ${(props) =>\r\n props.active || props.complete ? props.theme.main || COLOR.BRAND.REPORTING : COLOR.MAIN.FORM_FIELD_DARK};\r\n box-sizing: border-box;\r\n\r\n &::before {\r\n width: ${roundelSize}px;\r\n height: ${roundelSize}px;\r\n content: '';\r\n counter-increment: step;\r\n line-height: ${roundelSize}px;\r\n border-width: 2px;\r\n border-style: solid;\r\n border-color: ${(props) =>\r\n props.active || props.complete ? props.theme.main || COLOR.BRAND.REPORTING : COLOR.MAIN.FORM_FIELD_DARK};\r\n display: block;\r\n text-align: center;\r\n margin: 0 auto 10px;\r\n border-radius: 50%;\r\n background-color: ${(props) =>\r\n props.complete ? props.theme.main || COLOR.BRAND.REPORTING : COLOR.PRIMARY.WHITE};\r\n box-sizing: border-box;\r\n animation: ${SPEED.TRANSITION} ${ANIMATION.FADE_IN} linear forwards;\r\n position: relative;\r\n z-index: 1;\r\n }\r\n\r\n &::after {\r\n background-color: ${(props) => (props.complete ? props.theme.main || COLOR.BRAND.REPORTING : 'transparent')};\r\n width: 100%;\r\n height: 2px;\r\n content: '';\r\n position: absolute;\r\n border-top: ${(props: StepItemsProps): string =>\r\n props.complete ? '2px solid transparent' : `2px dashed ${COLOR.MAIN.FORM_FIELD_DARK}`};\r\n top: ${roundelSize / 2 - 1}px;\r\n right: -50%;\r\n z-index: 0;\r\n box-sizing: border-box;\r\n }\r\n\r\n &:last-child {\r\n &::after {\r\n content: none;\r\n }\r\n }\r\n\r\n ${StyledLabel} {\r\n animation: ${SPEED.TRANSITION} ${ANIMATION.FADE_IN} linear forwards;\r\n }\r\n`;\r\n\r\nexport const StepProcess = ({ steps, currentStep, ...props }: StepProcessProps) => (\r\n \r\n {steps.map(\r\n (step: any, i: number) =>\r\n step &&\r\n !step.skipStep && (\r\n !item.skipStep).length}\r\n key={step.key || i}\r\n >\r\n {step.title}\r\n \r\n ),\r\n )}\r\n \r\n);\r\n","import * as React from 'react'; // eslint-disable-line\r\nimport styled from 'styled-components';\r\n\r\nimport { COLOR, FONT_SIZE, LINE_HEIGHT, SPEED, TEXT_RELATIVE_MARGIN } from '../../packages/constants';\r\n\r\nexport enum Justify {\r\n Left = 'left',\r\n Right = 'right',\r\n Center = 'center',\r\n}\r\n\r\nexport interface TextProps extends React.HTMLAttributes {\r\n children: React.ReactNode;\r\n heading?: number;\r\n /**\r\n * Pass element type e.g. 'h1', 'p'\r\n * (Note: Font sizes for heading levels haven't been defined in constants yet)\r\n */\r\n as?: any;\r\n /**\r\n * Colour of text\r\n */\r\n color?: string;\r\n /**\r\n * Text justification\r\n */\r\n justify?: Justify;\r\n /**\r\n * Font-size with unit\r\n */\r\n fontSize?: string;\r\n /**\r\n * Line-height\r\n */\r\n lineHeight?: string;\r\n /**\r\n * Margin bottom with unit\r\n */\r\n marginBottom?: string;\r\n /**\r\n * Indent 28px (SPACING.XX_LARGE)\r\n */\r\n indent?: string;\r\n}\r\n\r\n// TODO: heading styles\r\nconst StyledText = styled.p`\r\n color: ${(props: TextProps) => (props.color ? props.color : COLOR.PRIMARY.BLACK)};\r\n text-align: ${(props: TextProps) =>\r\n props.justify === 'left'\r\n ? 'left'\r\n : props.justify === 'center'\r\n ? 'center'\r\n : props.justify === 'right'\r\n ? 'right'\r\n : 'left'};\r\n font-size: ${(props: TextProps) => props.fontSize || FONT_SIZE.MEDIUM};\r\n line-height: ${(props: TextProps) => props.lineHeight || LINE_HEIGHT.LARGE};\r\n margin-bottom: ${(props: TextProps) => props.marginBottom || TEXT_RELATIVE_MARGIN.MEDIUM};\r\n padding: 0 0 0 ${(props: TextProps) => (props.indent ? props.indent : '0')};\r\n`;\r\n\r\nexport const TextLink = styled.a`\r\n transition: border-bottom-color ${SPEED.TRANSITION};\r\n color: ${COLOR.BRAND.REPORTING};\r\n text-decoration: none;\r\n padding-bottom: 1px;\r\n border-bottom: 1px solid transparent;\r\n\r\n &:hover {\r\n border-bottom: 1px solid ${COLOR.BRAND.REPORTING};\r\n }\r\n`;\r\n\r\nexport const Text = ({ children, indent, heading, fontSize, ...props }: TextProps) => (\r\n \r\n {children}\r\n \r\n);\r\n","import * as React from 'react';\r\n\r\nimport { lighten } from 'polished';\r\nimport styled from 'styled-components';\r\n\r\nimport { COLOR, SPACING } from '../../packages/constants';\r\n\r\nexport interface HelperModalProps {\r\n children: React.ReactNode;\r\n dataId: string;\r\n modalContent: React.ReactNode;\r\n position?: 'top' | 'bottom' | undefined;\r\n isOpen?: boolean;\r\n inline?: boolean;\r\n width?: number;\r\n}\r\n\r\ninterface ModalContentProps {\r\n position?: 'top' | 'bottom' | undefined;\r\n width?: number;\r\n}\r\n\r\ninterface StyledHelperModal {\r\n inline?: boolean;\r\n}\r\n\r\nconst StyledHelperModal = styled.div`\r\n display: ${(props: StyledHelperModal): string => (props.inline ? 'inline' : '')};\r\n position: relative;\r\n width: 15px;\r\n height: 15px;\r\n`;\r\n\r\nconst ModalContent = styled.div`\r\n position: absolute;\r\n top: ${(props) => (props.position === 'top' ? 'auto' : '32px')};\r\n bottom: ${(props) => (props.position === 'top' ? '32px' : 'auto')};\r\n left: calc(50% - ((${(props) => `${props.width}px`} / 2) + ${SPACING.LARGE}));\r\n width: ${(props) => `${props.width}px`};\r\n padding: ${SPACING.LARGE};\r\n border: 1px solid ${COLOR.PRIMARY.BLACK};\r\n background-color: #fff;\r\n z-index: 99999;\r\n white-space: normal;\r\n\r\n &::before {\r\n border-top: 1px solid black;\r\n border-right: 1px solid black;\r\n background-color: white;\r\n width: 20px;\r\n height: 20px;\r\n content: '';\r\n position: absolute;\r\n top: ${(props: ModalContentProps): string => (props.position === 'top' ? 'auto' : '-11px')};\r\n bottom: ${(props: ModalContentProps): string => (props.position === 'top' ? '-11px' : 'auto')};\r\n left: calc(50% - 10px);\r\n transform: rotate(${(props: ModalContentProps): string => (props.position === 'top' ? '135deg' : '-45deg')});\r\n }\r\n`;\r\n\r\nconst StyledButton = styled.button`\r\n border: 0;\r\n background-color: transparent;\r\n padding: 0;\r\n margin: 0;\r\n vertical-align: middle;\r\n`;\r\n\r\nconst StyledQuestionMark = styled.i`\r\n background: ${COLOR.MAIN.PRIMARY};\r\n color: ${COLOR.PRIMARY.WHITE};\r\n cursor: pointer;\r\n font-weight: 700;\r\n font-style: normal;\r\n border-radius: 10px;\r\n text-align: center;\r\n line-height: 15px;\r\n display: inline-block;\r\n transform: translateY(-2px);\r\n width: 15px;\r\n height: 15px;\r\n vertical-align: middle;\r\n\r\n &:hover {\r\n background: ${lighten(0.2, COLOR.MAIN.PRIMARY)};\r\n }\r\n`;\r\n\r\nexport const QuestionMark = () => ?;\r\n\r\nexport const HelperModal = ({\r\n children,\r\n position = 'top',\r\n modalContent,\r\n inline,\r\n width = 420,\r\n dataId,\r\n isOpen = false,\r\n ...props\r\n}: HelperModalProps) => {\r\n const elementRef = React.useRef(null);\r\n const [showContent, setShowContent] = React.useState(isOpen);\r\n const toggleContent = () => setShowContent(!showContent);\r\n\r\n React.useEffect(() => {\r\n function handleKeyListener(e: any) {\r\n if ((showContent && e.key === 'Escape') || (showContent && e.key === 'Tab')) {\r\n setShowContent(false);\r\n }\r\n }\r\n\r\n function handleClick(e: any) {\r\n if (showContent && elementRef.current && !elementRef.current.contains(e.target)) {\r\n setShowContent(false);\r\n }\r\n }\r\n\r\n document.addEventListener('keydown', handleKeyListener);\r\n document.addEventListener('click', handleClick);\r\n\r\n return function cleanupKeyListener() {\r\n document.removeEventListener('keydown', handleKeyListener);\r\n document.removeEventListener('click', handleClick);\r\n };\r\n }, [showContent, setShowContent]);\r\n\r\n return (\r\n \r\n \r\n {children}\r\n \r\n {showContent && (\r\n <>\r\n \r\n {modalContent}\r\n \r\n \r\n )}\r\n \r\n );\r\n};\r\n","import * as React from 'react';\r\n\r\nimport { darken, transparentize } from 'polished';\r\nimport styled from 'styled-components';\r\n\r\nimport { COLOR, FONT_SIZE, RADIUS, SPACING } from '../../packages/constants';\r\nimport { HelperModal, QuestionMark } from '../helper-modal';\r\n\r\nexport interface TextInputProps {\r\n dataId: string;\r\n label: string;\r\n id: string;\r\n name: string;\r\n autofocus?: boolean;\r\n defaultValue?: string;\r\n disabled?: boolean;\r\n invalid?: boolean;\r\n hasHelper?: boolean;\r\n helperContent?: React.ReactNode;\r\n numeralsOnly?: boolean;\r\n placeholder?: string;\r\n validationMessage?: string;\r\n value?: string;\r\n onChange?: (e: any) => void;\r\n onBlur?: (e: any) => void;\r\n maxLength?: number;\r\n minLength?: number;\r\n thinLabel?: boolean;\r\n className?: string;\r\n}\r\n\r\ninterface StyledTextLabelProps {\r\n disabled?: boolean;\r\n invalid?: boolean;\r\n thinLabel?: boolean;\r\n}\r\n\r\ninterface StyledValidationMessageProps {\r\n invalid?: boolean;\r\n}\r\n\r\nconst wrapperStyles = `\r\n display: flex;\r\n flex-direction: column;\r\n`;\r\n\r\nconst Wrapper = styled.label`\r\n ${wrapperStyles}\r\n`;\r\n\r\nconst WrapperHasHelper = styled.div`\r\n ${wrapperStyles}\r\n`;\r\n\r\nconst StyledLabelWrapper = styled.div`\r\n display: inline-flex;\r\n`;\r\n\r\nconst StyledTextLabel = styled.span`\r\n display: block;\r\n padding-bottom: ${SPACING.XX_SMALL};\r\n font-size: ${FONT_SIZE.SMALL};\r\n line-height: ${FONT_SIZE.MEDIUM};\r\n font-weight: ${(props: StyledTextLabelProps): string => (props.thinLabel ? '400' : '700')};\r\n color: ${(props: StyledTextLabelProps): string => (props.invalid ? COLOR.PRIMARY.RED : COLOR.MAIN.LABEL_TEXT)};\r\n opacity: ${(props: StyledTextLabelProps): string => (props.disabled ? '0.7' : '1')};\r\n`;\r\n\r\nconst StyledLabelHasHelper = styled.label`\r\n display: inline-block;\r\n margin-right: ${SPACING.X_SMALL};\r\n padding-bottom: ${SPACING.XX_SMALL};\r\n font-size: ${FONT_SIZE.SMALL};\r\n line-height: ${FONT_SIZE.MEDIUM};\r\n font-weight: ${(props: StyledTextLabelProps): string => (props.thinLabel ? '400' : '700')};\r\n color: ${(props: StyledTextLabelProps): string => (props.invalid ? COLOR.PRIMARY.RED : COLOR.MAIN.LABEL_TEXT)};\r\n opacity: ${(props: StyledTextLabelProps): string => (props.disabled ? '0.7' : '1')};\r\n`;\r\n\r\nconst StyledInput = styled.input`\r\n background-color: ${(props: StyledTextLabelProps): string =>\r\n props.disabled ? darken('0.1', COLOR.PRIMARY.WHITE) : COLOR.PRIMARY.WHITE};\r\n color: ${(props: StyledTextLabelProps): string =>\r\n props.disabled ? transparentize('0.5', COLOR.PRIMARY.BLACK) : COLOR.PRIMARY.BLACK};\r\n font-size: ${FONT_SIZE.SMALL};\r\n line-height: ${FONT_SIZE.MEDIUM};\r\n padding: ${SPACING.SMALL};\r\n border-width: 1px;\r\n border-style: solid;\r\n border-color: ${(props: StyledTextLabelProps): string =>\r\n props.invalid ? COLOR.PRIMARY.RED : COLOR.MAIN.FORM_FIELD};\r\n border-radius: ${RADIUS.DEFAULT};\r\n\r\n &::placeholder {\r\n opacity: 0.65;\r\n }\r\n`;\r\n\r\nconst StyledValidationMessage = styled.div`\r\n font-size: ${FONT_SIZE.X_SMALL};\r\n line-height: ${FONT_SIZE.SMALL};\r\n color: ${(props: StyledValidationMessageProps): string =>\r\n props.invalid ? COLOR.PRIMARY.RED : COLOR.PRIMARY.BLACK};\r\n padding-top: ${SPACING.SMALL};\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n`;\r\n\r\nexport const TextInput = React.forwardRef(\r\n (\r\n {\r\n dataId,\r\n label,\r\n id,\r\n hasHelper,\r\n helperContent,\r\n placeholder,\r\n name,\r\n autofocus,\r\n defaultValue,\r\n disabled,\r\n invalid,\r\n validationMessage,\r\n onChange,\r\n onBlur,\r\n maxLength,\r\n minLength,\r\n thinLabel,\r\n value,\r\n className,\r\n ...props\r\n },\r\n ref,\r\n ) => {\r\n return hasHelper ? (\r\n \r\n \r\n \r\n {label}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {validationMessage && (\r\n {validationMessage}\r\n )}\r\n \r\n ) : (\r\n \r\n \r\n {label}\r\n \r\n \r\n {validationMessage && (\r\n {validationMessage}\r\n )}\r\n \r\n );\r\n },\r\n);\r\nTextInput.displayName = 'TextInput';\r\n","import * as React from 'react';\r\n\r\nimport { darken, transparentize } from 'polished';\r\nimport styled from 'styled-components';\r\n\r\nimport { COLOR, FONT_SIZE, RADIUS, SPACING } from '../../packages/constants';\r\nimport { HelperModal, QuestionMark } from '../helper-modal';\r\n\r\nexport interface TextFieldInlineProps {\r\n dataId: string;\r\n label: string;\r\n id: string;\r\n name: string;\r\n autofocus?: boolean;\r\n defaultValue?: string;\r\n disabled?: boolean;\r\n invalid?: boolean;\r\n hasHelper?: boolean;\r\n helperContent?: React.ReactNode;\r\n placeholder?: string;\r\n validationMessage?: string;\r\n value?: string;\r\n onChange?: (e: any) => void;\r\n onBlur?: (e: any) => void;\r\n maxLength?: number;\r\n minLength?: number;\r\n thinLabel?: boolean;\r\n className?: string;\r\n labelWidth?: string;\r\n labelAlignment?: 'start' | 'center' | 'end' | undefined;\r\n}\r\n\r\ninterface StyledTextLabelProps {\r\n disabled?: boolean;\r\n invalid?: boolean;\r\n thinLabel?: boolean;\r\n}\r\n\r\ninterface WrapperProps {\r\n labelWidth?: string;\r\n}\r\n\r\ninterface StyledLabelWrapperProps {\r\n labelAlignment: 'start' | 'center' | 'end';\r\n}\r\n\r\ninterface StyledValidationMessageProps {\r\n invalid?: boolean;\r\n}\r\n\r\nconst Wrapper = styled.div`\r\n display: grid;\r\n grid-template-columns:\r\n ${(props: WrapperProps): string => (props.labelWidth ? props.labelWidth : 'auto')}\r\n minmax(0, 1fr);\r\n`;\r\n\r\nconst StyledLabelWrapper = styled.div`\r\n display: flex;\r\n justify-content: center;\r\n align-items: ${(props: StyledLabelWrapperProps): string => props.labelAlignment};\r\n flex-direction: column;\r\n padding-right: ${SPACING.LARGE};\r\n`;\r\n\r\nconst StyledTextLabel = styled.label`\r\n margin-right: ${SPACING.X_SMALL};\r\n font-size: ${FONT_SIZE.SMALL};\r\n line-height: ${FONT_SIZE.LARGE};\r\n max-width: 100%;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n font-weight: ${(props: StyledTextLabelProps): string => (props.thinLabel ? '400' : '700')};\r\n color: ${(props: StyledTextLabelProps): string => (props.invalid ? COLOR.PRIMARY.RED : COLOR.MAIN.LABEL_TEXT)};\r\n opacity: ${(props: StyledTextLabelProps): string => (props.disabled ? '0.7' : '1')};\r\n`;\r\n\r\nconst StyledLabelHasHelper = styled.div`\r\n display: inline-flex;\r\n max-width: 100%;\r\n`;\r\n\r\nconst StyledInput = styled.input`\r\n background-color: ${(props: StyledTextLabelProps): string =>\r\n props.disabled ? darken('0.1', COLOR.PRIMARY.WHITE) : COLOR.PRIMARY.WHITE};\r\n color: ${(props: StyledTextLabelProps): string =>\r\n props.disabled ? transparentize('0.5', COLOR.PRIMARY.BLACK) : COLOR.PRIMARY.BLACK};\r\n font-size: ${FONT_SIZE.SMALL};\r\n line-height: ${FONT_SIZE.MEDIUM};\r\n padding: ${SPACING.SMALL};\r\n border-width: 1px;\r\n border-style: solid;\r\n border-color: ${(props: StyledTextLabelProps): string =>\r\n props.invalid ? COLOR.PRIMARY.RED : COLOR.MAIN.FORM_FIELD};\r\n border-radius: ${RADIUS.DEFAULT};\r\n\r\n &::placeholder {\r\n opacity: 0.65;\r\n }\r\n`;\r\n\r\nconst StyledValidationMessage = styled.div`\r\n font-size: ${FONT_SIZE.X_SMALL};\r\n line-height: ${FONT_SIZE.SMALL};\r\n color: ${(props: StyledValidationMessageProps): string =>\r\n props.invalid ? COLOR.PRIMARY.RED : COLOR.PRIMARY.BLACK};\r\n padding-top: ${SPACING.SMALL};\r\n grid-area: 2 / 2;\r\n`;\r\n\r\nexport const TextFieldInline = React.forwardRef(\r\n (\r\n {\r\n dataId,\r\n label,\r\n id,\r\n hasHelper,\r\n helperContent,\r\n placeholder,\r\n name,\r\n autofocus,\r\n defaultValue,\r\n disabled,\r\n invalid,\r\n onChange,\r\n onBlur,\r\n maxLength,\r\n minLength,\r\n thinLabel,\r\n value,\r\n className,\r\n validationMessage,\r\n labelWidth,\r\n labelAlignment = 'start',\r\n ...props\r\n },\r\n ref,\r\n ) => {\r\n return (\r\n \r\n \r\n {hasHelper ? (\r\n \r\n \r\n {label}\r\n \r\n \r\n \r\n \r\n \r\n ) : (\r\n \r\n {label}\r\n \r\n )}\r\n \r\n \r\n {validationMessage && (\r\n {validationMessage}\r\n )}\r\n \r\n );\r\n },\r\n);\r\n\r\nTextFieldInline.displayName = 'TextFieldInline';\r\n","import * as React from 'react'; // eslint-disable-line\r\nimport styled from 'styled-components';\r\n\r\nimport { COLOR, FONT_SIZE, SPACING } from '../../packages/constants';\r\nimport { HelperModal, QuestionMark } from '../helper-modal';\r\n\r\nexport interface RadioInputProps {\r\n dataId: string;\r\n id: string;\r\n label: string;\r\n name: string;\r\n value: string;\r\n autofocus?: boolean;\r\n checked?: boolean;\r\n disabled?: boolean;\r\n hasHelper?: boolean;\r\n helperContent?: React.ReactNode;\r\n inline?: boolean;\r\n invalid?: boolean;\r\n onChange?: (e: any) => void;\r\n thinLabel?: boolean;\r\n validationMessage?: string;\r\n}\r\n\r\ninterface StyledTextLabelProps {\r\n disabled?: boolean;\r\n invalid?: boolean;\r\n inline?: boolean;\r\n thinLabel?: boolean;\r\n}\r\n\r\ninterface WrapperLabelProps {\r\n inline?: boolean;\r\n}\r\n\r\nconst Wrapper = styled.label`\r\n display: inline-flex;\r\n flex-direction: ${(props: WrapperLabelProps): string => (props.inline ? 'row-reverse' : 'column')};\r\n align-items: ${(props: WrapperLabelProps): string => (props.inline ? 'center' : '')};\r\n justify-content: ${(props: WrapperLabelProps): string => (props.inline ? 'flex-end' : '')};\r\n`;\r\n\r\nconst WrapperHasHelper = styled.div`\r\n display: inline-flex;\r\n flex-direction: ${(props: WrapperLabelProps): string => (props.inline ? 'row-reverse' : 'column')};\r\n align-items: ${(props: WrapperLabelProps): string => (props.inline ? 'center' : '')};\r\n justify-content: ${(props: WrapperLabelProps): string => (props.inline ? 'flex-end' : '')};\r\n`;\r\n\r\nconst StyledLabelWrapper = styled.div`\r\n display: inline-flex;\r\n`;\r\n\r\nconst StyledTextLabel = styled.span`\r\n display: block;\r\n margin-left: ${(props: StyledTextLabelProps): string => (props.inline ? SPACING.X_SMALL : '0')};\r\n font-size: ${FONT_SIZE.SMALL};\r\n line-height: ${FONT_SIZE.MEDIUM};\r\n font-weight: ${(props: StyledTextLabelProps): string => (props.thinLabel ? '400' : '700')};\r\n color: ${(props: StyledTextLabelProps): string => (props.invalid ? COLOR.PRIMARY.RED : COLOR.MAIN.LABEL_TEXT)};\r\n opacity: ${(props: StyledTextLabelProps): string => (props.disabled ? '0.7' : '1')};\r\n`;\r\n\r\nconst StyledLabelHasHelper = styled.label`\r\n display: inline-block;\r\n margin-right: ${SPACING.X_SMALL};\r\n margin-left: ${(props: StyledTextLabelProps): string => (props.inline ? SPACING.X_SMALL : '0')};\r\n font-size: ${FONT_SIZE.SMALL};\r\n line-height: ${FONT_SIZE.MEDIUM};\r\n font-weight: ${(props: StyledTextLabelProps): string => (props.thinLabel ? '400' : '700')};\r\n color: ${(props: StyledTextLabelProps): string => (props.invalid ? COLOR.PRIMARY.RED : COLOR.MAIN.LABEL_TEXT)};\r\n opacity: ${(props: StyledTextLabelProps): string => (props.disabled ? '0.7' : '1')};\r\n`;\r\n\r\nconst StyledRadio = styled.input``;\r\n\r\nexport const RadioInput = React.forwardRef(\r\n (\r\n {\r\n onChange,\r\n dataId,\r\n label,\r\n id,\r\n hasHelper,\r\n helperContent,\r\n name,\r\n value,\r\n autofocus,\r\n inline,\r\n thinLabel,\r\n checked,\r\n disabled,\r\n invalid,\r\n ...props\r\n },\r\n ref,\r\n ) => {\r\n return hasHelper ? (\r\n \r\n \r\n \r\n {label}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ) : (\r\n \r\n \r\n {label}\r\n \r\n \r\n \r\n );\r\n },\r\n);\r\nRadioInput.displayName = 'RadioInput';\r\n","import * as React from 'react';\r\n\r\nimport styled from 'styled-components';\r\n\r\nimport { COLOR, FONT_SIZE, SPACING } from '../../packages/constants';\r\nimport { HelperModal, HelperModalProps, QuestionMark } from '../helper-modal';\r\n\r\nexport interface CheckboxInputProps {\r\n /**\r\n * Data-test-id\r\n */\r\n dataId: string;\r\n /**\r\n * Field label\r\n */\r\n label: string;\r\n id: string;\r\n name: string;\r\n /**\r\n * Sets the input to focus on page load\r\n */\r\n autofocus?: boolean;\r\n checked?: boolean;\r\n disabled?: boolean;\r\n /**\r\n * Shows the (?) icon\r\n */\r\n hasHelper?: boolean;\r\n /**\r\n * Content for the helper icon\r\n */\r\n helperContent?: React.ReactNode;\r\n helperProps?: HelperModalProps;\r\n inline?: boolean;\r\n invalid?: boolean;\r\n onChange?: (e: any) => void;\r\n /**\r\n * Makes the label thin\r\n */\r\n thinLabel?: boolean;\r\n className?: string;\r\n labelMaxWidth?: string;\r\n labelOverflow?: string;\r\n labelTextOverflow?: string;\r\n}\r\n\r\ninterface StyledTextLabelProps {\r\n disabled?: boolean;\r\n invalid?: boolean;\r\n inline?: boolean;\r\n thinLabel?: boolean;\r\n labelMaxWidth?: string;\r\n labelOverflow?: string;\r\n labelTextOverflow?: string;\r\n}\r\n\r\ninterface WrapperLabelProps {\r\n inline?: boolean;\r\n}\r\n\r\nconst Wrapper = styled.label`\r\n &&& {\r\n display: inline-flex;\r\n flex-direction: ${(props: WrapperLabelProps): string => (props.inline ? 'row-reverse' : 'column')};\r\n align-items: ${(props: WrapperLabelProps): string => (props.inline ? 'center' : '')};\r\n justify-content: ${(props: WrapperLabelProps): string => (props.inline ? 'flex-end' : '')};\r\n }\r\n`;\r\n\r\nconst WrapperHasHelper = styled.div`\r\n display: inline-flex;\r\n flex-direction: ${(props: WrapperLabelProps): string => (props.inline ? 'row-reverse' : 'column')};\r\n align-items: ${(props: WrapperLabelProps): string => (props.inline ? 'center' : '')};\r\n justify-content: ${(props: WrapperLabelProps): string => (props.inline ? 'flex-end' : '')};\r\n`;\r\n\r\nconst StyledLabelWrapper = styled.div`\r\n display: inline-flex;\r\n`;\r\n\r\nconst StyledTextLabel = styled.span`\r\n display: block;\r\n margin-left: ${(props: StyledTextLabelProps): string => (props.inline ? SPACING.X_SMALL : '0')};\r\n font-size: ${FONT_SIZE.SMALL};\r\n line-height: ${FONT_SIZE.MEDIUM};\r\n font-weight: ${(props: StyledTextLabelProps): string => (props.thinLabel ? '400' : '700')};\r\n color: ${(props: StyledTextLabelProps): string => (props.invalid ? COLOR.PRIMARY.RED : COLOR.MAIN.LABEL_TEXT)};\r\n opacity: ${(props: StyledTextLabelProps): string => (props.disabled ? '0.7' : '1')};\r\n max-width: ${(props: StyledTextLabelProps): string => (props.labelMaxWidth ? props.labelMaxWidth : 'none')};\r\n overflow: ${(props: StyledTextLabelProps): string => (props.labelOverflow ? props.labelOverflow : 'visible')};\r\n text-overflow: ${(props: StyledTextLabelProps): string =>\r\n props.labelTextOverflow ? props.labelTextOverflow : 'clip'};\r\n`;\r\n\r\nconst StyledLabelHasHelper = styled.label`\r\n && {\r\n display: inline-block;\r\n margin-right: ${SPACING.X_SMALL};\r\n margin-left: ${(props: StyledTextLabelProps): string => (props.inline ? SPACING.X_SMALL : '0')};\r\n font-size: ${FONT_SIZE.SMALL};\r\n line-height: ${FONT_SIZE.MEDIUM};\r\n font-weight: ${(props: StyledTextLabelProps): string => (props.thinLabel ? '400' : '700')};\r\n color: ${(props: StyledTextLabelProps): string => (props.invalid ? COLOR.PRIMARY.RED : COLOR.MAIN.LABEL_TEXT)};\r\n opacity: ${(props: StyledTextLabelProps): string => (props.disabled ? '0.7' : '1')};\r\n max-width: ${(props: StyledTextLabelProps): string => (props.labelMaxWidth ? props.labelMaxWidth : 'none')};\r\n overflow: ${(props: StyledTextLabelProps): string => (props.labelOverflow ? props.labelOverflow : 'visible')};\r\n text-overflow: ${(props: StyledTextLabelProps): string =>\r\n props.labelTextOverflow ? props.labelTextOverflow : 'clip'};\r\n }\r\n`;\r\n\r\nconst StyledCheckbox = styled.input``;\r\n\r\nexport const CheckboxInput = React.forwardRef(\r\n (\r\n {\r\n onChange,\r\n dataId,\r\n label,\r\n id,\r\n hasHelper,\r\n helperContent,\r\n helperProps,\r\n name,\r\n autofocus,\r\n inline,\r\n thinLabel,\r\n checked,\r\n disabled,\r\n invalid,\r\n className,\r\n labelMaxWidth,\r\n labelOverflow,\r\n labelTextOverflow,\r\n ...props\r\n },\r\n ref,\r\n ) => {\r\n return hasHelper ? (\r\n \r\n \r\n \r\n {label}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ) : (\r\n \r\n \r\n {label}\r\n \r\n \r\n \r\n );\r\n },\r\n);\r\nCheckboxInput.displayName = 'CheckboxInput';\r\n","export enum TrackingSettingsTheme {\r\n Default = 'DEFAULT',\r\n DataGrid = 'DATAGRID',\r\n}\r\n\r\nexport enum TrackingItemStatus {\r\n Active = 'ACTIVE',\r\n Archived = 'ARCHIVED',\r\n}\r\n\r\nexport enum DataSourceNames {\r\n Xero = 'XERO',\r\n Quickbooks = 'QUICKBOOKS',\r\n QuickBooksDesktop = 'QUICKBOOKSDESKTOP',\r\n MyobAccountRight = 'MYOBACCOUNTRIGHT',\r\n MyobAccountRightDesktop = 'MYOBACCOUNTRIGHTDESKTOP',\r\n Sage50Desktop = 'SAGE50DESKTOP',\r\n}\r\n","import * as React from 'react'; // eslint-disable-line\r\nimport styled from 'styled-components';\r\n\r\nimport { COLOR, SPACING } from '../../packages/constants';\r\nimport { ChevronRight } from '../../packages/icons';\r\nimport { TrackingSettingsTheme } from '../tracking-settings/tracking-settings-enums';\r\n\r\nexport interface TreeCollapseProps {\r\n parentProp: React.ReactNode;\r\n children: React.ReactNode;\r\n dataId: string;\r\n parentClickable?: boolean;\r\n expand?: boolean;\r\n theme?: TrackingSettingsTheme;\r\n hideSplit?: boolean;\r\n}\r\n\r\ninterface StyledChevronProps {\r\n isExpanded: boolean | undefined;\r\n}\r\n\r\ninterface StyledButtonProps {\r\n dataId: string;\r\n parentClickable?: boolean;\r\n}\r\n\r\ninterface StyledListProps {\r\n hideSplit?: boolean;\r\n}\r\n\r\nconst StyledTreeCollapse = styled.ul``;\r\n\r\nconst StyledListItem = styled.li`\r\n position: relative;\r\n\r\n &::after {\r\n border-left: 1px solid ${COLOR.LEGACY.DATAGRID_BORDER};\r\n width: 1px;\r\n height: 100%;\r\n content: '';\r\n position: absolute;\r\n top: 0;\r\n right: calc(145px + ${SPACING.MEDIUM});\r\n display: ${(props) => (props.theme === TrackingSettingsTheme.DataGrid && !props.hideSplit ? 'block' : 'none')};\r\n z-index: 2;\r\n }\r\n`;\r\n\r\nconst TreeParent = styled.div`\r\n display: flex;\r\n align-items: center;\r\n position: ${(props) => (props.theme === TrackingSettingsTheme.DataGrid ? 'sticky' : undefined)};\r\n top: ${(props) => (props.theme === TrackingSettingsTheme.DataGrid ? 0 : undefined)};\r\n z-index: ${(props) => (props.theme === TrackingSettingsTheme.DataGrid ? 1 : undefined)};\r\n background-color: ${(props) =>\r\n props.theme === TrackingSettingsTheme.DataGrid ? COLOR.LEGACY.DATAGRID_TH_BG : undefined};\r\n border-bottom: ${(props) =>\r\n props.theme === TrackingSettingsTheme.DataGrid ? `1px solid ${COLOR.LEGACY.DATAGRID_BORDER}` : 0};\r\n border-top: ${(props) =>\r\n props.theme === TrackingSettingsTheme.DataGrid ? `1px solid ${COLOR.LEGACY.DATAGRID_BORDER}` : 0};\r\n padding-left: ${(props) => (props.theme === TrackingSettingsTheme.DataGrid ? `${SPACING.MEDIUM}` : 0)};\r\n`;\r\n\r\nconst TreeChildren = styled.div`\r\n margin-top: ${SPACING.MEDIUM};\r\n`;\r\n\r\nconst StyledButton = styled.button.attrs(({ dataId }) => ({\r\n 'data-test-id': dataId,\r\n}))`\r\n border: 0;\r\n padding: 0;\r\n background-color: transparent;\r\n display: ${(props: StyledButtonProps): string => (props.parentClickable ? 'flex' : 'inline-block')};\r\n align-items: ${(props: StyledButtonProps): string => (props.parentClickable ? 'center' : '')};\r\n cursor: pointer;\r\n`;\r\n\r\nconst StyledChevron = styled(ChevronRight)`\r\n width: 12px;\r\n height: 12px;\r\n fill: ${COLOR.MAIN.LABEL_TEXT};\r\n margin-right: ${SPACING.X_SMALL};\r\n transform: ${(props: StyledChevronProps): string => (props.isExpanded ? 'rotate(90deg)' : 'rotate(0)')};\r\n`;\r\n\r\nexport const TreeCollapse = ({\r\n parentClickable,\r\n expand,\r\n parentProp,\r\n dataId,\r\n children,\r\n theme,\r\n hideSplit,\r\n ...props\r\n}: TreeCollapseProps) => {\r\n const [isExpanded, setIsExpanded] = React.useState(true);\r\n\r\n React.useEffect(() => {\r\n setIsExpanded(expand || false);\r\n }, [expand]);\r\n\r\n return (\r\n \r\n \r\n {parentClickable ? (\r\n \r\n setIsExpanded(!isExpanded)}\r\n aria-label={`${isExpanded ? 'Collapse' : 'Expand'} tree`}\r\n >\r\n \r\n {parentProp}\r\n \r\n \r\n ) : (\r\n \r\n setIsExpanded(!isExpanded)}\r\n aria-label={`${isExpanded ? 'Collapse' : 'Expand'} tree`}\r\n >\r\n \r\n \r\n {parentProp}\r\n \r\n )}\r\n {isExpanded && {children}}\r\n \r\n \r\n );\r\n};\r\n","import * as React from 'react';\r\n\r\nimport { darken, transparentize } from 'polished';\r\nimport styled from 'styled-components';\r\n\r\nimport { COLOR, FONT_SIZE, FONT_STACK, RADIUS, SPACING } from '../../packages/constants';\r\nimport { HelperModal, QuestionMark } from '../helper-modal';\r\n\r\ninterface StyledSelectField {\r\n invalid?: boolean;\r\n emphasize?: boolean;\r\n hasLegacyStyles?: boolean;\r\n width?: string;\r\n minWidth?: string;\r\n maxWidth?: string;\r\n thinLabel?: boolean;\r\n}\r\n\r\nexport interface SelectFieldProps {\r\n dataId: string;\r\n id: string;\r\n name: string;\r\n options: SelectFieldOptions;\r\n value?: string;\r\n onChange?: (e: any) => void;\r\n disabled?: boolean;\r\n hasHelper?: boolean;\r\n hasLegacyStyles?: boolean;\r\n helperContent?: React.ReactNode;\r\n invalid?: boolean;\r\n label?: string;\r\n placeholder?: string;\r\n emphasize?: boolean;\r\n width?: string;\r\n minWidth?: string;\r\n maxWidth?: string;\r\n thinLabel?: boolean;\r\n}\r\n\r\nexport type SelectFieldOptions = SelectFieldOptionsItem[];\r\n\r\ninterface SelectFieldOptionsItem {\r\n name: string;\r\n value: string;\r\n}\r\n\r\ninterface StyledTextLabelProps {\r\n disabled?: boolean;\r\n invalid?: boolean;\r\n emphasize?: boolean;\r\n hasLegacyStyles?: boolean;\r\n thinLabel?: boolean;\r\n}\r\n\r\ninterface InputWrapperProps {\r\n width?: string;\r\n minWidth?: string;\r\n maxWidth?: string;\r\n disabled?: boolean;\r\n emphasize?: boolean;\r\n}\r\n\r\nconst Wrapper = styled.label`\r\n display: flex;\r\n flex-direction: column;\r\n`;\r\n\r\nconst InputWrapper = styled.div`\r\n display: inline-flex;\r\n position: relative;\r\n margin-right: auto;\r\n width: ${(props) => (props.width ? props.width : 'auto')};\r\n min-width: ${(props) => (props.minWidth ? props.minWidth : 0)};\r\n max-width: ${(props) => (props.maxWidth ? props.maxWidth : 'none')};\r\n\r\n &::after {\r\n width: 0;\r\n height: 0;\r\n border-left: 6px solid transparent;\r\n border-right: 6px solid transparent;\r\n border-top: 6px solid\r\n ${(props) => (props.emphasize ? COLOR.DROPDOWN.DROPDOWN_ARROW_DARK : COLOR.DROPDOWN.DROPDOWN_ARROW)};\r\n content: '';\r\n position: absolute;\r\n bottom: ${SPACING.MEDIUM};\r\n right: ${SPACING.SMALL};\r\n opacity: ${(props) => (props.disabled ? '0.7' : '1')};\r\n pointer-events: none;\r\n }\r\n\r\n &:hover {\r\n &::after {\r\n border-top-color: ${(props: InputWrapperProps): string => (props.disabled ? '' : COLOR.BRAND.REPORTING)};\r\n }\r\n }\r\n`;\r\n\r\nconst WrapperHasHelper = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n position: relative;\r\n`;\r\n\r\nconst StyledLabelWrapper = styled.div`\r\n display: inline-flex;\r\n`;\r\n\r\nconst StyledTextLabel = styled.span`\r\n display: block;\r\n padding-bottom: ${(props) => (props.hasLegacyStyles ? 0 : SPACING.XX_SMALL)};\r\n font-family: ${FONT_STACK};\r\n font-weight: ${(props: StyledTextLabelProps): string => (props.thinLabel ? '400' : '700')};\r\n font-size: ${(props) => (props.hasLegacyStyles ? FONT_SIZE.X_SMALL : FONT_SIZE.SMALL)};\r\n line-height: ${(props) => (props.hasLegacyStyles ? 'normal' : FONT_SIZE.MEDIUM)};\r\n margin-bottom: ${(props) => (props.hasLegacyStyles ? '8px' : 0)};\r\n color: ${(props) =>\r\n props.invalid ? COLOR.PRIMARY.RED : props.hasLegacyStyles ? COLOR.PRIMARY.BLACK : COLOR.MAIN.LABEL_TEXT};\r\n opacity: ${(props) => (props.disabled ? '0.7' : '1')};\r\n`;\r\n\r\nconst StyledLabelHasHelper = styled.label`\r\n display: inline-block;\r\n padding-bottom: ${(props) => (props.hasLegacyStyles ? 0 : SPACING.XX_SMALL)};\r\n font-family: ${FONT_STACK};\r\n font-weight: ${(props: StyledTextLabelProps): string => (props.thinLabel ? '400' : '700')};\r\n font-size: ${(props) => (props.hasLegacyStyles ? FONT_SIZE.X_SMALL : FONT_SIZE.SMALL)};\r\n line-height: ${(props) => (props.hasLegacyStyles ? 'normal' : FONT_SIZE.MEDIUM)};\r\n margin-bottom: ${(props) => (props.hasLegacyStyles ? '8px' : 0)};\r\n margin-right: ${SPACING.X_SMALL};\r\n color: ${(props) =>\r\n props.invalid ? COLOR.PRIMARY.RED : props.hasLegacyStyles ? COLOR.PRIMARY.BLACK : COLOR.MAIN.LABEL_TEXT};\r\n opacity: ${(props) => (props.disabled ? '0.7' : '1')};\r\n`;\r\n\r\nconst StyledSelectField = styled.select`\r\n background-color: ${(props) => (props.disabled ? darken('0.1', COLOR.PRIMARY.WHITE) : COLOR.PRIMARY.WHITE)};\r\n color: ${(props) => (props.disabled ? transparentize('0.5', COLOR.PRIMARY.BLACK) : COLOR.PRIMARY.BLACK)};\r\n font-family: ${FONT_STACK};\r\n font-size: ${(props) => (props.hasLegacyStyles ? '13px' : FONT_SIZE.SMALL)};\r\n line-height: ${(props) => (props.hasLegacyStyles ? '18px' : FONT_SIZE.MEDIUM)};\r\n padding: ${SPACING.SMALL} ${SPACING.X_LARGE} ${SPACING.SMALL} ${SPACING.SMALL};\r\n border-width: 1px;\r\n border-style: solid;\r\n border-color: ${(props) =>\r\n props.invalid ? COLOR.PRIMARY.RED : props.emphasize ? COLOR.MAIN.FORM_FIELD_DARK : COLOR.MAIN.FORM_FIELD};\r\n border-radius: ${(props) => (props.hasLegacyStyles ? 0 : RADIUS.DEFAULT)};\r\n appearance: none;\r\n margin: 0;\r\n width: 100%;\r\n\r\n &:focus {\r\n box-shadow: 0 0 1px 3px rgba(59, 153, 252, 0.7);\r\n outline: none;\r\n }\r\n`;\r\n\r\nconst StyledOption = styled.option`\r\n font-weight: normal;\r\n`;\r\n\r\nexport const SelectInput = React.forwardRef(\r\n (\r\n {\r\n dataId,\r\n id,\r\n invalid,\r\n hasLegacyStyles,\r\n disabled,\r\n onChange,\r\n emphasize,\r\n width,\r\n minWidth,\r\n maxWidth,\r\n value,\r\n placeholder,\r\n options,\r\n ...props\r\n },\r\n ref,\r\n ) => (\r\n \r\n \r\n {placeholder && {placeholder}}\r\n {options.map((item: any, i: number) => (\r\n \r\n {item.name}\r\n \r\n ))}\r\n \r\n \r\n ),\r\n);\r\nSelectInput.displayName = 'SelectInput';\r\n\r\nexport const SelectField = React.forwardRef(\r\n (\r\n {\r\n dataId,\r\n id,\r\n disabled,\r\n value,\r\n onChange,\r\n placeholder = '',\r\n invalid,\r\n label,\r\n options,\r\n hasHelper,\r\n hasLegacyStyles,\r\n helperContent,\r\n emphasize,\r\n thinLabel,\r\n ...props\r\n },\r\n ref,\r\n ) => {\r\n return hasHelper ? (\r\n \r\n \r\n \r\n {label}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ) : (\r\n \r\n {label && (\r\n \r\n {label}\r\n \r\n )}\r\n \r\n \r\n );\r\n },\r\n);\r\nSelectField.displayName = 'SelectField';\r\n","import * as React from 'react';\r\nimport { useCallback, useState } from 'react';\r\nimport styled from 'styled-components';\r\nimport { transparentize } from 'polished';\r\n\r\nimport { TreeCollapse } from '../../../tree-collapse';\r\nimport { CheckboxInput } from '../../../checkbox-input';\r\nimport { SelectField, SelectFieldOptions } from '../../../select-field';\r\nimport { COLOR, FONT_SIZE, SPACING, SPEED } from '../../../../packages/constants';\r\nimport { Edit } from '../../../../packages/icons';\r\nimport { TrackingSettingsTheme, TrackingItemStatus } from '../../tracking-settings-enums';\r\nimport { Text } from '../../../text';\r\nimport { DataSignature } from '../DataWrapper/data-wrapper';\r\n\r\ninterface TreeCollapseProps {\r\n handleUpdateData: (e: DataSignature) => void;\r\n handleSaveOnChange?: (data: DataSignature, e?: HTMLInputElement) => void;\r\n organisationId?: string;\r\n category: any;\r\n categoryIndex: number;\r\n data: DataSignature;\r\n dataIndex: number;\r\n dropdownData?: SelectFieldOptions;\r\n dataItem: any;\r\n isTreeExpanded: boolean;\r\n showAbbreviations?: boolean;\r\n editAbbreviationFunction?: (organisationId: string, dataItemId: string, categoryName: string) => void;\r\n theme?: TrackingSettingsTheme;\r\n filterValue?: any;\r\n}\r\n\r\ninterface ListColumnProps {\r\n alignRight?: boolean;\r\n dropdownData?: SelectFieldOptions;\r\n}\r\n\r\ninterface TrackingListItemProps {\r\n isArchived?: boolean;\r\n}\r\n\r\ninterface CategoryTitleWrapperProps {\r\n dropdownData?: SelectFieldOptions;\r\n}\r\n\r\nexport const TrackingList = styled.ul`\r\n padding-bottom: ${SPACING.MEDIUM};\r\n`;\r\n\r\nexport const TrackingListItem = styled.li`\r\n display: flex;\r\n padding: ${SPACING.XX_SMALL} ${SPACING.MEDIUM} ${SPACING.XX_SMALL} 28px;\r\n background-color: ${(props) => (props.isArchived ? COLOR.LEGACY.DATAGRID_ARCHIVED_BG : 'none')};\r\n`;\r\n\r\nconst budgetColumnWidth = '145px';\r\n\r\nexport const TrackingListColumn = styled.div`\r\n width: ${(props) =>\r\n props.dropdownData && props.dropdownData.length > 0\r\n ? props.alignRight\r\n ? `calc(${budgetColumnWidth} + ${SPACING.MEDIUM})`\r\n : `calc(100% - ${budgetColumnWidth} - ${SPACING.MEDIUM})`\r\n : '100%'};\r\n display: flex;\r\n align-items: center;\r\n justify-content: ${(props) => (props.alignRight ? 'flex-end' : 'flex-start')};\r\n`;\r\n\r\nconst StyledTextLabel = styled.span`\r\n &&& {\r\n display: flex;\r\n margin-left: 0;\r\n font-size: ${FONT_SIZE.SMALL};\r\n line-height: ${FONT_SIZE.MEDIUM};\r\n font-weight: 700;\r\n color: ${COLOR.MAIN.LABEL_TEXT};\r\n opacity: 1;\r\n justify-content: flex-end;\r\n flex-grow: 1;\r\n margin-right: 90px;\r\n }\r\n`;\r\n\r\nconst StyledCheckbox = styled.input`\r\n margin: 2px 6px 2px 4px;\r\n`;\r\n\r\nconst StyledLabel = styled.label`\r\n &&& {\r\n color: ${COLOR.MAIN.LABEL_TEXT};\r\n display: inline;\r\n font-size: ${FONT_SIZE.SMALL};\r\n font-weight: 400;\r\n line-height: ${FONT_SIZE.LARGE};\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n }\r\n`;\r\n\r\nconst EditButton = styled.button`\r\n min-width: 0px;\r\n border: 1px solid transparent;\r\n border-radius: 15px;\r\n background-color: transparent;\r\n padding: ${SPACING.SMALL};\r\n margin-left: ${SPACING.SMALL};\r\n cursor: pointer;\r\n transition: border-color ${SPEED.TRANSITION}, background-color ${SPEED.TRANSITION};\r\n\r\n &:hover {\r\n border-color: ${transparentize(0.8, COLOR.MAIN.LABEL_TEXT)};\r\n background-color: ${transparentize(0.85, COLOR.MAIN.LABEL_TEXT)};\r\n }\r\n`;\r\n\r\nconst StyledEdit = styled(Edit)`\r\n width: 13px;\r\n height: 13px;\r\n fill: ${COLOR.MAIN.LABEL_TEXT};\r\n`;\r\n\r\nconst NoResultsFound = styled(Text)`\r\n margin-bottom: 0;\r\n`;\r\n\r\nconst StyledCheckBoxInput = styled(CheckboxInput)`\r\n min-width: 0px;\r\n`;\r\n\r\nconst CategoryCounter = styled.span`\r\n margin-left: ${SPACING.SMALL};\r\n white-space: nowrap;\r\n min-width: 0px;\r\n font-size: ${FONT_SIZE.X_SMALL};\r\n font-weight: 400;\r\n`;\r\n\r\nconst CategoryTitleWrapper = styled.div`\r\n width: ${(props) => (props.dropdownData && props.dropdownData.length ? '50%' : '100%')};\r\n display: inline-flex;\r\n align-items: center;\r\n`;\r\n\r\nconst regexString = /[^\\w-_]/g;\r\nconst lowerKebab = (value: string): string => value.replace(regexString, '-').toLowerCase();\r\n\r\nconst TreeCollapseWrapper = ({\r\n data,\r\n dataItem,\r\n dataIndex,\r\n category,\r\n categoryIndex,\r\n filterValue,\r\n isTreeExpanded,\r\n handleUpdateData,\r\n handleSaveOnChange,\r\n organisationId,\r\n dropdownData,\r\n showAbbreviations,\r\n editAbbreviationFunction,\r\n theme,\r\n}: TreeCollapseProps) => {\r\n const [itemsSelected, setItemsSelected] = useState(0);\r\n const [totalCount, setTotalCount] = useState(0);\r\n const handleParentCheckbox = (category: any, e: any) => {\r\n let count = 0;\r\n const tempTrackingData = { ...data };\r\n tempTrackingData.dataSources.forEach((dataItem: any, i: number) => {\r\n dataItem.categories.forEach((dataCategory: any, j: number) => {\r\n if (dataCategory === category) {\r\n tempTrackingData.dataSources[i].categories[j].items.forEach((catItem: any) => {\r\n if (\r\n tempTrackingData.hideArchivedTracking &&\r\n catItem.trackingItemStatusCode === TrackingItemStatus.Archived\r\n ) {\r\n return;\r\n } else {\r\n catItem.isShown = e.target.checked;\r\n if (e.target.checked) {\r\n count += 1;\r\n } else {\r\n count = 0;\r\n }\r\n }\r\n });\r\n }\r\n });\r\n });\r\n if (handleSaveOnChange) handleSaveOnChange(tempTrackingData, e.target);\r\n handleUpdateData(tempTrackingData);\r\n setItemsSelected(count);\r\n };\r\n\r\n const checkParentCheckboxState = useCallback(\r\n (hideArchivedTracking: any) => {\r\n let count = 0;\r\n const categoryCheckboxId = `checkbox__${lowerKebab(dataItem.name)}-category-${lowerKebab(category.name)}`;\r\n const categoryCheckboxElement = document.getElementById(categoryCheckboxId);\r\n const checkedValues: boolean[] = [];\r\n\r\n category.items.forEach((item: any) => {\r\n if (hideArchivedTracking && item.trackingItemStatusCode === TrackingItemStatus.Archived) {\r\n return;\r\n } else {\r\n checkedValues.push(item.isShown);\r\n if (item.isShown === true) {\r\n count += 1;\r\n }\r\n }\r\n });\r\n setItemsSelected(count);\r\n\r\n let firstValue = false;\r\n // loop over each array index\r\n for (let i = 0; checkedValues.length > i; i += 1) {\r\n if (i === 0) {\r\n // set first item to check against\r\n firstValue = checkedValues[0];\r\n // next item to check\r\n } else {\r\n // if its different to the firstValue, set indeterminate\r\n if (firstValue !== checkedValues[i]) {\r\n // set indeterminate\r\n if (categoryCheckboxElement) {\r\n // @ts-ignore\r\n categoryCheckboxElement.indeterminate = true;\r\n break;\r\n }\r\n // if first item is the same, set to true\r\n } else if (firstValue && firstValue === checkedValues[i]) {\r\n // set true\r\n if (categoryCheckboxElement) {\r\n // @ts-ignore\r\n categoryCheckboxElement.indeterminate = false;\r\n }\r\n // otherwise set false\r\n } else if (!firstValue && firstValue === checkedValues[i]) {\r\n // set false\r\n if (categoryCheckboxElement) {\r\n // @ts-ignore\r\n categoryCheckboxElement.indeterminate = false;\r\n }\r\n }\r\n }\r\n }\r\n if (categoryCheckboxElement) {\r\n // @ts-ignore\r\n categoryCheckboxElement.checked = count === checkedValues.length;\r\n }\r\n },\r\n [category.items, category.name, dataItem.name],\r\n );\r\n\r\n const countTotal = useCallback(() => {\r\n if (data.hideArchivedTracking) {\r\n let counter = 0;\r\n category.items.forEach((item: any) => {\r\n if (item.trackingItemStatusCode !== TrackingItemStatus.Archived) {\r\n counter += 1;\r\n }\r\n });\r\n setTotalCount(counter);\r\n } else {\r\n setTotalCount(category.items.length);\r\n }\r\n }, [category.items, data.hideArchivedTracking]);\r\n\r\n const handleCheckbox = (event: any, dataIndex: number, categoryIndex: number) => {\r\n const tempTrackingData = { ...data };\r\n tempTrackingData.dataSources[dataIndex].categories[categoryIndex].items.forEach((item: any) => {\r\n if (item.id === event.id) {\r\n item.isShown = !item.isShown;\r\n }\r\n });\r\n\r\n checkParentCheckboxState(data.hideArchivedTracking);\r\n\r\n if (handleSaveOnChange) handleSaveOnChange(tempTrackingData, event.target);\r\n handleUpdateData(tempTrackingData);\r\n };\r\n\r\n const handleBudgetDropdown = (event: any, itemId: string, dataIndex: number, categoryIndex: number) => {\r\n const tempTrackingData = { ...data };\r\n const option = tempTrackingData.dataSources[dataIndex].categories[categoryIndex].items.find(\r\n (x: { id: string }) => x.id === itemId,\r\n );\r\n if (!option) return;\r\n option.budget = event.target.value;\r\n // tslint:disable-next-line:no-unused-expression\r\n if (handleSaveOnChange) handleSaveOnChange(tempTrackingData, event.target);\r\n handleUpdateData(tempTrackingData);\r\n };\r\n\r\n const handleAbbreviationButton = () => {\r\n if (editAbbreviationFunction && organisationId) {\r\n editAbbreviationFunction(organisationId, dataItem.id, category.id);\r\n }\r\n };\r\n\r\n const filteredList = category.items.filter((item: any) => {\r\n if (filterValue.startsWith(' ')) {\r\n return item.name;\r\n } else {\r\n return item.name.toLowerCase().includes(filterValue);\r\n }\r\n });\r\n\r\n React.useEffect(() => {\r\n checkParentCheckboxState(data.hideArchivedTracking);\r\n countTotal();\r\n }, [data, checkParentCheckboxState, countTotal]);\r\n\r\n return (\r\n \r\n \r\n handleParentCheckbox(category, e)}\r\n labelMaxWidth={dropdownData && dropdownData.length > 0 ? '15vw' : 'none'}\r\n labelOverflow={'hidden'}\r\n labelTextOverflow={'ellipsis'}\r\n />\r\n {`(${itemsSelected} of ${totalCount})`}\r\n {showAbbreviations && (\r\n \r\n \r\n \r\n )}\r\n \r\n {dropdownData && dropdownData.length ? (\r\n \r\n Budgets\r\n \r\n ) : null}\r\n \r\n }\r\n >\r\n \r\n {filteredList.length > 0 ? (\r\n filteredList\r\n .sort((a: any, b: any) => (a.name > b.name ? 1 : -1))\r\n .map((item: any) => (\r\n \r\n {item.trackingItemStatusCode === TrackingItemStatus.Archived &&\r\n data.hideArchivedTracking ? null : (\r\n \r\n \r\n handleCheckbox(item, dataIndex, categoryIndex)}\r\n disabled={\r\n item.trackingItemStatusCode === TrackingItemStatus.Archived &&\r\n data.hideArchivedTracking\r\n }\r\n />\r\n \r\n {item.name}\r\n \r\n \r\n {dropdownData && dropdownData.length ? (\r\n \r\n \r\n handleBudgetDropdown(e, item.id, dataIndex, categoryIndex)\r\n }\r\n name={'budget'}\r\n dataId={`dropdown__${lowerKebab(\r\n dataItem.name,\r\n )}-category-${lowerKebab(category.name)}--${lowerKebab(item.name)}`}\r\n options={dropdownData}\r\n placeholder={'-'}\r\n disabled={!item.isShown}\r\n value={item.budget || ''}\r\n emphasize\r\n minWidth={'130px'}\r\n maxWidth={'130px'}\r\n />\r\n \r\n ) : null}\r\n \r\n )}\r\n \r\n ))\r\n ) : (\r\n
  • \r\n \r\n No results found.\r\n \r\n
  • \r\n )}\r\n
    \r\n \r\n );\r\n};\r\n\r\nexport default TreeCollapseWrapper;\r\n","// eslint-disable-next-line @typescript-eslint/no-unused-vars\r\nimport * as React from 'react';\r\nimport styled from 'styled-components';\r\n\r\nimport { ButtonAsText } from '../../../button';\r\nimport TreeCollapseWrapper from '../TreeCollapseWrapper/tree-collapse-wrapper';\r\nimport { DataSourceNames, TrackingSettingsTheme } from '../../tracking-settings-enums';\r\nimport { COLOR, FONT_SIZE, SPACING } from '../../../../packages/constants';\r\nimport XeroLogoGenericRound from '../../../../packages/icons/xero-logo-generic-round';\r\nimport QuickbooksLogoGenericRound from '../../../../packages/icons/quickbooks-logo-generic-round';\r\nimport MyobLogoGenericRound from '../../../../packages/icons/myob-logo-generic-round';\r\nimport SageLogoGenericRound from '../../../../packages/icons/sage-logo-generic-round';\r\nimport { SearchFilter } from '../../../search-filter/search-filter';\r\nimport { useEffect, useRef, useState } from 'react';\r\n\r\ninterface CategoryItem {\r\n id: string;\r\n name: string;\r\n isShown: boolean;\r\n budget?: string;\r\n trackingItemStatusCode?: string;\r\n}\r\n\r\ninterface Category {\r\n id: string;\r\n name: string;\r\n items: CategoryItem[];\r\n}\r\n\r\ninterface TrackedBudget {\r\n name: string;\r\n value: string;\r\n}\r\n\r\nexport interface DataSource {\r\n id: string;\r\n dataSourceTypeCode: string;\r\n name: string;\r\n hasTracking?: boolean;\r\n orderPriority?: number;\r\n categories: Category[];\r\n budgets?: TrackedBudget[];\r\n}\r\n\r\ninterface BuildCategoryData {\r\n dataSource: DataSource;\r\n categoryBuilder: (c: Category, i: number) => React.ReactElement;\r\n}\r\n\r\nexport interface DataSignature {\r\n dataSources: DataSource[];\r\n hideArchivedTracking: boolean;\r\n displayUnselectedTrackingItems?: boolean;\r\n}\r\n\r\nexport interface DataWrapperProps {\r\n handleUpdateData: (e: DataSignature) => void;\r\n data: DataSignature;\r\n dataIndex: number;\r\n dataItem: DataSource;\r\n dropdownData?: {\r\n name: string;\r\n value: string;\r\n }[];\r\n editAbbreviationFunction?: any;\r\n handleSaveOnChange?: (data: DataSignature, e?: HTMLInputElement) => void;\r\n organisationId?: string;\r\n showAbbreviations?: boolean;\r\n showExpandCollapseAll?: boolean;\r\n showSearchFilter?: boolean;\r\n theme?: TrackingSettingsTheme;\r\n treesExpanded?: boolean;\r\n}\r\n\r\nconst StyledDataSourceWrapper = styled.div`\r\n margin-bottom: ${(props) => (props.theme === TrackingSettingsTheme.DataGrid ? 0 : SPACING.XX_LARGE)};\r\n`;\r\n\r\nconst ButtonWrapper = styled.div`\r\n display: flex;\r\n margin-right: ${SPACING.MEDIUM};\r\n`;\r\n\r\nconst StyledDataWrapper = styled.div`\r\n border: 1px solid\r\n ${(props) =>\r\n props.theme === TrackingSettingsTheme.DataGrid ? COLOR.LEGACY.DATAGRID_BORDER : COLOR.MAIN.MEDIUM_GREY};\r\n border-radius: ${(props) => (props.theme === TrackingSettingsTheme.DataGrid ? '3px 3px 0 0' : 0)};\r\n background-color: ${(props) => (props.theme === TrackingSettingsTheme.DataGrid ? '#fff' : '#f7f9fb')};\r\n padding: ${(props) =>\r\n props.theme === TrackingSettingsTheme.DataGrid ? COLOR.LEGACY.DATAGRID_BORDER : SPACING.MEDIUM};\r\n position: relative;\r\n`;\r\n\r\nconst HeaderWrapper = styled.div`\r\n display: flex;\r\n align-items: center;\r\n padding: ${(props) =>\r\n props.theme === TrackingSettingsTheme.DataGrid ? `8px ${SPACING.MEDIUM}` : `0 0 ${SPACING.MEDIUM}`};\r\n background-image: ${(props) =>\r\n props.theme === TrackingSettingsTheme.DataGrid ? 'linear-gradient(-180deg,#f5f5f5,#f2f1f1)' : 'none'};\r\n box-shadow: ${(props) =>\r\n props.theme === TrackingSettingsTheme.DataGrid ? 'inset 0 1px 0 hsla(0,0%,100%,.5)' : 'none'};\r\n position: relative;\r\n`;\r\n\r\nconst Header = styled.h1`\r\n &&& {\r\n font-size: ${(props) => (props.theme === TrackingSettingsTheme.DataGrid ? '12px' : FONT_SIZE.LARGE)};\r\n line-height: ${(props) => (props.theme === TrackingSettingsTheme.DataGrid ? '16px' : FONT_SIZE.X_LARGE)};\r\n font-weight: 700;\r\n margin: 0 auto 0 ${SPACING.X_SMALL};\r\n overflow: hidden;\r\n white-space: nowrap;\r\n text-overflow: ellipsis;\r\n }\r\n`;\r\n\r\nconst StyledWrapper = styled.div`\r\n padding: ${SPACING.SMALL};\r\n`;\r\n\r\nconst StyledParagraph = styled.p`\r\n &&& {\r\n font-size: ${FONT_SIZE.SMALL};\r\n padding: ${SPACING.SMALL};\r\n line-height: ${FONT_SIZE.LARGE};\r\n white-space: normal;\r\n }\r\n`;\r\n\r\nconst StyledOverflow = styled.div`\r\n overflow: auto;\r\n max-height: 60vh;\r\n`;\r\n\r\nconst StyledSearchFilter = styled(SearchFilter)`\r\n position: ${(props) => (props.theme === TrackingSettingsTheme.DataGrid ? 'absolute' : 'static')};\r\n top: ${(props) => (props.theme === TrackingSettingsTheme.DataGrid ? '3px' : undefined)};\r\n right: ${(props) => (props.theme === TrackingSettingsTheme.DataGrid ? '3px' : undefined)};\r\n\r\n button {\r\n min-height: ${(props) => (props.theme === TrackingSettingsTheme.DataGrid ? '28px' : undefined)};\r\n }\r\n\r\n svg {\r\n height: ${(props) => (props.theme === TrackingSettingsTheme.DataGrid ? '11px' : undefined)};\r\n width: ${(props) => (props.theme === TrackingSettingsTheme.DataGrid ? '11px' : undefined)};\r\n }\r\n`;\r\n\r\nconst BuildLogo = ({ name }: any) => {\r\n if (name === DataSourceNames.Xero) {\r\n return ;\r\n } else if (name === DataSourceNames.Quickbooks || name === DataSourceNames.QuickBooksDesktop) {\r\n return ; //Replace with a new icon which is wider having the word 'Quickbooks'\r\n } else if (name === DataSourceNames.MyobAccountRight || name === DataSourceNames.MyobAccountRightDesktop) {\r\n return ;\r\n } else if (name === DataSourceNames.Sage50Desktop) {\r\n return ;\r\n } else {\r\n return null;\r\n }\r\n};\r\n\r\nconst BuildContent = ({ dataSource, categoryBuilder }: BuildCategoryData) => {\r\n if (!dataSource.hasTracking) {\r\n return (\r\n \r\n No tracking category data has been imported.\r\n \r\n To import tracking category data, please navigate to the import screen and select the tracking\r\n checkboxes before importing.\r\n \r\n \r\n );\r\n } else if (!dataSource.categories || dataSource.categories.length == 0) {\r\n return (\r\n \r\n \r\n Tracking category data has not been enabled in your accounting system and therefore cannot be\r\n imported into Spotlight.\r\n \r\n \r\n );\r\n } else {\r\n return (\r\n \r\n {dataSource.categories\r\n .sort((a: Category, b: Category) => (a.name > b.name ? 1 : -1))\r\n .map(categoryBuilder)}\r\n \r\n );\r\n }\r\n};\r\n\r\nconst DataWrapper = ({\r\n data,\r\n dropdownData,\r\n dataItem,\r\n dataIndex,\r\n editAbbreviationFunction,\r\n handleUpdateData,\r\n handleSaveOnChange,\r\n organisationId,\r\n showAbbreviations,\r\n showExpandCollapseAll,\r\n showSearchFilter,\r\n theme,\r\n treesExpanded,\r\n}: DataWrapperProps): JSX.Element => {\r\n const [isTreeExpanded, setTreeExpand] = useState(false);\r\n const filterInputRef = useRef(null);\r\n const [filterValue, setFilterValue] = useState('');\r\n\r\n const buildCategory = (category: Category, categoryIndex: number) => (\r\n \r\n );\r\n\r\n const handleFilterChange = (e: any) => {\r\n setFilterValue(e.target.value.toLowerCase());\r\n };\r\n\r\n const handleClearButton = () => {\r\n setFilterValue('');\r\n if (filterInputRef.current) {\r\n filterInputRef.current.focus();\r\n }\r\n };\r\n\r\n // TODO: improve this\r\n // This parent component sets the state to all of the tree components - to be collapsed or expanded.\r\n // If user collapses a tree component, this parent component still thinks it's open\r\n // This code below forces all to be expanded (true) then sets them to collapsed (false)\r\n const handleCollapseAll = () => {\r\n setTreeExpand(true);\r\n setTimeout(() => {\r\n setTreeExpand(false);\r\n }, 0);\r\n };\r\n\r\n // TODO: improve this\r\n const handleExpandAll = () => {\r\n setTreeExpand(false);\r\n setTimeout(() => {\r\n setTreeExpand(true);\r\n }, 0);\r\n };\r\n\r\n useEffect(() => {\r\n if (treesExpanded) setTreeExpand(treesExpanded);\r\n }, [treesExpanded]);\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n
    \r\n {dataItem.name}\r\n
    \r\n {showExpandCollapseAll && (\r\n \r\n \r\n Expand all\r\n \r\n \r\n Collapse all\r\n \r\n \r\n )}\r\n {showSearchFilter && (\r\n \r\n )}\r\n
    \r\n \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default DataWrapper;\r\n","import * as React from 'react';\r\n\r\nimport styled, { ThemeProvider } from 'styled-components';\r\n\r\nimport { COLOR, FONT_SIZE, SPACING, THEME } from '../../packages/constants';\r\nimport { CircleWithX, CircledTick } from '../../packages/icons';\r\nimport { Button, ButtonGroup } from '../button';\r\nimport { CheckboxInput } from '../checkbox-input';\r\nimport { Text } from '../text';\r\nimport DataWrapper, { DataSource } from './atoms/DataWrapper/data-wrapper';\r\nimport { DataSignature } from './atoms/DataWrapper/data-wrapper';\r\nimport { TrackingSettingsTheme } from './tracking-settings-enums';\r\n\r\nexport interface TrackingSettingsProps {\r\n data: DataSignature;\r\n dataId: string;\r\n handleSaveButton: (data: DataSignature, e?: HTMLInputElement) => void;\r\n editAbbreviationFunction?: any;\r\n organisationId?: string;\r\n saveOnChange?: boolean;\r\n saveButtonLoading?: boolean;\r\n saveResponse?: { status: string; message: string };\r\n showAbbreviations?: boolean;\r\n showExpandCollapseAll?: boolean;\r\n showSearchFilter?: boolean;\r\n showSingleDataSource?: string;\r\n theme?: TrackingSettingsTheme;\r\n treesExpanded?: boolean;\r\n isLoading?: boolean;\r\n}\r\n\r\nconst LoadingState = styled.div`\r\n position: absolute;\r\n background: rgba(0, 0, 0, 0.14);\r\n height: 100%;\r\n width: 100%;\r\n z-index: 1000;\r\n`;\r\n\r\nconst StyledTrackingSettings = styled.div``;\r\n\r\nconst StyledInner = styled.div`\r\n margin-bottom: ${SPACING.X_LARGE};\r\n position: relative;\r\n`;\r\n\r\nconst IconError = styled(CircleWithX)`\r\n fill: ${COLOR.PRIMARY.RED};\r\n height: 18px;\r\n width: 18px;\r\n margin-right: ${SPACING.X_SMALL};\r\n`;\r\n\r\nconst IconSuccess = styled(CircledTick)`\r\n fill: ${COLOR.PRIMARY.GREEN};\r\n height: 18px;\r\n width: 18px;\r\n margin-right: ${SPACING.X_SMALL};\r\n`;\r\n\r\nconst Message = styled.div`\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n`;\r\n\r\nconst Footer = styled.div`\r\n display: flex;\r\n border: ${(props) =>\r\n props.theme === TrackingSettingsTheme.DataGrid ? `1px solid ${COLOR.LEGACY.DATAGRID_BORDER}` : 0};\r\n border-top: 0;\r\n border-radius: ${(props) => (props.theme === TrackingSettingsTheme.DataGrid ? `0 0 3px 3px ` : 0)};\r\n padding: ${(props) =>\r\n props.theme === TrackingSettingsTheme.DataGrid ? `8px ${SPACING.MEDIUM}` : `0 0 ${SPACING.MEDIUM}`};\r\n background-image: ${(props) =>\r\n props.theme === TrackingSettingsTheme.DataGrid ? 'linear-gradient(-180deg,#f5f5f5,#f2f1f1)' : 'none'};\r\n box-shadow: ${(props) =>\r\n props.theme === TrackingSettingsTheme.DataGrid ? 'inset 0 1px 0 hsla(0,0%,100%,.5)' : 'none'};\r\n font-size: ${(props) => (props.theme === TrackingSettingsTheme.DataGrid ? '12px' : FONT_SIZE.LARGE)};\r\n line-height: ${(props) => (props.theme === TrackingSettingsTheme.DataGrid ? '16px' : FONT_SIZE.X_LARGE)};\r\n font-weight: 400;\r\n`;\r\n\r\nconst StyledCheckboxListItem = styled.li`\r\n padding: 2px;\r\n`;\r\n\r\nexport const TrackingSettings = ({\r\n data,\r\n dataId,\r\n editAbbreviationFunction,\r\n handleSaveButton,\r\n organisationId,\r\n saveButtonLoading,\r\n saveOnChange,\r\n saveResponse,\r\n showAbbreviations,\r\n showExpandCollapseAll = true,\r\n showSearchFilter,\r\n showSingleDataSource,\r\n theme,\r\n treesExpanded,\r\n isLoading,\r\n ...props\r\n}: TrackingSettingsProps) => {\r\n const [isDisabled, setDisabled] = React.useState(true);\r\n const [showMessage, setShowMessage] = React.useState(true);\r\n const [trackingData, setTrackingData] = React.useState(data);\r\n\r\n React.useEffect(() => {\r\n setTrackingData(data);\r\n }, [data]);\r\n\r\n const updateData = (dataToUpdate: DataSignature) => {\r\n setTrackingData(dataToUpdate);\r\n setDisabled(false);\r\n setShowMessage(false);\r\n };\r\n\r\n const handleHideArchived = () => {\r\n const trackingDataCopy = { ...trackingData };\r\n trackingDataCopy.hideArchivedTracking = !trackingDataCopy.hideArchivedTracking;\r\n updateData(trackingDataCopy);\r\n if (saveOnChange) handleSaveButton(trackingDataCopy, undefined);\r\n };\r\n\r\n const handleDisplayUnselectedTrackingItems = () => {\r\n const trackingDataCopy = { ...trackingData };\r\n trackingDataCopy.displayUnselectedTrackingItems = !trackingDataCopy.displayUnselectedTrackingItems;\r\n updateData(trackingDataCopy);\r\n if (saveOnChange) handleSaveButton(trackingDataCopy, undefined);\r\n };\r\n\r\n React.useEffect(() => {\r\n if (!saveButtonLoading) {\r\n setDisabled(true);\r\n }\r\n\r\n if (saveResponse) {\r\n setShowMessage(true);\r\n\r\n if (saveResponse.status === 'ERROR') {\r\n setDisabled(false);\r\n }\r\n }\r\n }, [saveButtonLoading, saveResponse]);\r\n\r\n React.useEffect(() => {\r\n if (!showSingleDataSource) {\r\n const trackingDataCopy = { ...trackingData };\r\n trackingDataCopy.dataSources.sort((a, b) =>\r\n a.orderPriority && b.orderPriority && a.orderPriority > b.orderPriority ? 1 : -1,\r\n );\r\n setTrackingData(trackingDataCopy);\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [showSingleDataSource]);\r\n\r\n React.useEffect(() => {\r\n if (showSingleDataSource) {\r\n setTrackingData({\r\n dataSources: data.dataSources.filter((obj: DataSource) => obj.id === showSingleDataSource),\r\n hideArchivedTracking: trackingData.hideArchivedTracking,\r\n displayUnselectedTrackingItems: trackingData.displayUnselectedTrackingItems,\r\n });\r\n }\r\n }, [\r\n showSingleDataSource,\r\n data.dataSources,\r\n trackingData.hideArchivedTracking,\r\n trackingData.displayUnselectedTrackingItems,\r\n ]);\r\n\r\n const hasTracking = trackingData.dataSources.some((d) => d.hasTracking && d.categories && d.categories.length > 0);\r\n\r\n return (\r\n \r\n \r\n \r\n {isLoading && }\r\n {saveOnChange\r\n ? trackingData.dataSources.map((dataItem: DataSource, dataIndex: number) => (\r\n \r\n a.name.toLowerCase().localeCompare(b.name.toLowerCase()),\r\n )\r\n : []\r\n }\r\n dataIndex={dataIndex}\r\n dataItem={dataItem}\r\n handleUpdateData={updateData}\r\n handleSaveOnChange={handleSaveButton}\r\n treesExpanded={treesExpanded}\r\n organisationId={organisationId}\r\n showAbbreviations={showAbbreviations}\r\n editAbbreviationFunction={editAbbreviationFunction}\r\n theme={theme}\r\n />\r\n ))\r\n : trackingData.dataSources.map((dataItem: DataSource, dataIndex: number) => (\r\n \r\n a.name.toLowerCase().localeCompare(b.name.toLowerCase()),\r\n )\r\n : []\r\n }\r\n dataIndex={dataIndex}\r\n dataItem={dataItem}\r\n handleUpdateData={updateData}\r\n treesExpanded={treesExpanded}\r\n organisationId={organisationId}\r\n showAbbreviations={showAbbreviations}\r\n editAbbreviationFunction={editAbbreviationFunction}\r\n theme={theme}\r\n />\r\n ))}\r\n {hasTracking && (\r\n
    \r\n
      \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n
    \r\n
    \r\n )}\r\n
    \r\n {!saveOnChange && (\r\n \r\n handleSaveButton(trackingData, undefined)}\r\n loading={saveButtonLoading}\r\n >\r\n Save\r\n \r\n {saveResponse && showMessage && (\r\n \r\n {saveResponse.status === 'ERROR' && }\r\n {saveResponse.status === 'SUCCESS' && }\r\n \r\n {saveResponse.message}\r\n \r\n \r\n )}\r\n \r\n )}\r\n
    \r\n
    \r\n );\r\n};\r\n","import * as React from 'react';\r\n\r\nimport styled from 'styled-components';\r\n\r\nexport interface TabButtonGroupProps {\r\n children: React.ReactNode;\r\n}\r\n\r\nconst StyledTabButtonGroup = styled.ul`\r\n list-style-type: none;\r\n > li {\r\n display: inline-block;\r\n }\r\n > li:not(:first-child) > button {\r\n border-left: none;\r\n }\r\n > li:first-child > button {\r\n border-radius: 3px 0px 0px 0px;\r\n }\r\n > li:last-child > button {\r\n border-radius: 0px 3px 0px 0px;\r\n }\r\n`;\r\n\r\nexport const TabButtonGroup = React.forwardRef(({ children, ...props }, ref) => (\r\n \r\n {children}\r\n \r\n));\r\nTabButtonGroup.displayName = 'TabButtonGroup';\r\n","import * as React from 'react';\r\n\r\nimport { darken } from 'polished';\r\nimport styled from 'styled-components';\r\n\r\nimport { COLOR, FONT_SIZE } from '../../../../packages/constants';\r\n\r\nexport interface TabButtonProps {\r\n onClick?: (e: any) => void;\r\n dataId: string;\r\n children: React.ReactNode;\r\n selected: boolean;\r\n value: string;\r\n}\r\n\r\nconst StyledTabButton = styled.button.attrs(({ dataId }) => ({\r\n 'data-test-id': dataId,\r\n}))`\r\n border: 2px solid ${COLOR.MAIN.MEDIUM_GREY};\r\n padding: 9px 12px;\r\n font-size: ${FONT_SIZE.SMALL};\r\n font-weight: 700;\r\n line-height: 1.2;\r\n background-color: ${(props) => (props.selected ? COLOR.PRIMARY.WHITE : darken(0.05, COLOR.PRIMARY.WHITE))};\r\n color: ${COLOR.PRIMARY.BLACK};\r\n cursor: pointer;\r\n`;\r\n\r\nexport const TabButton = React.forwardRef(({ children, ...props }, ref) => (\r\n \r\n {children}\r\n \r\n));\r\nTabButton.displayName = 'TabButton';\r\n","import * as React from 'react';\r\n\r\nimport { darken, transparentize } from 'polished';\r\nimport styled from 'styled-components';\r\n\r\nimport { COLOR, FONT_SIZE, RADIUS, SPACING } from '../../packages/constants';\r\n\r\nexport interface PasswordInputProps {\r\n autoComplete?: string;\r\n autoFocus?: boolean;\r\n dataId: string;\r\n defaultValue?: string | string[];\r\n disabled?: boolean;\r\n id: string;\r\n invalid?: boolean;\r\n maxLength?: number;\r\n minLength?: number;\r\n pattern?: string;\r\n readOnly?: boolean;\r\n name: string;\r\n onChange?: (e: any) => void;\r\n placeholder?: string;\r\n required?: boolean;\r\n value?: string | string[] | number;\r\n className?: string;\r\n}\r\n\r\ninterface StyledInputProps {\r\n disabled?: boolean;\r\n invalid?: boolean;\r\n}\r\n\r\nconst StyledInput = styled.input`\r\n background-color: ${(props: StyledInputProps): string =>\r\n props.disabled ? darken('0.1', COLOR.PRIMARY.WHITE) : COLOR.PRIMARY.WHITE};\r\n color: ${(props: StyledInputProps): string =>\r\n props.disabled ? transparentize('0.5', COLOR.PRIMARY.BLACK) : COLOR.PRIMARY.BLACK};\r\n font-size: ${FONT_SIZE.SMALL};\r\n line-height: ${FONT_SIZE.MEDIUM};\r\n padding: ${SPACING.SMALL};\r\n border-width: 1px;\r\n border-style: solid;\r\n border-color: ${(props: StyledInputProps): string => (props.invalid ? COLOR.PRIMARY.RED : COLOR.MAIN.FORM_FIELD)};\r\n border-radius: ${RADIUS.DEFAULT};\r\n\r\n &::placeholder {\r\n opacity: 0.65;\r\n }\r\n`;\r\n\r\nexport const PasswordInput = React.forwardRef(\r\n (\r\n {\r\n autoComplete,\r\n autoFocus,\r\n dataId,\r\n defaultValue,\r\n disabled,\r\n id,\r\n invalid,\r\n maxLength,\r\n minLength,\r\n pattern,\r\n readOnly,\r\n name,\r\n placeholder,\r\n required,\r\n value,\r\n onChange,\r\n },\r\n ref,\r\n ) => {\r\n return (\r\n \r\n );\r\n },\r\n);\r\nPasswordInput.displayName = 'PasswordInput';\r\n","import * as React from 'react';\r\n\r\nimport styled from 'styled-components';\r\n\r\nimport { COLOR, FONT_SIZE, SPACING } from '../../packages/constants';\r\nimport { HelperModal, QuestionMark } from '../helper-modal';\r\nimport { PasswordInput } from '../password-input';\r\n\r\nexport interface PasswordFieldProps {\r\n dataId: string;\r\n label: string;\r\n id: string;\r\n name: string;\r\n autofocus?: boolean;\r\n defaultValue?: string;\r\n disabled?: boolean;\r\n invalid?: boolean;\r\n hasHelper?: boolean;\r\n helperContent?: React.ReactNode;\r\n numeralsOnly?: boolean;\r\n placeholder?: string;\r\n value?: string;\r\n onChange?: (e: any) => void;\r\n maxLength?: number;\r\n minLength?: number;\r\n pattern?: string;\r\n readOnly?: boolean;\r\n required?: boolean;\r\n thinLabel?: boolean;\r\n className?: string;\r\n}\r\n\r\ninterface StyledTextLabelProps {\r\n disabled?: boolean;\r\n invalid?: boolean;\r\n thinLabel?: boolean;\r\n}\r\n\r\nconst wrapperStyles = `\r\n display: flex;\r\n flex-direction: column;\r\n`;\r\n\r\nconst Wrapper = styled.label`\r\n ${wrapperStyles}\r\n`;\r\n\r\nconst WrapperHasHelper = styled.div`\r\n ${wrapperStyles}\r\n`;\r\n\r\nconst StyledLabelWrapper = styled.div`\r\n display: inline-flex;\r\n`;\r\n\r\nconst StyledTextLabel = styled.span`\r\n display: block;\r\n padding-bottom: ${SPACING.XX_SMALL};\r\n font-size: ${FONT_SIZE.SMALL};\r\n line-height: ${FONT_SIZE.MEDIUM};\r\n font-weight: ${(props: StyledTextLabelProps): string => (props.thinLabel ? '400' : '700')};\r\n color: ${(props: StyledTextLabelProps): string => (props.invalid ? COLOR.PRIMARY.RED : COLOR.MAIN.LABEL_TEXT)};\r\n opacity: ${(props: StyledTextLabelProps): string => (props.disabled ? '0.7' : '1')};\r\n`;\r\n\r\nconst StyledLabelHasHelper = styled.label`\r\n display: inline-block;\r\n margin-right: ${SPACING.X_SMALL};\r\n padding-bottom: ${SPACING.XX_SMALL};\r\n font-size: ${FONT_SIZE.SMALL};\r\n line-height: ${FONT_SIZE.MEDIUM};\r\n font-weight: ${(props: StyledTextLabelProps): string => (props.thinLabel ? '400' : '700')};\r\n color: ${(props: StyledTextLabelProps): string => (props.invalid ? COLOR.PRIMARY.RED : COLOR.MAIN.LABEL_TEXT)};\r\n opacity: ${(props: StyledTextLabelProps): string => (props.disabled ? '0.7' : '1')};\r\n`;\r\n\r\nexport const PasswordField = React.forwardRef(\r\n (\r\n {\r\n dataId,\r\n label,\r\n id,\r\n hasHelper,\r\n helperContent,\r\n placeholder,\r\n name,\r\n autofocus,\r\n defaultValue,\r\n disabled,\r\n invalid,\r\n onChange,\r\n maxLength,\r\n minLength,\r\n pattern,\r\n readOnly,\r\n required,\r\n thinLabel,\r\n value,\r\n className,\r\n ...props\r\n },\r\n ref,\r\n ) => {\r\n return hasHelper ? (\r\n \r\n \r\n \r\n {label}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ) : (\r\n \r\n \r\n {label}\r\n \r\n \r\n \r\n );\r\n },\r\n);\r\nPasswordField.displayName = 'PasswordField';\r\n","import * as React from 'react';\r\n\r\nimport { darken, transparentize } from 'polished';\r\nimport styled from 'styled-components';\r\n\r\nimport { COLOR, FONT_SIZE, RADIUS, SPACING } from '../../packages/constants';\r\n\r\nexport interface NumberInputProps {\r\n autoComplete?: string;\r\n autoFocus?: boolean;\r\n dataId: string;\r\n defaultValue?: string | string[];\r\n disabled?: boolean;\r\n id: string;\r\n invalid?: boolean;\r\n max?: number | string;\r\n min?: number | string;\r\n name: string;\r\n onChange?: (e: any) => void;\r\n onBlur?: (e: any) => void;\r\n placeholder?: string;\r\n required?: boolean;\r\n step?: number | string;\r\n value?: string | string[] | number;\r\n className?: string;\r\n ariaLabel?: string;\r\n}\r\n\r\ninterface StyledInputProps {\r\n disabled?: boolean;\r\n invalid?: boolean;\r\n}\r\n\r\nconst StyledInput = styled.input`\r\n background-color: ${(props: StyledInputProps): string =>\r\n props.disabled ? darken('0.1', COLOR.PRIMARY.WHITE) : COLOR.PRIMARY.WHITE};\r\n color: ${(props: StyledInputProps): string =>\r\n props.disabled ? transparentize('0.5', COLOR.PRIMARY.BLACK) : COLOR.PRIMARY.BLACK};\r\n font-size: ${FONT_SIZE.SMALL};\r\n line-height: ${FONT_SIZE.MEDIUM};\r\n padding: ${SPACING.SMALL};\r\n border-width: 1px;\r\n border-style: solid;\r\n border-color: ${(props: StyledInputProps): string => (props.invalid ? COLOR.PRIMARY.RED : COLOR.MAIN.FORM_FIELD)};\r\n border-radius: ${RADIUS.DEFAULT};\r\n\r\n &::placeholder {\r\n opacity: 0.65;\r\n }\r\n`;\r\n\r\nexport const NumberInput = React.forwardRef(\r\n (\r\n {\r\n autoComplete,\r\n autoFocus,\r\n dataId,\r\n defaultValue,\r\n disabled,\r\n id,\r\n invalid,\r\n max,\r\n min,\r\n name,\r\n placeholder,\r\n required,\r\n step,\r\n value,\r\n onChange,\r\n onBlur,\r\n ariaLabel,\r\n },\r\n ref,\r\n ) => {\r\n return (\r\n \r\n );\r\n },\r\n);\r\nNumberInput.displayName = 'NumberInput';\r\n","import * as React from 'react';\r\n\r\nimport styled from 'styled-components';\r\n\r\nimport { COLOR, FONT_SIZE, SPACING } from '../../packages/constants';\r\nimport { HelperModal, QuestionMark } from '../helper-modal';\r\nimport { NumberInput, NumberInputProps } from '../number-input';\r\n\r\nexport interface NumberFieldProps extends Omit {\r\n hasHelper?: boolean;\r\n helperContent?: React.ReactNode;\r\n label: string;\r\n validationMessage?: string;\r\n thinLabel?: boolean;\r\n}\r\n\r\ninterface StyledTextLabelProps {\r\n disabled?: boolean;\r\n invalid?: boolean;\r\n thinLabel?: boolean;\r\n}\r\n\r\nconst wrapperStyles = `\r\n display: flex;\r\n flex-direction: column;\r\n`;\r\n\r\nconst Wrapper = styled.label`\r\n ${wrapperStyles}\r\n`;\r\n\r\nconst WrapperHasHelper = styled.div`\r\n ${wrapperStyles}\r\n`;\r\n\r\nconst StyledLabelWrapper = styled.div`\r\n display: inline-flex;\r\n`;\r\n\r\nconst StyledTextLabel = styled.span`\r\n display: block;\r\n padding-bottom: ${SPACING.XX_SMALL};\r\n font-size: ${FONT_SIZE.SMALL};\r\n line-height: ${FONT_SIZE.MEDIUM};\r\n font-weight: ${(props: StyledTextLabelProps): string => (props.thinLabel ? '400' : '700')};\r\n color: ${(props: StyledTextLabelProps): string => (props.invalid ? COLOR.PRIMARY.RED : COLOR.MAIN.LABEL_TEXT)};\r\n opacity: ${(props: StyledTextLabelProps): string => (props.disabled ? '0.7' : '1')};\r\n`;\r\n\r\nconst StyledLabelHasHelper = styled.label`\r\n display: inline-block;\r\n padding-bottom: ${SPACING.XX_SMALL};\r\n margin-right: ${SPACING.X_SMALL};\r\n font-size: ${FONT_SIZE.SMALL};\r\n line-height: ${FONT_SIZE.MEDIUM};\r\n font-weight: ${(props: StyledTextLabelProps): string => (props.thinLabel ? '400' : '700')};\r\n color: ${(props: StyledTextLabelProps): string => (props.invalid ? COLOR.PRIMARY.RED : COLOR.MAIN.LABEL_TEXT)};\r\n opacity: ${(props: StyledTextLabelProps): string => (props.disabled ? '0.7' : '1')};\r\n`;\r\n\r\nexport const NumberField = React.forwardRef(\r\n (\r\n {\r\n autoComplete,\r\n autoFocus,\r\n dataId,\r\n defaultValue,\r\n disabled,\r\n hasHelper,\r\n helperContent,\r\n id,\r\n invalid,\r\n label,\r\n max,\r\n min,\r\n name,\r\n placeholder,\r\n required = false,\r\n step,\r\n onChange,\r\n thinLabel,\r\n value,\r\n className,\r\n ...props\r\n },\r\n ref,\r\n ) => {\r\n return hasHelper ? (\r\n \r\n \r\n \r\n {label}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ) : (\r\n \r\n \r\n {label}\r\n \r\n \r\n \r\n );\r\n },\r\n);\r\nNumberField.displayName = 'NumberField';\r\n","import * as React from 'react';\r\n\r\nimport styled from 'styled-components';\r\n\r\nimport { COLOR, FONT_SIZE, SPACING } from '../../packages/constants';\r\nimport { HelperModal, QuestionMark } from '../helper-modal';\r\nimport { NumberInput, NumberInputProps } from '../number-input';\r\n\r\nexport interface NumberFieldInlineProps extends Omit {\r\n hasHelper?: boolean;\r\n helperContent?: React.ReactNode;\r\n label: string;\r\n validationMessage?: string;\r\n thinLabel?: boolean;\r\n labelWidth?: string;\r\n labelAlignment?: 'start' | 'center' | 'end' | undefined;\r\n symbol?: string;\r\n symbolPlacement?: 'before' | 'after' | undefined;\r\n}\r\n\r\nexport interface NumberFieldProps extends Omit {\r\n hasHelper?: boolean;\r\n helperContent?: React.ReactNode;\r\n label: string;\r\n validationMessage?: string;\r\n thinLabel?: boolean;\r\n}\r\n\r\ninterface StyledTextLabelProps {\r\n disabled?: boolean;\r\n invalid?: boolean;\r\n thinLabel?: boolean;\r\n}\r\n\r\ninterface WrapperProps {\r\n labelWidth?: string;\r\n symbolPlacement?: 'before' | 'after' | undefined;\r\n}\r\n\r\ninterface StyledLabelWrapperProps {\r\n labelAlignment: 'start' | 'center' | 'end';\r\n}\r\n\r\ninterface StyledValidationMessageProps {\r\n invalid?: boolean;\r\n symbolPlacement?: 'before' | 'after' | undefined;\r\n}\r\n\r\ninterface StyledSymbolProps {\r\n invalid?: boolean;\r\n symbolPlacement: 'before' | 'after';\r\n}\r\n\r\nconst Wrapper = styled.div`\r\n display: grid;\r\n grid-template-columns:\r\n ${(props: WrapperProps): string => (props.labelWidth ? props.labelWidth : 'auto')}\r\n ${(props: WrapperProps): string => (!props.symbolPlacement ? 'minmax(0, 1fr)' : '')}\r\n ${(props: WrapperProps): string => (props.symbolPlacement === 'before' ? 'auto minmax(0, 1fr)' : '')}\r\n ${(props: WrapperProps): string => (props.symbolPlacement === 'after' ? 'minmax(0, 1fr) auto' : '')};\r\n`;\r\n\r\nconst StyledLabelWrapper = styled.div`\r\n display: flex;\r\n justify-content: center;\r\n align-items: ${(props: StyledLabelWrapperProps): string => props.labelAlignment};\r\n flex-direction: column;\r\n padding-right: ${SPACING.LARGE};\r\n`;\r\n\r\nconst StyledTextLabel = styled.label`\r\n margin-right: ${SPACING.X_SMALL};\r\n font-size: ${FONT_SIZE.SMALL};\r\n line-height: ${FONT_SIZE.LARGE};\r\n max-width: 100%;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n font-weight: ${(props: StyledTextLabelProps): string => (props.thinLabel ? '400' : '700')};\r\n color: ${(props: StyledTextLabelProps): string => (props.invalid ? COLOR.PRIMARY.RED : COLOR.MAIN.LABEL_TEXT)};\r\n opacity: ${(props: StyledTextLabelProps): string => (props.disabled ? '0.7' : '1')};\r\n`;\r\n\r\nconst StyledLabelHasHelper = styled.div`\r\n display: inline-flex;\r\n max-width: 100%;\r\n`;\r\n\r\nconst StyledValidationMessage = styled.div`\r\n font-size: ${FONT_SIZE.X_SMALL};\r\n line-height: ${FONT_SIZE.SMALL};\r\n color: ${(props: StyledValidationMessageProps): string =>\r\n props.invalid ? COLOR.PRIMARY.RED : COLOR.PRIMARY.BLACK};\r\n padding-top: ${SPACING.SMALL};\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n grid-area: ${(props: StyledValidationMessageProps): string => (!props.symbolPlacement ? '2/2' : '')}\r\n ${(props: StyledValidationMessageProps): string => (props.symbolPlacement === 'before' ? '2/3' : '')}\r\n ${(props: StyledValidationMessageProps): string => (props.symbolPlacement === 'after' ? '2/2' : '')};\r\n`;\r\n\r\nconst StyledSymbol = styled.span`\r\n font-size: ${FONT_SIZE.SMALL};\r\n color: ${(props: StyledSymbolProps): string => (props.invalid ? COLOR.PRIMARY.RED : COLOR.PRIMARY.BLACK)};\r\n align-self: center;\r\n margin: ${(props: StyledSymbolProps): string =>\r\n props.symbolPlacement === 'before' ? `0 ${SPACING.SMALL} 0 0` : `0 0 0 ${SPACING.SMALL}`};\r\n`;\r\nexport const NumberFieldInline = React.forwardRef(\r\n (\r\n {\r\n autoComplete,\r\n autoFocus,\r\n dataId,\r\n defaultValue,\r\n disabled,\r\n hasHelper,\r\n helperContent,\r\n id,\r\n invalid,\r\n label,\r\n max,\r\n min,\r\n name,\r\n placeholder,\r\n required = false,\r\n step,\r\n onChange,\r\n thinLabel,\r\n labelWidth,\r\n labelAlignment = 'start',\r\n value,\r\n className,\r\n validationMessage,\r\n symbol,\r\n symbolPlacement,\r\n ...props\r\n },\r\n ref,\r\n ) => {\r\n return (\r\n \r\n \r\n {hasHelper ? (\r\n \r\n \r\n {label}\r\n \r\n \r\n \r\n \r\n \r\n ) : (\r\n \r\n {label}\r\n \r\n )}\r\n \r\n {symbol && symbolPlacement === 'before' && (\r\n \r\n {symbol}\r\n \r\n )}\r\n \r\n {symbol && symbolPlacement === 'after' && (\r\n \r\n {symbol}\r\n \r\n )}\r\n {validationMessage && (\r\n \r\n {validationMessage}\r\n \r\n )}\r\n \r\n );\r\n },\r\n);\r\n\r\nNumberFieldInline.displayName = 'NumberFieldInline';\r\n","import * as React from 'react';\r\n\r\nimport SVGBase from '../svg-base/svg-base';\r\n\r\nexport interface SortNumberAscProps {\r\n fill?: string;\r\n title?: string;\r\n height?: string;\r\n width?: string;\r\n viewBox?: string;\r\n}\r\n\r\nconst SortNumberAsc: React.FunctionComponent> = ({\r\n fill = '#00b1ff',\r\n title,\r\n height,\r\n width,\r\n ...rest\r\n}): any => (\r\n \r\n \r\n \r\n \r\n \r\n 1\r\n \r\n \r\n \r\n \r\n 9\r\n \r\n \r\n \r\n \r\n);\r\n\r\nexport default SortNumberAsc;\r\n","import SortNumberAsc from './sort-number-asc';\r\n\r\nexport * from './sort-number-asc';\r\nexport default SortNumberAsc;\r\n","import * as React from 'react';\r\n\r\nimport SVGBase from '../svg-base/svg-base';\r\n\r\nexport interface SortNumberDescProps {\r\n fill?: string;\r\n title?: string;\r\n height?: string;\r\n width?: string;\r\n viewBox?: string;\r\n}\r\n\r\nconst SortNumberDesc: React.FunctionComponent> = ({\r\n fill = '#00b1ff',\r\n title,\r\n height,\r\n width,\r\n ...rest\r\n}): any => (\r\n \r\n \r\n \r\n \r\n \r\n 9\r\n \r\n \r\n \r\n \r\n 1\r\n \r\n \r\n \r\n \r\n);\r\n\r\nexport default SortNumberDesc;\r\n","import SortNumberDesc from './sort-number-desc';\r\n\r\nexport * from './sort-number-desc';\r\nexport default SortNumberDesc;\r\n","import * as React from 'react'; // eslint-disable-line\r\nimport styled, { ThemeProvider, ThemeProps } from 'styled-components';\r\n\r\nimport { COLOR, FONT_SIZE, SPACING } from '../../packages/constants';\r\nimport { HelperModal, QuestionMark } from '../helper-modal';\r\nimport SortNumberAsc from '../../packages/icons/sort-number-asc';\r\nimport SortNumberDesc from '../../packages/icons/sort-number-desc';\r\n\r\nexport interface SortNumberAscDescFieldProps {\r\n dataId: string;\r\n id: string;\r\n name: string;\r\n legend: string;\r\n autoFocus?: boolean;\r\n assistAccess?: boolean;\r\n value?: SortValues;\r\n disabled?: boolean;\r\n hasHelper?: boolean;\r\n helperContent?: React.ReactNode;\r\n invalid?: boolean;\r\n thinLabel?: boolean;\r\n thinLegend?: boolean;\r\n theme?: SortFieldTheme;\r\n onChange?: (e: any) => void;\r\n validationMessage?: string;\r\n className?: string;\r\n}\r\n\r\nexport enum SortValues {\r\n NONE = 'NONE',\r\n ASCENDING = 'ASC',\r\n DESCENDING = 'DESC',\r\n}\r\n\r\ninterface SortFieldTheme {\r\n selectedColor: string;\r\n}\r\n\r\ninterface StyledLegendTextProps {\r\n disabled?: boolean;\r\n invalid?: boolean;\r\n thinLegend?: boolean;\r\n}\r\n\r\ninterface StyledLabelProps {\r\n inline?: boolean;\r\n disabled?: boolean;\r\n}\r\n\r\ninterface StyledRadioProps {\r\n assistAccess: boolean;\r\n disabled?: boolean;\r\n}\r\n\r\ninterface StyledLabelTextProps {\r\n disabled?: boolean;\r\n inline?: boolean;\r\n thinLabel?: boolean;\r\n}\r\n\r\nconst Wrapper = styled.fieldset`\r\n display: inline-flex;\r\n flex-direction: column;\r\n`;\r\n\r\nconst WrapperHasHelper = styled.fieldset`\r\n display: inline-flex;\r\n flex-direction: column;\r\n`;\r\n\r\nconst StyledLegend = styled.legend`\r\n display: inline-flex;\r\n margin-left: 0;\r\n`;\r\n\r\nconst StyledLegendText = styled.span`\r\n display: inline-block;\r\n margin-right: ${SPACING.X_SMALL};\r\n padding-bottom: ${SPACING.XX_SMALL};\r\n font-size: ${FONT_SIZE.SMALL};\r\n line-height: ${FONT_SIZE.MEDIUM};\r\n font-weight: ${(props: StyledLegendTextProps): string => (props.thinLegend ? '400' : '700')};\r\n color: ${(props: StyledLegendTextProps): string => (props.invalid ? COLOR.PRIMARY.RED : COLOR.MAIN.LABEL_TEXT)};\r\n opacity: ${(props: StyledLegendTextProps): string => (props.disabled ? '0.7' : '1')};\r\n`;\r\n\r\nconst StyledLabel = styled.label`\r\n position: relative;\r\n display: inline-flex;\r\n flex-direction: ${(props: StyledLabelProps): string => (props.inline ? 'row-reverse' : 'column')};\r\n align-items: ${(props: StyledLabelProps): string => (props.inline ? 'center' : '')};\r\n justify-content: ${(props: StyledLabelProps): string => (props.inline ? 'flex-end' : '')};\r\n cursor: ${(props: StyledLabelProps): string => (props.disabled ? 'default' : 'pointer')};\r\n`;\r\n\r\nconst StyledLabelText = styled.span`\r\n display: block;\r\n margin-left: ${(props: StyledLabelTextProps): string => (props.inline ? SPACING.SMALL : '0')};\r\n font-size: ${FONT_SIZE.SMALL};\r\n font-weight: 400;\r\n color: ${COLOR.MAIN.LABEL_TEXT};\r\n line-height: ${FONT_SIZE.MEDIUM};\r\n opacity: ${(props: StyledLabelTextProps): string => (props.disabled ? '0.7' : '1')};\r\n`;\r\n\r\nconst StyledItemsWrapper = styled.div`\r\n > ${StyledLabel} {\r\n margin-right: ${SPACING.LARGE};\r\n }\r\n`;\r\n\r\nconst StyledAscIcon = styled(SortNumberAsc)`\r\n width: 30px;\r\n height: 30px;\r\n user-select: none;\r\n`;\r\n\r\nconst StyledDescIcon = styled(SortNumberDesc)`\r\n width: 30px;\r\n height: 30px;\r\n user-select: none;\r\n`;\r\n\r\nconst StyledRadio = styled.input`\r\n /* NOTE: it's important the radio position on screen matches where the label is or the browser may scroll to the radio */\r\n position: absolute;\r\n opacity: 0;\r\n top: 0;\r\n left: 0;\r\n z-index: -1;\r\n\r\n ~ ${StyledAscIcon} .sort-number-asc-icon__background,\r\n ~ ${StyledDescIcon} .sort-number-desc-icon__background {\r\n fill: #fff;\r\n }\r\n ~ ${StyledAscIcon} .sort-number-asc-icon__outline,\r\n ~ ${StyledAscIcon} .sort-number-asc-icon__1,\r\n ~ ${StyledAscIcon} .sort-number-asc-icon__9,\r\n ~ ${StyledAscIcon} .sort-number-asc-icon__arrow,\r\n ~ ${StyledDescIcon} .sort-number-desc-icon__outline,\r\n ~ ${StyledDescIcon} .sort-number-desc-icon__1,\r\n ~ ${StyledDescIcon} .sort-number-desc-icon__9,\r\n ~ ${StyledDescIcon} .sort-number-desc-icon__arrow {\r\n fill: #d5d5d5;\r\n }\r\n\r\n &:hover {\r\n ~ ${StyledAscIcon} .sort-number-asc-icon__outline,\r\n ~ ${StyledAscIcon} .sort-number-asc-icon__1,\r\n ~ ${StyledAscIcon} .sort-number-asc-icon__9,\r\n ~ ${StyledAscIcon} .sort-number-asc-icon__arrow,\r\n ~ ${StyledDescIcon} .sort-number-desc-icon__outline,\r\n ~ ${StyledDescIcon} .sort-number-desc-icon__1,\r\n ~ ${StyledDescIcon} .sort-number-desc-icon__9,\r\n ~ ${StyledDescIcon} .sort-number-desc-icon__arrow {\r\n fill: ${(props: StyledRadioProps): string => (props.disabled ? '#d5d5d5' : '#9a9a9a')};\r\n }\r\n }\r\n\r\n &:focus ~ ${StyledAscIcon}, &:focus ~ ${StyledDescIcon} {\r\n outline: ${(props: StyledRadioProps): string => (props.assistAccess ? '1px dotted #212121' : '0')};\r\n outline: ${(props: StyledRadioProps): string =>\r\n props.assistAccess ? '5px auto -webkit-focus-ring-color' : '0'};\r\n }\r\n\r\n &:checked {\r\n ~ ${StyledAscIcon} .sort-number-asc-icon__background,\r\n ~ ${StyledDescIcon} .sort-number-desc-icon__background {\r\n fill: ${(props: ThemeProps): string => props.theme.selectedColor};\r\n }\r\n ~ ${StyledAscIcon} .sort-number-asc-icon__outline,\r\n ~ ${StyledDescIcon} .sort-number-desc-icon__outline {\r\n fill: none;\r\n }\r\n ~ ${StyledAscIcon} .sort-number-asc-icon__1,\r\n ~ ${StyledAscIcon} .sort-number-asc-icon__9,\r\n ~ ${StyledAscIcon} .sort-number-asc-icon__arrow,\r\n ~ ${StyledDescIcon} .sort-number-desc-icon__1,\r\n ~ ${StyledDescIcon} .sort-number-desc-icon__9,\r\n ~ ${StyledDescIcon} .sort-number-desc-icon__arrow {\r\n fill: #fff;\r\n }\r\n }\r\n`;\r\n\r\nexport const defaultTheme: SortFieldTheme = {\r\n selectedColor: COLOR.BRAND.REPORTING,\r\n};\r\n\r\nexport const SortNumberAscDescField = React.forwardRef(\r\n (\r\n {\r\n assistAccess = false,\r\n autoFocus,\r\n dataId,\r\n disabled,\r\n hasHelper,\r\n helperContent,\r\n id,\r\n invalid,\r\n legend,\r\n name,\r\n onChange,\r\n theme = defaultTheme,\r\n thinLabel,\r\n thinLegend,\r\n value,\r\n className,\r\n ...props\r\n },\r\n ref,\r\n ) => {\r\n return hasHelper ? (\r\n \r\n \r\n \r\n \r\n {legend}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Ascending\r\n \r\n \r\n \r\n \r\n \r\n \r\n Descending\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ) : (\r\n \r\n \r\n \r\n \r\n {legend}\r\n \r\n \r\n \r\n \r\n \r\n Ascending\r\n \r\n \r\n \r\n \r\n \r\n \r\n Descending\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n },\r\n);\r\nSortNumberAscDescField.displayName = 'SortNumberAscDescField';\r\n","import * as React from 'react';\r\n\r\nimport { Link } from 'react-scroll';\r\nimport styled from 'styled-components';\r\n\r\nimport { COLOR, FONT_SIZE, RADIUS, SPACING, SPEED } from '../../../../packages/constants';\r\nimport { AdditionalPage, ChevronRight } from '../../../../packages/icons';\r\nimport { LoadingSpinner } from '../../../loading-spinner';\r\n\r\ninterface ThumbnailProps {\r\n href: string;\r\n title: string;\r\n additionalPageNumber?: string;\r\n activeClass?: string;\r\n className?: string;\r\n containerId?: string;\r\n duration?: number;\r\n isLoading?: boolean;\r\n isAdditionalPage?: boolean;\r\n imageSrc?: string;\r\n offset?: number;\r\n onSetActive?: (e: any) => void;\r\n onSetInactive?: (e: any) => void;\r\n ref?: any;\r\n showThumbnail?: boolean;\r\n smooth?: boolean;\r\n spy?: boolean;\r\n to?: any;\r\n}\r\n\r\ninterface StyledThumbnailProps {\r\n isAdditionalPage?: boolean;\r\n showThumbnail?: boolean;\r\n onSetInactive?: any;\r\n}\r\n\r\ninterface ImageThumbnailProps {\r\n isAdditionalPage?: boolean;\r\n}\r\n\r\nconst StyledLoadingSpinner = styled(LoadingSpinner)``;\r\n\r\nconst DROP_SHADOW_VALUE = `\r\n 0 1px 5px rgba(4, 37, 91, 0.25)\r\n`;\r\nconst PAGINATION_THUMBNAIL_WIDTH = `220px`;\r\nconst PAGINATION_THUMBNAIL_HEIGHT = `170px`;\r\nconst PAGINATION_THUMBNAIL_STYLED = `\r\n box-sizing: border-box;\r\n box-shadow: ${DROP_SHADOW_VALUE};\r\n border-style: solid;\r\n border-width: 2px;\r\n border-color: transparent;\r\n border-radius: ${RADIUS.DEFAULT};\r\n height: ${PAGINATION_THUMBNAIL_HEIGHT};\r\n margin-bottom: ${SPACING.SMALL};\r\n padding: ${SPACING.X_SMALL} ${SPACING.X_SMALL} ${SPACING.XX_SMALL};\r\n transition: border-color ${SPEED.TRANSITION};\r\n width: ${PAGINATION_THUMBNAIL_WIDTH};\r\n`;\r\n\r\nconst ImagePlaceholder = styled.div`\r\n background-color: ${COLOR.PRIMARY.WHITE};\r\n display: flex;\r\n justify-content: center;\r\n ${PAGINATION_THUMBNAIL_STYLED}\r\n`;\r\n\r\nconst ImageThumbnail = styled.img`\r\n ${PAGINATION_THUMBNAIL_STYLED}\r\n`;\r\n\r\nconst StyledImage = styled.img`\r\n display: block;\r\n width: 100%;\r\n height: auto;\r\n`;\r\n\r\nconst StyledAdditionalImage = styled(AdditionalPage)`\r\n display: block;\r\n width: 100%;\r\n height: auto;\r\n`;\r\n\r\nconst StyledThumbnailLabel = styled.div`\r\n align-self: center;\r\n background-color: transparent;\r\n border-radius: ${RADIUS.DEFAULT};\r\n color: ${COLOR.MAIN.DARK_GREY};\r\n display: inline-block;\r\n font-size: ${FONT_SIZE.SMALL};\r\n padding: ${SPACING.SMALL};\r\n transition: color ${SPEED.TRANSITION}, background-color ${SPEED.TRANSITION};\r\n`;\r\n\r\nconst StyledTextLabel = styled.div`\r\n align-items: center;\r\n background-color: transparent;\r\n color: ${COLOR.BRAND.REPORTING};\r\n display: flex;\r\n font-weight: ${'400'};\r\n font-size: ${FONT_SIZE.SMALL};\r\n justify-content: space-between;\r\n padding: 5px;\r\n text-align: left;\r\n transition: color ${SPEED.TRANSITION};\r\n`;\r\n\r\nconst StyledChevron = styled(ChevronRight)`\r\n fill: #b2bccd;\r\n height: 12px;\r\n width: 12px;\r\n opacity: 0;\r\n`;\r\n\r\nconst StyledThumbnailWrapper = styled(Link)`\r\n border: 0;\r\n cursor: pointer;\r\n display: block;\r\n margin: 0;\r\n padding: 0;\r\n text-align: center;\r\n text-decoration: none;\r\n\r\n &.active {\r\n ${ImagePlaceholder},\r\n ${ImageThumbnail} {\r\n border-color: ${COLOR.BRAND.REPORTING};\r\n }\r\n\r\n ${StyledThumbnailLabel} {\r\n background-color: ${COLOR.BRAND.REPORTING};\r\n color: ${COLOR.PRIMARY.WHITE};\r\n }\r\n ${StyledTextLabel} {\r\n background-color: ${COLOR.PRIMARY.WHITE};\r\n }\r\n ${StyledChevron} {\r\n opacity: 1;\r\n }\r\n }\r\n\r\n &:hover {\r\n ${StyledThumbnailLabel} {\r\n background-color: ${COLOR.BRAND.REPORTING};\r\n color: ${COLOR.PRIMARY.WHITE};\r\n }\r\n ${StyledTextLabel} {\r\n background-color: ${COLOR.PRIMARY.WHITE};\r\n color: ${COLOR.BRAND.REPORTING};\r\n }\r\n }\r\n`;\r\n\r\nconst Thumbnail = React.forwardRef(\r\n (\r\n {\r\n activeClass,\r\n additionalPageNumber,\r\n className,\r\n containerId,\r\n href,\r\n imageSrc,\r\n isLoading,\r\n isAdditionalPage,\r\n offset,\r\n onSetActive,\r\n onSetInactive,\r\n showThumbnail,\r\n title,\r\n to,\r\n ...props\r\n }: ThumbnailProps,\r\n ref,\r\n ) => (\r\n \r\n {showThumbnail ? (\r\n isLoading ? (\r\n <>\r\n \r\n \r\n \r\n \r\n {title}\r\n {additionalPageNumber && ` (page ${Number(additionalPageNumber) + 1})`}\r\n \r\n \r\n ) : (\r\n <>\r\n \r\n {isAdditionalPage ? : }\r\n \r\n \r\n {title}\r\n {additionalPageNumber && ` (page ${Number(additionalPageNumber) + 1})`}\r\n \r\n \r\n )\r\n ) : (\r\n \r\n {title}\r\n {additionalPageNumber && ` (page ${Number(additionalPageNumber) + 1})`}\r\n \r\n \r\n )}\r\n \r\n ),\r\n);\r\nThumbnail.displayName = 'Thumbnail';\r\n\r\nexport default Thumbnail;\r\nexport { StyledLoadingSpinner, DROP_SHADOW_VALUE, PAGINATION_THUMBNAIL_WIDTH };\r\n","import Thumbnail, { DROP_SHADOW_VALUE, PAGINATION_THUMBNAIL_WIDTH } from './thumbnail';\r\n\r\nexport default Thumbnail;\r\nexport { DROP_SHADOW_VALUE, PAGINATION_THUMBNAIL_WIDTH };\r\n","import * as React from 'react';\r\nimport styled from 'styled-components';\r\n\r\nimport { DROP_SHADOW_VALUE } from './atoms/thumbnail';\r\nimport { SPACING } from '../../packages/constants';\r\nimport { StyledLoadingSpinner } from './atoms/thumbnail/thumbnail';\r\nimport { camelToKebab } from '../../../Scripts/Spotlight/Components/CamelToKebab';\r\n\r\nexport interface PreviewPageProps {\r\n id: string;\r\n content: string;\r\n title: string;\r\n pageType?: string;\r\n isLoading: boolean;\r\n isFixedSize: boolean;\r\n canBeFullscreen: boolean;\r\n isPortrait: boolean;\r\n maxWidth?: number;\r\n index: number;\r\n}\r\n\r\ninterface PageProps {\r\n isFixedSize?: boolean;\r\n isPortrait?: boolean;\r\n pageLoading?: boolean;\r\n canBeFullscreen?: boolean;\r\n isSinglePage?: boolean;\r\n maxWidth?: number;\r\n}\r\n\r\nconst PageItem = styled.li`\r\n background-color: #fff;\r\n box-shadow: ${DROP_SHADOW_VALUE};\r\n height: ${(props) => (props.pageLoading ? (props.isFixedSize ? '710px' : 'auto') : 'auto')};\r\n margin-bottom: ${(props) => (props.isSinglePage ? 'auto' : '20px')};\r\n max-width: ${(props) =>\r\n props.canBeFullscreen ? (props.isPortrait ? '51vw' : '71vw') : props.isPortrait ? '51vw' : undefined};\r\n min-height: ${(props) => (props.canBeFullscreen ? '48vw' : '710px')};\r\n min-width: 960px;\r\n margin-left: ${(props) => (props.canBeFullscreen || props.isPortrait ? 'auto' : undefined)};\r\n margin-right: ${(props) => (props.canBeFullscreen || props.isPortrait ? 'auto' : undefined)};\r\n width: ${(props) => (props.pageLoading ? '100%' : 'auto')};\r\n max-width: ${(props) => (props.maxWidth ? props.maxWidth : 'unset')};\r\n`;\r\n\r\nconst Page = styled.div`\r\n align-items: ${(props) => (props.pageLoading ? 'center' : 'flex-start')};\r\n box-sizing: border-box;\r\n display: flex;\r\n flex-direction: column;\r\n height: ${(props) => (props.pageLoading ? (props.isFixedSize ? '710px' : '52vw') : 'auto')};\r\n justify-content: ${(props) => (props.pageLoading ? 'center' : 'flex-start')};\r\n min-height: 710px;\r\n padding: ${SPACING.MEDIUM};\r\n width: ${(props) => (props.pageLoading ? (props.isFixedSize ? '960px' : '100%') : 'auto')};\r\n overflow-x: ${(props) => (props.pageLoading ? undefined : 'auto')};\r\n`;\r\n\r\nexport const PreviewPage = ({\r\n id,\r\n isFixedSize,\r\n canBeFullscreen,\r\n isLoading,\r\n isPortrait,\r\n maxWidth,\r\n title,\r\n index,\r\n pageType,\r\n content,\r\n}: PreviewPageProps) => {\r\n return (\r\n \r\n {isLoading ? (\r\n \r\n \r\n \r\n ) : (\r\n \r\n )}\r\n \r\n );\r\n};\r\nPreviewPage.displayName = 'PreviewPage';\r\n","import * as React from 'react'; // eslint-disable-line\r\nimport styled from 'styled-components';\r\nimport { TransformComponent as ZoomableContent } from 'react-zoom-pan-pinch';\r\n\r\nimport { PreviewPage } from './preview-page';\r\nimport { PageDataProps } from './preview';\r\n\r\nexport interface PreviewContentProps {\r\n /**\r\n * Page data\r\n */\r\n pageData: PageDataProps[];\r\n /**\r\n * Scroll listener\r\n */\r\n scrollListener: (e: any) => void;\r\n /**\r\n * Scroll ref\r\n */\r\n scrollRef: React.RefObject;\r\n /**\r\n * Show navigation?\r\n */\r\n showNavigation: boolean;\r\n /**\r\n * Fixes the size of the page during loading.\r\n */\r\n isFixedSize: boolean;\r\n /**\r\n * Show fullscreen capability?\r\n */\r\n hasFullscreen: boolean;\r\n /**\r\n * Don't show the invisible page at bottom\r\n */\r\n isSinglePage: boolean;\r\n /**\r\n * Limit how wide a page is allowed to be\r\n */\r\n maxPageWidth?: number;\r\n /**\r\n * Is the display currently fullscreen\r\n */\r\n isFullscreen: boolean;\r\n /**\r\n * Should the pages be landscape or portrait?\r\n */\r\n isPortrait: boolean;\r\n}\r\n\r\ninterface PageWrapperProps {\r\n showNavigation: boolean;\r\n hasFullscreen: boolean;\r\n isFullscreen: boolean;\r\n isSinglePage: boolean;\r\n isPortrait: boolean;\r\n}\r\n\r\nconst PageWrapper = styled.div`\r\n box-sizing: border-box;\r\n position: relative;\r\n height: ${(props) => (props.hasFullscreen ? (props.isFullscreen ? '100%' : 'calc(100% - 44px)') : '100%')};\r\n overflow-y: ${(props) => (props.isSinglePage ? 'auto' : 'scroll')};\r\n width: ${(props) => (props.isSinglePage ? '100%' : 'fit-content')};\r\n display: ${(props) => (props.hasFullscreen && props.isSinglePage ? 'flex' : 'block')};\r\n ${(props) =>\r\n props.hasFullscreen &&\r\n (props.isSinglePage || props.isPortrait) &&\r\n `align-items: ${props.isPortrait} ? 'flex-start' : 'center'`}\r\n cursor: grab;\r\n`;\r\n\r\nconst Pages = styled.ul`\r\n margin: 0 auto;\r\n max-width: 100vw;\r\n width: 100%;\r\n padding: 6px;\r\n`;\r\n\r\nconst LastPage = styled.li`\r\n height: 60vh;\r\n max-width: 100vw;\r\n margin: 0 auto;\r\n width: 100%;\r\n`;\r\n\r\nexport const PreviewContent = ({\r\n showNavigation,\r\n hasFullscreen,\r\n isFullscreen,\r\n isSinglePage,\r\n isFixedSize,\r\n isPortrait,\r\n maxPageWidth,\r\n scrollRef,\r\n scrollListener,\r\n pageData,\r\n}: PreviewContentProps) => {\r\n return (\r\n scrollListener(e)}\r\n isPortrait={isPortrait}\r\n >\r\n \r\n \r\n {pageData.map((page: PageDataProps, index: number) => (\r\n \r\n ))}\r\n {!isSinglePage && }\r\n \r\n \r\n \r\n );\r\n};\r\nPreviewContent.displayName = 'PreviewContent';\r\n","import * as React from 'react';\r\nimport { ReactNode, useEffect, useState, useMemo } from 'react';\r\n\r\nimport { Expand } from 'iconoir-react';\r\nimport { lighten } from 'polished';\r\nimport styled, { ThemeProvider } from 'styled-components';\r\n\r\nimport { SPACING, COLOR, THEME } from '../../packages/constants';\r\nimport { Button } from '../button';\r\nimport { CheckboxInput } from '../checkbox-input';\r\nimport { ThumbnailVariants } from './preview';\r\n\r\nexport interface PreviewNavigationButtonsProps {\r\n showFullscreenButton: boolean;\r\n showNavigation: boolean;\r\n isSinglePage: boolean;\r\n showThumbnails: boolean;\r\n isFullscreen: boolean;\r\n onToggleThumbnails: () => void;\r\n onToggleNavigation: () => void;\r\n onToggleFullscreen: () => void;\r\n customNavigationBarContent?: ReactNode;\r\n reportTitle?: string;\r\n isSustain?: boolean;\r\n thumbnailVariant: ThumbnailVariants;\r\n}\r\n\r\ntype ButtonsToShow = 'none' | 'thumbnail_only' | 'fullscreen_only' | 'nav_and_fullscreen' | 'all';\r\n\r\ninterface StyledSettingsProps {\r\n fullscreenAvailable: boolean;\r\n isSustain?: boolean;\r\n}\r\n\r\nconst StyledSettings = styled.div`\r\n display: flex;\r\n justify-content: ${(props) => (props.isSustain ? 'flex-start' : 'space-between')};\r\n align-items: ${(props) => (props.isSustain ? 'flex-start' : 'center')};\r\n padding: ${(props) => (props.fullscreenAvailable ? SPACING.MEDIUM : `0 0 ${SPACING.MEDIUM} ${SPACING.XX_SMALL}`)};\r\n border-bottom: 1px solid\r\n ${(props) => (props.fullscreenAvailable ? lighten(0.3, COLOR.MAIN.FORM_FIELD_DARK) : 'transparent')};\r\n background-color: ${(props) => (props.fullscreenAvailable ? COLOR.PRIMARY.WHITE : 'transparent')};\r\n`;\r\n\r\nconst CheckboxInputContainer = styled.div`\r\n display: flex;\r\n column-gap: ${SPACING.MEDIUM};\r\n min-width: 300px;\r\n`;\r\n\r\nconst FullScreenButton = styled.div`\r\n align-self: flex-end;\r\n flex-shrink: 0;\r\n`;\r\n\r\nconst ReportTitle = styled.div`\r\n flex-grow: 1;\r\n text-align: center;\r\n line-height: 1.5;\r\n font-size: 18px;\r\n font-weight: 600;\r\n white-space: nowrap;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n padding-left: 30px;\r\n padding-right: 30px;\r\n`;\r\n\r\ninterface StyledCheckbox {\r\n isSustain?: boolean;\r\n}\r\n\r\nconst StyledCheckbox = styled(CheckboxInput)`\r\n flex-shrink: 0;\r\n min-width: ${(props) => (props.isSustain ? '250px' : '')};\r\n`;\r\n\r\nconst StyledButton = styled(Button)`\r\n line-height: normal;\r\n border-radius: 5px;\r\n border-width: 0;\r\n font-weight: 600;\r\n column-gap: 5px;\r\n font-size: 13px;\r\n padding-bottom: 7px;\r\n padding-top: 8px;\r\n text-decoration: underline;\r\n text-underline-position: under;\r\n color: #031c44;\r\n background-color: #fff;\r\n\r\n &:hover:not(:disabled) {\r\n background-color: #f3f4f7;\r\n color: #031c44;\r\n }\r\n`;\r\n\r\nexport const PreviewNavigationButtons: React.FC> = ({\r\n showFullscreenButton,\r\n showNavigation,\r\n isSinglePage,\r\n showThumbnails,\r\n isFullscreen,\r\n onToggleThumbnails,\r\n onToggleNavigation,\r\n onToggleFullscreen,\r\n customNavigationBarContent,\r\n reportTitle,\r\n isSustain,\r\n thumbnailVariant,\r\n}) => {\r\n const [buttonsToShow, setButtonsToShow] = useState('none');\r\n\r\n useEffect(() => {\r\n if (isFullscreen) setButtonsToShow('none');\r\n else if (isSinglePage && showFullscreenButton) setButtonsToShow('fullscreen_only');\r\n else if (showFullscreenButton && thumbnailVariant !== 'hide') setButtonsToShow('all');\r\n else if (showFullscreenButton) setButtonsToShow('nav_and_fullscreen');\r\n else if (!isSinglePage && thumbnailVariant !== 'hide') setButtonsToShow('thumbnail_only');\r\n else setButtonsToShow('none');\r\n }, [showFullscreenButton, isSinglePage, isFullscreen]);\r\n\r\n const fullscreenButtonVisible = useMemo(() => {\r\n return buttonsToShow === 'all' || buttonsToShow === 'fullscreen_only' || buttonsToShow === 'nav_and_fullscreen';\r\n }, [buttonsToShow]);\r\n\r\n return (\r\n <>\r\n {(buttonsToShow !== 'none' || customNavigationBarContent) && (\r\n \r\n {buttonsToShow === 'thumbnail_only' && (\r\n \r\n )}\r\n {buttonsToShow === 'nav_and_fullscreen' && (\r\n \r\n )}\r\n {buttonsToShow === 'all' && (\r\n \r\n \r\n \r\n \r\n )}\r\n {customNavigationBarContent && !isFullscreen && !fullscreenButtonVisible && isSustain && (\r\n <>{customNavigationBarContent} \r\n )}\r\n {fullscreenButtonVisible && isSustain && {reportTitle}}\r\n {fullscreenButtonVisible && !isSustain && (\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n {fullscreenButtonVisible && isSustain && (\r\n \r\n \r\n \r\n Full screen mode\r\n \r\n \r\n )}\r\n \r\n )}\r\n \r\n );\r\n};\r\n","import * as React from 'react'; // eslint-disable-line\r\nimport styled from 'styled-components';\r\n\r\nimport Thumbnail, { PAGINATION_THUMBNAIL_WIDTH } from './atoms/thumbnail';\r\nimport { SPACING } from '../../packages/constants';\r\nimport { camelToKebab } from '../../../Scripts/Spotlight/Components/CamelToKebab';\r\nimport { PageDataProps } from './preview';\r\n\r\nexport interface PreviewPaginationProps {\r\n hasFullscreenOption: boolean;\r\n isFullscreen: boolean;\r\n pageData: PageDataProps[];\r\n showThumbnails: boolean;\r\n scrollOffset: number;\r\n onPageSelect: () => void;\r\n}\r\n\r\ninterface PaginationItemProps {\r\n showThumbnails?: boolean;\r\n}\r\n\r\ninterface PaginationProps {\r\n hasFullscreenOption: boolean;\r\n isFullscreen: boolean;\r\n}\r\n\r\nconst Pagination = styled.ul`\r\n box-sizing: border-box;\r\n height: ${(props) => (props.hasFullscreenOption ? (props.isFullscreen ? '100%' : 'calc(100% - 44px)') : '100%')};\r\n overflow-y: auto;\r\n padding: ${(props) =>\r\n `${SPACING.MEDIUM} ${SPACING.MEDIUM} 0 ${props.hasFullscreenOption ? SPACING.MEDIUM : SPACING.X_SMALL};`};\r\n width: ${(props) => (props.hasFullscreenOption ? `calc(${PAGINATION_THUMBNAIL_WIDTH} + 48px)` : `258px`)};\r\n`;\r\n\r\nconst PaginationItem = styled.li`\r\n list-style-type: none;\r\n margin: 0 0 ${(props) => (props.showThumbnails ? SPACING.LARGE : SPACING.X_SMALL)};\r\n padding: 0;\r\n width: 100%;\r\n`;\r\n\r\nexport const PreviewPagination = ({\r\n hasFullscreenOption,\r\n isFullscreen,\r\n pageData,\r\n showThumbnails,\r\n scrollOffset,\r\n onPageSelect,\r\n}: PreviewPaginationProps) => {\r\n return (\r\n \r\n {pageData.map((page: PageDataProps, index: number) => (\r\n \r\n \r\n \r\n ))}\r\n \r\n );\r\n};\r\n\r\nPreviewPagination.displayName = 'PreviewPagination';\r\n","import * as React from 'react';\r\nimport { useEffect, useState, useRef, MutableRefObject } from 'react';\r\n\r\nimport { TransformWrapper as ZoomableContentWrapper, ReactZoomPanPinchRef } from 'react-zoom-pan-pinch';\r\nimport styled, { ThemeProvider } from 'styled-components';\r\n\r\nimport { SPACING, COLOR, THEME } from '../../packages/constants';\r\nimport { Button } from '../button';\r\nimport { PreviewContent } from './preview-content';\r\nimport { PreviewNavigationButtons } from './preview-navigation-buttons';\r\nimport { PreviewPagination } from './preview-pagination';\r\n\r\nexport type ThumbnailVariants = 'show' | 'available' | 'hide';\r\n\r\nexport interface PreviewProps {\r\n /**\r\n * Page data\r\n */\r\n pageData: PageDataProps[];\r\n /**\r\n * Scroll listener\r\n */\r\n scrollListener: (e: any) => void;\r\n /**\r\n * Scroll ref\r\n */\r\n scrollRef: React.RefObject;\r\n /**\r\n * Show navigation?\r\n */\r\n showNavigation?: boolean;\r\n /**\r\n * Scroll offset\r\n */\r\n scrollOffset?: number;\r\n /**\r\n * Fixes the size of the page during loading.\r\n */\r\n isFixedSize?: boolean;\r\n /**\r\n * Show fullscreen capability?\r\n */\r\n hasFullscreen?: boolean;\r\n /**\r\n * Don't show the invisible page at bottom\r\n */\r\n isSinglePage?: boolean;\r\n /**\r\n * Limit how wide a page is allowed to be\r\n */\r\n maxPageWidth?: number;\r\n isSustain?: boolean;\r\n reportTitle?: string;\r\n customNavigationBarContent?: React.ReactNode;\r\n thumbnailVariant?: ThumbnailVariants;\r\n triggerThumbnailLoad?: () => void;\r\n}\r\n\r\ninterface PageWrapperProps {\r\n showNavigation?: boolean;\r\n hasFullscreen?: boolean;\r\n isFullscreen?: boolean;\r\n isSinglePage?: boolean;\r\n isPortrait?: boolean;\r\n hasFullscreenUseState?: boolean;\r\n}\r\n\r\nexport interface PageDataProps {\r\n id: string;\r\n content: string;\r\n title: string;\r\n pageType?: string;\r\n additionalPageNumber?: string;\r\n imageSrc?: string;\r\n isLoading?: boolean;\r\n isAdditionalPage?: boolean;\r\n map?: (e: any) => React.ReactNode;\r\n thumbnailIsLoading?: boolean;\r\n}\r\n\r\ninterface StyledPreviewInnerProps {\r\n isFullscreen?: boolean;\r\n showNavigation?: boolean;\r\n isSinglePage?: boolean;\r\n}\r\n\r\nconst StyledPreview = styled.div`\r\n background-color: ${COLOR.MAIN.LIGHT_GREY};\r\n height: ${(props) => (props.isSinglePage ? 'auto' : '100%')};\r\n`;\r\n\r\nconst StyledPreviewInner = styled.div`\r\n background-color: ${COLOR.MAIN.LIGHT_GREY};\r\n display: flex;\r\n height: ${(props) => (props.isSinglePage ? 'auto' : '100%')};\r\n position: relative;\r\n padding-left: ${(props) => (props.showNavigation && props.isFullscreen ? SPACING.MEDIUM : undefined)};\r\n width: 100%;\r\n`;\r\n\r\nconst PageViewPort = styled.div`\r\n height: 100%;\r\n padding: ${(props) => (props.isSinglePage ? `0px 0px` : `${SPACING.MEDIUM} 0px 0px`)};\r\n width: ${(props) => (props.isSinglePage ? '100%' : 'calc(100% - 200px)')};\r\n overflow-y: hidden;\r\n overflow-x: auto;\r\n box-sizing: border-box;\r\n`;\r\n\r\nconst ZoomTools = styled.div.attrs((props: { isSinglePage: boolean }) => props)`\r\n display: flex;\r\n position: absolute;\r\n z-index: 2;\r\n bottom: ${(props) => (props.isSinglePage ? '-5px' : '5px')}; // if there's space below, put it there\r\n padding: 6px 6px 6px 10px;\r\n`;\r\n\r\nconst ZoomButton = styled(Button)`\r\n margin-right: 6px;\r\n font-size: 14px;\r\n padding: 6px;\r\n height: 22px;\r\n`;\r\n\r\nexport const Preview = React.forwardRef(\r\n (\r\n {\r\n pageData,\r\n showNavigation,\r\n scrollOffset = -55,\r\n scrollRef,\r\n scrollListener,\r\n isFixedSize,\r\n hasFullscreen = false,\r\n isSinglePage = false,\r\n maxPageWidth,\r\n reportTitle,\r\n customNavigationBarContent,\r\n isSustain,\r\n thumbnailVariant,\r\n triggerThumbnailLoad,\r\n ...props\r\n },\r\n ref,\r\n ) => {\r\n const [showNavigationToggle, setNavigationToggle] = useState(showNavigation);\r\n const [thumbnailToggle, setThumbnailToggle] = useState(thumbnailVariant === 'show');\r\n const [data, setData] = useState(pageData);\r\n const [isFullscreen, setFullscreen] = useState(false);\r\n const [hasFullscreenUseState, setHasFullscreen] = useState(hasFullscreen);\r\n const styledPreviewInnerRef = useRef() as MutableRefObject;\r\n const [isPortrait, setIsPortrait] = useState(false);\r\n const transformComponentRef = useRef(null);\r\n\r\n const handleFullscreen = () => {\r\n // taken from https://davidwalsh.name/fullscreen\r\n // i cant believe this is still a thing...\r\n function launchIntoFullscreen(element: any) {\r\n if (element.requestFullscreen) {\r\n element.requestFullscreen();\r\n } else if (element.mozRequestFullScreen) {\r\n element.mozRequestFullScreen();\r\n } else if (element.webkitRequestFullscreen) {\r\n element.webkitRequestFullscreen();\r\n } else if (element.msRequestFullscreen) {\r\n element.msRequestFullscreen();\r\n }\r\n }\r\n\r\n function exitFullscreen() {\r\n if (document.exitFullscreen) {\r\n document.exitFullscreen();\r\n // @ts-ignore\r\n } else if (document.mozCancelFullScreen) {\r\n // @ts-ignore\r\n document.mozCancelFullScreen();\r\n // @ts-ignore\r\n } else if (document.webkitExitFullscreen) {\r\n // @ts-ignore\r\n document.webkitExitFullscreen();\r\n }\r\n }\r\n\r\n if (!document.fullscreenElement) {\r\n launchIntoFullscreen(styledPreviewInnerRef.current);\r\n } else {\r\n exitFullscreen();\r\n }\r\n };\r\n\r\n const resetZoomLocation = () => {\r\n if (transformComponentRef.current) {\r\n transformComponentRef.current.resetTransform();\r\n }\r\n };\r\n\r\n const toggleThumbnails = () => {\r\n if (!thumbnailToggle && triggerThumbnailLoad) {\r\n triggerThumbnailLoad();\r\n }\r\n setThumbnailToggle(!thumbnailToggle);\r\n };\r\n\r\n useEffect(() => {\r\n setNavigationToggle(showNavigation);\r\n setHasFullscreen(hasFullscreen);\r\n setData(pageData);\r\n\r\n if (styledPreviewInnerRef.current) {\r\n // @ts-ignore\r\n styledPreviewInnerRef.current.addEventListener('fullscreenchange', () => {\r\n if (document.fullscreenElement) {\r\n setFullscreen(true);\r\n } else {\r\n setFullscreen(false);\r\n }\r\n });\r\n }\r\n }, [showNavigation, hasFullscreen, pageData, styledPreviewInnerRef]);\r\n\r\n useEffect(() => {\r\n data.forEach((page) => {\r\n if (page.id === 'Performance') setIsPortrait(true);\r\n });\r\n });\r\n\r\n return (\r\n \r\n setNavigationToggle(!showNavigationToggle)}\r\n onToggleFullscreen={handleFullscreen}\r\n customNavigationBarContent={customNavigationBarContent}\r\n reportTitle={reportTitle}\r\n isSustain={isSustain}\r\n thumbnailVariant={thumbnailVariant ?? 'show'}\r\n />\r\n \r\n {showNavigationToggle && (\r\n \r\n )}\r\n \r\n \r\n {({ zoomIn, zoomOut, resetTransform }) => (\r\n <>\r\n \r\n \r\n \r\n zoomOut(0.25)}>\r\n {'\\u2212'}\r\n \r\n zoomIn(0.25)}>\r\n {'\\u002B'}\r\n \r\n resetTransform()}>\r\n RESET\r\n \r\n \r\n \r\n \r\n )}\r\n \r\n \r\n \r\n \r\n );\r\n },\r\n);\r\nPreview.displayName = 'Preview';\r\n","export { Preview } from './preview';\r\nexport type { ThumbnailVariants } from './preview';\r\n\r\nexport const PreviewDataStub = [\r\n {\r\n id: '0000',\r\n title: 'Cover',\r\n thumbnailIsLoading: true,\r\n isLoading: false,\r\n content: '
    0000
    ',\r\n },\r\n {\r\n id: '0000_1',\r\n title: 'Cover',\r\n thumbnailIsLoading: false,\r\n isLoading: false,\r\n isAdditionalPage: true,\r\n additionalPageNumber: '1',\r\n content: '
    0000
    ',\r\n },\r\n {\r\n id: '1111',\r\n title: 'Table of Contents',\r\n pageType: 'TableOfContents',\r\n thumbnailIsLoading: true,\r\n isLoading: true,\r\n content: '
    1111
    ',\r\n },\r\n {\r\n id: '2222',\r\n title: 'Profit and Loss',\r\n pageType: 'PandLPage',\r\n thumbnailIsLoading: true,\r\n isLoading: true,\r\n content: '
    2222
    ',\r\n },\r\n {\r\n id: '3333',\r\n title: 'Balance Sheet',\r\n pageType: 'BSPage',\r\n thumbnailIsLoading: true,\r\n isLoading: true,\r\n content: '
    3333
    ',\r\n },\r\n {\r\n id: '4444',\r\n title: 'Balance Sheet',\r\n pageType: 'BSPage',\r\n thumbnailIsLoading: true,\r\n isLoading: true,\r\n content: '
    4444
    ',\r\n },\r\n {\r\n id: '5555',\r\n title: 'Balance Sheet',\r\n pageType: 'BSPage',\r\n thumbnailIsLoading: true,\r\n isLoading: true,\r\n content: '
    5555
    ',\r\n },\r\n {\r\n id: '6666',\r\n title: 'Balance Sheet',\r\n pageType: 'BSPage',\r\n thumbnailIsLoading: true,\r\n isLoading: true,\r\n content: '
    6666
    ',\r\n },\r\n {\r\n id: '7777',\r\n title: 'Balance Sheet',\r\n pageType: 'BSPage',\r\n thumbnailIsLoading: true,\r\n isLoading: true,\r\n content: '
    7777
    ',\r\n },\r\n {\r\n id: '8888',\r\n title: 'Balance Sheet',\r\n pageType: 'BSPage',\r\n thumbnailIsLoading: true,\r\n isLoading: true,\r\n content: '
    8888
    ',\r\n },\r\n {\r\n id: '9999',\r\n title: 'Balance Sheet',\r\n pageType: 'BSPage',\r\n thumbnailIsLoading: true,\r\n isLoading: true,\r\n content: '
    9999
    ',\r\n },\r\n];\r\n\r\nexport const PreviewDashboardDataStub = [\r\n {\r\n id: '0000',\r\n title: 'Dashboard',\r\n thumbnailIsLoading: true,\r\n isLoading: false,\r\n content: '
    0000
    ',\r\n },\r\n];\r\n\r\nfunction outputText(amount = 25) {\r\n let textString = ``;\r\n for (let i = 0; i < amount; i++) {\r\n textString += `

    lorem ipsum dolor set

    `;\r\n }\r\n return textString;\r\n}\r\n\r\nexport const PreviewDashboardPerformanceDataStub = [\r\n {\r\n id: 'Performance',\r\n title: 'Performance Dashboard',\r\n thumbnailIsLoading: false,\r\n isLoading: false,\r\n content: `

    Performance layout (portrait)

    \r\n${outputText(70)}\r\n`,\r\n },\r\n];\r\n","import * as React from 'react';\r\n\r\nimport SVGBase from '../svg-base/svg-base';\r\n\r\nexport interface StarProps {\r\n fill?: string;\r\n title?: string;\r\n height?: string;\r\n width?: string;\r\n viewBox?: string;\r\n}\r\n\r\nconst CircleWithPlus: React.FunctionComponent> = ({\r\n fill,\r\n title,\r\n height,\r\n width,\r\n ...rest\r\n}): any => (\r\n \r\n \r\n \r\n \r\n \r\n);\r\n\r\nexport default CircleWithPlus;\r\n","import CircleWithPlus from './circle-with-plus';\r\n\r\nexport * from './circle-with-plus';\r\nexport default CircleWithPlus;\r\n","import * as React from 'react';\r\n\r\nimport SVGBase from '../svg-base/svg-base';\r\n\r\nexport interface CircleWithMinusProps {\r\n fill?: string;\r\n title?: string;\r\n height?: string;\r\n width?: string;\r\n viewBox?: string;\r\n}\r\n\r\nconst CircleWithMinus: React.FunctionComponent> = ({\r\n fill,\r\n title,\r\n height,\r\n width,\r\n ...rest\r\n}): any => (\r\n \r\n \r\n \r\n \r\n);\r\n\r\nexport default CircleWithMinus;\r\n","import CircleWithMinus from './circle-with-minus';\r\n\r\nexport * from './circle-with-minus';\r\nexport default CircleWithMinus;\r\n","import * as React from 'react';\r\n\r\nexport interface EliminationProps {\r\n fill?: string;\r\n title?: string;\r\n height?: string;\r\n width?: string;\r\n viewBox?: string;\r\n}\r\n\r\nconst Elimination: React.FunctionComponent> = ({\r\n height,\r\n width,\r\n ...rest\r\n}): any => (\r\n \r\n);\r\n\r\nexport default Elimination;\r\n","import Elimination from './elimination';\r\n\r\nexport * from './elimination';\r\nexport default Elimination;\r\n","import styled from 'styled-components';\r\n\r\nimport { COLOR } from '../../../../packages/constants';\r\nimport CircleWithPlus from '../../../../packages/icons/circle-with-plus';\r\nimport CircleWithMinus from '../../../../packages/icons/circle-with-minus';\r\nimport Elimination from '../../../../packages/icons/elimination';\r\nimport Edit from '../../../../packages/icons/edit';\r\nimport ChevronLeft from '../../../../packages/icons/chevron-left';\r\nimport ChevronRight from '../../../../packages/icons/chevron-right';\r\n\r\nconst iconWidth = '12px';\r\nexport const StyledPlus = styled(CircleWithPlus)`\r\n fill: ${COLOR.BRAND.REPORTING};\r\n width: ${iconWidth};\r\n height: ${iconWidth};\r\n`;\r\n\r\nexport const StyledMinus = styled(CircleWithMinus)`\r\n fill: ${COLOR.BRAND.REPORTING};\r\n width: ${iconWidth};\r\n height: ${iconWidth};\r\n`;\r\n\r\nexport const StyledElimination = styled(Elimination)`\r\n fill: ${COLOR.BRAND.REPORTING};\r\n width: ${iconWidth};\r\n height: ${iconWidth};\r\n`;\r\n\r\nexport const StyledEdit = styled(Edit)`\r\n fill: ${COLOR.DATAGRID.DATAGRID_TEXT};\r\n width: ${iconWidth};\r\n height: ${iconWidth};\r\n position: absolute;\r\n bottom: 5px;\r\n right: 2px;\r\n z-index: 0;\r\n`;\r\n\r\nconst chevronAttrs = `\r\n fill: ${COLOR.DATAGRID.DATAGRID_TEXT};\r\n width: 10px;\r\n height: 10px;\r\n`;\r\n\r\nexport const StyledChevronRight = styled(ChevronRight)`\r\n ${chevronAttrs}\r\n`;\r\n\r\nexport const StyledChevronLeft = styled(ChevronLeft)`\r\n ${chevronAttrs}\r\n`;\r\n","import styled from 'styled-components';\r\n\r\nimport { SPACING, COLOR } from '../../../../packages/constants';\r\nimport { StyledPlus, StyledMinus, StyledElimination } from '../icons/icons';\r\n\r\nexport const AccountRow = styled.tr`\r\n width: 100%;\r\n\r\n ${StyledElimination} {\r\n margin-right: ${SPACING.X_SMALL};\r\n }\r\n`;\r\n\r\nexport const ToggleAccountRow = styled.button`\r\n margin: 0;\r\n border: 0;\r\n background-color: transparent;\r\n cursor: pointer;\r\n display: flex;\r\n align-content: center;\r\n padding: 0;\r\n font-weight: 700;\r\n font-size: inherit;\r\n line-height: 15px;\r\n color: ${COLOR.DATAGRID.DATAGRID_TEXT};\r\n\r\n ${StyledPlus},\r\n ${StyledMinus},\r\n ${StyledElimination} {\r\n margin-right: ${SPACING.X_SMALL};\r\n }\r\n\r\n .icon--toggle-row {\r\n display: inline-flex;\r\n }\r\n`;\r\n\r\nexport type HandleToggleAccountRowFn = (id: string) => void;\r\n","import styled from 'styled-components';\r\nimport { COLOR, FONT_SIZE, SPACING } from '../../../../packages/constants';\r\nimport { ToggleAccountRow } from '../account-row/account-row';\r\n\r\nexport interface AccountCellProps {\r\n canBeToggled?: boolean; // can toggle visibility\r\n hasBorderRight?: boolean;\r\n hasTextAlignedLeft?: boolean;\r\n hasNoPadding?: boolean;\r\n indent?: boolean;\r\n isBudget?: boolean; // yellow cell isBudget\r\n isEditable?: boolean; // can be edited\r\n isGroup?: boolean; // is a group cell type\r\n isHeader?: boolean; // header styles\r\n isLocked?: boolean; // show lock symbol\r\n isNumber?: boolean; // text-aligned right\r\n isTotal?: boolean; // grey cell\r\n minWidth?: number;\r\n isDisplayed?: boolean;\r\n}\r\n\r\nexport const AccountCell = styled.div`\r\n box-sizing: border-box;\r\n border-top: 1px solid ${(props) => (props.isGroup ? COLOR.DATAGRID.DATAGRID_DIVIDER_LINE : COLOR.MAIN.FORM_FIELD)};\r\n border-left: 1px solid ${COLOR.MAIN.FORM_FIELD};\r\n background-color: ${(props) =>\r\n props.isHeader\r\n ? COLOR.PRIMARY.WHITE\r\n : props.isBudget\r\n ? COLOR.DATAGRID.DATAGRID_BUDGET_BG\r\n : props.isTotal\r\n ? COLOR.DATAGRID.DATAGRID_TOTAL_BG\r\n : COLOR.PRIMARY.WHITE};\r\n display: ${(props) => ((props.canBeToggled && props.isDisplayed) || !props.canBeToggled ? 'inline-flex' : 'none')};\r\n padding: ${(props) =>\r\n props.isGroup && !props.isNumber && !props.canBeToggled\r\n ? '0'\r\n : props.indent\r\n ? `${SPACING.SMALL} ${SPACING.SMALL} ${SPACING.SMALL} ${SPACING.XX_LARGE}`\r\n : props.hasNoPadding\r\n ? '0'\r\n : SPACING.SMALL};\r\n font-size: ${FONT_SIZE.X_SMALL};\r\n font-weight: ${(props) => (props.isHeader ? '700' : '400')};\r\n justify-content: ${(props) =>\r\n props.hasTextAlignedLeft\r\n ? 'flex-start'\r\n : props.isHeader && !props.isTotal\r\n ? 'center'\r\n : props.isNumber\r\n ? 'flex-end'\r\n : props.isGroup\r\n ? 'flex-end'\r\n : props.isTotal && props.isHeader\r\n ? 'space-between'\r\n : 'flex-start'};\r\n line-height: 15px;\r\n width: 100%;\r\n min-width: ${(props) => (props.minWidth ? `${props.minWidth}px` : props.isTotal ? '100%' : '95px')};\r\n position: relative;\r\n color: ${COLOR.DATAGRID.DATAGRID_TEXT};\r\n\r\n &:last-child {\r\n border-right: 1px solid ${COLOR.MAIN.FORM_FIELD};\r\n }\r\n\r\n ${ToggleAccountRow} {\r\n padding: ${SPACING.SMALL};\r\n }\r\n\r\n input[type='checkbox'] {\r\n margin: 0;\r\n margin-top: -1px;\r\n position: relative;\r\n top: 2px;\r\n height: 13px;\r\n width: 13px;\r\n }\r\n\r\n ${({ isLocked }) =>\r\n isLocked &&\r\n `\r\n padding-left ${SPACING.LARGE};\r\n \r\n &::before {\r\n position: absolute;\r\n font-family: 'FontAwesome', sans-serif;\r\n bottom: ${SPACING.X_SMALL};\r\n left: ${SPACING.X_SMALL};\r\n content: '\\f023';\r\n color: ${COLOR.MAIN.DARK_GREY};\r\n opacity: 0.3;\r\n }`}\r\n`;\r\n\r\nexport const TruncateText = styled.div`\r\n display: block;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n overflow: hidden;\r\n width: 269px;\r\n text-align: left;\r\n`;\r\n","import * as React from 'react'; // eslint-disable-line\r\nimport { useState, useEffect, useRef } from 'react';\r\nimport styled from 'styled-components';\r\nimport { COLOR, FONT_SIZE, FONT_STACK, SPACING } from '../../../../packages/constants';\r\nimport { LoadingSpinner, Icon } from '../../../loading-spinner';\r\nimport { AccountCell, AccountCellProps } from '../account-cell/account-cell';\r\nimport { StyledEdit } from '../icons/icons';\r\n\r\nexport interface AccountCellInputProps extends AccountCellInputDivProps {\r\n cellId: string;\r\n inputProps: InputProps;\r\n}\r\n\r\ninterface AccountCellInputDivProps extends AccountCellProps {\r\n isSaving?: boolean;\r\n}\r\n\r\ninterface InputProps extends React.HTMLProps {\r\n dataId: string;\r\n saveFn: SaveCallbackFn;\r\n}\r\n\r\nexport type SaveCallbackFn = ({ cellId, value }: { cellId: string; value: string }) => Promise;\r\n\r\nexport interface SaveCallbackFnResponse {\r\n data: {\r\n value: string | number;\r\n };\r\n}\r\n\r\nconst StyledLoadingSpinner = styled(LoadingSpinner)`\r\n position: absolute;\r\n bottom: 5px;\r\n right: 2px;\r\n\r\n ${Icon} {\r\n margin: 0;\r\n }\r\n`;\r\n\r\nconst AccountCellInputDiv = styled(AccountCell)``;\r\n\r\nconst InvisibleInput = styled.input`\r\n border: 1px solid transparent;\r\n background-color: transparent;\r\n font-size: ${FONT_SIZE.X_SMALL};\r\n font-family: ${FONT_STACK};\r\n padding: ${SPACING.X_SMALL} ${SPACING.SMALL};\r\n margin: 0;\r\n width: 140px;\r\n z-index: 1;\r\n color: ${COLOR.DATAGRID.DATAGRID_TEXT};\r\n\r\n &:hover + ${StyledEdit} {\r\n fill: ${COLOR.BRAND.REPORTING};\r\n }\r\n\r\n &:focus {\r\n box-shadow: 0 0 3px inset ${COLOR.BRAND.REPORTING};\r\n\r\n + ${StyledEdit} {\r\n fill: ${COLOR.BRAND.REPORTING};\r\n }\r\n }\r\n`;\r\n\r\nconst updateCell = ({\r\n e,\r\n value,\r\n setCellValue,\r\n setLastSavedValue,\r\n lastModifiedRef,\r\n}: {\r\n e: React.BaseSyntheticEvent;\r\n value: string | number;\r\n setCellValue: React.Dispatch>;\r\n setLastSavedValue: React.Dispatch>;\r\n lastModifiedRef: React.MutableRefObject;\r\n}) => {\r\n /**\r\n * Before updating the cell, ensure the user is not currently editing it\r\n * by comparing when it was lastModifed to when the event fired.\r\n * This is necessary to prevent overwriting subsequent changes the user made\r\n * while the callback was beind handled.\r\n * It's important that lastModified is a ref value so it is live rather than\r\n * when the function was called.\r\n */\r\n if (lastModifiedRef.current < e.timeStamp) {\r\n setCellValue(value); // write to the cell the new value\r\n }\r\n // always update the lastSavedValue\r\n setLastSavedValue(value);\r\n};\r\n\r\n/**\r\n * Handles saving and updating the cell saving state and value accordingly\r\n * Will save if it is passed an unsaved value\r\n * Calls a saveCallbackFn passed in to it so the value can be persisted.\r\n */\r\nconst saveHandler = async ({\r\n e,\r\n cellId,\r\n lastSavedValue,\r\n lastModifiedRef,\r\n setCellValue,\r\n setLastAttemptedSaveValue,\r\n setLastSavedValue,\r\n saveCallbackFn,\r\n isMountedRef,\r\n}: {\r\n e: React.BaseSyntheticEvent;\r\n cellId: string;\r\n lastSavedValue: string | number | string[];\r\n lastModifiedRef: React.MutableRefObject;\r\n setCellValue: React.Dispatch>;\r\n setLastAttemptedSaveValue: React.Dispatch>;\r\n setLastSavedValue: React.Dispatch>;\r\n saveCallbackFn: SaveCallbackFn;\r\n isMountedRef: React.MutableRefObject;\r\n}) => {\r\n e.persist(); // react 16 uses event pooling https://reactjs.org/docs/legacy-event-pooling.html\r\n const value = e.target.value;\r\n setLastAttemptedSaveValue(value);\r\n // only save if the value has changed from when it was last saved\r\n if (lastSavedValue !== value) {\r\n try {\r\n const { data } = await saveCallbackFn({ cellId, value });\r\n if (!isMountedRef.current) {\r\n return;\r\n }\r\n // write the value back to the cell to ensure consistency from the server to client\r\n updateCell({ e, value: data.value, setCellValue, setLastSavedValue, lastModifiedRef });\r\n } catch {\r\n console.error('Failed to save', cellId, value);\r\n }\r\n }\r\n};\r\n\r\nconst keyHandler = ({\r\n e,\r\n saveFn,\r\n restoreFn,\r\n}: {\r\n e: React.KeyboardEvent;\r\n saveFn: () => Promise;\r\n restoreFn: () => void;\r\n}) => {\r\n if (e.key === 'Enter') {\r\n saveFn();\r\n } else if (e.key === 'Escape' || e.key === 'Esc') {\r\n restoreFn();\r\n }\r\n};\r\n\r\nexport const AccountCellInput = ({\r\n cellId,\r\n inputProps,\r\n hasTextAlignedLeft,\r\n isGroup,\r\n canBeToggled,\r\n isDisplayed,\r\n hasNoPadding,\r\n}: AccountCellInputProps) => {\r\n const [cellValue, setCellValue] = useState(\r\n inputProps.value === null || typeof inputProps.value === 'undefined' ? '' : inputProps.value,\r\n ); // the current value\r\n const [lastAttemptedSaveValue, setLastAttemptedSaveValue] = useState(\r\n inputProps.value === null || typeof inputProps.value === 'undefined' ? '' : inputProps.value,\r\n );\r\n const [lastSavedValue, setLastSavedValue] = useState(\r\n inputProps.value === null || typeof inputProps.value === 'undefined' ? '' : inputProps.value,\r\n ); // so we can compare or restore the last saved value\r\n const [savingState, setSavingState] = useState({ value: false, lastAttemptedSaveDate: 0 }); // just for display purposes, may have actually completed saving as it has a minimum duration\r\n\r\n const isSaving = savingState.value;\r\n const lastModifiedRef = useRef(0);\r\n const savingTimerRef = useRef(0);\r\n const isMountedRef = useRef(false);\r\n\r\n useEffect(() => {\r\n isMountedRef.current = true;\r\n return () => {\r\n isMountedRef.current = false;\r\n };\r\n }, []);\r\n\r\n /**\r\n * if we get passed in a new value, we should use that value\r\n */\r\n useEffect(() => {\r\n setCellValue(inputProps.value || '');\r\n }, [inputProps.value]);\r\n\r\n /**\r\n * ensure that given the value has not changed (saving the most recent value), saving state isn't set false for a min duration\r\n * if the value has changed (there's a new save pending), the saving state can be cleared\r\n */\r\n useEffect(() => {\r\n if (!isMountedRef.current) {\r\n return;\r\n }\r\n\r\n const currentValueMatchesAttemptedSave = cellValue === lastAttemptedSaveValue;\r\n const attemptedSaveValueMatchesSaved = lastAttemptedSaveValue === lastSavedValue;\r\n const showAsSaving =\r\n currentValueMatchesAttemptedSave && lastAttemptedSaveValue !== null && !attemptedSaveValueMatchesSaved;\r\n const now = Date.now();\r\n const lastAttemptedSaveDate =\r\n lastAttemptedSaveValue !== null && !attemptedSaveValueMatchesSaved\r\n ? now\r\n : savingState.lastAttemptedSaveDate; // the date the user last tried to save a value different to the currently saved value\r\n const diff = now - lastAttemptedSaveDate; // how long it has been since user last tried to save\r\n const minDuration = 500; // minimum time to show saving state for\r\n\r\n // when we're saving the last entered value and clearing the save state a minimum duration must have passed\r\n if (cellValue === lastAttemptedSaveValue && showAsSaving === false) {\r\n savingTimerRef.current = window.setTimeout(() => {\r\n setSavingState({ value: showAsSaving, lastAttemptedSaveDate });\r\n }, Math.max(0, minDuration - diff));\r\n } else {\r\n setSavingState({ value: showAsSaving, lastAttemptedSaveDate });\r\n }\r\n // cleanup\r\n return () => {\r\n window.clearTimeout(savingTimerRef.current);\r\n };\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [cellValue, lastAttemptedSaveValue, lastSavedValue]);\r\n\r\n return (\r\n \r\n {\r\n setCellValue(e.currentTarget.value);\r\n lastModifiedRef.current = e.timeStamp;\r\n }}\r\n onBlur={(e) =>\r\n saveHandler({\r\n e,\r\n cellId,\r\n // TODO: fix issue #292\r\n // @ts-ignore\r\n lastSavedValue,\r\n lastModifiedRef,\r\n // TODO: fix issue #292\r\n // @ts-ignore\r\n setCellValue,\r\n // TODO: fix issue #292\r\n // @ts-ignore\r\n setLastAttemptedSaveValue,\r\n // TODO: fix issue #292\r\n // @ts-ignore\r\n setLastSavedValue,\r\n saveCallbackFn: inputProps.saveFn,\r\n isMountedRef,\r\n })\r\n }\r\n onKeyDown={(e) =>\r\n keyHandler({\r\n e,\r\n // TODO: fix issue #292\r\n // @ts-ignore\r\n saveFn: saveHandler.bind(e, {\r\n e,\r\n cellId,\r\n lastSavedValue,\r\n lastModifiedRef,\r\n setCellValue,\r\n setLastAttemptedSaveValue,\r\n setLastSavedValue,\r\n saveCallbackFn: inputProps.saveFn,\r\n isMountedRef,\r\n }),\r\n restoreFn: setCellValue.bind(e, lastAttemptedSaveValue === null ? '' : lastAttemptedSaveValue),\r\n })\r\n }\r\n data-test-id={inputProps.dataId}\r\n />\r\n {!isSaving && }\r\n {isSaving && }\r\n \r\n );\r\n};\r\n","import classNames from 'classnames';\r\nimport React, { useEffect, useRef } from 'react';\r\nimport styled from 'styled-components';\r\nimport { COLOR } from '../../../../packages/constants';\r\nimport { camelToKebab } from '../../../../../Scripts/Spotlight/Components/CamelToKebab';\r\nimport {\r\n AccountChildrenType,\r\n AccountsEliminationsActions,\r\n AccountsEliminationsActionTypes,\r\n AccountsEliminationsState,\r\n AccountType,\r\n columnWidths,\r\n DataGridModes,\r\n DetailsColumns,\r\n ExpansionMode,\r\n isExpanded,\r\n} from '../../data-grid';\r\nimport { AccountCellInput, SaveCallbackFn } from '../account-cell-input/account-cell-input';\r\nimport { AccountCell, TruncateText } from '../account-cell/account-cell';\r\nimport { AccountRow, HandleToggleAccountRowFn, ToggleAccountRow } from '../account-row/account-row';\r\nimport { StyledElimination, StyledMinus, StyledPlus } from '../icons/icons';\r\n\r\nexport interface AccountsListProps {\r\n dataId: string;\r\n /**\r\n * The accounts to display\r\n */\r\n accounts: AccountType[];\r\n /**\r\n * Columns to display within the details pane\r\n */\r\n detailsColumns?: DetailsColumns[];\r\n /**\r\n * External function to update displayName\r\n */\r\n displayNameChange?: SaveCallbackFn;\r\n /**\r\n * A callback to\r\n */\r\n gridEliminationsDispatch?: any;\r\n /**\r\n * Expand/Collapse all rows\r\n */\r\n expansionMode?: ExpansionMode;\r\n /**\r\n * External function to toggle expand/collapse of a row\r\n */\r\n handleToggleAccountRow: HandleToggleAccountRowFn;\r\n /**\r\n * Display the eliminated icon on eliminated account rows\r\n */\r\n identifyEliminatedAccounts?: boolean;\r\n /**\r\n * Show details columns for accounts\r\n */\r\n showAccountDetails?: boolean;\r\n /**\r\n * The interaction mode of the grid\r\n */\r\n mode: DataGridModes;\r\n accountsEliminationsState?: AccountsEliminationsState;\r\n accountsEliminationsDispatch?: React.Dispatch;\r\n}\r\n\r\nexport const AccountsListTable = styled.table`\r\n border-top: 1px solid ${COLOR.MAIN.FORM_FIELD};\r\n\r\n ${AccountRow}:first-child ${AccountCell} {\r\n border-top: none;\r\n }\r\n`;\r\n\r\nconst AccountName = styled(TruncateText)`\r\n width: 258px;\r\n line-height: 15px;\r\n`;\r\n\r\nconst AccountChildName = styled(TruncateText)<{ identifyEliminatedAccounts: boolean }>`\r\n width: ${(props) => (props.identifyEliminatedAccounts ? '252px' : '269px')};\r\n`;\r\n\r\nconst nbsp = '\\u00A0';\r\n\r\nconst EliminateAccountCheckbox = React.forwardRef(\r\n (\r\n {\r\n dataId,\r\n account,\r\n parentAccount,\r\n checked,\r\n accountsEliminationsDispatch,\r\n }: {\r\n dataId: string;\r\n account: AccountType | AccountChildrenType;\r\n parentAccount?: AccountType;\r\n checked: boolean;\r\n accountsEliminationsDispatch: any;\r\n },\r\n ref: any,\r\n ) => {\r\n const update = () => {\r\n accountsEliminationsDispatch({\r\n type: AccountsEliminationsActionTypes.TOGGLE_ELIMINATION,\r\n account: account,\r\n parentAccount: parentAccount,\r\n });\r\n };\r\n\r\n return (\r\n \r\n );\r\n },\r\n);\r\nEliminateAccountCheckbox.displayName = 'EliminateAccountCheckbox';\r\n\r\nexport const AccountsList = ({\r\n accounts,\r\n detailsColumns = [],\r\n displayNameChange,\r\n expansionMode = ExpansionMode.expanded,\r\n handleToggleAccountRow,\r\n identifyEliminatedAccounts = false,\r\n showAccountDetails = false,\r\n mode = DataGridModes.Default,\r\n dataId,\r\n accountsEliminationsState,\r\n accountsEliminationsDispatch,\r\n}: AccountsListProps): JSX.Element => {\r\n const arrayBuffer = 100; // prevent ref collision by spacing the array, assumes no account has more than this many children\r\n const checkboxesRef = useRef<(HTMLInputElement | null)[]>([]);\r\n\r\n useEffect(() => {\r\n // set the indeterminate state of the checkbox elements\r\n checkboxesRef.current.forEach((el) => {\r\n if (!el || el.type !== 'checkbox') {\r\n return;\r\n }\r\n el.indeterminate = false;\r\n const accountId = el.getAttribute('data-account-id');\r\n if (\r\n accountId !== null &&\r\n accountsEliminationsState &&\r\n accountsEliminationsState.indeterminateEliminations.includes(accountId)\r\n ) {\r\n el.indeterminate = true;\r\n }\r\n });\r\n });\r\n\r\n return (\r\n \r\n \r\n {accounts.map((account: AccountType, i: number) => (\r\n \r\n \r\n {mode === DataGridModes.EditEliminations && (\r\n \r\n \r\n \r\n {account.canEliminate ? (\r\n (checkboxesRef.current[i] = el)}\r\n />\r\n ) : (\r\n nbsp\r\n )}\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n {account.children.length ? (\r\n handleToggleAccountRow(account.id)}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n {identifyEliminatedAccounts &&\r\n account.children.find((x) => x.isEliminated) && (\r\n \r\n )}\r\n \r\n {account.name}\r\n \r\n \r\n ) : (\r\n {account.name}\r\n )}\r\n \r\n \r\n {detailsColumns.includes(DetailsColumns.ReportCode) && (\r\n \r\n \r\n {account.reportCode}\r\n \r\n \r\n )}\r\n {detailsColumns.includes(DetailsColumns.DisplayName) &&\r\n typeof displayNameChange === 'function' && (\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n {account.children.map((accountChild: AccountChildrenType, j: number) => (\r\n \r\n {mode === DataGridModes.EditEliminations && (\r\n \r\n \r\n \r\n {accountChild.canEliminate ? (\r\n \r\n (checkboxesRef.current[(i + 1) * arrayBuffer + j] = el)\r\n }\r\n />\r\n ) : (\r\n nbsp\r\n )}\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n {identifyEliminatedAccounts && accountChild.isEliminated && (\r\n \r\n )}\r\n {`${accountChild.name}`}\r\n \r\n \r\n {detailsColumns.includes(DetailsColumns.ReportCode) && (\r\n \r\n \r\n {nbsp}\r\n \r\n \r\n )}\r\n {detailsColumns.includes(DetailsColumns.DisplayName) &&\r\n typeof displayNameChange === 'function' && (\r\n \r\n \r\n {nbsp}\r\n \r\n \r\n )}\r\n \r\n ))}\r\n \r\n ))}\r\n \r\n \r\n );\r\n};\r\n","import styled from 'styled-components';\r\nimport { COLOR } from '../../../../packages/constants';\r\n\r\ninterface AccountsPanelProps {\r\n width: number;\r\n}\r\n\r\nexport const AccountsPanel = styled.div`\r\n min-width: ${(props) => `${props.width}px`};\r\n display: flex;\r\n flex-direction: column;\r\n position: relative;\r\n\r\n &::after {\r\n border-left: 1px solid ${COLOR.MAIN.FORM_FIELD};\r\n content: '';\r\n position: absolute;\r\n bottom: 0;\r\n left: 0;\r\n width: 1px;\r\n height: 17px;\r\n }\r\n`;\r\n","import styled from 'styled-components';\r\nimport { COLOR } from '../../../../packages/constants';\r\nimport { AccountCell } from '../account-cell/account-cell';\r\n\r\ninterface StyledScrollbarProps {\r\n dataGridWidth: number | null;\r\n}\r\ninterface ScrollProps {\r\n disabled: boolean;\r\n}\r\n\r\n/* removes the default scroll bar to the data grid table for: */\r\nexport const removeScrollbar = `\r\n /* - IE and Edge */\r\n -ms-overflow-style: none;\r\n /* - Firefox */\r\n scrollbar-width: none;\r\n /* - Webkit */\r\n &::-webkit-scrollbar {\r\n display: none;\r\n }\r\n`;\r\n\r\nexport const DataGridScroller = styled.div`\r\n box-sizing: border-box;\r\n background-color: ${COLOR.PRIMARY.WHITE};\r\n border-left: 1px solid ${COLOR.MAIN.FORM_FIELD};\r\n overflow: ${(props) => (props.disabled ? 'hidden' : 'auto')};\r\n width: 100%;\r\n\r\n ${removeScrollbar}\r\n\r\n ${AccountCell} {\r\n &:last-child {\r\n border-right: 0;\r\n }\r\n }\r\n`;\r\n\r\nexport const StyledScrollbarWrapper = styled.div`\r\n height: 17px;\r\n overflow-y: hidden;\r\n overflow-x: ${(props) => (props.disabled ? 'hidden' : 'auto')};\r\n position: sticky;\r\n bottom: 0;\r\n`;\r\n\r\nexport const StyledScrollbar = styled.div`\r\n height: 17px;\r\n width: ${(props) => (props.dataGridWidth ? `${props.dataGridWidth}px` : '0')};\r\n`;\r\n\r\nexport const StyledDataGrid = styled.div`\r\n box-sizing: border-box;\r\n border-top: 1px solid ${COLOR.MAIN.FORM_FIELD};\r\n border-right: 1px solid ${COLOR.MAIN.FORM_FIELD};\r\n border-bottom: 1px solid ${COLOR.MAIN.FORM_FIELD};\r\n display: flex;\r\n justify-content: space-between;\r\n flex-direction: column;\r\n`;\r\n\r\nexport const StyledDataGridInner = styled.div`\r\n display: flex;\r\n flex-direction: row;\r\n`;\r\n","import * as React from 'react'; // eslint-disable-line\r\nimport dayjs from 'dayjs';\r\nimport isBetween from 'dayjs/plugin/isBetween';\r\n\r\ndayjs.extend(isBetween);\r\n\r\ninterface AddFYTotalsProps {\r\n dataRow: {\r\n date: string;\r\n value: number;\r\n }[];\r\n currentFinancialYear: number;\r\n financialYearStartMonth: number;\r\n isBalanceSheet: boolean;\r\n endOfForecast: string;\r\n}\r\n\r\nexport const AddFYTotals = ({\r\n dataRow,\r\n currentFinancialYear,\r\n financialYearStartMonth,\r\n isBalanceSheet,\r\n endOfForecast,\r\n}: AddFYTotalsProps) => {\r\n if (!dataRow.length) return <>{0};\r\n\r\n let total = 0;\r\n\r\n const dataRowLength = dataRow.length;\r\n const start = dayjs(`${currentFinancialYear}-${financialYearStartMonth}`, 'YYYY-MM');\r\n const end = start.add(1, 'year');\r\n const endOfForecastDate = dayjs(endOfForecast);\r\n // check if balanceStart exceeds the endOfForecast date\r\n const balanceStart = start.add(11, 'month').isAfter(endOfForecast)\r\n ? endOfForecastDate // if it does, use the final month\r\n : start.add(11, 'month'); // otherwise use the 11th month from the start\r\n const balanceEnd = start.add(11, 'month').isAfter(endOfForecast) ? endOfForecastDate : end;\r\n // set the data start and end dates\r\n const dataStart = isBalanceSheet ? balanceStart : start;\r\n const dataEnd = isBalanceSheet ? balanceEnd : end;\r\n\r\n for (let i = 0; i < dataRowLength; i++) {\r\n // isBetween inclusive of start and end using '[]'\r\n if (dayjs(dataRow[i].date).isBetween(dataStart, dataEnd, null, '[]')) {\r\n total += dataRow[i].value;\r\n }\r\n }\r\n\r\n return <>{Number(total).toFixed(0)};\r\n};\r\n","import styled from 'styled-components';\r\nimport { COLOR } from '../../../../packages/constants';\r\nimport { AccountCell } from '../account-cell/account-cell';\r\nimport { AccountRow } from '../account-row/account-row';\r\nimport { removeScrollbar } from '../data-grid-scroller/data-grid-scroller';\r\n\r\nconst shadowWidth = 8;\r\n\r\nexport const StyledTable = styled.table`\r\n border-top: 1px solid ${COLOR.MAIN.FORM_FIELD};\r\n ${AccountRow}:first-child ${AccountCell} {\r\n border-top: none;\r\n }\r\n`;\r\n\r\nexport const DataGridTotal = styled.table`\r\n border-top: 1px solid ${COLOR.MAIN.FORM_FIELD};\r\n position: relative;\r\n width: 130px;\r\n\r\n tr:first-child ${AccountCell} {\r\n border-top: none;\r\n }\r\n\r\n ${AccountCell} {\r\n border-left: 1px solid ${COLOR.DATAGRID.DATAGRID_DIVIDER_LINE};\r\n\r\n &:last-child {\r\n border-right: 0;\r\n }\r\n }\r\n\r\n &::after {\r\n background-image: linear-gradient(90deg, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.07));\r\n content: '';\r\n position: absolute;\r\n top: 0;\r\n left: -${shadowWidth}px;\r\n height: 100%;\r\n width: ${shadowWidth}px;\r\n }\r\n`;\r\n\r\nexport const StyledFloatTable = styled.table`\r\n border-top: 1px solid ${COLOR.MAIN.FORM_FIELD};\r\n border-bottom: 1px solid ${COLOR.MAIN.FORM_FIELD};\r\n`;\r\n\r\nexport const AccountHeader = styled.thead`\r\n width: 100%;\r\n`;\r\n\r\nexport const FloatTableHead = styled.div`\r\n position: sticky;\r\n z-index: 12;\r\n top: 0;\r\n`;\r\n\r\nexport const FloatHead = styled.div`\r\n box-sizing: border-box;\r\n border-left: 1px solid ${COLOR.MAIN.FORM_FIELD};\r\n position: sticky;\r\n z-index: 12;\r\n top: 0;\r\n display: flex;\r\n width: 100%;\r\n overflow: auto;\r\n\r\n ${removeScrollbar}\r\n\r\n ${AccountCell} {\r\n &:last-child {\r\n border-right: 0;\r\n }\r\n }\r\n`;\r\n","import * as React from 'react'; // eslint-disable-line\r\nimport { memo } from 'react';\r\nimport styled from 'styled-components';\r\nimport classNames from 'classnames';\r\n\r\nimport { COLOR } from '../../../../packages/constants';\r\nimport { camelToKebab } from '../../../../../Scripts/Spotlight/Components/CamelToKebab';\r\nimport { AccountChildrenType, AccountType, DataGridData, ExpansionMode, isExpanded, TitleBar } from '../../data-grid';\r\nimport { AccountCell } from '../account-cell/account-cell';\r\n\r\nimport { AddFYTotals } from '../add-fy-totals/add-fy-total';\r\nimport { DataGridTotal, StyledFloatTable, FloatTableHead } from '../table/table';\r\n\r\nconst FYTotalColumnContainer = styled.div<{ disabled: boolean }>`\r\n ${(props) => props.disabled && `opacity: 0.2;`};\r\n`;\r\n\r\nconst HeaderTable = styled(StyledFloatTable)`\r\n border-right: 0px;\r\n width: 100%;\r\n`;\r\n\r\nconst FYTotalAccountCellHeading = styled(AccountCell)`\r\n border-left-color: ${COLOR.DATAGRID.DATAGRID_DIVIDER_LINE};\r\n`;\r\n\r\nconst FYHeadingYearText = styled.span`\r\n font-weight: 400;\r\n`;\r\n\r\nconst MemoizedAddFYTotals = memo(AddFYTotals);\r\n\r\ninterface FYTotalColumn {\r\n dataId: string;\r\n gridData: DataGridData;\r\n expansionMode: ExpansionMode;\r\n currentFinancialYear: number;\r\n financialYearStartMonth: number;\r\n isBalanceSheet: boolean;\r\n disabled: boolean;\r\n}\r\n\r\nexport const FYTotalColumn: React.FC> = ({\r\n dataId,\r\n gridData,\r\n expansionMode,\r\n currentFinancialYear,\r\n financialYearStartMonth,\r\n isBalanceSheet,\r\n disabled,\r\n}) => {\r\n return (\r\n \r\n  \r\n \r\n \r\n \r\n \r\n \r\n \r\n Total{' '}\r\n \r\n FY{`${currentFinancialYear + 1}`.substring(2)}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {gridData.accounts.map((account: AccountType, accountIndex: number) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {account.children.map((accountChild: AccountChildrenType, accountChildIndex: number) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ))}\r\n \r\n ))}\r\n \r\n \r\n \r\n );\r\n};\r\n","import * as React from 'react'; // eslint-disable-line\r\nimport dayjs, { Dayjs } from 'dayjs';\r\nimport { AccountCell } from '../account-cell/account-cell';\r\n\r\ninterface HeaderCellProps {\r\n dataId: string;\r\n month: Dayjs;\r\n financialYearStartMonth: number;\r\n}\r\n\r\nexport const HeaderCell = ({ dataId, month, financialYearStartMonth }: HeaderCellProps) => {\r\n return (\r\n \r\n {month.format('MMM YY')}\r\n \r\n );\r\n};\r\n","import * as React from 'react';\r\nimport styled from 'styled-components';\r\n\r\nimport { FONT_SIZE, SPACING } from '../../../../packages/constants';\r\nimport THEME from '../../../../packages/constants/themes';\r\nimport { DataGridModes } from '../../data-grid';\r\nimport { Button } from '../../../button';\r\n\r\nconst TopRow = styled.div`\r\n display: flex;\r\n justify-content: space-between;\r\n padding-top: ${SPACING.X_SMALL};\r\n padding-bottom: ${SPACING.X_SMALL};\r\n`;\r\n\r\nconst TopRowLeftButtonsWrapper = styled.div`\r\n display: flex;\r\n margin-right: auto;\r\n`;\r\n\r\nconst TextAccounts = styled.p`\r\n align-self: center;\r\n font-size: ${FONT_SIZE.SMALL};\r\n`;\r\n\r\nconst TextCurrency = styled.p`\r\n align-self: center;\r\n font-size: ${FONT_SIZE.X_SMALL};\r\n`;\r\n\r\nconst EliminationsSaveButton = styled(Button)`\r\n margin: 0 0 0 10px;\r\n padding: 0 8px;\r\n`;\r\n\r\nconst EliminationsCancelButton = styled(Button)`\r\n margin: 0 0 0 10px;\r\n padding: 0 8px;\r\n`;\r\n\r\nconst EliminationsEditButton = styled(Button)`\r\n margin: 0 0 0 10px;\r\n padding: 0 8px;\r\n`;\r\n\r\nconst AdjustArapButton = styled(Button)`\r\n margin: 0 auto 0 10px;\r\n padding: 0 8px;\r\n`;\r\n\r\ninterface EliminationsControlsProps {\r\n dataId: string;\r\n mode: DataGridModes;\r\n editEliminationsHandler: () => void;\r\n saveEliminationsHandler: () => void;\r\n cancelEliminationsHandler: () => void;\r\n}\r\n\r\nexport const EliminationsControls: React.FC> = ({\r\n dataId,\r\n mode,\r\n editEliminationsHandler,\r\n saveEliminationsHandler,\r\n cancelEliminationsHandler,\r\n}) => {\r\n if (mode === DataGridModes.EditEliminations) {\r\n return (\r\n <>\r\n \r\n Save Eliminations\r\n \r\n \r\n Cancel\r\n \r\n \r\n );\r\n } else {\r\n return (\r\n \r\n Edit Eliminations\r\n \r\n );\r\n }\r\n};\r\n\r\ninterface DataGridHeaderProps {\r\n dataId: string;\r\n mode: DataGridModes;\r\n numAccounts: number;\r\n currency: string;\r\n hasEliminationsMode: boolean;\r\n hasArapAdjustments: boolean;\r\n editEliminationsHandler: () => void;\r\n saveEliminationsHandler: () => Promise;\r\n cancelEliminationsHandler: () => void;\r\n adjustArapHandler: () => void;\r\n}\r\n\r\nexport const DataGridHeader: React.FC> = ({\r\n dataId,\r\n mode,\r\n numAccounts,\r\n currency,\r\n hasEliminationsMode,\r\n hasArapAdjustments,\r\n editEliminationsHandler,\r\n saveEliminationsHandler,\r\n cancelEliminationsHandler,\r\n adjustArapHandler,\r\n}) => {\r\n return (\r\n \r\n {numAccounts} Accounts\r\n \r\n {hasEliminationsMode && (\r\n \r\n )}\r\n {hasArapAdjustments && mode != DataGridModes.EditEliminations && (\r\n \r\n Adjust AR & AP\r\n \r\n )}\r\n \r\n \r\n All values are in {currency}\r\n \r\n \r\n );\r\n};\r\n","import * as React from 'react';\r\nimport { memo, useEffect } from 'react';\r\n\r\nimport classNames from 'classnames';\r\nimport dayjs, { Dayjs } from 'dayjs';\r\nimport isSameOrAfter from 'dayjs/plugin/isSameOrAfter';\r\nimport styled from 'styled-components';\r\nimport { useDebouncedCallback } from 'use-debounce';\r\n\r\nimport { camelToKebab } from '../../../Scripts/Spotlight/Components/CamelToKebab';\r\nimport { COLOR, FONT_SIZE, SPACING } from '../../packages/constants';\r\nimport { SaveCallbackFn } from './atoms/account-cell-input/account-cell-input';\r\nimport { AccountCell } from './atoms/account-cell/account-cell';\r\nimport { AccountRow } from './atoms/account-row/account-row';\r\nimport { AccountsList } from './atoms/accounts-list/accounts-list';\r\nimport { AccountsPanel } from './atoms/accounts-panel/accounts-panel';\r\nimport {\r\n DataGridScroller,\r\n StyledDataGrid,\r\n StyledDataGridInner,\r\n StyledScrollbar,\r\n StyledScrollbarWrapper,\r\n} from './atoms/data-grid-scroller/data-grid-scroller';\r\nimport { FYTotalColumn } from './atoms/fy-total-column/fy-total-column';\r\nimport { HeaderCell } from './atoms/header-cell/header-cell';\r\nimport { DataGridHeader } from './atoms/header/header';\r\nimport { StyledChevronLeft, StyledChevronRight } from './atoms/icons/icons';\r\nimport { StyledTable, StyledFloatTable, AccountHeader, FloatHead, FloatTableHead } from './atoms/table/table';\r\n\r\ndayjs.extend(isSameOrAfter);\r\n\r\nexport interface AccountChildrenType {\r\n id: string;\r\n name: string;\r\n displayName?: string | null;\r\n reportCode?: string | null;\r\n type?: string | null;\r\n children?: AccountChildrenType[] | null;\r\n isEliminated?: boolean;\r\n canEliminate?: boolean;\r\n}\r\n\r\nexport interface AccountType {\r\n id: string;\r\n name: string;\r\n displayName: string | null;\r\n reportCode: string | null;\r\n type: string;\r\n children: AccountChildrenType[];\r\n isEliminated?: boolean;\r\n canEliminate?: boolean;\r\n}\r\n\r\nexport interface DataGridData {\r\n organisation: {\r\n id: string;\r\n name: string;\r\n currency: string;\r\n financialYearStartMonth: number;\r\n startDate: string;\r\n endDate: string;\r\n lastActualsDate: string;\r\n };\r\n accounts: AccountType[];\r\n data: MonthlyDataGroupedByKey;\r\n bandType: string;\r\n mode: string;\r\n isGroup: boolean;\r\n}\r\n\r\n/**\r\n * Columns that appear after the accounts list in a toggleable details pane\r\n */\r\nexport enum DetailsColumns {\r\n ReportCode = 'REPORTCODE',\r\n DisplayName = 'DISPLAYNAME',\r\n}\r\n\r\n/**\r\n * Columns that appear in front of the accounts list\r\n */\r\nexport enum AccountColumns {\r\n Elimination = 'ELIMINATION',\r\n}\r\n\r\n/**\r\n * Columns that appear on the grid (aligned to the end)\r\n */\r\nexport enum GridColumns {\r\n EndOfFinancialYearTotal = 'EOFYTOTAL',\r\n}\r\nexport interface DataGridProps {\r\n data: DataGridData;\r\n /**\r\n * Data Test ID\r\n */\r\n dataId: string;\r\n /**\r\n * External function to update displayName\r\n */\r\n displayNameChange?: SaveCallbackFn;\r\n /**\r\n * Choose what columns to show in the detailsColumns\r\n */\r\n detailsColumns?: DetailsColumns[];\r\n /**\r\n * Option to hide the EOFY column\r\n */\r\n gridColumns?: GridColumns[];\r\n /**\r\n * Expand/Collapse all rows\r\n */\r\n expansionMode?: ExpansionMode;\r\n /**\r\n * Change EOFY calculation method for Balance Sheet\r\n */\r\n isBalanceSheet?: boolean;\r\n /**\r\n * Display the eliminated icon on eliminated account rows\r\n */\r\n identifyEliminatedAccounts?: boolean;\r\n /**\r\n * Can enter mode to edit eliminations\r\n */\r\n hasEliminationsMode?: boolean;\r\n /**\r\n * Can adjust AR and AP\r\n */\r\n hasArapAdjustments?: boolean;\r\n themeProvider?: {};\r\n /**\r\n * External function to dispatch actions to\r\n */\r\n actionHandler?: (action: Action) => Promise;\r\n}\r\n\r\ninterface Action {\r\n type: TType;\r\n payload?: TPayload;\r\n}\r\n\r\ninterface MonthlyDataPoint {\r\n date: string;\r\n value: number;\r\n}\r\n\r\ninterface MonthlyDataGroupedByKey {\r\n [key: string]: MonthlyDataPoint[];\r\n}\r\n\r\ninterface MonthlyDataValueLookup {\r\n [k: string]: number;\r\n}\r\n\r\ninterface GetCellValueProps {\r\n isGroup?: boolean;\r\n month: Dayjs;\r\n accountId: string;\r\n actualsToDate: Dayjs;\r\n monthlyData: MonthlyDataValueLookup;\r\n accountName: string;\r\n dataId: string;\r\n}\r\n\r\n/**\r\n * Different modes control which accounts should be expanded\r\n * In future this might have several modes for having different\r\n * levels of nesting or account types expanded or not\r\n */\r\nexport enum ExpansionMode {\r\n collapsed = 'COLLAPSED', // collapses all accounts\r\n expanded = 'EXPANDED', // expands all accounts\r\n}\r\n\r\n/**\r\n * Actions dispatched to an external handler\r\n */\r\nexport enum DataGridExternalActions {\r\n FETCH_DATA = 'FETCH_DATA',\r\n SAVE_ELIMINATIONS = 'SAVE_ELIMINATIONS',\r\n ADJUST_ARAP = 'ADJUST_ARAP',\r\n}\r\n\r\n/*\r\n * Accounts Eliminations\r\n */\r\n\r\nexport type EliminationsSettings = string[];\r\n\r\nexport enum AccountsEliminationsActionTypes {\r\n TOGGLE_ELIMINATION = 'TOGGLE_ELIMINATION',\r\n RESET_SETTINGS = 'RESET_SETTINGS',\r\n}\r\n\r\nexport interface AccountsEliminationsState {\r\n eliminationsSettings: EliminationsSettings;\r\n indeterminateEliminations: string[];\r\n}\r\n\r\ninterface AccountsEliminationsResetSettingsAction {\r\n type: AccountsEliminationsActionTypes.RESET_SETTINGS;\r\n payload: {\r\n eliminationsSettings: EliminationsSettings;\r\n indeterminateEliminations: string[];\r\n };\r\n}\r\n\r\ninterface AccountsEliminationsToggleEliminationAction {\r\n type: AccountsEliminationsActionTypes.TOGGLE_ELIMINATION;\r\n account: AccountType | AccountChildrenType;\r\n parentAccount?: AccountType;\r\n}\r\n\r\nexport type AccountsEliminationsActions =\r\n | AccountsEliminationsResetSettingsAction\r\n | AccountsEliminationsToggleEliminationAction;\r\n\r\n/**\r\n * Maps accounts that are eliminated to an array.\r\n * Also determines accounts are eliminated if their children are all eliminated.\r\n * Assumes all children are returned necessary to determine the parent is eliminated.\r\n */\r\nconst getEliminatedAccounts = (accounts: AccountType[]) => {\r\n const eliminatedAccounts: string[] = [];\r\n accounts.forEach((account) => {\r\n if (account.isEliminated) {\r\n eliminatedAccounts.push(account.id);\r\n }\r\n if (account.children && account.children.length > 0) {\r\n // filter to get eliminated child accounts\r\n const eliminatedChildren = account.children.filter((item) => {\r\n return item.isEliminated;\r\n });\r\n const eliminatedChildrenIds = eliminatedChildren.map((item) => {\r\n return item.id;\r\n });\r\n /*\r\n * check if the length of the set matches account children length\r\n * if it does, push the account to eliminatedAccounts array\r\n */\r\n if (eliminatedChildren.length === account.children.length) {\r\n eliminatedAccounts.push(account.id);\r\n }\r\n // push the filtered set of child accounts to eliminatedAccounts array\r\n eliminatedAccounts.push(...eliminatedChildrenIds);\r\n }\r\n });\r\n return eliminatedAccounts;\r\n};\r\n\r\nconst getIndeterminateAccounts = (accounts: AccountType[]) => {\r\n const indeterminateAccounts = accounts.filter((account) => {\r\n // set indeterminate if not all children are checked/unchecked\r\n const checkedChildAccounts = account.children.filter((item: AccountChildrenType) => {\r\n return item.isEliminated;\r\n });\r\n if (checkedChildAccounts.length !== 0 && checkedChildAccounts.length !== account.children.length) {\r\n return true;\r\n }\r\n return false;\r\n });\r\n const indeterminateAccountIds: string[] = indeterminateAccounts.map((item) => item.id);\r\n return indeterminateAccountIds;\r\n};\r\n\r\nexport const accountsEliminationsReducer = (\r\n state: AccountsEliminationsState,\r\n action: AccountsEliminationsActions,\r\n): AccountsEliminationsState => {\r\n const handleUpdate = ({\r\n account,\r\n parentAccount,\r\n }: {\r\n account: AccountType | AccountChildrenType;\r\n parentAccount?: AccountType;\r\n }) => {\r\n // toggle state\r\n // push to eliminationsSettings array\r\n const eliminationsSettingsCopy = [...state.eliminationsSettings];\r\n const indeterminateEliminationsCopy = [...state.indeterminateEliminations];\r\n const matchedIndex = eliminationsSettingsCopy.indexOf(account.id);\r\n const isAdding = matchedIndex < 0;\r\n\r\n if (isAdding) {\r\n eliminationsSettingsCopy.push(account.id);\r\n } else {\r\n eliminationsSettingsCopy.splice(matchedIndex, 1);\r\n }\r\n\r\n // remove this account from indeterminate state\r\n const indeterminateAccountIndex = indeterminateEliminationsCopy.indexOf(account.id);\r\n if (indeterminateAccountIndex >= 0) {\r\n indeterminateEliminationsCopy.splice(indeterminateAccountIndex, 1);\r\n }\r\n\r\n if (typeof parentAccount !== 'undefined') {\r\n // remove parent from indeterminate state\r\n const indeterminateParentAccountIndex = indeterminateEliminationsCopy.indexOf(parentAccount.id);\r\n if (indeterminateParentAccountIndex >= 0) {\r\n indeterminateEliminationsCopy.splice(indeterminateParentAccountIndex, 1);\r\n }\r\n //\r\n if (isAdding) {\r\n // set indeterminate if not all children are checked\r\n const checkedItems = parentAccount.children.filter((item: any) => {\r\n const isItemChecked = eliminationsSettingsCopy.includes(item.id);\r\n return isItemChecked;\r\n });\r\n if (\r\n checkedItems.length < parentAccount.children.length &&\r\n !indeterminateEliminationsCopy.includes(parentAccount.id)\r\n ) {\r\n indeterminateEliminationsCopy.push(parentAccount.id);\r\n } else {\r\n // check if all children are checked\r\n if (!eliminationsSettingsCopy.includes(parentAccount.id)) {\r\n eliminationsSettingsCopy.push(parentAccount.id);\r\n }\r\n }\r\n } else {\r\n // uncheck\r\n const parentAccountMatchedIndex = eliminationsSettingsCopy.indexOf(parentAccount.id);\r\n if (parentAccountMatchedIndex >= 0) {\r\n eliminationsSettingsCopy.splice(parentAccountMatchedIndex, 1);\r\n }\r\n // set indeterminate if not all children are unchecked\r\n const distinct = parentAccount.children.filter((item: any) => {\r\n const isItemChecked = eliminationsSettingsCopy.includes(item.id);\r\n return isItemChecked;\r\n });\r\n if (distinct.length > 0 && !indeterminateEliminationsCopy.includes(parentAccount.id)) {\r\n indeterminateEliminationsCopy.push(parentAccount.id);\r\n }\r\n }\r\n }\r\n if (account.children) {\r\n // toggle children\r\n account.children.forEach((childAccount: any) => {\r\n const childMatchedIndex = eliminationsSettingsCopy.indexOf(childAccount.id);\r\n const alreadyHasChild = childMatchedIndex >= 0;\r\n if (isAdding && !alreadyHasChild) {\r\n eliminationsSettingsCopy.push(childAccount.id);\r\n } else if (!isAdding && alreadyHasChild) {\r\n eliminationsSettingsCopy.splice(childMatchedIndex, 1);\r\n }\r\n });\r\n }\r\n\r\n return {\r\n eliminationsSettings: eliminationsSettingsCopy,\r\n indeterminateEliminations: indeterminateEliminationsCopy,\r\n };\r\n };\r\n\r\n switch (action.type) {\r\n case AccountsEliminationsActionTypes.TOGGLE_ELIMINATION: {\r\n const newState = handleUpdate({ account: action.account, parentAccount: action.parentAccount });\r\n return { ...newState };\r\n }\r\n case AccountsEliminationsActionTypes.RESET_SETTINGS: {\r\n const newState = { ...state };\r\n newState.eliminationsSettings = action.payload.eliminationsSettings;\r\n newState.indeterminateEliminations = action.payload.indeterminateEliminations;\r\n return { ...newState };\r\n }\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport const TitleBar = styled.div`\r\n border-left: 1px solid ${COLOR.MAIN.FORM_FIELD};\r\n background-color: ${COLOR.PRIMARY.WHITE};\r\n color: ${COLOR.DATAGRID.DATAGRID_TEXT};\r\n display: flex;\r\n align-items: center;\r\n font-size: ${FONT_SIZE.X_SMALL};\r\n font-weight: 700;\r\n justify-content: space-between;\r\n padding: ${SPACING.SMALL};\r\n min-height: 18px;\r\n`;\r\n\r\nconst ToggleAccountDetails = styled.button`\r\n border: 0;\r\n background-color: transparent;\r\n color: ${COLOR.DATAGRID.DATAGRID_TEXT};\r\n cursor: pointer;\r\n line-height: 12px;\r\n font-size: inherit;\r\n border-bottom: 1px solid ${COLOR.PRIMARY.BLACK};\r\n display: flex;\r\n align-items: center;\r\n padding: 0;\r\n`;\r\n\r\nconst DataGridDataTableContainer = styled.div<{ nonDataColumnsWidth: number; disabled: boolean }>`\r\n width: calc(100% - ${(props) => props.nonDataColumnsWidth}px);\r\n position: relative;\r\n ${(props) => props.disabled && `opacity: 0.2;`};\r\n`;\r\n\r\n// flatten the monthly data\r\nconst flattenData = (data: MonthlyDataGroupedByKey) => {\r\n const flatData: MonthlyDataValueLookup = {};\r\n for (const item in data) {\r\n for (const monthlyDataPoint of data[item]) {\r\n flatData[`${item}-${dayjs(monthlyDataPoint.date).format('YYYY-MM')}`] = monthlyDataPoint.value;\r\n }\r\n }\r\n return flatData;\r\n};\r\n\r\nconst GetCellValue = ({\r\n isGroup,\r\n month,\r\n accountId,\r\n actualsToDate,\r\n monthlyData,\r\n accountName,\r\n dataId,\r\n}: GetCellValueProps) => {\r\n const formatString = 'YYYY-MM';\r\n const monthFormatted = dayjs(month).format(formatString);\r\n let value = 0;\r\n const hasVal = typeof monthlyData[`${accountId}-${monthFormatted}`] !== 'undefined';\r\n if (hasVal) {\r\n value = monthlyData[`${accountId}-${monthFormatted}`];\r\n } else {\r\n value = 0;\r\n }\r\n\r\n return (\r\n \r\n {value}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * determines if the account is expanded according to the expansion mode and type of account\r\n * @param expansionMode\r\n * @param account\r\n */\r\n// account is currently unused but should be passed through to make it possible to be used\r\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\r\nexport const isExpanded = (expansionMode: ExpansionMode, account: AccountType | AccountChildrenType): boolean => {\r\n return expansionMode === ExpansionMode.expanded;\r\n};\r\n\r\nconst MemoizedGetCellValue = memo(GetCellValue);\r\n\r\nexport const columnWidths = {\r\n accounts: 305,\r\n eliminations: 71,\r\n reportCode: 142,\r\n displayName: 156,\r\n endOfFinancialYearTotal: 130,\r\n};\r\n\r\nexport const handleToggleAccountRow = (id: string): void => {\r\n // DOM manipulation to make performance better.\r\n const dataIds = document.querySelectorAll(`.parent-id-${id}`);\r\n const rowIcons = document.querySelectorAll(`[data-account=\"${id}\"] .icon--toggle-row`);\r\n dataIds.forEach((element) => element.classList.toggle('h-display--none'));\r\n rowIcons.forEach((element) => element.classList.toggle('h-display--none'));\r\n};\r\n\r\n/**\r\n * The interaction mode of the grid\r\n */\r\nexport enum DataGridModes {\r\n Default = 'DEFAULT',\r\n EditEliminations = 'EDIT_ELIMINATIONS',\r\n}\r\n\r\nconst DataGrid: React.FC> = ({\r\n data,\r\n dataId,\r\n detailsColumns = [],\r\n gridColumns = [],\r\n expansionMode = ExpansionMode.expanded,\r\n displayNameChange,\r\n isBalanceSheet = false,\r\n identifyEliminatedAccounts = false,\r\n hasEliminationsMode = false,\r\n hasArapAdjustments = false,\r\n actionHandler,\r\n ...props\r\n}) => {\r\n const [showAccountDetails, toggleAccountDetails] = React.useState(false);\r\n const [gridData, setGridData] = React.useState(data);\r\n const [dataGridWidth, setDataGridWidth] = React.useState(0);\r\n const [arrMonths, setArrMonths] = React.useState([]);\r\n const [monthlyData, setMonthlyData] = React.useState(flattenData(data.data));\r\n const [currentFinancialYear, setCurrentFinancialYear] = React.useState(0);\r\n const [actualsToDate, setActualsToDate] = React.useState(dayjs(data.organisation.lastActualsDate));\r\n const [mode, setMode] = React.useState(DataGridModes.Default);\r\n const [accountsEliminationsState, accountsEliminationsDispatch] = React.useReducer(accountsEliminationsReducer, {\r\n eliminationsSettings: getEliminatedAccounts(gridData.accounts),\r\n indeterminateEliminations: getIndeterminateAccounts(gridData.accounts),\r\n });\r\n\r\n const StyledDataGridRef = React.useRef(null);\r\n const DataGridScrollerRef = React.useRef(null);\r\n const DataGridTableRef = React.useRef(null);\r\n const ScrollBarRef = React.useRef(null);\r\n const FloatHeadRef = React.useRef(null);\r\n const FloatHeadRowRef = React.useRef(null);\r\n\r\n let ticking = false;\r\n\r\n const hasDetailsColumns = detailsColumns.length > 0;\r\n const hasFYTotal = gridColumns.includes(GridColumns.EndOfFinancialYearTotal);\r\n\r\n const accountsPanelWidth = (() => {\r\n const accountsWidth = columnWidths.accounts;\r\n const accountColumnsWidth = mode === DataGridModes.EditEliminations ? columnWidths.eliminations : 0;\r\n const detailsWidth = showAccountDetails\r\n ? (() => {\r\n let dw = 0;\r\n detailsColumns.includes(DetailsColumns.ReportCode) && (dw += columnWidths.reportCode);\r\n detailsColumns.includes(DetailsColumns.DisplayName) && (dw += columnWidths.displayName);\r\n return dw;\r\n })()\r\n : 0;\r\n return accountsWidth + accountColumnsWidth + detailsWidth;\r\n })();\r\n\r\n const nonDataColumnsWidth = (() => {\r\n const gridColumnsWidth = hasFYTotal ? columnWidths.endOfFinancialYearTotal : 0;\r\n return accountsPanelWidth + gridColumnsWidth;\r\n })();\r\n\r\n const cells = FloatHeadRef.current && FloatHeadRef.current.querySelectorAll('[data-fy]');\r\n\r\n function update() {\r\n const DataGridScrollerScrollLeft = DataGridScrollerRef.current && DataGridScrollerRef.current.scrollLeft;\r\n const DataGridScrollerRects = DataGridScrollerRef.current && DataGridScrollerRef.current.getClientRects();\r\n\r\n if (DataGridScrollerScrollLeft !== null && DataGridScrollerRects !== null && cells !== null && cells.length) {\r\n const cellNumber =\r\n DataGridScrollerRects[0] &&\r\n cells[0] &&\r\n Math.floor(\r\n (DataGridScrollerRects[0].width + DataGridScrollerScrollLeft) /\r\n cells[0].getBoundingClientRect().width,\r\n );\r\n const cellElement = cells[cellNumber];\r\n\r\n // @ts-ignore\r\n if (cellElement && currentFinancialYear !== Number(cellElement.dataset.fy)) {\r\n // @ts-ignore\r\n setCurrentFinancialYear(Number(cellElement.dataset.fy));\r\n }\r\n if (FloatHeadRowRef.current !== null && DataGridScrollerRef.current !== null) {\r\n if (\r\n FloatHeadRowRef.current.getBoundingClientRect().width -\r\n DataGridScrollerRef.current.getBoundingClientRect().width ===\r\n DataGridScrollerScrollLeft &&\r\n cells[cellNumber - 1]\r\n ) {\r\n // @ts-ignore\r\n setCurrentFinancialYear(Number(cells[cellNumber - 1].dataset.fy));\r\n }\r\n }\r\n }\r\n ticking = false;\r\n }\r\n\r\n function requestTick() {\r\n if (!ticking) {\r\n requestAnimationFrame(update);\r\n ticking = true;\r\n }\r\n }\r\n\r\n function handleScroll() {\r\n requestTick();\r\n }\r\n\r\n handleScroll();\r\n\r\n const handleDataGridScroll = useDebouncedCallback(() => {\r\n if (ScrollBarRef.current !== null && DataGridScrollerRef.current !== null && FloatHeadRef.current !== null) {\r\n const DataGridScrollerScrollLeft = DataGridScrollerRef.current.scrollLeft;\r\n ScrollBarRef.current.scrollLeft = DataGridScrollerScrollLeft;\r\n FloatHeadRef.current.scrollLeft = DataGridScrollerScrollLeft;\r\n }\r\n }, 10);\r\n\r\n const handleScrollBarScroll = () => {\r\n if (DataGridScrollerRef.current !== null && ScrollBarRef.current !== null && FloatHeadRef.current !== null) {\r\n handleScroll();\r\n\r\n DataGridScrollerRef.current.scrollLeft = ScrollBarRef.current.scrollLeft;\r\n FloatHeadRef.current.scrollLeft = DataGridScrollerRef.current.scrollLeft;\r\n }\r\n };\r\n\r\n // update the grid data state when data prop updates\r\n useEffect(() => {\r\n setGridData(data);\r\n }, [data]);\r\n\r\n useEffect(() => {\r\n const startDate = dayjs(gridData.organisation.startDate);\r\n const endDate = dayjs(gridData.organisation.endDate);\r\n // create monthly range between startDate and endDate\r\n const months: Dayjs[] = [];\r\n const diffBetween = endDate.diff(startDate, 'month');\r\n for (let i = 0; i <= diffBetween; i++) {\r\n months.push(startDate.add(i, 'month'));\r\n }\r\n setArrMonths(months);\r\n }, [gridData.organisation.startDate, gridData.organisation.endDate]);\r\n\r\n useEffect(() => {\r\n setActualsToDate(dayjs(gridData.organisation.lastActualsDate));\r\n }, [gridData.organisation.lastActualsDate]);\r\n\r\n useEffect(() => {\r\n setMonthlyData(flattenData(gridData.data));\r\n }, [gridData.data]);\r\n\r\n useEffect(() => {\r\n const getDimensions = () => ({\r\n width: (DataGridTableRef.current && DataGridTableRef.current.offsetWidth) || 0,\r\n });\r\n setDataGridWidth(getDimensions().width);\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [DataGridTableRef.current]);\r\n\r\n /* Action handlers */\r\n\r\n const toggleAccountDetailsHandler = () => toggleAccountDetails(!showAccountDetails);\r\n\r\n const editEliminationsHandler = () => {\r\n // set the mode to eliminations mode\r\n setMode(DataGridModes.EditEliminations);\r\n };\r\n\r\n const saveEliminationsHandler = async () => {\r\n if (typeof actionHandler !== 'function') {\r\n // set the mode back to default\r\n setMode(DataGridModes.Default);\r\n return;\r\n }\r\n // save the eliminations settings\r\n await actionHandler({\r\n type: DataGridExternalActions.SAVE_ELIMINATIONS,\r\n payload: { settings: accountsEliminationsState.eliminationsSettings },\r\n });\r\n // set the mode back to default\r\n setMode(DataGridModes.Default);\r\n };\r\n\r\n const cancelEliminationsHandler = () => {\r\n const eliminationsSettings = getEliminatedAccounts(gridData.accounts);\r\n const indeterminateEliminations = getIndeterminateAccounts(gridData.accounts);\r\n\r\n accountsEliminationsDispatch({\r\n type: AccountsEliminationsActionTypes.RESET_SETTINGS,\r\n payload: {\r\n eliminationsSettings: eliminationsSettings,\r\n indeterminateEliminations: indeterminateEliminations,\r\n },\r\n });\r\n\r\n setMode(DataGridModes.Default);\r\n };\r\n\r\n const adjustArapHandler = () => {\r\n if (typeof actionHandler !== 'function') {\r\n return;\r\n }\r\n actionHandler({ type: DataGridExternalActions.ADJUST_ARAP });\r\n };\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n Accounts{' '}\r\n {hasDetailsColumns && (\r\n \r\n {showAccountDetails && } {showAccountDetails ? 'Hide' : 'Show'}{' '}\r\n details️ {!showAccountDetails && }\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n {mode === DataGridModes.EditEliminations && (\r\n \r\n \r\n Eliminate\r\n \r\n \r\n )}\r\n \r\n \r\n Account Name\r\n \r\n \r\n {detailsColumns.includes(DetailsColumns.ReportCode) && (\r\n \r\n \r\n Report Code\r\n \r\n \r\n )}\r\n {detailsColumns.includes(DetailsColumns.DisplayName) && (\r\n \r\n \r\n Spotlight Display Name\r\n \r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n  \r\n
    \r\n \r\n \r\n \r\n \r\n {arrMonths.map((month: Dayjs) => (\r\n \r\n ))}\r\n \r\n \r\n \r\n \r\n handleDataGridScroll()}\r\n disabled={mode === DataGridModes.EditEliminations}\r\n >\r\n \r\n \r\n {gridData.accounts.map((account: AccountType) => (\r\n \r\n \r\n {arrMonths.map((month: Dayjs) => (\r\n \r\n \r\n \r\n ))}\r\n \r\n {account.children.map((accountChild: AccountChildrenType) => (\r\n \r\n {arrMonths.map((month: Dayjs) => (\r\n \r\n \r\n \r\n ))}\r\n \r\n ))}\r\n \r\n ))}\r\n \r\n \r\n \r\n handleScrollBarScroll()}\r\n disabled={mode === DataGridModes.EditEliminations}\r\n >\r\n \r\n \r\n \r\n {hasFYTotal && (\r\n \r\n )}{' '}\r\n
    \r\n
    \r\n \r\n );\r\n};\r\n\r\nexport { DataGrid };\r\n","import * as React from 'react';\r\nimport { useCallback, useEffect, useState } from 'react';\r\n\r\nimport { ArrowSeparateVertical, NavArrowUp, NavArrowDown } from 'iconoir-react';\r\nimport cloneDeep from 'lodash/cloneDeep';\r\nimport styled from 'styled-components';\r\nimport useDeepCompareEffect from 'use-deep-compare-effect';\r\n\r\nimport { camelToKebab } from '../../../Scripts/Spotlight/Components/CamelToKebab';\r\nimport { anyCompare, stringCompare } from '../../../Scripts/Spotlight/Utilities/sort';\r\nimport { COLOR, SPACING } from '../../packages/constants';\r\nimport { LoadingSpinner } from '../loading-spinner';\r\n\r\nexport interface DataTableColumnDefinition {\r\n name: string;\r\n header: string;\r\n hideHeader?: boolean;\r\n dataId?: string;\r\n width?: string;\r\n sortable?: boolean;\r\n compareFn?: (value1: any, value2: any) => number;\r\n render?: (row: any) => JSX.Element;\r\n}\r\n\r\ninterface RowData {\r\n id: string;\r\n [key: string]: any;\r\n}\r\n\r\nexport interface DataTableRowDefinition {\r\n data: RowData;\r\n className?: string;\r\n dataId?: string;\r\n}\r\n\r\nexport interface DataTableProps {\r\n columns: DataTableColumnDefinition[];\r\n rows: DataTableRowDefinition[];\r\n defaultSortColumn?: string;\r\n defaultSortDirection?: SortDirection;\r\n rowHeight?: string;\r\n headerFontSize?: string;\r\n dataFontSize?: string;\r\n loading?: boolean;\r\n ariaLabel?: string;\r\n dataId?: string;\r\n pinnedRows?: string[];\r\n}\r\n\r\nexport enum SortDirection {\r\n Ascending = 'ASCENDING',\r\n Descending = 'DESCENDING',\r\n}\r\n\r\ninterface StyledHeaderRowProps {\r\n fontSize?: string;\r\n}\r\n\r\ninterface StyledHeaderCellProps {\r\n width?: string;\r\n}\r\n\r\ninterface StyledRowProps {\r\n height?: string;\r\n fontSize?: string;\r\n}\r\n\r\nconst StyledDataTable = styled.table`\r\n width: 100%;\r\n table-layout: fixed;\r\n border-collapse: separate;\r\n`;\r\n\r\nconst StyledHeaderRow = styled.tr`\r\n font-size: ${(props: StyledHeaderRowProps) => props.fontSize};\r\n font-weight: 400;\r\n color: #031c44;\r\n`;\r\n\r\nconst StyledHeaderCell = styled.th`\r\n padding: 15px ${SPACING.MEDIUM};\r\n text-align: left;\r\n vertical-align: bottom;\r\n word-wrap: break-word;\r\n line-height: 1.5;\r\n ${(props: StyledHeaderCellProps) => (props.width ? `width: ${props.width}` : '')};\r\n`;\r\n\r\nconst StyledRow = styled.tr`\r\n font-size: ${(props: StyledRowProps) => props.fontSize};\r\n color: #031c44;\r\n background-color: ${COLOR.PRIMARY.WHITE};\r\n height: ${(props: StyledRowProps) => props.height};\r\n`;\r\n\r\ninterface StyledCellProps {\r\n inFirstRow: boolean;\r\n inLastRow: boolean;\r\n inFirstColumn: boolean;\r\n inLastColumn: boolean;\r\n}\r\n\r\nconst StyledCell = styled.td`\r\n padding: 0 ${SPACING.MEDIUM};\r\n vertical-align: middle;\r\n text-align: left;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n\r\n // border\r\n border-color: #cdd3de;\r\n border-style: solid;\r\n border-left-width: ${(props) => (props.inFirstColumn ? '1px' : '0')};\r\n border-right-width: ${(props) => (props.inLastColumn ? '1px' : '0')};\r\n border-bottom-width: 1px;\r\n border-top-width: ${(props) => (props.inFirstRow ? '1px' : '0')};\r\n border-top-left-radius: ${(props) => (props.inFirstRow && props.inFirstColumn ? '5px' : '0')};\r\n border-top-right-radius: ${(props) => (props.inFirstRow && props.inLastColumn ? '5px' : '0')};\r\n border-bottom-left-radius: ${(props) => (props.inLastRow && props.inFirstColumn ? '5px' : '0')};\r\n border-bottom-right-radius: ${(props) => (props.inLastRow && props.inLastColumn ? '5px' : '0')};\r\n`;\r\n\r\nconst StyledNonSortableHeaderCell = styled.div`\r\n display: flex;\r\n align-items: center;\r\n min-height: 1.4em;\r\n`;\r\n\r\nconst StyledSortableHeaderCell = styled.div`\r\n display: flex;\r\n column-gap: ${SPACING.XX_SMALL};\r\n align-items: center;\r\n cursor: pointer;\r\n user-select: none;\r\n\r\n &:hover {\r\n text-decoration: underline;\r\n text-underline-position: under;\r\n }\r\n`;\r\n\r\nconst StyledSortIcon = styled.div`\r\n align-self: flex-end;\r\n flex-shrink: 0;\r\n height: 1.4em;\r\n width: 1.4em;\r\n`;\r\n\r\nconst StyledHeaderCellText = styled.div`\r\n user-select: text;\r\n`;\r\n\r\nconst StyledLoadingSpinner = styled(LoadingSpinner)`\r\n display: flex;\r\n justify-content: center;\r\n`;\r\n\r\nconst DataTableCell = ({\r\n row,\r\n column,\r\n dataId,\r\n inFirstRow,\r\n inFirstColumn,\r\n inLastRow,\r\n inLastColumn,\r\n}: {\r\n row: DataTableRowDefinition;\r\n column: DataTableColumnDefinition;\r\n dataId?: string;\r\n inFirstRow: boolean;\r\n inFirstColumn: boolean;\r\n inLastRow: boolean;\r\n inLastColumn: boolean;\r\n}) => {\r\n return (\r\n \r\n {column.render ? column.render(row.data) : row.data[column.name] ?? ''}\r\n \r\n );\r\n};\r\n\r\nconst SortableHeaderCell = ({\r\n column,\r\n isCurrentSortColumn,\r\n sortDirection,\r\n changeSortHandler,\r\n}: {\r\n column: DataTableColumnDefinition;\r\n isCurrentSortColumn: boolean;\r\n sortDirection: SortDirection;\r\n changeSortHandler: (columnName: string) => void;\r\n}) => {\r\n return (\r\n changeSortHandler(column.name)}\r\n data-test-id={\r\n column.dataId\r\n ? `${column.dataId}-header-button-sort`\r\n : `${camelToKebab(column.header)}-header-button-sort`\r\n }\r\n >\r\n {!column.hideHeader && {column.header}}\r\n \r\n {isCurrentSortColumn && sortDirection === SortDirection.Ascending && (\r\n \r\n )}\r\n {isCurrentSortColumn && sortDirection === SortDirection.Descending && (\r\n \r\n )}\r\n {!isCurrentSortColumn && }\r\n \r\n \r\n );\r\n};\r\n\r\nexport const DataTable = React.forwardRef(\r\n (\r\n {\r\n columns = [],\r\n rows = [],\r\n defaultSortColumn,\r\n defaultSortDirection = SortDirection.Ascending,\r\n rowHeight = '80px',\r\n headerFontSize = '13px',\r\n dataFontSize = '14px',\r\n loading,\r\n dataId,\r\n ariaLabel,\r\n pinnedRows = [],\r\n ...props\r\n },\r\n ref,\r\n ) => {\r\n const [sortColumnName, setSortColumnName] = useState(defaultSortColumn);\r\n const [sortDirection, setSortDirection] = useState(defaultSortDirection);\r\n\r\n const sort = useCallback(() => {\r\n const rowsClone = cloneDeep(rows);\r\n\r\n if (!sortColumnName) {\r\n return rowsClone;\r\n }\r\n const sortColumn = columns.find((column) => column.name === sortColumnName);\r\n\r\n if (!sortColumn) {\r\n return rowsClone;\r\n }\r\n\r\n const multiplier = sortDirection === SortDirection.Descending ? -1 : 1;\r\n\r\n const defaultCompareFn = (a: any, b: any) => {\r\n const valueA = a[sortColumn.name];\r\n const valueB = b[sortColumn.name];\r\n\r\n if (typeof valueA === 'string' && typeof valueB === 'string') {\r\n return stringCompare(valueA, valueB);\r\n }\r\n\r\n return anyCompare(valueA, valueB);\r\n };\r\n\r\n const sortFn = (rowA: DataTableRowDefinition, rowB: DataTableRowDefinition) => {\r\n const result = sortColumn.compareFn\r\n ? sortColumn.compareFn(rowA.data, rowB.data)\r\n : defaultCompareFn(rowA.data, rowB.data);\r\n\r\n return result * multiplier;\r\n };\r\n\r\n // Calling the sort function on cloned rows, hence mutating the array\r\n rowsClone.sort(sortFn);\r\n\r\n if (pinnedRows) {\r\n const pinnedElements = rowsClone.filter((row) => pinnedRows.includes(row.data.id));\r\n const nonPinnedElements = rowsClone.filter((row) => !pinnedRows.includes(row.data.id));\r\n\r\n const pinnedSortedRows = [...pinnedElements, ...nonPinnedElements];\r\n\r\n return pinnedSortedRows;\r\n } else {\r\n return rowsClone;\r\n }\r\n }, [sortColumnName, sortDirection, rows, columns, pinnedRows]);\r\n\r\n const [sortedRows, setSortedRows] = useState(sort());\r\n\r\n const changeSort = (selectedColumnName: string) => {\r\n const newSortDirection =\r\n sortColumnName === selectedColumnName && sortDirection === SortDirection.Ascending\r\n ? SortDirection.Descending\r\n : SortDirection.Ascending;\r\n\r\n setSortColumnName(selectedColumnName);\r\n setSortDirection(newSortDirection);\r\n };\r\n\r\n useEffect(() => {\r\n setSortColumnName(defaultSortColumn);\r\n setSortDirection(defaultSortColumn ? defaultSortDirection ?? SortDirection.Ascending : null);\r\n }, [defaultSortColumn, defaultSortDirection]);\r\n\r\n useDeepCompareEffect(() => {\r\n const newRows = sort();\r\n setSortedRows(newRows);\r\n }, [columns, rows, sortColumnName, sortDirection, pinnedRows]);\r\n\r\n return (\r\n <>\r\n {loading ? (\r\n \r\n ) : (\r\n \r\n \r\n \r\n {columns.map((column) => (\r\n \r\n {column.sortable ? (\r\n \r\n ) : (\r\n !column.hideHeader && (\r\n \r\n {column.header}\r\n \r\n )\r\n )}\r\n \r\n ))}\r\n \r\n \r\n \r\n {sortedRows.map((row, rowIndex) => {\r\n return (\r\n \r\n {columns.map((column, columnIndex) => (\r\n \r\n ))}\r\n \r\n );\r\n })}\r\n \r\n \r\n )}\r\n \r\n );\r\n },\r\n);\r\nDataTable.displayName = 'DataTable';\r\n","import * as React from 'react';\r\n\r\nimport SVGBase from '../svg-base/svg-base';\r\n\r\nexport interface TriangleDownProps {\r\n fill?: string;\r\n title?: string;\r\n height?: string;\r\n width?: string;\r\n viewBox?: string;\r\n}\r\n\r\nconst TriangleDown = ({ fill, title, height, width, ...rest }: TriangleDownProps) => (\r\n \r\n \r\n \r\n);\r\n\r\nexport default TriangleDown;\r\n","import TriangleDown from './triangle-down';\r\n\r\nexport * from './triangle-down';\r\nexport default TriangleDown;\r\n","import * as React from 'react';\r\nimport { useCallback, useEffect, useRef, useState } from 'react';\r\nimport { useImperativeHandle } from 'react';\r\n\r\nimport styled, { ThemeProvider } from 'styled-components';\r\n\r\nimport { useClickOutside } from '../../../ModernScripts/Spotlight/Hooks/useClickOutside';\r\nimport { camelToKebab } from '../../../Scripts/Spotlight/Components/CamelToKebab';\r\nimport { COLOR, FONT_SIZE, FONT_STACK, RADIUS, SHADOW, SPACING, THEME } from '../../packages/constants';\r\nimport { SortDown } from '../../packages/icons';\r\nimport TriangleDown from '../../packages/icons/triangle-down';\r\nimport { Button, ButtonAsText, ButtonGroup } from '../button';\r\nimport { CheckboxInput, CheckboxInputProps } from '../checkbox-input';\r\nimport { MultiSelectVariants } from '../multi-select/multi-select';\r\nimport { SearchFilter } from '../search-filter/search-filter';\r\n\r\nexport interface DataItem {\r\n name: string;\r\n id: string;\r\n selected: boolean;\r\n flagColour?: string;\r\n}\r\n\r\nexport interface Category {\r\n categoryName: string;\r\n options: DataItem[];\r\n}\r\n\r\ninterface StyledCheckboxProps extends CheckboxInputProps {\r\n hasMultipleCategories: boolean;\r\n hasModernVariant?: boolean;\r\n}\r\n\r\nexport interface MultiSelectInputButtonProps {\r\n dataId: string;\r\n onClick: React.MouseEventHandler;\r\n}\r\n\r\ntype triggerEl = ({ dataId, onClick }: MultiSelectInputButtonProps) => JSX.Element;\r\n\r\nexport interface MultiSelectInputProps {\r\n dataSet: Category[];\r\n dataId: string;\r\n handleApplyButton: (e?: Category[]) => void;\r\n handleCancelButton: (e?: DataItem[]) => void;\r\n disabled?: boolean;\r\n maxHeight?: string;\r\n maxWidth?: string;\r\n hasFilter?: boolean;\r\n trigger?: triggerEl;\r\n variant: MultiSelectVariants;\r\n}\r\n\r\ninterface DropDownValueProps {\r\n isDropdownOpen: boolean;\r\n disabled?: boolean;\r\n hasLegacyStyles: boolean;\r\n}\r\n\r\nconst DropDownValue = styled.button`\r\n border-radius: ${(props) =>\r\n props.hasLegacyStyles ? 0 : props.isDropdownOpen ? `${RADIUS.DEFAULT} ${RADIUS.DEFAULT} 0 0` : RADIUS.DEFAULT};\r\n border: 1px solid ${COLOR.MAIN.FORM_FIELD};\r\n background-color: ${COLOR.PRIMARY.WHITE};\r\n color: ${COLOR.PRIMARY.BLACK};\r\n padding: 6px;\r\n min-width: 120px;\r\n width: 100%;\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n font-family: ${FONT_STACK};\r\n font-size: ${(props) => (props.hasLegacyStyles ? '13px' : FONT_SIZE.SMALL)};\r\n line-height: ${(props) => (props.hasLegacyStyles ? '18px' : FONT_SIZE.MEDIUM)};\r\n opacity: ${(props) => (props.disabled ? '0.6' : '1')};\r\n cursor: pointer;\r\n position: relative;\r\n`;\r\n\r\ninterface StyledDropdownProps {\r\n maxWidth?: string;\r\n ref: any;\r\n hasModernVariant?: boolean;\r\n width: string;\r\n}\r\n\r\nconst StyledDropdown = styled.div`\r\n background-color: ${COLOR.PRIMARY.WHITE};\r\n border: 1px solid ${COLOR.DROPDOWN.DROPDOWN_BORDER};\r\n border-radius: ${RADIUS.DEFAULT};\r\n box-shadow: ${SHADOW.DEFAULT};\r\n position: absolute;\r\n z-index: 100;\r\n margin-top: ${SPACING.X_SMALL};\r\n max-width: ${(props) => props.maxWidth ?? 'none'};\r\n width: ${(props) => props.width};\r\n`;\r\n\r\nconst StyledCheckbox = styled(CheckboxInput)`\r\n &&& {\r\n align-items: flex-start;\r\n overflow-wrap: anywhere;\r\n }\r\n\r\n span {\r\n margin-top: 1px;\r\n font-size: 13px;\r\n cursor: pointer;\r\n }\r\n\r\n input {\r\n cursor: pointer;\r\n }\r\n`;\r\n\r\nconst OptionCheckbox = styled(StyledCheckbox)`\r\n &&& {\r\n margin-left: ${(props) => (props.hasMultipleCategories ? SPACING.LARGE : 0)};\r\n margin-bottom: 0;\r\n }\r\n`;\r\n\r\nconst AllCheckbox = styled(StyledCheckbox)`\r\n &&& {\r\n margin-top: ${(props) => (props.hasModernVariant ? SPACING.SMALL : SPACING.LARGE)};\r\n margin-bottom: ${(props) =>\r\n props.hasModernVariant ? 0 : props.hasMultipleCategories ? SPACING.SMALL : SPACING.LARGE};\r\n }\r\n\r\n span {\r\n font-weight: ${(props) => (props.hasModernVariant ? 700 : 400)};\r\n }\r\n`;\r\n\r\nconst NotFound = styled.p`\r\n font-size: ${FONT_SIZE.SMALL};\r\n color: ${COLOR.MAIN.FORM_FIELD_DARK};\r\n padding-left: ${SPACING.X_LARGE};\r\n`;\r\n\r\nconst StyledButtonGroup = styled(ButtonGroup)`\r\n padding: ${SPACING.MEDIUM};\r\n background-color: ${COLOR.MAIN.BUTTON_GROUP_BG};\r\n border-top: 1px solid ${COLOR.MAIN.BUTTON_GROUP_BORDER};\r\n border-radius: 0 0 ${RADIUS.DEFAULT} ${RADIUS.DEFAULT};\r\n`;\r\n\r\ninterface CheckboxScrollAreaProps {\r\n maxHeight?: string;\r\n hasModernVariant?: boolean;\r\n}\r\n\r\nconst CheckboxScrollArea = styled.div`\r\n max-height: ${(props) => props.maxHeight};\r\n overflow: auto;\r\n padding: 0 ${(props) => (props.hasModernVariant ? SPACING.SMALL : SPACING.MEDIUM)} ${SPACING.MEDIUM};\r\n`;\r\n\r\nconst CheckboxWrapper = styled.ul``;\r\n\r\nconst StyledDownArrow = styled(SortDown)`\r\n padding: 2px;\r\n align-self: center;\r\n justify-self: flex-end;\r\n pointer-events: none;\r\n`;\r\n\r\ninterface StyledTriangleDownProps {\r\n dropdownOpenState?: boolean;\r\n}\r\n\r\nconst StyledTriangleDown = styled(TriangleDown)`\r\n height: 8px;\r\n width: 8px;\r\n fill: #888;\r\n transform: rotate(${(props) => (props.dropdownOpenState ? '180deg' : 0)})\r\n translateY(${(props) => (props.dropdownOpenState ? '2px' : 0)});\r\n`;\r\n\r\ninterface StyledListItemProps {\r\n flagColour?: string;\r\n hasModernVariant?: boolean;\r\n}\r\n\r\nconst StyledListItem = styled.li`\r\n padding-top: ${SPACING.X_SMALL};\r\n padding-bottom: ${(props) => (props.hasModernVariant ? SPACING.SMALL : SPACING.X_SMALL)};\r\n position: relative;\r\n\r\n ${(props) =>\r\n props.flagColour &&\r\n `&:before {\r\n content: '';\r\n position: absolute;\r\n top: 0px;\r\n bottom: 1px;\r\n left: -12px;\r\n width: 4px;\r\n background: ${props.flagColour};\r\n }`}\r\n`;\r\n\r\ninterface StyledSearchFilterProps {\r\n variant: MultiSelectVariants;\r\n}\r\n\r\nconst StyledSearchFilter = styled(SearchFilter)`\r\n margin: ${(props) => (props.variant === 'modern' ? '10px' : SPACING.X_SMALL)};\r\n`;\r\n\r\ninterface CheckboxProps {\r\n dataId: string;\r\n category: Category;\r\n handleAllCheckboxes: (e?: any) => void;\r\n handleCheckbox: (id: string, categoryName: string) => void;\r\n filterValue: string;\r\n hasMultipleCategories: boolean;\r\n variant: MultiSelectVariants;\r\n}\r\n\r\nconst checkCheckboxState = (category: Category) => {\r\n const parentCheckboxId = `checkbox-all-${camelToKebab(category.categoryName)}`;\r\n const parentCheckboxElement = document.getElementById(parentCheckboxId);\r\n const checkedValues: boolean[] = [];\r\n let count = 0;\r\n\r\n category.options.forEach((item: DataItem) => {\r\n checkedValues.push(item.selected);\r\n if (item.selected) {\r\n count += 1;\r\n }\r\n });\r\n\r\n let firstValue = false;\r\n if (parentCheckboxElement) {\r\n for (let i = 0; checkedValues.length > i; i += 1) {\r\n if (i === 0) {\r\n firstValue = checkedValues[0];\r\n } else {\r\n if (firstValue !== checkedValues[i]) {\r\n // @ts-ignore\r\n parentCheckboxElement.indeterminate = true;\r\n break;\r\n } else if (firstValue && firstValue === checkedValues[i]) {\r\n // @ts-ignore\r\n parentCheckboxElement.indeterminate = false;\r\n } else if (!firstValue && firstValue === checkedValues[i]) {\r\n // @ts-ignore\r\n parentCheckboxElement.indeterminate = false;\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (parentCheckboxElement) {\r\n // @ts-ignore\r\n parentCheckboxElement.checked = count === checkedValues.length;\r\n }\r\n};\r\n\r\nconst Checkboxes = ({\r\n dataId,\r\n category,\r\n handleAllCheckboxes,\r\n handleCheckbox,\r\n filterValue,\r\n hasMultipleCategories,\r\n variant,\r\n}: CheckboxProps) => {\r\n const filteredList = category.options.filter((item: DataItem) => {\r\n if (filterValue.startsWith(' ')) {\r\n return item.name;\r\n } else {\r\n return item.name.toLowerCase().includes(filterValue.toLowerCase());\r\n }\r\n });\r\n\r\n const hasModernVariant = variant === 'modern';\r\n\r\n useEffect(() => {\r\n checkCheckboxState(category);\r\n }, [category]);\r\n\r\n return (\r\n <>\r\n \r\n handleAllCheckboxes(e)}\r\n thinLabel\r\n inline\r\n hasModernVariant={hasModernVariant}\r\n />\r\n \r\n {filteredList.length > 0 ? (\r\n filteredList\r\n .sort((a: DataItem, b: DataItem) => a.name.trim().localeCompare(b.name.trim()))\r\n .map((item: DataItem) => (\r\n \r\n handleCheckbox(camelToKebab(item.name), category.categoryName)}\r\n checked={item.selected}\r\n hasMultipleCategories={hasMultipleCategories}\r\n thinLabel\r\n inline\r\n />\r\n \r\n ))\r\n ) : (\r\n
  • \r\n No results found.\r\n
  • \r\n )}\r\n \r\n );\r\n};\r\n\r\ninterface DropdownProps {\r\n data: Category[];\r\n dataId: string;\r\n setData: (data: Category[]) => void;\r\n handleApplyButton: () => void;\r\n handleCancelButton: () => void;\r\n hasFilter?: boolean;\r\n maxHeight?: string;\r\n maxWidth?: string;\r\n variant: MultiSelectVariants;\r\n width: string;\r\n}\r\n\r\nconst Dropdown: React.FC> = ({\r\n data,\r\n dataId,\r\n setData,\r\n handleApplyButton,\r\n handleCancelButton,\r\n hasFilter,\r\n maxHeight,\r\n maxWidth,\r\n variant,\r\n width,\r\n}) => {\r\n const [filterValue, setFilterValue] = React.useState('');\r\n const [isDirty, setDirty] = React.useState(false);\r\n\r\n const filterInputRef = useRef(null);\r\n const dropdownRef = useRef();\r\n\r\n useClickOutside(dropdownRef, () => {\r\n switch (variant) {\r\n case 'legacy':\r\n case 'normal':\r\n handleCancelButton();\r\n break;\r\n case 'modern':\r\n handleApplyButton();\r\n }\r\n });\r\n\r\n const handleFilterChange = (e: React.ChangeEvent) => {\r\n setFilterValue(e.target.value);\r\n };\r\n\r\n const handleClearButton = () => {\r\n setFilterValue('');\r\n // @ts-ignore\r\n filterInputRef.current.focus();\r\n };\r\n\r\n const handleCheckbox = (camelToKebabName: string, categoryName: string) => {\r\n const dataCopy = [...data];\r\n\r\n dataCopy.forEach((category: Category, categoryIndex: number) => {\r\n if (category.categoryName === categoryName) {\r\n dataCopy[categoryIndex].options.forEach((item) => {\r\n if (camelToKebab(item.name) === camelToKebabName) {\r\n item.selected = !item.selected;\r\n setData(dataCopy);\r\n setDirty(true);\r\n }\r\n });\r\n checkCheckboxState({ ...category });\r\n }\r\n });\r\n };\r\n\r\n const handleAllCheckboxes = (e: React.ChangeEvent, categoryIndex: number) => {\r\n const dataCopy = [...data];\r\n dataCopy[categoryIndex].options.forEach((item) => {\r\n item.selected = e.target.checked;\r\n });\r\n\r\n setData(dataCopy);\r\n setDirty(true);\r\n };\r\n\r\n useEffect(() => {\r\n function handleKeyListener(e: KeyboardEvent) {\r\n if (e.key === 'Escape') {\r\n if (variant === 'modern') {\r\n handleApplyButton();\r\n } // @ts-ignore\r\n else if (document.activeElement === filterInputRef.current && filterInputRef.current.value.length) {\r\n handleClearButton();\r\n } else {\r\n handleCancelButton();\r\n }\r\n }\r\n }\r\n\r\n document.addEventListener('keydown', handleKeyListener);\r\n\r\n return function cleanupKeyListener() {\r\n document.removeEventListener('keydown', handleKeyListener);\r\n };\r\n }, [handleCancelButton, handleApplyButton, variant]);\r\n\r\n return (\r\n \r\n {hasFilter && (\r\n handleFilterChange(e)}\r\n handleClearButton={handleClearButton}\r\n searchTerm={filterValue}\r\n assistAccess={false}\r\n data-test-id={`${dataId}-multi-select__filter`}\r\n hasClearButton={variant !== 'modern'}\r\n hasSearchIcon={variant === 'modern'}\r\n variant={variant}\r\n />\r\n )}\r\n \r\n {data &&\r\n data.map((category: Category, index: number) => (\r\n \r\n handleAllCheckboxes(e, index)}\r\n handleCheckbox={handleCheckbox}\r\n filterValue={filterValue}\r\n hasMultipleCategories={data?.length > 1}\r\n variant={variant}\r\n />\r\n \r\n ))}\r\n \r\n {variant !== 'modern' && (\r\n \r\n \r\n handleCancelButton()}\r\n >\r\n Cancel\r\n \r\n \r\n handleApplyButton()}\r\n disabled={!isDirty}\r\n >\r\n Apply\r\n \r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nconst defaultFilterString = 'No filter';\r\n\r\nexport const MultiSelectInput = React.forwardRef(\r\n (\r\n {\r\n dataSet,\r\n dataId,\r\n disabled,\r\n handleApplyButton,\r\n handleCancelButton,\r\n hasFilter = true,\r\n maxHeight = '240px',\r\n maxWidth,\r\n trigger,\r\n variant,\r\n ...props\r\n },\r\n ref,\r\n ) => {\r\n const [data, setData] = useState(dataSet);\r\n const [dropdownOpenState, setDropDownOpenState] = useState(false);\r\n const [dropdownValue, setDropdownValue] = useState(defaultFilterString);\r\n const [containerWidth, setContainerWidth] = useState(0);\r\n const hasLegacyStyles = variant === 'legacy';\r\n\r\n const containerRef = useRef(null);\r\n useImperativeHandle(ref, () => containerRef.current);\r\n\r\n const handleDropdownToggle = () => {\r\n setDropDownOpenState(!dropdownOpenState);\r\n };\r\n\r\n const applyButton = () => {\r\n handleApplyButton(data);\r\n setDropDownOpenState(false);\r\n };\r\n\r\n const cancelButton = useCallback(() => {\r\n const temp = () => handleCancelButton();\r\n // @ts-ignore\r\n setData(temp);\r\n setDropDownOpenState(false);\r\n }, [handleCancelButton]);\r\n\r\n const Trigger = (props: MultiSelectInputButtonProps) => {\r\n if (!trigger) {\r\n return null;\r\n }\r\n\r\n return trigger(props);\r\n };\r\n\r\n useEffect(() => {\r\n setData(dataSet);\r\n }, [dataSet]);\r\n\r\n useEffect(() => {\r\n if (!data) {\r\n return;\r\n }\r\n\r\n const items = data.flatMap((category) => category.options);\r\n const totalItemCount = items.length;\r\n const selectedItemCount = items.filter((item) => item.selected).length;\r\n\r\n const buttonText =\r\n selectedItemCount === 0\r\n ? defaultFilterString\r\n : `${selectedItemCount} of ${totalItemCount} item${totalItemCount === 1 ? '' : 's'}`;\r\n\r\n setDropdownValue(buttonText);\r\n }, [data]);\r\n\r\n const updateContainerWidth = () => {\r\n const newWidth = containerRef?.current?.children[0].clientWidth;\r\n setContainerWidth(newWidth ?? 0);\r\n };\r\n\r\n useEffect(() => {\r\n updateContainerWidth();\r\n\r\n window.addEventListener('resize', updateContainerWidth);\r\n\r\n return () => {\r\n window.removeEventListener('resize', updateContainerWidth);\r\n };\r\n }, []);\r\n\r\n return (\r\n
    \r\n {trigger && (\r\n handleDropdownToggle()}\r\n />\r\n )}\r\n {!trigger && (\r\n \r\n {dropdownValue}{' '}\r\n {hasLegacyStyles ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n )}\r\n {dropdownOpenState && (\r\n \r\n )}\r\n
    \r\n );\r\n },\r\n);\r\nMultiSelectInput.displayName = 'MultiSelectInput';\r\n","import * as React from 'react';\r\n\r\nimport styled from 'styled-components';\r\n\r\nimport { COLOR, FONT_SIZE, FONT_STACK, SPACING } from '../../packages/constants';\r\nimport { MultiSelectInput } from '../multi-select-input';\r\n\r\nexport type MultiSelectVariants = 'legacy' | 'normal' | 'modern';\r\n\r\ninterface DataItem {\r\n name: string;\r\n id: string;\r\n selected: boolean;\r\n}\r\n\r\ninterface Category {\r\n categoryName: string;\r\n options: DataItem[];\r\n}\r\n\r\nexport interface MultiSelectProps {\r\n dataSet: Category[];\r\n dataId: string;\r\n handleApplyButton: (e?: Category[]) => void;\r\n handleCancelButton: (e?: DataItem[]) => void;\r\n label: string;\r\n disabled?: boolean;\r\n thinLabel?: boolean;\r\n maxHeight?: string;\r\n maxWidth?: string;\r\n hasFilter?: boolean;\r\n variant?: MultiSelectVariants;\r\n}\r\n\r\nconst StyledMultiSelect = styled.div``;\r\n\r\ninterface StyledLabelProps {\r\n disabled?: boolean;\r\n invalid?: boolean;\r\n thinLabel?: boolean;\r\n hasLegacyStyles?: boolean;\r\n}\r\n\r\nconst StyledLabel = styled.label`\r\n padding-bottom: ${(props) => (props.hasLegacyStyles ? 0 : SPACING.XX_SMALL)};\r\n font-family: ${FONT_STACK};\r\n font-size: ${(props) => (props.hasLegacyStyles ? FONT_SIZE.X_SMALL : FONT_SIZE.SMALL)};\r\n font-weight: ${(props) => (props.thinLabel ? '400' : '700')};\r\n line-height: ${(props) => (props.hasLegacyStyles ? 'normal' : FONT_SIZE.MEDIUM)};\r\n margin-bottom: ${(props) => (props.hasLegacyStyles ? '8px' : 0)};\r\n display: block;\r\n color: ${(props) =>\r\n props.invalid ? COLOR.PRIMARY.RED : props.hasLegacyStyles ? COLOR.PRIMARY.BLACK : COLOR.MAIN.LABEL_TEXT};\r\n opacity: ${(props) => (props.disabled ? '0.7' : '1')};\r\n`;\r\n\r\nexport const MultiSelect = React.forwardRef(\r\n (\r\n {\r\n dataSet,\r\n dataId,\r\n label,\r\n disabled,\r\n handleApplyButton,\r\n handleCancelButton,\r\n hasFilter = true,\r\n maxHeight = '240px',\r\n maxWidth,\r\n thinLabel,\r\n variant = 'normal',\r\n ...props\r\n },\r\n ref,\r\n ) => {\r\n const hasLegacyStyles = variant === 'legacy';\r\n\r\n return (\r\n \r\n \r\n {label}\r\n \r\n \r\n \r\n );\r\n },\r\n);\r\nMultiSelect.displayName = 'MultiSelect';\r\n","import * as React from 'react';\r\nimport { useState, useEffect, useRef, useImperativeHandle } from 'react';\r\n\r\nimport dayjs from 'dayjs';\r\nimport { darken, lighten, transparentize } from 'polished';\r\nimport styled, { css } from 'styled-components';\r\n\r\nimport { COLOR, FONT_SIZE, FONT_STACK, RADIUS, SHADOW } from '../../packages/constants';\r\nimport { ChevronLeft, ChevronRight, SortDown } from '../../packages/icons';\r\nimport { ButtonAsText } from '../button';\r\nimport { Overlay } from '../modal';\r\n\r\n/**\r\n * Month Date Picker Calendar\r\n */\r\nexport interface MonthDatePickerCalendarProps {\r\n year?: number | null;\r\n monthIndex?: number | null;\r\n dispatch: any;\r\n dataId: string;\r\n mode: 'absolute' | 'fixed';\r\n left?: number;\r\n top?: number;\r\n}\r\n\r\ninterface StyledMonthDatePickerCalendarProps {\r\n mode: 'absolute' | 'fixed';\r\n left?: number;\r\n top?: number;\r\n}\r\n\r\nconst calendarHeight = 194;\r\nconst calendarPadding = 6;\r\nconst calendarMargin = 6;\r\n\r\nconst StyledMonthDatePickerCalendar = styled.div`\r\n ${(props) => props.mode && `position: ${props.mode};`}\r\n ${(props) => props.left && `left: ${props.left}px;`}\r\n ${(props) => props.top && `top: ${props.top}px;`}\r\n z-index: 100;\r\n box-sizing: border-box;\r\n margin-top: ${calendarMargin}px;\r\n margin-bottom: ${calendarMargin}px;\r\n border: 1px solid ${COLOR.DROPDOWN.DROPDOWN_BORDER};\r\n padding: ${calendarPadding}px;\r\n width: 280px;\r\n height: ${calendarHeight}px;\r\n border-radius: ${RADIUS.DEFAULT};\r\n background: #fff;\r\n box-shadow: ${SHADOW.DEFAULT};\r\n font-family: ${FONT_STACK};\r\n`;\r\n\r\nconst Cell = styled.li`\r\n box-sizing: border-box;\r\n display: inline-block;\r\n width: 25%;\r\n padding: 10px;\r\n border-radius: 100%;\r\n color: ${COLOR.DROPDOWN.DROPDOWN_OPTION_TEXT};\r\n`;\r\n\r\ninterface CellButtonProps {\r\n isSelected?: boolean;\r\n isGrey?: boolean;\r\n}\r\n\r\nconst CellButton = styled.button`\r\n background: none;\r\n border: none;\r\n display: block;\r\n margin: 0 auto;\r\n border-radius: 15px;\r\n padding: 6px 10px;\r\n cursor: pointer;\r\n font-family: ${FONT_STACK};\r\n ${(props) =>\r\n props.isGrey &&\r\n css`\r\n color: #b7c3d6;\r\n `};\r\n &:hover {\r\n background: ${COLOR.DROPDOWN.DROPDOWN_OPTION_HOVER};\r\n }\r\n ${(props) =>\r\n props.isSelected &&\r\n css`\r\n color: #fff;\r\n background: ${COLOR.DROPDOWN.DROPDOWN_OPTION_SELECTED};\r\n &:hover {\r\n background: ${COLOR.DROPDOWN.DROPDOWN_OPTION_SELECTED};\r\n }\r\n `};\r\n`;\r\n\r\nconst NavButton = styled.button`\r\n background: none;\r\n border: none;\r\n border-radius: 100%;\r\n height: 30px;\r\n width: 30px;\r\n display: inline-block;\r\n cursor: pointer;\r\n\r\n &:hover {\r\n background: ${COLOR.DROPDOWN.DROPDOWN_OPTION_HOVER};\r\n }\r\n &:active {\r\n background: ${darken('0.1', COLOR.DROPDOWN.DROPDOWN_OPTION_HOVER)};\r\n }\r\n`;\r\n\r\nconst PrevButton = styled(NavButton)``;\r\n\r\nconst NextButton = styled(NavButton)``;\r\n\r\nconst StyledChevronLeft = styled(ChevronLeft)`\r\n margin: 0 auto;\r\n`;\r\n\r\nconst StyledChevronRight = styled(ChevronRight)`\r\n margin: 0 auto;\r\n`;\r\n\r\nconst YearButton = styled(ButtonAsText)`\r\n display: inline-block;\r\n margin: 0 auto;\r\n position: relative;\r\n top: 1px;\r\n align-self: center;\r\n font-weight: 400;\r\n cursor: pointer;\r\n`;\r\n\r\nconst YearRangeHeading = styled.span`\r\n margin: 0 auto;\r\n font-family: ${FONT_STACK};\r\n font-size: ${FONT_SIZE.SMALL};\r\n align-self: center;\r\n`;\r\n\r\nconst CalendarHeader = styled.div`\r\n display: flex;\r\n`;\r\n\r\nconst MonthsList = styled.ol`\r\n display: block;\r\n`;\r\n\r\nconst YearsList = styled(MonthsList)``;\r\n\r\nenum ViewModes {\r\n Month = 'MONTH',\r\n Year = 'YEAR',\r\n}\r\n\r\nconst Years = ({\r\n decadeStart,\r\n clickedYear,\r\n selectedYear,\r\n dataId,\r\n}: {\r\n decadeStart: number;\r\n clickedYear: any;\r\n selectedYear: number | null;\r\n dataId: string;\r\n}) => {\r\n /**\r\n * should be the decade for the year user has navigated to\r\n * e.g. 2020-2029, then have a year either side\r\n */\r\n const yearOptions = (() => {\r\n const arr = [];\r\n for (let i = -1; i < 11; i++) {\r\n arr.push(decadeStart + i);\r\n }\r\n return arr;\r\n })();\r\n const decadeEnd = decadeStart + 9;\r\n\r\n return (\r\n \r\n {yearOptions.map((item) => {\r\n const isSelected = typeof selectedYear === 'number' && item === selectedYear;\r\n return (\r\n \r\n clickedYear(item)}\r\n isGrey={item < decadeStart || item > decadeEnd}\r\n isSelected={isSelected}\r\n data-test-id={`${dataId}__years__button-year-${item}`}\r\n data-selected={isSelected}\r\n type=\"button\"\r\n >\r\n {item}\r\n \r\n \r\n );\r\n })}\r\n \r\n );\r\n};\r\n\r\nconst Months = ({\r\n clickedMonth,\r\n selectedMonth,\r\n isSelectedYear,\r\n dataId,\r\n}: {\r\n clickedMonth: any;\r\n selectedMonth: number | null;\r\n isSelectedYear: boolean;\r\n dataId: string;\r\n}) => {\r\n const monthOptions = [];\r\n\r\n for (let i = 0; i < 12; i++) {\r\n monthOptions.push(dayjs().month(i).format('MMM'));\r\n }\r\n\r\n return (\r\n \r\n {monthOptions.map((monthName, i) => {\r\n const isSelected = typeof selectedMonth === 'number' && i === selectedMonth && isSelectedYear;\r\n return (\r\n \r\n clickedMonth(i)}\r\n isSelected={isSelected}\r\n data-test-id={`${dataId}__months__button-month-${i}`}\r\n data-selected={isSelected}\r\n type=\"button\"\r\n >\r\n {monthName}\r\n \r\n \r\n );\r\n })}\r\n \r\n );\r\n};\r\n\r\nconst endash = '\\u2013';\r\n\r\nexport const MonthDatePickerCalendar = React.forwardRef(\r\n ({ year = null, monthIndex = null, dispatch, dataId, ...props }, ref) => {\r\n /**\r\n * The values\r\n */\r\n const [selectedYear, setSelectedYear] = useState(year);\r\n const [selectedMonth, setSelectedMonth] = useState(monthIndex);\r\n /**\r\n * Navigation\r\n */\r\n const [navYear, setNavYear] = useState(selectedYear || dayjs().year());\r\n const [navDecadeStart, setNavDecadeStart] = useState(Math.floor(navYear / 10) * 10);\r\n const [viewMode, setViewMode] = useState(ViewModes.Month);\r\n\r\n const clickedYear = (year: number) => {\r\n setNavYear(year);\r\n setNavDecadeStart(Math.floor(year / 10) * 10);\r\n setSelectedMonth(null); // clear the month when a year is chosen\r\n setViewMode(ViewModes.Month);\r\n };\r\n\r\n const clickedMonth = (monthIndex: number) => {\r\n setSelectedMonth(monthIndex);\r\n setSelectedYear(navYear);\r\n dispatch({ type: 'SELECTED_MONTH', data: { monthIndex, year: navYear } });\r\n };\r\n\r\n const clickedPrev = () => {\r\n const newYear = (() => {\r\n if (viewMode === ViewModes.Year) {\r\n return navYear - 10;\r\n }\r\n return navYear - 1;\r\n })();\r\n\r\n setNavDecadeStart(Math.floor(newYear / 10) * 10);\r\n setNavYear(newYear);\r\n };\r\n\r\n const clickedNext = () => {\r\n const newYear = (() => {\r\n if (viewMode === ViewModes.Year) {\r\n return navYear + 10;\r\n }\r\n return navYear + 1;\r\n })();\r\n\r\n setNavDecadeStart(Math.floor(newYear / 10) * 10);\r\n setNavYear(newYear);\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {viewMode === ViewModes.Month && (\r\n setViewMode(ViewModes.Year)}\r\n size={FONT_SIZE.SMALL}\r\n type=\"button\"\r\n >\r\n {navYear}\r\n \r\n )}\r\n {viewMode === ViewModes.Year && (\r\n {`${navDecadeStart} ${endash} ${\r\n navDecadeStart + 9\r\n }`}\r\n )}\r\n \r\n \r\n \r\n \r\n {viewMode === ViewModes.Month && (\r\n \r\n )}\r\n {viewMode === ViewModes.Year && (\r\n \r\n )}\r\n \r\n );\r\n },\r\n);\r\nMonthDatePickerCalendar.displayName = 'MonthDatePickerCalendar';\r\n\r\n/**\r\n * Month Date Picker\r\n */\r\n\r\nexport interface MonthDatePickerProps {\r\n value?: string;\r\n dataId: string;\r\n onChange?: ({ year, monthIndex }: { year: number; monthIndex: number }) => void;\r\n /**\r\n * Is it disabled?\r\n */\r\n disabled?: boolean;\r\n invalid?: boolean;\r\n id?: string;\r\n /**\r\n * placeholder text to display when there is no value\r\n */\r\n placeholder?: string;\r\n initialYearView?: number;\r\n className?: string;\r\n name?: string;\r\n position?: 'fixed' | 'absolute';\r\n ariaLabel?: string;\r\n}\r\ninterface MonthDatePickerState {\r\n year: number;\r\n monthIndex: number;\r\n isOpen: boolean;\r\n initialYearView?: number;\r\n left?: number;\r\n top?: number;\r\n}\r\n\r\ninterface DatePickerButton {\r\n isOpen: boolean;\r\n invalid?: boolean;\r\n}\r\n\r\nconst StyledDatePickerButton = styled.button`\r\n position: relative;\r\n z-index: ${(props) => (props.isOpen ? 100 : 1)};\r\n border: 1px solid;\r\n border-color: ${(props) => (props.invalid ? COLOR.PRIMARY.RED : COLOR.MAIN.FORM_FIELD)};\r\n border-radius: ${RADIUS.FORM_FIELD};\r\n background-color: ${COLOR.PRIMARY.WHITE};\r\n color: ${COLOR.PRIMARY.BLACK};\r\n width: 140px;\r\n height: 30px;\r\n cursor: pointer;\r\n padding: 8px;\r\n min-width: 120px;\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n\r\n :disabled {\r\n background-color: ${darken('0.1', COLOR.PRIMARY.WHITE)};\r\n color: ${transparentize('0.5', COLOR.PRIMARY.BLACK)};\r\n }\r\n`;\r\n\r\nconst StyledPlaceholderText = styled.span`\r\n color: ${lighten('0.2', COLOR.MAIN.FORM_FIELD_DARK)};\r\n`;\r\n\r\nconst StyledDatePickerWrapper = styled.div``;\r\n\r\nconst StyledOverlay = styled(Overlay)`\r\n background-color: transparent;\r\n z-index: 90;\r\n`;\r\n\r\nconst MonthDatePickerReducer = (state: MonthDatePickerState, action: any) => {\r\n switch (action.type) {\r\n case 'OPEN':\r\n return {\r\n ...state,\r\n left: action.data.left,\r\n top: action.data.top,\r\n isOpen: true,\r\n };\r\n case 'CLOSE':\r\n return {\r\n ...state,\r\n isOpen: false,\r\n };\r\n case 'SELECTED_MONTH':\r\n return {\r\n ...state,\r\n monthIndex: action.data.monthIndex,\r\n year: action.data.year,\r\n isOpen: false,\r\n };\r\n case 'UPDATE_DATE':\r\n return {\r\n ...state,\r\n monthIndex: action.data.monthIndex,\r\n year: action.data.year,\r\n };\r\n default:\r\n return state;\r\n }\r\n};\r\ninterface UseEscapeListenerFn {\r\n onEsc: () => void;\r\n}\r\n\r\nconst useEscapeListener = ({ onEsc }: UseEscapeListenerFn) => {\r\n useEffect(() => {\r\n function handleKeyListener(e: KeyboardEvent) {\r\n if (e.key === 'Escape') {\r\n onEsc();\r\n }\r\n }\r\n\r\n document.addEventListener('keydown', handleKeyListener);\r\n\r\n return function cleanupKeyListener() {\r\n document.removeEventListener('keydown', handleKeyListener);\r\n };\r\n }, [onEsc]);\r\n};\r\n\r\nexport const MonthDatePicker = React.forwardRef(\r\n (\r\n {\r\n value = '',\r\n dataId,\r\n name,\r\n onChange,\r\n placeholder = 'Select date',\r\n initialYearView,\r\n disabled,\r\n invalid,\r\n position = 'absolute',\r\n ariaLabel,\r\n ...props\r\n },\r\n ref,\r\n ) => {\r\n const [state, dispatch] = React.useReducer(MonthDatePickerReducer, {\r\n monthIndex: value ? dayjs(value).month() : undefined,\r\n year: value ? dayjs(value).year() : undefined,\r\n initialYearView: initialYearView,\r\n isOpen: false,\r\n left: undefined,\r\n top: undefined,\r\n });\r\n const { year, monthIndex } = state;\r\n\r\n const calendarRef = useRef(null);\r\n const buttonRef = useRef(null);\r\n useImperativeHandle(ref, () => buttonRef.current);\r\n\r\n const open = (left?: number, top?: number) => {\r\n dispatch({ type: 'OPEN', data: { left: left, top: top } });\r\n };\r\n\r\n const close = () => {\r\n buttonRef?.current?.focus();\r\n\r\n dispatch({ type: 'CLOSE' });\r\n };\r\n\r\n const onEsc = () => {\r\n close();\r\n };\r\n\r\n useEffect(() => {\r\n if (position === 'fixed') {\r\n window.addEventListener('resize', close);\r\n\r\n return function cleanupEventListeners() {\r\n window.removeEventListener('resize', close);\r\n };\r\n }\r\n });\r\n\r\n useEffect(() => {\r\n /* when the value prop changes, update the state by dispatching an action */\r\n // ensure there is a value and that the value has both a year and month, otherwise clear the dates\r\n const dateRegex = new RegExp(/^\\d*[-|/]\\d/);\r\n if (!value || !value.match(dateRegex)) {\r\n dispatch({ type: 'UPDATE_DATE', data: { year: undefined, monthIndex: undefined } });\r\n return;\r\n }\r\n const date = dayjs(value);\r\n const year = date.year();\r\n const month = date.month();\r\n dispatch({ type: 'UPDATE_DATE', data: { year: year, monthIndex: month } });\r\n }, [value]);\r\n\r\n useEffect(() => {\r\n if (typeof onChange === 'function') {\r\n onChange({ year: state.year, monthIndex: state.monthIndex });\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [state.year, state.monthIndex]);\r\n\r\n useEscapeListener({ onEsc });\r\n\r\n const getCalendarPosition = (): { left: number | undefined; top: number | undefined } => {\r\n let left: number | undefined;\r\n let top: number | undefined;\r\n\r\n // Only get position if the calendar is fixed\r\n if (position === 'fixed' && buttonRef?.current) {\r\n const buttonBounds = buttonRef.current.getBoundingClientRect();\r\n\r\n const calendarOuterHeight = calendarHeight + calendarPadding + calendarMargin;\r\n const calendarFitsBelow = buttonBounds.bottom + calendarOuterHeight < window.innerHeight;\r\n const calendarFitsAbove = buttonBounds.top - calendarOuterHeight > 0;\r\n\r\n // If calendar fits above but not below button, put it above.\r\n if (!calendarFitsBelow && calendarFitsAbove) {\r\n top = buttonBounds.top - calendarOuterHeight;\r\n }\r\n // By default, put the calendar below\r\n else {\r\n top = buttonBounds.bottom;\r\n }\r\n\r\n left = buttonBounds.left;\r\n }\r\n\r\n return {\r\n left: left,\r\n top: top,\r\n };\r\n };\r\n\r\n const toggle = () => {\r\n if (state.isOpen) {\r\n close();\r\n } else {\r\n const calendarPosition = getCalendarPosition();\r\n open(calendarPosition.left, calendarPosition.top);\r\n }\r\n };\r\n\r\n const buttonText = (() => {\r\n if (typeof monthIndex === 'number' && typeof year === 'number') {\r\n const monthName = dayjs().set('month', monthIndex).format('MMM');\r\n return `${monthName} ${endash} ${year}`;\r\n }\r\n return {placeholder};\r\n })();\r\n\r\n return (\r\n \r\n \r\n \r\n {buttonText} \r\n \r\n {state.isOpen && (\r\n <>\r\n dispatch({ type: 'CLOSE' })}\r\n data-test-id={`${dataId}__overlay`}\r\n />\r\n \r\n \r\n )}\r\n \r\n );\r\n },\r\n);\r\n\r\nMonthDatePicker.displayName = 'MonthDatePicker';\r\n","import * as React from 'react';\r\n\r\nimport styled from 'styled-components';\r\n\r\nimport { SPACING, FONT_SIZE, COLOR } from '../../packages/constants';\r\nimport { MonthDatePicker, MonthDatePickerProps } from '../month-date-picker';\r\n\r\nexport interface MonthDatePickerFieldProps extends MonthDatePickerProps {\r\n label: string;\r\n validationMessage?: string;\r\n thinLabel?: boolean;\r\n}\r\n\r\ninterface StyledTextLabelProps {\r\n disabled?: boolean;\r\n invalid?: boolean;\r\n thinLabel?: boolean;\r\n}\r\n\r\ninterface StyledValidationMessageProps {\r\n invalid?: boolean;\r\n}\r\n\r\nconst StyledTextLabel = styled.label`\r\n display: inline-block;\r\n padding-bottom: ${SPACING.XX_SMALL};\r\n margin-right: ${SPACING.X_SMALL};\r\n font-size: ${FONT_SIZE.SMALL};\r\n line-height: ${FONT_SIZE.MEDIUM};\r\n font-weight: ${(props: StyledTextLabelProps): string => (props.thinLabel ? '400' : '700')};\r\n color: ${(props: StyledTextLabelProps): string => (props.invalid ? COLOR.PRIMARY.RED : COLOR.MAIN.LABEL_TEXT)};\r\n opacity: ${(props: StyledTextLabelProps): string => (props.disabled ? '0.7' : '1')};\r\n`;\r\n\r\nconst StyledValidationMessage = styled.div`\r\n font-size: ${FONT_SIZE.X_SMALL};\r\n line-height: ${FONT_SIZE.SMALL};\r\n color: ${(props: StyledValidationMessageProps): string =>\r\n props.invalid ? COLOR.PRIMARY.RED : COLOR.PRIMARY.BLACK};\r\n padding-top: ${SPACING.SMALL};\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n`;\r\n\r\nexport const MonthDatePickerField = React.forwardRef(\r\n ({ disabled, invalid, label, validationMessage, thinLabel, ariaLabel, ...props }, ref) => {\r\n return (\r\n <>\r\n \r\n {label}\r\n \r\n \r\n {validationMessage && (\r\n {validationMessage}\r\n )}\r\n \r\n );\r\n },\r\n);\r\nMonthDatePickerField.displayName = 'MonthDatePickerField';\r\n","import React from 'react';\r\n\r\nimport { darken, transparentize } from 'polished';\r\nimport styled from 'styled-components';\r\n\r\nimport { COLOR, FONT_SIZE, RADIUS, SPACING } from '../../packages/constants';\r\n\r\nexport interface AutoCompleteTextInputProps {\r\n name: string;\r\n textOnChange: (value: string) => void;\r\n dropdownOnChange: (value: string, command: DropDownAction) => void;\r\n defaultItems?: string[];\r\n textValue?: string;\r\n defaultPlaceholder?: string;\r\n ariaLabel?: string;\r\n dataId?: string;\r\n fontSize?: number;\r\n lineHeight?: number;\r\n invalid?: boolean;\r\n disabled?: boolean;\r\n required?: boolean;\r\n}\r\n\r\nexport enum DropDownAction {\r\n Insert = 'INSERT',\r\n Remove = 'REMOVE',\r\n}\r\n\r\ninterface KeyboardEvent {\r\n key: string;\r\n}\r\n\r\ninterface TextBoxProps {\r\n invalid?: boolean;\r\n disabled?: boolean;\r\n name?: string;\r\n fontSize?: number;\r\n lineHeight?: number;\r\n}\r\n\r\nconst TextBox = styled.input`\r\n background-color: ${(props: TextBoxProps): string =>\r\n props.disabled ? darken('0.1', COLOR.PRIMARY.WHITE) : COLOR.PRIMARY.WHITE};\r\n color: ${(props: TextBoxProps): string =>\r\n props.disabled ? transparentize('0.5', COLOR.PRIMARY.BLACK) : COLOR.PRIMARY.BLACK};\r\n font-size: ${(props: TextBoxProps): string => (props.fontSize ? `${props.fontSize}px` : FONT_SIZE.SMALL)};\r\n line-height: ${(props: TextBoxProps): string => (props.lineHeight ? `${props.lineHeight}px` : FONT_SIZE.MEDIUM)};\r\n padding: ${SPACING.SMALL};\r\n border-width: 1px;\r\n border-style: solid;\r\n border-color: ${(props: TextBoxProps): string => (props.invalid ? COLOR.PRIMARY.RED : COLOR.MAIN.FORM_FIELD)};\r\n border-radius: ${RADIUS.DEFAULT};\r\n\r\n &::placeholder {\r\n opacity: 0.65;\r\n }\r\n`;\r\n\r\nconst WrapperRef = styled.div`\r\n display: flex;\r\n flex-direction: row;\r\n`;\r\n\r\nconst Wrapper = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n\r\n button {\r\n padding: 7px 20px;\r\n margin: 0 auto auto 10px;\r\n }\r\n`;\r\n\r\nconst OptionWrapper = styled.div`\r\n position: relative;\r\n`;\r\n\r\nconst ControlWrapper = styled.div`\r\n position: absolute;\r\n display: flex;\r\n flex-direction: column;\r\n width: 100%;\r\n`;\r\n\r\nconst StyledOption = styled.span`\r\n font-size: ${(props: TextBoxProps): string => (props.fontSize ? `${props.fontSize}px` : FONT_SIZE.SMALL)};\r\n line-height: ${(props: TextBoxProps): string => (props.lineHeight ? `${props.lineHeight}px` : FONT_SIZE.MEDIUM)};\r\n background-color: ${(props: TextBoxProps): string =>\r\n props.disabled ? darken('0.1', COLOR.PRIMARY.WHITE) : COLOR.PRIMARY.WHITE};\r\n color: ${(props: TextBoxProps): string =>\r\n props.disabled ? transparentize('0.5', COLOR.PRIMARY.BLACK) : COLOR.PRIMARY.BLACK};\r\n padding: ${SPACING.SMALL};\r\n border-color: ${(props: TextBoxProps): string => (props.invalid ? COLOR.PRIMARY.RED : COLOR.MAIN.FORM_FIELD)};\r\n border-radius: ${RADIUS.DEFAULT};\r\n border-left: 1px solid\r\n ${(props: TextBoxProps): string => (props.invalid ? COLOR.PRIMARY.RED : COLOR.MAIN.FORM_FIELD)};\r\n border-right: 1px solid\r\n ${(props: TextBoxProps): string => (props.invalid ? COLOR.PRIMARY.RED : COLOR.MAIN.FORM_FIELD)};\r\n\r\n &:last-of-type {\r\n border-bottom: 1px solid\r\n ${(props: TextBoxProps): string => (props.invalid ? COLOR.PRIMARY.RED : COLOR.MAIN.FORM_FIELD)};\r\n }\r\n &:hover,\r\n &:focus {\r\n background-color: ${COLOR.DROPDOWN.DROPDOWN_OPTION_HOVER};\r\n outline: none;\r\n }\r\n`;\r\n\r\nexport const AutoCompleteTextInput = React.forwardRef(\r\n (\r\n {\r\n defaultItems = [],\r\n defaultPlaceholder = 'Please enter a value',\r\n ariaLabel = 'Autocomplete input',\r\n textValue = '',\r\n textOnChange,\r\n dropdownOnChange,\r\n dataId,\r\n disabled,\r\n invalid,\r\n name,\r\n required,\r\n fontSize,\r\n lineHeight,\r\n },\r\n ref,\r\n ) => {\r\n const [displayDropdownList, setDisplayDropdownList] = React.useState(false);\r\n const [placeholder, setPlaceholder] = React.useState(defaultPlaceholder);\r\n const [selectedIndex, setSelectedIndex] = React.useState(-1);\r\n const wrapperRef = React.useRef(null);\r\n const selectRef = React.useRef(null);\r\n\r\n const maxListLength = 2;\r\n const filteredList = defaultItems.filter((item: string) =>\r\n textValue ? item.toLowerCase().includes(textValue.toLowerCase()) : true,\r\n );\r\n const limitedFilteredList = filteredList.slice(0, 3);\r\n\r\n React.useEffect(() => {\r\n document.addEventListener('mousedown', hideList);\r\n\r\n return () => {\r\n document.removeEventListener('mousedown', hideList);\r\n };\r\n });\r\n\r\n React.useEffect(() => {\r\n if (!selectRef.current) return;\r\n\r\n selectRef.current.focus();\r\n }, [selectedIndex]);\r\n\r\n const removeWhiteSpace = (id: string) => {\r\n return id.trim();\r\n };\r\n\r\n const hideList = (e: { target: any }) => {\r\n const { current: wrap } = wrapperRef;\r\n if (wrap && !wrap.contains(e.target)) {\r\n setDisplayDropdownList(false);\r\n setPlaceholder(defaultPlaceholder);\r\n setSelectedIndex(-1);\r\n }\r\n };\r\n\r\n const search = (value: string) => {\r\n textOnChange(value);\r\n setDisplayDropdownList(true);\r\n };\r\n\r\n const selectNext = (e: any) => {\r\n e.preventDefault();\r\n const isLastOrUnselected =\r\n selectedIndex === limitedFilteredList.length - 1 ||\r\n selectedIndex === maxListLength ||\r\n selectedIndex === -1;\r\n const newIndex = isLastOrUnselected ? 0 : selectedIndex + 1;\r\n setSelectedIndex(newIndex);\r\n };\r\n\r\n const selectPrevious = (e: any) => {\r\n e.preventDefault();\r\n const isFirstOrUnselected = selectedIndex === 0 || selectedIndex === -1;\r\n const lastItemIndex = Math.min(limitedFilteredList.length - 1, maxListLength); // Not always showing all 3 items\r\n const newIndex = isFirstOrUnselected ? lastItemIndex : selectedIndex - 1;\r\n setSelectedIndex(newIndex);\r\n };\r\n\r\n const appendValue = (value: string) => {\r\n value = removeWhiteSpace(value);\r\n const getId = defaultItems.indexOf(value);\r\n if (getId !== -1) {\r\n // element exists, we need to remove it and move it to the start of the array\r\n defaultItems.splice(getId, 1);\r\n }\r\n if (value !== '' && value !== defaultPlaceholder) {\r\n dropdownOnChange(value, DropDownAction.Insert);\r\n }\r\n };\r\n\r\n const dropdownListKeyHandler = (event: any, item: string) => {\r\n const itemIndex = defaultItems.indexOf(item);\r\n\r\n if (event.shiftKey && event.key === 'Delete') {\r\n if (itemIndex !== -1) {\r\n dropdownOnChange(defaultItems[itemIndex], DropDownAction.Remove);\r\n setPlaceholder(limitedFilteredList[selectedIndex]);\r\n if (filteredList.length - 1 <= selectedIndex) {\r\n setSelectedIndex(selectedIndex - 1);\r\n }\r\n // If the array only one has item, and we just removed it\r\n if (defaultItems.length === 0 && itemIndex !== -1) {\r\n setPlaceholder(defaultPlaceholder);\r\n setSelectedIndex(-1); // List is empty\r\n }\r\n }\r\n }\r\n };\r\n\r\n const wrapperKeyHandler = (event: KeyboardEvent) => {\r\n switch (event.key) {\r\n case 'ArrowUp':\r\n selectPrevious(event);\r\n break;\r\n\r\n case 'ArrowDown':\r\n selectNext(event);\r\n break;\r\n\r\n case 'Enter':\r\n displayDropdownList\r\n ? selectRef.current\r\n ? selectValue(placeholder)\r\n : appendValue(textValue)\r\n : setDisplayDropdownList(true);\r\n displayDropdownList ? (placeholder == defaultPlaceholder ? setDisplayDropdownList(false) : '') : '';\r\n break;\r\n\r\n case 'Tab':\r\n displayDropdownList ? '' : setDisplayDropdownList(true);\r\n break;\r\n\r\n case 'Escape':\r\n displayDropdownList ? (setDisplayDropdownList(false), setPlaceholder(defaultPlaceholder)) : '';\r\n break;\r\n }\r\n };\r\n\r\n const selectValue = (value: string) => {\r\n if (value !== defaultPlaceholder) {\r\n textOnChange(removeWhiteSpace(value));\r\n }\r\n setDisplayDropdownList(false);\r\n setPlaceholder(defaultPlaceholder);\r\n appendValue(value);\r\n setSelectedIndex(-1);\r\n };\r\n\r\n return (\r\n \r\n \r\n setDisplayDropdownList(defaultItems.length !== 0 && !displayDropdownList)}\r\n onChange={(e: { target: { value: any } }) => search(e.target.value)}\r\n value={textValue}\r\n autoComplete={'off'}\r\n aria-label={ariaLabel}\r\n fontSize={fontSize}\r\n lineHeight={lineHeight}\r\n disabled={disabled}\r\n invalid={invalid}\r\n name={name}\r\n required={required}\r\n />\r\n \r\n \r\n {displayDropdownList\r\n ? limitedFilteredList.map((item: string, index: any) => (\r\n ''}\r\n key={index}\r\n data-index={index}\r\n onClick={() => {\r\n !disabled ? selectValue(item) : setPlaceholder(defaultPlaceholder);\r\n }}\r\n onMouseOver={() => {\r\n !disabled\r\n ? (setSelectedIndex(index), setPlaceholder(removeWhiteSpace(item)))\r\n : setPlaceholder(defaultPlaceholder);\r\n }}\r\n onMouseOut={() => {\r\n setPlaceholder(defaultPlaceholder);\r\n setSelectedIndex(-1);\r\n }}\r\n onKeyDown={(e: any) => dropdownListKeyHandler(e, item)}\r\n tabIndex={0}\r\n onFocus={() => {\r\n !disabled\r\n ? (setSelectedIndex(index), setPlaceholder(removeWhiteSpace(item)))\r\n : setPlaceholder(defaultPlaceholder);\r\n }}\r\n disabled={disabled}\r\n invalid={invalid}\r\n name={name}\r\n fontSize={fontSize}\r\n lineHeight={lineHeight}\r\n >\r\n {removeWhiteSpace(item)}\r\n \r\n ))\r\n : ''}\r\n \r\n \r\n \r\n \r\n );\r\n },\r\n);\r\n\r\nAutoCompleteTextInput.displayName = 'AutoCompleteTextInput';\r\n","import React from 'react';\r\n\r\nimport styled from 'styled-components';\r\n\r\nimport { COLOR, FONT_SIZE, Theme } from '../../packages/constants';\r\nimport { AutoCompleteTextInput, DropDownAction } from '../AutoCompleteTextInput';\r\nimport { Button } from '../button';\r\n\r\nexport interface AutoCompleteTextFieldProps {\r\n name: string;\r\n dropdownOnChange: (value: string, command: DropDownAction) => void;\r\n defaultItems?: string[];\r\n defaultPlaceholder?: string;\r\n ariaLabel?: string;\r\n buttonName?: string;\r\n dataId?: string;\r\n theme?: Theme;\r\n label?: string;\r\n thinLabel?: boolean;\r\n disabled?: boolean;\r\n invalid?: boolean;\r\n required?: boolean;\r\n lineHeight?: number;\r\n fontSize?: number;\r\n disabledButtonHandler?: (value: string) => boolean;\r\n}\r\n\r\ninterface StyledTextLabelProps {\r\n disabled?: boolean;\r\n invalid?: boolean;\r\n thinLabel?: boolean;\r\n lineHeight?: number;\r\n fontSize?: number;\r\n}\r\n\r\nconst Wrapper = styled.div`\r\n display: flex;\r\n flex-direction: row;\r\n align-items: center;\r\n gap: 1rem;\r\n`;\r\n\r\nconst WrapperBtn = styled.div`\r\n display: block;\r\n`;\r\n\r\nconst StyledTextLabel = styled.span`\r\n display: block;\r\n font-size: ${(props: StyledTextLabelProps): string => (props.fontSize ? `${props.fontSize}px` : FONT_SIZE.SMALL)};\r\n line-height: ${(props: StyledTextLabelProps): string =>\r\n props.lineHeight ? `${props.lineHeight}px` : FONT_SIZE.MEDIUM};\r\n font-weight: ${(props: StyledTextLabelProps): string => (props.thinLabel ? '400' : '700')};\r\n color: ${(props: StyledTextLabelProps): string => (props.invalid ? COLOR.PRIMARY.RED : COLOR.MAIN.LABEL_TEXT)};\r\n opacity: ${(props: StyledTextLabelProps): string => (props.disabled ? '0.7' : '1')};\r\n`;\r\n\r\nexport const AutoCompleteTextField = ({\r\n dropdownOnChange,\r\n defaultItems = [],\r\n buttonName = 'Submit',\r\n defaultPlaceholder = 'Please enter a value',\r\n ariaLabel = 'Autocomplete input',\r\n label,\r\n dataId,\r\n theme,\r\n invalid,\r\n disabled,\r\n thinLabel,\r\n name,\r\n required = false,\r\n lineHeight,\r\n fontSize,\r\n disabledButtonHandler,\r\n}: AutoCompleteTextFieldProps) => {\r\n const [value, setValue] = React.useState('');\r\n\r\n return (\r\n \r\n {label ? (\r\n \r\n {label}\r\n \r\n ) : (\r\n ''\r\n )}\r\n \r\n \r\n dropdownOnChange(value, DropDownAction.Insert)}\r\n disabled={disabledButtonHandler ? disabledButtonHandler(value) : !value}\r\n size={`${fontSize}px`}\r\n theme={theme}\r\n >\r\n {buttonName}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nAutoCompleteTextField.displayName = 'AutoCompleteTextField';\r\n","import styled from 'styled-components';\r\n\r\nimport {\r\n NewReleaseAllProducts,\r\n NewReleaseDashboard,\r\n NewReleaseForecasting,\r\n NewReleaseMulti,\r\n NewReleaseReporting,\r\n} from '../../../../packages/icons';\r\n\r\nconst iconWidth = '18px';\r\n\r\nexport const StyledNewReleaseAllProducts = styled(NewReleaseAllProducts)`\r\n display: inline-block;\r\n height: ${iconWidth};\r\n width: ${iconWidth};\r\n`;\r\n\r\nexport const StyledNewReleaseDashboard = styled(NewReleaseDashboard)`\r\n display: inline-block;\r\n height: ${iconWidth};\r\n width: ${iconWidth};\r\n`;\r\n\r\nexport const StyledNewReleaseForecasting = styled(NewReleaseForecasting)`\r\n display: inline-block;\r\n height: ${iconWidth};\r\n width: ${iconWidth};\r\n`;\r\n\r\nexport const StyledNewReleaseMulti = styled(NewReleaseMulti)`\r\n display: inline-block;\r\n height: ${iconWidth};\r\n width: ${iconWidth};\r\n`;\r\n\r\nexport const StyledNewReleaseReporting = styled(NewReleaseReporting)`\r\n display: inline-block;\r\n height: ${iconWidth};\r\n width: ${iconWidth};\r\n`;\r\n","import * as React from 'react';\r\n\r\nimport dayjs from 'dayjs';\r\nimport utc from 'dayjs/plugin/utc';\r\nimport styled from 'styled-components';\r\n\r\nimport { FONT_SIZE, SPACING } from '../../../../packages/constants';\r\nimport { Text } from '../../../text';\r\nimport { ArticleData } from '../../release-notes';\r\nimport {\r\n StyledNewReleaseAllProducts,\r\n StyledNewReleaseDashboard,\r\n StyledNewReleaseForecasting,\r\n StyledNewReleaseMulti,\r\n StyledNewReleaseReporting,\r\n} from '../icons/icons';\r\n\r\ndayjs.extend(utc);\r\n\r\nexport interface ArticleProps {\r\n /**\r\n * The article data.\r\n */\r\n data: ArticleData;\r\n /**\r\n * Show videos and images\r\n */\r\n showMedia?: boolean;\r\n /**\r\n * Handles click event on video content.\r\n */\r\n handleOpenVideo: (itemId: string, itemURL: string) => void;\r\n}\r\n\r\nexport interface ProductNameProps {\r\n colour?: string;\r\n}\r\n\r\nconst productCategories = [\r\n {\r\n id: 'all-products',\r\n name: 'All Products',\r\n colour: '#435c84',\r\n icon: ,\r\n },\r\n {\r\n id: 'dashboard',\r\n name: 'Dashboard',\r\n colour: '#ffd943',\r\n icon: ,\r\n },\r\n {\r\n id: 'forecasting',\r\n name: 'Forecasting ',\r\n colour: '#40d98c',\r\n icon: ,\r\n },\r\n {\r\n id: 'multi',\r\n name: 'Multi',\r\n colour: 'hsla(285.0980392156863, 100%, 70%, 1)',\r\n icon: ,\r\n },\r\n {\r\n id: 'reporting',\r\n name: 'Reporting ',\r\n colour: '#40c5ff',\r\n icon: ,\r\n },\r\n];\r\n\r\nconst headerColour = '#8292ad';\r\nconst Header = styled.div`\r\n display: flex;\r\n align-items: center;\r\n border-top-left-radius: 4px;\r\n border-top-right-radius: 4px;\r\n margin-bottom: 10px;\r\n font-size: ${FONT_SIZE.X_SMALL};\r\n line-height: ${FONT_SIZE.X_SMALL};\r\n letter-spacing: 0.6px;\r\n color: ${headerColour};\r\n`;\r\n\r\nconst ProductName = styled.div`\r\n margin-left: ${SPACING.SMALL};\r\n color: ${(props) => props.colour || '#435c84'};\r\n font-weight: 400;\r\n text-transform: uppercase;\r\n`;\r\n\r\nconst Divider = styled.div`\r\n width: 1px;\r\n height: 12px;\r\n margin-right: ${SPACING.MEDIUM};\r\n margin-left: ${SPACING.MEDIUM};\r\n background-color: ${headerColour};\r\n color: ${headerColour};\r\n`;\r\n\r\nconst spotlightBrandColor = '#04255b';\r\nconst Title = styled.div`\r\n white-space: nowrap;\r\n margin-bottom: 10px;\r\n font-size: ${FONT_SIZE.LARGE};\r\n font-weight: 500;\r\n line-height: 1.4;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n color: ${spotlightBrandColor};\r\n`;\r\n\r\nconst ThumbnailContainer = styled.div`\r\n max-width: 420px;\r\n height: auto;\r\n margin-bottom: 10px;\r\n`;\r\n\r\nconst StyledImage = styled.img`\r\n display: block;\r\n width: 100%;\r\n height: auto;\r\n`;\r\n\r\nconst ImageThumbnail = styled(StyledImage)`\r\n border-radius: 2px;\r\n`;\r\n\r\nconst VideoThumbnail = styled(StyledImage)`\r\n position: relative;\r\n`;\r\n\r\nconst VideoPlayContainer = styled.div`\r\n position: absolute;\r\n width: 56px;\r\n padding-right: 0;\r\n opacity: 0.6;\r\n`;\r\n\r\nconst VideoPlayImage = styled.img`\r\n border: 0;\r\n vertical-align: middle;\r\n display: inline-block;\r\n max-width: 100%;\r\n margin-top: 0;\r\n margin-bottom: 0;\r\n`;\r\n\r\nconst VideoButton = styled.button`\r\n display: flex;\r\n position: relative;\r\n overflow: hidden;\r\n width: 100%;\r\n height: 100%;\r\n max-width: none;\r\n margin-right: 20px;\r\n justify-content: center;\r\n align-items: center;\r\n border: none;\r\n padding: 0;\r\n cursor: pointer;\r\n`;\r\n\r\nconst LearnMoreLink = styled.a`\r\n text-transform: capitalize;\r\n display: inline-block;\r\n text-align: center;\r\n margin-top: ${SPACING.MEDIUM};\r\n font-size: ${FONT_SIZE.X_SMALL};\r\n font-weight: 500;\r\n letter-spacing: 0.6px;\r\n color: #00b1ff;\r\n`;\r\n\r\nexport const Article = ({ data, showMedia, handleOpenVideo }: ArticleProps) => {\r\n const defaultCategory = productCategories.find((category) => category.id === 'all-products');\r\n const product = productCategories.find((category) => category.id === data.product) || defaultCategory;\r\n\r\n const thumbnailData = data.videoThumbnails || data.thumbnailImage;\r\n\r\n const openVideo = (e: any) => {\r\n e.preventDefault();\r\n handleOpenVideo(data.videoLink?.id as string, data.videoLink?.url as string);\r\n };\r\n\r\n const video = showMedia && data.videoThumbnails && (\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n\r\n const image = showMedia && data.thumbnailImage && (\r\n \r\n );\r\n\r\n const thumbnail = video || image;\r\n\r\n return (\r\n
    \r\n
    \r\n {product?.icon}\r\n {`${product?.name}`} \r\n \r\n {`${dayjs.utc(data.releaseDate).format('DD MMMM YYYY')}`}\r\n
    \r\n {data.name}\r\n {thumbnailData && {thumbnail} }\r\n \r\n {data.postSummary}\r\n \r\n {data.learnMoreLink && (\r\n \r\n Learn More\r\n \r\n )}\r\n
    \r\n );\r\n};\r\n","import styled from 'styled-components';\r\n\r\nimport { NewReleaseNoData } from '../../../../packages/icons';\r\n\r\nexport const StyledNewReleaseNoData = styled(NewReleaseNoData)`\r\n display: block;\r\n width: 100%;\r\n height: auto;\r\n`;\r\n","import * as React from 'react';\r\n\r\nimport styled from 'styled-components';\r\n\r\nimport { FONT_SIZE, RADIUS, SPACING } from '../../packages/constants';\r\nimport { Article } from './atoms/article/article';\r\nimport { StyledNewReleaseNoData } from './atoms/images/images';\r\n\r\nexport interface ArticleData {\r\n releaseDate: string;\r\n isArchived: boolean;\r\n learnMoreLink?: string;\r\n isDraft: boolean;\r\n name: string;\r\n slug: string;\r\n videoLink?: MediaLink;\r\n videoThumbnails?: Thumbnail;\r\n thumbnailImage?: Thumbnail;\r\n productLabels: string;\r\n lastUpdated: string;\r\n createdOn: string;\r\n lastPublished: string;\r\n postSummary: string;\r\n id: string;\r\n product: string;\r\n cmsLocaleId: string;\r\n}\r\n\r\ninterface MediaLink {\r\n url: string;\r\n id: string;\r\n}\r\n\r\ninterface Thumbnail {\r\n fileId: string;\r\n url: string;\r\n alt: string;\r\n}\r\n\r\nexport interface ReleaseNotesProps {\r\n /**\r\n * List of articles to display in the release notes.\r\n */\r\n articles: ArticleData[];\r\n /**\r\n * URL to open in a new tab.\r\n */\r\n url?: string;\r\n /**\r\n * Label for the URL.\r\n */\r\n urlDisplayText?: string;\r\n /**\r\n * Number of articles to display.\r\n */\r\n displaySize?: number;\r\n /**\r\n * Show videos and images\r\n */\r\n showMedia?: boolean;\r\n /**\r\n * External function to dispatch actions to.\r\n */\r\n handleAction?: (action: Action) => Promise;\r\n}\r\n\r\ninterface Action {\r\n type: TType;\r\n payload?: TPayload;\r\n}\r\n\r\n/**\r\n * Actions dispatched to an external handler\r\n */\r\nexport enum ReleaseNotesExternalActions {\r\n OPEN_VIDEO = 'OPEN_VIDEO',\r\n}\r\n\r\nconst StyledReleaseNotes = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: center;\r\n align-items: center;\r\n`;\r\n\r\nconst ArticleContainer = styled.div`\r\n margin: 5px;\r\n padding: ${SPACING.LARGE};\r\n border-radius: ${RADIUS.DEFAULT};\r\n border-style: solid;\r\n border-width: 2px;\r\n box-sizing: border-box;\r\n width: 100%;\r\n background-color: #ffffff;\r\n border-color: transparent;\r\n box-shadow: 0 1px 5px rgba(4, 37, 91, 0.25);\r\n`;\r\n\r\nconst spotlightBrandColor = '#04255b';\r\nconst Link = styled.a`\r\n position: relative;\r\n text-decoration: none;\r\n text-transform: uppercase;\r\n display: inline-block;\r\n text-align: center;\r\n line-height: 2;\r\n margin-top: ${SPACING.XX_LARGE};\r\n font-size: ${FONT_SIZE.LARGE};\r\n font-weight: 500;\r\n padding: 0 1px;\r\n color: ${spotlightBrandColor};\r\n &::before,\r\n &::after {\r\n content: '';\r\n position: absolute;\r\n background-color: ${spotlightBrandColor};\r\n z-index: 1;\r\n height: 5%;\r\n width: 100%;\r\n left: 100%;\r\n bottom: 0;\r\n }\r\n &::before {\r\n width: 0%;\r\n left: 0;\r\n bottom: 0;\r\n }\r\n &::after {\r\n width: 100%;\r\n left: 0;\r\n bottom: 0;\r\n }\r\n`;\r\n\r\nconst NoNewReleasesImage = styled.div`\r\n max-width: 420px;\r\n height: auto;\r\n`;\r\n\r\nconst ReleaseNotes: React.FC> = ({\r\n displaySize,\r\n articles,\r\n url,\r\n urlDisplayText,\r\n showMedia,\r\n handleAction,\r\n ...props\r\n}) => {\r\n const activeArticles = articles.filter((a) => !a.isArchived && !a.isDraft);\r\n const itemsToDisplay = displaySize && displaySize < activeArticles.length ? activeArticles.slice(0, displaySize) : activeArticles;\r\n\r\n const handleOpenVideo = async (id: string, url: string) => {\r\n if (typeof handleAction !== 'function') {\r\n return;\r\n }\r\n\r\n await handleAction({\r\n type: ReleaseNotesExternalActions.OPEN_VIDEO,\r\n payload: {\r\n id: id,\r\n videoURL: url,\r\n },\r\n });\r\n };\r\n\r\n return (\r\n \r\n {itemsToDisplay.length > 0 ? (\r\n itemsToDisplay.map((article: ArticleData) => (\r\n \r\n
    \r\n \r\n ))\r\n ) : (\r\n \r\n \r\n \r\n )}\r\n {url && urlDisplayText && (\r\n \r\n {urlDisplayText}\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport { ReleaseNotes };\r\n","import * as React from 'react';\r\n\r\nimport useMergedRef from '@react-hook/merged-ref';\r\nimport { Portal } from 'react-portal';\r\nimport styled from 'styled-components';\r\n\r\nimport { useClickOutside } from '../../../ModernScripts/Spotlight/Hooks/useClickOutside';\r\nimport { camelToKebab } from '../../../Scripts/Spotlight/Components/CamelToKebab';\r\nimport { COLOR } from '../../packages/constants';\r\nimport { SearchFilter } from '../search-filter/search-filter';\r\n\r\nexport interface Option {\r\n value: string;\r\n text: string;\r\n dataId?: string;\r\n flagColour?: string; // little highlight colour\r\n disabled?: boolean;\r\n icon?: React.ReactElement;\r\n}\r\n\r\ninterface ComponentWithDensityProps {\r\n density: Density;\r\n}\r\n\r\ninterface StyledOptionProps {\r\n interactionMode: InteractionModes;\r\n}\r\n\r\ninterface StyledOptionLabelInnerProps extends ComponentWithDensityProps {\r\n interactionMode: InteractionModes;\r\n flagColour?: string; // little highlight colour\r\n disable?: boolean;\r\n}\r\n\r\nexport interface OptionGroup {\r\n label: string;\r\n options: Option[];\r\n}\r\n\r\nexport interface Section {\r\n type: 'section';\r\n options: Array