@pega/lists-react 8.0.0-build.40.2 → 8.0.0-build.41.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (120) hide show
  1. package/lib/Core/Components/ContextMenu/ContextMenuContainer.d.ts.map +1 -1
  2. package/lib/Core/Components/ContextMenu/ContextMenuContainer.js +2 -3
  3. package/lib/Core/Components/ContextMenu/ContextMenuContainer.js.map +1 -1
  4. package/lib/Core/Components/DefaultComponents/CellRenderers/EditComponents/index.d.ts.map +1 -1
  5. package/lib/Core/Components/DefaultComponents/CellRenderers/EditComponents/index.js +1 -2
  6. package/lib/Core/Components/DefaultComponents/CellRenderers/EditComponents/index.js.map +1 -1
  7. package/lib/Core/Components/DefaultComponents/CellRenderers/RichText.d.ts.map +1 -1
  8. package/lib/Core/Components/DefaultComponents/CellRenderers/RichText.js +1 -2
  9. package/lib/Core/Components/DefaultComponents/CellRenderers/RichText.js.map +1 -1
  10. package/lib/Core/Components/RSWrapper/index.d.ts +1 -1
  11. package/lib/Core/Components/Toolbar/ColumnSelector.js +1 -1
  12. package/lib/Core/Components/Toolbar/ColumnSelector.js.map +1 -1
  13. package/lib/Core/Components/Virtualise/UseScroll.js +1 -1
  14. package/lib/Core/Components/Virtualise/UseScroll.js.map +1 -1
  15. package/lib/Core/Context/LocalizationContext.d.ts +2 -3
  16. package/lib/Core/Context/LocalizationContext.d.ts.map +1 -1
  17. package/lib/Core/Context/LocalizationContext.js +7 -3
  18. package/lib/Core/Context/LocalizationContext.js.map +1 -1
  19. package/lib/Core/Hooks/a11y/index.d.ts +1 -1
  20. package/lib/Core/Hooks/a11y/index.d.ts.map +1 -1
  21. package/lib/Core/Hooks/a11y/index.js.map +1 -1
  22. package/lib/Core/Hooks/a11y/useAnnounceGroup.d.ts +9 -1
  23. package/lib/Core/Hooks/a11y/useAnnounceGroup.d.ts.map +1 -1
  24. package/lib/Core/Hooks/a11y/useAnnounceGroup.js +38 -31
  25. package/lib/Core/Hooks/a11y/useAnnounceGroup.js.map +1 -1
  26. package/lib/Core/Hooks/a11y/useKeyboardA11y.d.ts +20 -4
  27. package/lib/Core/Hooks/a11y/useKeyboardA11y.d.ts.map +1 -1
  28. package/lib/Core/Hooks/a11y/useKeyboardA11y.js +7 -1
  29. package/lib/Core/Hooks/a11y/useKeyboardA11y.js.map +1 -1
  30. package/lib/Core/Hooks/useConfirmationModal.d.ts +12 -3
  31. package/lib/Core/Hooks/useConfirmationModal.d.ts.map +1 -1
  32. package/lib/Core/Hooks/useConfirmationModal.js +7 -2
  33. package/lib/Core/Hooks/useConfirmationModal.js.map +1 -1
  34. package/lib/Core/Hooks/useDebounce.d.ts +10 -0
  35. package/lib/Core/Hooks/useDebounce.d.ts.map +1 -0
  36. package/lib/Core/Hooks/{UseDebounce.js → useDebounce.js} +9 -1
  37. package/lib/Core/Hooks/useDebounce.js.map +1 -0
  38. package/lib/Core/Hooks/useDragDrop.d.ts +11 -24
  39. package/lib/Core/Hooks/useDragDrop.d.ts.map +1 -1
  40. package/lib/Core/Hooks/useDragDrop.js +43 -31
  41. package/lib/Core/Hooks/useDragDrop.js.map +1 -1
  42. package/lib/Core/Hooks/useDragDrop.types.d.ts +108 -0
  43. package/lib/Core/Hooks/useDragDrop.types.d.ts.map +1 -0
  44. package/lib/Core/Hooks/useDragDrop.types.js +2 -0
  45. package/lib/Core/Hooks/useDragDrop.types.js.map +1 -0
  46. package/lib/Core/Hooks/useReactToProps.d.ts +12 -0
  47. package/lib/Core/Hooks/useReactToProps.d.ts.map +1 -0
  48. package/lib/Core/Hooks/useReactToProps.js +16 -0
  49. package/lib/Core/Hooks/useReactToProps.js.map +1 -0
  50. package/lib/Core/Hooks/useRepeat.d.ts +36 -16
  51. package/lib/Core/Hooks/useRepeat.d.ts.map +1 -1
  52. package/lib/Core/Hooks/useRepeat.js +34 -13
  53. package/lib/Core/Hooks/useRepeat.js.map +1 -1
  54. package/lib/Core/Hooks/useScrollAway.d.ts +11 -0
  55. package/lib/Core/Hooks/useScrollAway.d.ts.map +1 -0
  56. package/lib/Core/Hooks/useScrollAway.js +38 -0
  57. package/lib/Core/Hooks/useScrollAway.js.map +1 -0
  58. package/lib/Core/Hooks/useSelect.d.ts +9 -0
  59. package/lib/Core/Hooks/useSelect.d.ts.map +1 -0
  60. package/lib/Core/Hooks/{UseSelect.js → useSelect.js} +10 -3
  61. package/lib/Core/Hooks/useSelect.js.map +1 -0
  62. package/lib/Core/Hooks/useSingleClick.d.ts +8 -1
  63. package/lib/Core/Hooks/useSingleClick.d.ts.map +1 -1
  64. package/lib/Core/Hooks/useSingleClick.js +11 -1
  65. package/lib/Core/Hooks/useSingleClick.js.map +1 -1
  66. package/lib/Core/Hooks/useSmallScreen.d.ts +8 -0
  67. package/lib/Core/Hooks/useSmallScreen.d.ts.map +1 -1
  68. package/lib/Core/Hooks/useSmallScreen.js +8 -0
  69. package/lib/Core/Hooks/useSmallScreen.js.map +1 -1
  70. package/lib/Core/Hooks/useThrottle.d.ts +11 -0
  71. package/lib/Core/Hooks/useThrottle.d.ts.map +1 -0
  72. package/lib/Core/Hooks/{UseThrottle.js → useThrottle.js} +10 -1
  73. package/lib/Core/Hooks/useThrottle.js.map +1 -0
  74. package/lib/Core/Hooks/useThunkReducer.d.ts +9 -0
  75. package/lib/Core/Hooks/useThunkReducer.d.ts.map +1 -0
  76. package/lib/Core/Hooks/{UseThunkReducer.js → useThunkReducer.js} +6 -1
  77. package/lib/Core/Hooks/useThunkReducer.js.map +1 -0
  78. package/lib/Core/Hooks/useTranslate.d.ts +6 -1
  79. package/lib/Core/Hooks/useTranslate.d.ts.map +1 -1
  80. package/lib/Core/Hooks/useTranslate.js +5 -0
  81. package/lib/Core/Hooks/useTranslate.js.map +1 -1
  82. package/lib/Core/index.d.ts +2 -2
  83. package/lib/Core/index.d.ts.map +1 -1
  84. package/lib/Core/index.js +2 -2
  85. package/lib/Core/index.js.map +1 -1
  86. package/lib/index.d.ts +2 -1
  87. package/lib/index.d.ts.map +1 -1
  88. package/lib/index.js.map +1 -1
  89. package/lib/types/RepeatingStructuresBoot.types.d.ts +129 -0
  90. package/lib/types/RepeatingStructuresBoot.types.d.ts.map +1 -0
  91. package/lib/types/RepeatingStructuresBoot.types.js +2 -0
  92. package/lib/types/RepeatingStructuresBoot.types.js.map +1 -0
  93. package/lib/types.d.ts +5 -198
  94. package/lib/types.d.ts.map +1 -1
  95. package/lib/types.js.map +1 -1
  96. package/package.json +8 -8
  97. package/lib/Core/Hooks/UseDebounce.d.ts +0 -2
  98. package/lib/Core/Hooks/UseDebounce.d.ts.map +0 -1
  99. package/lib/Core/Hooks/UseDebounce.js.map +0 -1
  100. package/lib/Core/Hooks/UseOuterEvent.d.ts +0 -2
  101. package/lib/Core/Hooks/UseOuterEvent.d.ts.map +0 -1
  102. package/lib/Core/Hooks/UseOuterEvent.js +0 -30
  103. package/lib/Core/Hooks/UseOuterEvent.js.map +0 -1
  104. package/lib/Core/Hooks/UseReactToProps.d.ts +0 -2
  105. package/lib/Core/Hooks/UseReactToProps.d.ts.map +0 -1
  106. package/lib/Core/Hooks/UseReactToProps.js +0 -8
  107. package/lib/Core/Hooks/UseReactToProps.js.map +0 -1
  108. package/lib/Core/Hooks/UseScrollAway.d.ts +0 -2
  109. package/lib/Core/Hooks/UseScrollAway.d.ts.map +0 -1
  110. package/lib/Core/Hooks/UseScrollAway.js +0 -30
  111. package/lib/Core/Hooks/UseScrollAway.js.map +0 -1
  112. package/lib/Core/Hooks/UseSelect.d.ts +0 -2
  113. package/lib/Core/Hooks/UseSelect.d.ts.map +0 -1
  114. package/lib/Core/Hooks/UseSelect.js.map +0 -1
  115. package/lib/Core/Hooks/UseThrottle.d.ts +0 -2
  116. package/lib/Core/Hooks/UseThrottle.d.ts.map +0 -1
  117. package/lib/Core/Hooks/UseThrottle.js.map +0 -1
  118. package/lib/Core/Hooks/UseThunkReducer.d.ts +0 -3
  119. package/lib/Core/Hooks/UseThunkReducer.d.ts.map +0 -1
  120. package/lib/Core/Hooks/UseThunkReducer.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"ContextMenuContainer.d.ts","sourceRoot":"","sources":["../../../../Core/Components/ContextMenu/ContextMenuContainer.jsx"],"names":[],"mappings":"AAyMA;;;mDA+GC;;;;;;;;;;;;sBAxTqB,YAAY"}
1
+ {"version":3,"file":"ContextMenuContainer.d.ts","sourceRoot":"","sources":["../../../../Core/Components/ContextMenu/ContextMenuContainer.jsx"],"names":[],"mappings":"AAwMA;;;mDA+GC;;;;;;;;;;;;sBAvTqB,YAAY"}
@@ -2,12 +2,11 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import PropTypes from 'prop-types';
3
3
  import { useRef, useState, useMemo, useEffect, useCallback } from 'react';
4
4
  import styled, { css } from 'styled-components';
5
- import { Popover, Icon, useElement } from '@pega/cosmos-react-core';
5
+ import { Popover, Icon, useElement, useOuterEvent } from '@pega/cosmos-react-core';
6
6
  import { getRowContextData, getScrollerElem, isFilterApplied } from 'pega-repeating-structures-core';
7
7
  import { createClassName as cx } from '../../Utils';
8
8
  import useTranslate from '../../Hooks/useTranslate';
9
- import useOuterEvent from '../../Hooks/UseOuterEvent';
10
- import useScrollAway from '../../Hooks/UseScrollAway';
9
+ import useScrollAway from '../../Hooks/useScrollAway';
11
10
  import { applyFilter, quickFilterEnabled, removeFilter } from './QuickFilter';
12
11
  import copyText from './CopyPaste';
13
12
  const StyledPopover = styled.div `
@@ -1 +1 @@
1
- {"version":3,"file":"ContextMenuContainer.js","sourceRoot":"","sources":["../../../../Core/Components/ContextMenu/ContextMenuContainer.jsx"],"names":[],"mappings":"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","sourcesContent":["import PropTypes from 'prop-types';\nimport { useRef, useState, useMemo, useEffect, useCallback } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { Popover, Icon, useElement } from '@pega/cosmos-react-core';\nimport {\n getRowContextData,\n getScrollerElem,\n isFilterApplied\n} from 'pega-repeating-structures-core';\n\nimport { createClassName as cx } from '../../Utils';\nimport useTranslate from '../../Hooks/useTranslate';\nimport useOuterEvent from '../../Hooks/UseOuterEvent';\nimport useScrollAway from '../../Hooks/UseScrollAway';\n\nimport { applyFilter, quickFilterEnabled, removeFilter } from './QuickFilter';\nimport copyText from './CopyPaste';\n\nconst StyledPopover = styled.div`\n width: 10rem;\n`;\n\nconst StyledContent = styled.div(({ theme }) => {\n return css`\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n padding: 0.25rem;\n border-radius: 0.156rem;\n box-sizing: border-box;\n cursor: pointer;\n margin-top: 0.125rem;\n margin-bottom: 0.125rem;\n :hover {\n background-color: ${theme.base.colors.blue['extra-light']};\n box-shadow: ${theme.base.shadow['focus-inset']};\n }\n `;\n});\n\nconst StyledListItem = styled.div(({ theme }) => {\n return css`\n button {\n display: flex;\n align-items: center;\n /* stylelint-disable unit-allowed-list */\n padding: 4px 8px;\n }\n .label {\n padding-left: 14px;\n vertical-align: text-top;\n }\n .disabled {\n padding-left: 14px;\n vertical-align: text-top;\n opacity: ${theme.base['disabled-opacity']};\n }\n `;\n});\n\nconst StyledButton = styled.button`\n display: block;\n text-align: start;\n background: none;\n border: none;\n line-height: 1;\n outline: none;\n cursor: pointer;\n color: ${props => props.theme.base.palette['foreground-color']};\n border-radius: 0;\n`;\n\nconst getDefaultMenuItems = (\n column,\n rowContextData,\n targetCell,\n columns,\n filterExpression,\n actionColumnFiltering,\n actionClearFiltering,\n translate\n) => {\n const isFiltered = isFilterApplied(column, filterExpression);\n return [\n {\n id: 'quickFilter',\n icon: isFiltered ? 'times' : 'filter',\n label: isFiltered ? translate('Remove filter') : translate('Filter by this'),\n show: !!quickFilterEnabled(columns, column.field.id),\n disabled: false,\n onClick: () => {\n if (isFiltered) {\n return removeFilter(\n filterExpression,\n targetCell,\n actionColumnFiltering,\n actionClearFiltering\n );\n }\n return applyFilter(\n columns,\n targetCell,\n rowContextData,\n filterExpression,\n actionColumnFiltering\n );\n }\n },\n {\n id: 'copyText',\n icon: 'copy',\n label: translate('Copy text'),\n show: true,\n disabled: false,\n onClick: () => copyText(targetCell)\n },\n {\n id: 'pasteText',\n icon: 'documents',\n label: translate('Paste text'),\n show: true,\n disabled: true,\n onClick: () => {}\n }\n ];\n};\n\nconst getMenuItems = (\n targetCell,\n column,\n rowContextData,\n columns,\n filterExpression,\n actionColumnFiltering,\n actionClearFiltering,\n translate\n) => {\n const fieldContextOptions = column.field?.contextMenuOptions || [];\n return [\n ...getDefaultMenuItems(\n column,\n rowContextData,\n targetCell,\n columns,\n filterExpression,\n actionColumnFiltering,\n actionClearFiltering,\n translate\n ),\n ...fieldContextOptions\n ];\n};\n\nconst shouldOverrideContextMenu = (targetCell, columns) => {\n if (!targetCell) {\n return false;\n }\n const { colId } = targetCell.dataset;\n\n const { field } = columns.find(col => col.field.id.toString() === colId?.toString()) || {};\n return !(!field || field?.noContextMenu);\n};\n\nconst MenuItem = ({\n menu = {},\n target = {},\n column = {},\n rowContextData = {},\n onMenuItemClick = () => {}\n}) => {\n const { onClick = () => {}, icon, disabled = false, show = true, label } = menu;\n if (!show) {\n return null;\n }\n\n return (\n <StyledContent\n onClick={() => {\n onMenuItemClick();\n onClick(target, column, rowContextData);\n }}\n >\n <StyledListItem>\n <StyledButton>\n {icon && <Icon name={icon} />}\n <span className={cx('label', { disabled })}>{label}</span>\n </StyledButton>\n </StyledListItem>\n </StyledContent>\n );\n};\n\nMenuItem.propTypes = {\n menu: PropTypes.objectOf(PropTypes.any),\n target: PropTypes.objectOf(PropTypes.any),\n column: PropTypes.objectOf(PropTypes.any),\n rowContextData: PropTypes.objectOf(PropTypes.any),\n onMenuItemClick: PropTypes.func\n};\n\nexport default function ContextMenuContainer({ view, selector }) {\n const {\n columns,\n data,\n state: { paginationOptions, filterExpression } = {},\n domContainer,\n type: { applyFilter: applyViewFilter, clearFilter }\n } = view;\n const [translate] = useTranslate();\n const contextMenuRef = useRef({}).current;\n const [showMenu, setShowMenu] = useState(false);\n const [menuItems, setMenuItems] = useState([]);\n const [popperRef, setPopperRef] = useElement();\n const scrollerElem = useMemo(() => getScrollerElem(view), [view]);\n\n useOuterEvent('mousedown', [popperRef], () => {\n setShowMenu(false);\n });\n\n useScrollAway(popperRef, scrollerElem, () => {\n setShowMenu(false);\n });\n\n const onMenuItemClick = useCallback(event => {\n if (event && event.key !== 'Escape') {\n return;\n }\n setShowMenu(false);\n }, []);\n\n const contextMenuListener = useCallback(\n e => {\n const targetElement = selector ? e.target.closest(selector.query.toString()) : e.target;\n if (\n shouldOverrideContextMenu(targetElement, columns) &&\n // TODO: We will add \"Open link in new tab\" option in context menu once the custom context menu is made accessible.\n !e.target.closest('a')\n ) {\n e.stopPropagation();\n e.preventDefault();\n contextMenuRef.targetCell = targetElement;\n const { colId } = contextMenuRef.targetCell.dataset;\n contextMenuRef.column = columns.find(col => col.field.id.toString() === colId?.toString());\n contextMenuRef.rowContextData = getRowContextData(data, paginationOptions, targetElement);\n targetElement.classList.add('selection-border', 'disable-select');\n const options = getMenuItems(\n targetElement,\n contextMenuRef.column,\n contextMenuRef.rowContextData,\n columns,\n filterExpression,\n applyViewFilter,\n clearFilter,\n translate\n );\n setShowMenu(true);\n setMenuItems(options);\n }\n },\n\n [\n selector,\n columns,\n contextMenuRef.targetCell,\n contextMenuRef.column,\n contextMenuRef.rowContextData,\n data,\n paginationOptions,\n filterExpression,\n applyViewFilter,\n clearFilter,\n translate\n ]\n );\n\n useEffect(() => {\n if (domContainer) {\n domContainer.addEventListener('contextmenu', contextMenuListener);\n domContainer.addEventListener('keydown', onMenuItemClick);\n }\n return () => {\n if (domContainer) {\n domContainer.removeEventListener('contextmenu', contextMenuListener);\n domContainer.removeEventListener('keydown', onMenuItemClick);\n }\n };\n }, [domContainer, contextMenuListener, onMenuItemClick]);\n\n if (!contextMenuRef.targetCell || !showMenu || !domContainer) {\n if (contextMenuRef.targetCell && selector) {\n contextMenuRef.targetCell.classList.remove('selection-border', 'disable-select');\n }\n return null;\n }\n\n return (\n <Popover portal ref={setPopperRef} target={contextMenuRef.targetCell}>\n <StyledPopover>\n {menuItems.map(menu => (\n <MenuItem\n key={menu.id}\n onMenuItemClick={onMenuItemClick}\n target={contextMenuRef.targetCell}\n column={contextMenuRef.column}\n rowContextData={contextMenuRef.rowContextData}\n menu={menu}\n />\n ))}\n </StyledPopover>\n </Popover>\n );\n}\n\nContextMenuContainer.propTypes = {\n view: PropTypes.objectOf(PropTypes.any).isRequired,\n selector: PropTypes.objectOf(PropTypes.any).isRequired\n};\n"]}
1
+ {"version":3,"file":"ContextMenuContainer.js","sourceRoot":"","sources":["../../../../Core/Components/ContextMenu/ContextMenuContainer.jsx"],"names":[],"mappings":"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","sourcesContent":["import PropTypes from 'prop-types';\nimport { useRef, useState, useMemo, useEffect, useCallback } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { Popover, Icon, useElement, useOuterEvent } from '@pega/cosmos-react-core';\nimport {\n getRowContextData,\n getScrollerElem,\n isFilterApplied\n} from 'pega-repeating-structures-core';\n\nimport { createClassName as cx } from '../../Utils';\nimport useTranslate from '../../Hooks/useTranslate';\nimport useScrollAway from '../../Hooks/useScrollAway';\n\nimport { applyFilter, quickFilterEnabled, removeFilter } from './QuickFilter';\nimport copyText from './CopyPaste';\n\nconst StyledPopover = styled.div`\n width: 10rem;\n`;\n\nconst StyledContent = styled.div(({ theme }) => {\n return css`\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n padding: 0.25rem;\n border-radius: 0.156rem;\n box-sizing: border-box;\n cursor: pointer;\n margin-top: 0.125rem;\n margin-bottom: 0.125rem;\n :hover {\n background-color: ${theme.base.colors.blue['extra-light']};\n box-shadow: ${theme.base.shadow['focus-inset']};\n }\n `;\n});\n\nconst StyledListItem = styled.div(({ theme }) => {\n return css`\n button {\n display: flex;\n align-items: center;\n /* stylelint-disable unit-allowed-list */\n padding: 4px 8px;\n }\n .label {\n padding-left: 14px;\n vertical-align: text-top;\n }\n .disabled {\n padding-left: 14px;\n vertical-align: text-top;\n opacity: ${theme.base['disabled-opacity']};\n }\n `;\n});\n\nconst StyledButton = styled.button`\n display: block;\n text-align: start;\n background: none;\n border: none;\n line-height: 1;\n outline: none;\n cursor: pointer;\n color: ${props => props.theme.base.palette['foreground-color']};\n border-radius: 0;\n`;\n\nconst getDefaultMenuItems = (\n column,\n rowContextData,\n targetCell,\n columns,\n filterExpression,\n actionColumnFiltering,\n actionClearFiltering,\n translate\n) => {\n const isFiltered = isFilterApplied(column, filterExpression);\n return [\n {\n id: 'quickFilter',\n icon: isFiltered ? 'times' : 'filter',\n label: isFiltered ? translate('Remove filter') : translate('Filter by this'),\n show: !!quickFilterEnabled(columns, column.field.id),\n disabled: false,\n onClick: () => {\n if (isFiltered) {\n return removeFilter(\n filterExpression,\n targetCell,\n actionColumnFiltering,\n actionClearFiltering\n );\n }\n return applyFilter(\n columns,\n targetCell,\n rowContextData,\n filterExpression,\n actionColumnFiltering\n );\n }\n },\n {\n id: 'copyText',\n icon: 'copy',\n label: translate('Copy text'),\n show: true,\n disabled: false,\n onClick: () => copyText(targetCell)\n },\n {\n id: 'pasteText',\n icon: 'documents',\n label: translate('Paste text'),\n show: true,\n disabled: true,\n onClick: () => {}\n }\n ];\n};\n\nconst getMenuItems = (\n targetCell,\n column,\n rowContextData,\n columns,\n filterExpression,\n actionColumnFiltering,\n actionClearFiltering,\n translate\n) => {\n const fieldContextOptions = column.field?.contextMenuOptions || [];\n return [\n ...getDefaultMenuItems(\n column,\n rowContextData,\n targetCell,\n columns,\n filterExpression,\n actionColumnFiltering,\n actionClearFiltering,\n translate\n ),\n ...fieldContextOptions\n ];\n};\n\nconst shouldOverrideContextMenu = (targetCell, columns) => {\n if (!targetCell) {\n return false;\n }\n const { colId } = targetCell.dataset;\n\n const { field } = columns.find(col => col.field.id.toString() === colId?.toString()) || {};\n return !(!field || field?.noContextMenu);\n};\n\nconst MenuItem = ({\n menu = {},\n target = {},\n column = {},\n rowContextData = {},\n onMenuItemClick = () => {}\n}) => {\n const { onClick = () => {}, icon, disabled = false, show = true, label } = menu;\n if (!show) {\n return null;\n }\n\n return (\n <StyledContent\n onClick={() => {\n onMenuItemClick();\n onClick(target, column, rowContextData);\n }}\n >\n <StyledListItem>\n <StyledButton>\n {icon && <Icon name={icon} />}\n <span className={cx('label', { disabled })}>{label}</span>\n </StyledButton>\n </StyledListItem>\n </StyledContent>\n );\n};\n\nMenuItem.propTypes = {\n menu: PropTypes.objectOf(PropTypes.any),\n target: PropTypes.objectOf(PropTypes.any),\n column: PropTypes.objectOf(PropTypes.any),\n rowContextData: PropTypes.objectOf(PropTypes.any),\n onMenuItemClick: PropTypes.func\n};\n\nexport default function ContextMenuContainer({ view, selector }) {\n const {\n columns,\n data,\n state: { paginationOptions, filterExpression } = {},\n domContainer,\n type: { applyFilter: applyViewFilter, clearFilter }\n } = view;\n const [translate] = useTranslate();\n const contextMenuRef = useRef({}).current;\n const [showMenu, setShowMenu] = useState(false);\n const [menuItems, setMenuItems] = useState([]);\n const [popperRef, setPopperRef] = useElement();\n const scrollerElem = useMemo(() => getScrollerElem(view), [view]);\n\n useOuterEvent('mousedown', [popperRef], () => {\n setShowMenu(false);\n });\n\n useScrollAway(popperRef, scrollerElem, () => {\n setShowMenu(false);\n });\n\n const onMenuItemClick = useCallback(event => {\n if (event && event.key !== 'Escape') {\n return;\n }\n setShowMenu(false);\n }, []);\n\n const contextMenuListener = useCallback(\n e => {\n const targetElement = selector ? e.target.closest(selector.query.toString()) : e.target;\n if (\n shouldOverrideContextMenu(targetElement, columns) &&\n // TODO: We will add \"Open link in new tab\" option in context menu once the custom context menu is made accessible.\n !e.target.closest('a')\n ) {\n e.stopPropagation();\n e.preventDefault();\n contextMenuRef.targetCell = targetElement;\n const { colId } = contextMenuRef.targetCell.dataset;\n contextMenuRef.column = columns.find(col => col.field.id.toString() === colId?.toString());\n contextMenuRef.rowContextData = getRowContextData(data, paginationOptions, targetElement);\n targetElement.classList.add('selection-border', 'disable-select');\n const options = getMenuItems(\n targetElement,\n contextMenuRef.column,\n contextMenuRef.rowContextData,\n columns,\n filterExpression,\n applyViewFilter,\n clearFilter,\n translate\n );\n setShowMenu(true);\n setMenuItems(options);\n }\n },\n\n [\n selector,\n columns,\n contextMenuRef.targetCell,\n contextMenuRef.column,\n contextMenuRef.rowContextData,\n data,\n paginationOptions,\n filterExpression,\n applyViewFilter,\n clearFilter,\n translate\n ]\n );\n\n useEffect(() => {\n if (domContainer) {\n domContainer.addEventListener('contextmenu', contextMenuListener);\n domContainer.addEventListener('keydown', onMenuItemClick);\n }\n return () => {\n if (domContainer) {\n domContainer.removeEventListener('contextmenu', contextMenuListener);\n domContainer.removeEventListener('keydown', onMenuItemClick);\n }\n };\n }, [domContainer, contextMenuListener, onMenuItemClick]);\n\n if (!contextMenuRef.targetCell || !showMenu || !domContainer) {\n if (contextMenuRef.targetCell && selector) {\n contextMenuRef.targetCell.classList.remove('selection-border', 'disable-select');\n }\n return null;\n }\n\n return (\n <Popover portal ref={setPopperRef} target={contextMenuRef.targetCell}>\n <StyledPopover>\n {menuItems.map(menu => (\n <MenuItem\n key={menu.id}\n onMenuItemClick={onMenuItemClick}\n target={contextMenuRef.targetCell}\n column={contextMenuRef.column}\n rowContextData={contextMenuRef.rowContextData}\n menu={menu}\n />\n ))}\n </StyledPopover>\n </Popover>\n );\n}\n\nContextMenuContainer.propTypes = {\n view: PropTypes.objectOf(PropTypes.any).isRequired,\n selector: PropTypes.objectOf(PropTypes.any).isRequired\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../Core/Components/DefaultComponents/CellRenderers/EditComponents/index.jsx"],"names":[],"mappings":";AAeA,6EA8DC;;;;;;;;;;;;;sBA7EqB,YAAY"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../Core/Components/DefaultComponents/CellRenderers/EditComponents/index.jsx"],"names":[],"mappings":";AAaA,6EA8DC;;;;;;;;;;;;;sBA3EqB,YAAY"}
@@ -1,8 +1,7 @@
1
1
  import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import PropTypes from 'prop-types';
3
3
  import styled from 'styled-components';
4
- import { Popover, useElement } from '@pega/cosmos-react-core';
5
- import useOuterEvent from '../../../../Hooks/UseOuterEvent';
4
+ import { Popover, useElement, useOuterEvent } from '@pega/cosmos-react-core';
6
5
  import TextInput from './TextInput';
7
6
  import DateTime from './DateTime';
8
7
  import Radio from './Radio';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../Core/Components/DefaultComponents/CellRenderers/EditComponents/index.jsx"],"names":[],"mappings":";AAAA,OAAO,SAAS,MAAM,YAAY,CAAC;AACnC,OAAO,MAAM,MAAM,mBAAmB,CAAC;AAEvC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAE9D,OAAO,aAAa,MAAM,iCAAiC,CAAC;AAE5D,OAAO,SAAS,MAAM,aAAa,CAAC;AACpC,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,KAAK,MAAM,SAAS,CAAC;AAE5B,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,CAAA;;;CAG/B,CAAC;AACF,SAAS,MAAM,CAAC,KAAK;IACnB,MAAM,EACJ,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,cAAc,EACd,YAAY,EACZ,QAAQ,EACR,aAAa,EACb,oBAAoB,EACrB,GAAG,KAAK,CAAC;IACV,cAAc,EAAE,CAAC;IAEjB,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,qBAAqB,EAAE,GAAG,QAAQ,EAAE,CAAC;IACnE,MAAM,aAAa,GAAG,IAAI,KAAK,SAAS,IAAI,CAAC,cAAc,IAAI,qBAAqB,CAAC,CAAC;IACtF,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,UAAU,EAAE,CAAC;IAC/C,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,UAAU,CAAC,UAAU,EAAE,CAAC,CAAC;IAEjE,aAAa,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE;QAC3C,eAAe,CAAC,IAAI,CAAC,CAAC;QACtB,IAAI,aAAa;YAAE,QAAQ,EAAE,CAAC;IAChC,CAAC,CAAC,CAAC;IACH,IAAI,SAAS,GAAG,IAAI,CAAC;IACrB,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,MAAM,CAAC;QACZ,KAAK,QAAQ;YACX,SAAS,GAAG,SAAS,CAAC;YACtB,MAAM;QACR,KAAK,MAAM,CAAC;QACZ,KAAK,UAAU;YACb,SAAS,GAAG,QAAQ,CAAC;YACrB,MAAM;QACR,KAAK,SAAS;YACZ,SAAS,GAAG,KAAK,CAAC;YAClB,MAAM;QAER;YACE,SAAS,GAAG,SAAS,CAAC;YACtB,MAAM;IACV,CAAC;IACD,IAAI,cAAc,IAAI,qBAAqB,EAAE,CAAC;QAC5C,SAAS,GAAG,KAAK,CAAC;IACpB,CAAC;IAED,IAAI,CAAC,aAAa;QAAE,OAAO,KAAC,SAAS,OAAK,KAAK,GAAI,CAAC;IACpD,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IACzB,OAAO,CACL,8BACG,oBAAoB,CAAC,cAAc,EAAE,aAAa,EAAE;gBACnD,GAAG,KAAK;gBACR,iBAAiB,EAAE,GAAG,EAAE,CAAC,YAAY,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK;aAC5D,CAAC,EAED,aAAa,IAAI,CAChB,KAAC,OAAO,IAAC,GAAG,EAAE,YAAY,EAAE,SAAS,EAAC,YAAY,EAAC,MAAM,EAAE,YAAY,YACrE,KAAC,aAAa,cACZ,KAAC,SAAS,OAAK,KAAK,GAAI,GACV,GACR,CACX,IACA,CACJ,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,SAAS,GAAG;IACjB,QAAQ,EAAE,SAAS,CAAC,IAAI,CAAC,UAAU;IACnC,QAAQ,EAAE,SAAS,CAAC,IAAI,CAAC,UAAU;IACnC,UAAU,EAAE,SAAS,CAAC,IAAI,CAAC,UAAU;IACrC,cAAc,EAAE,SAAS,CAAC,IAAI,CAAC,UAAU;IACzC,YAAY,EAAE,SAAS,CAAC,IAAI,CAAC,UAAU;IACvC,QAAQ,EAAE,SAAS,CAAC,IAAI,CAAC,UAAU;IACnC,aAAa,EAAE,SAAS,CAAC,IAAI,CAAC,UAAU;IACxC,oBAAoB,EAAE,SAAS,CAAC,IAAI,CAAC,UAAU;CAChD,CAAC;AAEF,eAAe,MAAM,CAAC","sourcesContent":["import PropTypes from 'prop-types';\nimport styled from 'styled-components';\n\nimport { Popover, useElement } from '@pega/cosmos-react-core';\n\nimport useOuterEvent from '../../../../Hooks/UseOuterEvent';\n\nimport TextInput from './TextInput';\nimport DateTime from './DateTime';\nimport Radio from './Radio';\n\nconst StyledPopover = styled.div`\n padding: 1rem;\n min-width: 7rem;\n`;\nfunction Editor(props) {\n const {\n getField,\n onCancel,\n getElement,\n setEditContext,\n getFormatter,\n getValue,\n renderFactory,\n resolveCellComponent\n } = props;\n setEditContext();\n\n const { type, filterPickList, filterPickListOptions } = getField();\n const showInPopOver = type === 'boolean' || (filterPickList && filterPickListOptions);\n const [popperRef, setPopperRef] = useElement();\n const [popperTarget, setPopperTarget] = useElement(getElement());\n\n useOuterEvent('mousedown', [popperRef], () => {\n setPopperTarget(null);\n if (showInPopOver) onCancel();\n });\n let Component = null;\n switch (type) {\n case 'text':\n case 'number':\n Component = TextInput;\n break;\n case 'date':\n case 'datetime':\n Component = DateTime;\n break;\n case 'boolean':\n Component = Radio;\n break;\n\n default:\n Component = TextInput;\n break;\n }\n if (filterPickList && filterPickListOptions) {\n Component = Radio;\n }\n\n if (!showInPopOver) return <Component {...props} />;\n const value = getValue();\n return (\n <>\n {resolveCellComponent('cellRenderer', renderFactory, {\n ...props,\n getFormattedValue: () => getFormatter?.()?.(value) || value\n })}\n\n {showInPopOver && (\n <Popover ref={setPopperRef} className='editpopper' target={popperTarget}>\n <StyledPopover>\n <Component {...props} />\n </StyledPopover>\n </Popover>\n )}\n </>\n );\n}\n\nEditor.propTypes = {\n getField: PropTypes.func.isRequired,\n onCancel: PropTypes.func.isRequired,\n getElement: PropTypes.func.isRequired,\n setEditContext: PropTypes.func.isRequired,\n getFormatter: PropTypes.func.isRequired,\n getValue: PropTypes.func.isRequired,\n renderFactory: PropTypes.func.isRequired,\n resolveCellComponent: PropTypes.func.isRequired\n};\n\nexport default Editor;\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../Core/Components/DefaultComponents/CellRenderers/EditComponents/index.jsx"],"names":[],"mappings":"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","sourcesContent":["import PropTypes from 'prop-types';\nimport styled from 'styled-components';\n\nimport { Popover, useElement, useOuterEvent } from '@pega/cosmos-react-core';\n\nimport TextInput from './TextInput';\nimport DateTime from './DateTime';\nimport Radio from './Radio';\n\nconst StyledPopover = styled.div`\n padding: 1rem;\n min-width: 7rem;\n`;\nfunction Editor(props) {\n const {\n getField,\n onCancel,\n getElement,\n setEditContext,\n getFormatter,\n getValue,\n renderFactory,\n resolveCellComponent\n } = props;\n setEditContext();\n\n const { type, filterPickList, filterPickListOptions } = getField();\n const showInPopOver = type === 'boolean' || (filterPickList && filterPickListOptions);\n const [popperRef, setPopperRef] = useElement();\n const [popperTarget, setPopperTarget] = useElement(getElement());\n\n useOuterEvent('mousedown', [popperRef], () => {\n setPopperTarget(null);\n if (showInPopOver) onCancel();\n });\n let Component = null;\n switch (type) {\n case 'text':\n case 'number':\n Component = TextInput;\n break;\n case 'date':\n case 'datetime':\n Component = DateTime;\n break;\n case 'boolean':\n Component = Radio;\n break;\n\n default:\n Component = TextInput;\n break;\n }\n if (filterPickList && filterPickListOptions) {\n Component = Radio;\n }\n\n if (!showInPopOver) return <Component {...props} />;\n const value = getValue();\n return (\n <>\n {resolveCellComponent('cellRenderer', renderFactory, {\n ...props,\n getFormattedValue: () => getFormatter?.()?.(value) || value\n })}\n\n {showInPopOver && (\n <Popover ref={setPopperRef} className='editpopper' target={popperTarget}>\n <StyledPopover>\n <Component {...props} />\n </StyledPopover>\n </Popover>\n )}\n </>\n );\n}\n\nEditor.propTypes = {\n getField: PropTypes.func.isRequired,\n onCancel: PropTypes.func.isRequired,\n getElement: PropTypes.func.isRequired,\n setEditContext: PropTypes.func.isRequired,\n getFormatter: PropTypes.func.isRequired,\n getValue: PropTypes.func.isRequired,\n renderFactory: PropTypes.func.isRequired,\n resolveCellComponent: PropTypes.func.isRequired\n};\n\nexport default Editor;\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"RichText.d.ts","sourceRoot":"","sources":["../../../../../Core/Components/DefaultComponents/CellRenderers/RichText.jsx"],"names":[],"mappings":";AAoBA;;;4CAiDC;;;;;;;sBArEqB,YAAY"}
1
+ {"version":3,"file":"RichText.d.ts","sourceRoot":"","sources":["../../../../../Core/Components/DefaultComponents/CellRenderers/RichText.jsx"],"names":[],"mappings":";AAmBA;;;4CAiDC;;;;;;;sBApEqB,YAAY"}
@@ -2,9 +2,8 @@ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-run
2
2
  import PropTypes from 'prop-types';
3
3
  import { useState, useEffect, useCallback } from 'react';
4
4
  import styled from 'styled-components';
5
- import { Popover, useElement } from '@pega/cosmos-react-core';
5
+ import { Popover, useElement, useOuterEvent } from '@pega/cosmos-react-core';
6
6
  import { RichTextViewer } from '@pega/cosmos-react-rte';
7
- import useOuterEvent from '../../../Hooks/UseOuterEvent';
8
7
  import useSingleClick from '../../../Hooks/useSingleClick';
9
8
  const StyledPopover = styled.div `
10
9
  padding: 1rem 1.5rem;
@@ -1 +1 @@
1
- {"version":3,"file":"RichText.js","sourceRoot":"","sources":["../../../../../Core/Components/DefaultComponents/CellRenderers/RichText.jsx"],"names":[],"mappings":";AAAA,OAAO,SAAS,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACzD,OAAO,MAAM,MAAM,mBAAmB,CAAC;AAEvC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD,OAAO,aAAa,MAAM,8BAA8B,CAAC;AACzD,OAAO,cAAc,MAAM,+BAA+B,CAAC;AAE3D,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;CAO/B,CAAC;AAEF,qFAAqF;AACrF,SAAS,QAAQ,CAAC,EAAE,KAAK,GAAG,EAAE,EAAE,UAAU,EAAE;IAC1C,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAElD,2BAA2B;IAC3B,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,UAAU,EAAE,CAAC;IAC/C,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,UAAU,CAAC,UAAU,EAAE,CAAC,CAAC;IAEjE,aAAa,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE;QAC3C,IAAI,SAAS,EAAE,CAAC;YACd,eAAe,CAAC,IAAI,CAAC,CAAC;YACtB,YAAY,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,aAAa,GAAG,WAAW,CAAC,GAAG,EAAE;QACrC,eAAe,CAAC,UAAU,EAAE,CAAC,CAAC;QAC9B,YAAY,CAAC,IAAI,CAAC,CAAC;IACrB,CAAC,EAAE,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC,CAAC;IAElC,MAAM,OAAO,GAAG,cAAc,CAAC,aAAa,CAAC,CAAC;IAE9C,oCAAoC;IACpC,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,IAAI,GAAG,UAAU,EAAE,CAAC;QAC1B,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAExC,OAAO,GAAG,EAAE;YACV,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC7C,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;IAE1B,OAAO,CACL,8BACE,KAAC,cAAc,IAAC,IAAI,EAAC,MAAM,EAAC,OAAO,EAAE,KAAK,GAAI,EAC7C,SAAS,CAAC,CAAC,CAAC,CACX,KAAC,OAAO,IACN,MAAM,QACN,GAAG,EAAE,YAAY,EACjB,SAAS,EAAC,YAAY,EACtB,MAAM,EAAE,YAAY,EACpB,kBAAkB,kBAElB,KAAC,aAAa,cACZ,KAAC,cAAc,IAAC,IAAI,EAAC,MAAM,EAAC,OAAO,EAAE,KAAK,GAAI,GAChC,GACR,CACX,CAAC,CAAC,CAAC,IAAI,IACP,CACJ,CAAC;AACJ,CAAC;AAED,QAAQ,CAAC,SAAS,GAAG;IACnB,KAAK,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;IAChE,UAAU,EAAE,SAAS,CAAC,IAAI,CAAC,UAAU;CACtC,CAAC;AAEF,eAAe,QAAQ,CAAC","sourcesContent":["import PropTypes from 'prop-types';\nimport { useState, useEffect, useCallback } from 'react';\nimport styled from 'styled-components';\n\nimport { Popover, useElement } from '@pega/cosmos-react-core';\nimport { RichTextViewer } from '@pega/cosmos-react-rte';\n\nimport useOuterEvent from '../../../Hooks/UseOuterEvent';\nimport useSingleClick from '../../../Hooks/useSingleClick';\n\nconst StyledPopover = styled.div`\n padding: 1rem 1.5rem;\n width: 100%;\n /* stylelint-disable unit-allowed-list */\n max-width: 640px;\n max-height: 480px;\n overflow: auto;\n`;\n\n// TODO: RichText cell renderer does not support changing foregroundColor of content.\nfunction RichText({ value = '', getElement }) {\n const [showPopUp, setShowPopUp] = useState(false);\n\n // Popover related elements\n const [popperRef, setPopperRef] = useElement();\n const [popperTarget, setPopperTarget] = useElement(getElement());\n\n useOuterEvent('mousedown', [popperRef], () => {\n if (showPopUp) {\n setPopperTarget(null);\n setShowPopUp(false);\n }\n });\n\n const onSingleClick = useCallback(() => {\n setPopperTarget(getElement());\n setShowPopUp(true);\n }, [getElement, setPopperTarget]);\n\n const onClick = useSingleClick(onSingleClick);\n\n // Adding event listener to element.\n useEffect(() => {\n const cell = getElement();\n cell.addEventListener('click', onClick);\n\n return () => {\n cell.removeEventListener('click', onClick);\n };\n }, [getElement, onClick]);\n\n return (\n <>\n <RichTextViewer type='html' content={value} />\n {showPopUp ? (\n <Popover\n portal\n ref={setPopperRef}\n className='editpopper'\n target={popperTarget}\n hideOnTargetHidden\n >\n <StyledPopover>\n <RichTextViewer type='html' content={value} />\n </StyledPopover>\n </Popover>\n ) : null}\n </>\n );\n}\n\nRichText.propTypes = {\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n getElement: PropTypes.func.isRequired\n};\n\nexport default RichText;\n"]}
1
+ {"version":3,"file":"RichText.js","sourceRoot":"","sources":["../../../../../Core/Components/DefaultComponents/CellRenderers/RichText.jsx"],"names":[],"mappings":";AAAA,OAAO,SAAS,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACzD,OAAO,MAAM,MAAM,mBAAmB,CAAC;AAEvC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7E,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD,OAAO,cAAc,MAAM,+BAA+B,CAAC;AAE3D,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;CAO/B,CAAC;AAEF,qFAAqF;AACrF,SAAS,QAAQ,CAAC,EAAE,KAAK,GAAG,EAAE,EAAE,UAAU,EAAE;IAC1C,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAElD,2BAA2B;IAC3B,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,UAAU,EAAE,CAAC;IAC/C,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,UAAU,CAAC,UAAU,EAAE,CAAC,CAAC;IAEjE,aAAa,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE;QAC3C,IAAI,SAAS,EAAE,CAAC;YACd,eAAe,CAAC,IAAI,CAAC,CAAC;YACtB,YAAY,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,aAAa,GAAG,WAAW,CAAC,GAAG,EAAE;QACrC,eAAe,CAAC,UAAU,EAAE,CAAC,CAAC;QAC9B,YAAY,CAAC,IAAI,CAAC,CAAC;IACrB,CAAC,EAAE,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC,CAAC;IAElC,MAAM,OAAO,GAAG,cAAc,CAAC,aAAa,CAAC,CAAC;IAE9C,oCAAoC;IACpC,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,IAAI,GAAG,UAAU,EAAE,CAAC;QAC1B,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAExC,OAAO,GAAG,EAAE;YACV,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC7C,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;IAE1B,OAAO,CACL,8BACE,KAAC,cAAc,IAAC,IAAI,EAAC,MAAM,EAAC,OAAO,EAAE,KAAK,GAAI,EAC7C,SAAS,CAAC,CAAC,CAAC,CACX,KAAC,OAAO,IACN,MAAM,QACN,GAAG,EAAE,YAAY,EACjB,SAAS,EAAC,YAAY,EACtB,MAAM,EAAE,YAAY,EACpB,kBAAkB,kBAElB,KAAC,aAAa,cACZ,KAAC,cAAc,IAAC,IAAI,EAAC,MAAM,EAAC,OAAO,EAAE,KAAK,GAAI,GAChC,GACR,CACX,CAAC,CAAC,CAAC,IAAI,IACP,CACJ,CAAC;AACJ,CAAC;AAED,QAAQ,CAAC,SAAS,GAAG;IACnB,KAAK,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;IAChE,UAAU,EAAE,SAAS,CAAC,IAAI,CAAC,UAAU;CACtC,CAAC;AAEF,eAAe,QAAQ,CAAC","sourcesContent":["import PropTypes from 'prop-types';\nimport { useState, useEffect, useCallback } from 'react';\nimport styled from 'styled-components';\n\nimport { Popover, useElement, useOuterEvent } from '@pega/cosmos-react-core';\nimport { RichTextViewer } from '@pega/cosmos-react-rte';\n\nimport useSingleClick from '../../../Hooks/useSingleClick';\n\nconst StyledPopover = styled.div`\n padding: 1rem 1.5rem;\n width: 100%;\n /* stylelint-disable unit-allowed-list */\n max-width: 640px;\n max-height: 480px;\n overflow: auto;\n`;\n\n// TODO: RichText cell renderer does not support changing foregroundColor of content.\nfunction RichText({ value = '', getElement }) {\n const [showPopUp, setShowPopUp] = useState(false);\n\n // Popover related elements\n const [popperRef, setPopperRef] = useElement();\n const [popperTarget, setPopperTarget] = useElement(getElement());\n\n useOuterEvent('mousedown', [popperRef], () => {\n if (showPopUp) {\n setPopperTarget(null);\n setShowPopUp(false);\n }\n });\n\n const onSingleClick = useCallback(() => {\n setPopperTarget(getElement());\n setShowPopUp(true);\n }, [getElement, setPopperTarget]);\n\n const onClick = useSingleClick(onSingleClick);\n\n // Adding event listener to element.\n useEffect(() => {\n const cell = getElement();\n cell.addEventListener('click', onClick);\n\n return () => {\n cell.removeEventListener('click', onClick);\n };\n }, [getElement, onClick]);\n\n return (\n <>\n <RichTextViewer type='html' content={value} />\n {showPopUp ? (\n <Popover\n portal\n ref={setPopperRef}\n className='editpopper'\n target={popperTarget}\n hideOnTargetHidden\n >\n <StyledPopover>\n <RichTextViewer type='html' content={value} />\n </StyledPopover>\n </Popover>\n ) : null}\n </>\n );\n}\n\nRichText.propTypes = {\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n getElement: PropTypes.func.isRequired\n};\n\nexport default RichText;\n"]}
@@ -1,6 +1,6 @@
1
1
  export function CosmosProviders({ children }: {
2
2
  children: any;
3
3
  }): import("react/jsx-runtime").JSX.Element;
4
- declare const _default: import("react").MemoExoticComponent<import("react").ForwardRefExoticComponent<Omit<import("../../..").RepeatingStructuresProps, "ref"> & import("react").RefAttributes<import("../../..").RSTypes.ImperativeApi>>>;
4
+ declare const _default: import("react").MemoExoticComponent<import("react").ForwardRefExoticComponent<any>>;
5
5
  export default _default;
6
6
  //# sourceMappingURL=index.d.ts.map
@@ -2,7 +2,7 @@ import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  import { memo, useCallback, useEffect, useRef, useState, useMemo } from 'react';
3
3
  import PropTypes from 'prop-types';
4
4
  import { Icon, SearchInput, Menu, menuHelpers, useElement } from '@pega/cosmos-react-core';
5
- import useSelect from '../../Hooks/UseSelect';
5
+ import useSelect from '../../Hooks/useSelect';
6
6
  import { allowToggle, getFieldIcon } from '../../Utils';
7
7
  export const colsVisibility = 'Show/hide columns';
8
8
  export const pinning = 'Freeze columns';
@@ -1 +1 @@
1
- {"version":3,"file":"ColumnSelector.js","sourceRoot":"","sources":["../../../../Core/Components/Toolbar/ColumnSelector.jsx"],"names":[],"mappings":"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","sourcesContent":["import { memo, useCallback, useEffect, useRef, useState, useMemo } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { Icon, SearchInput, Menu, menuHelpers, useElement } from '@pega/cosmos-react-core';\n\nimport useSelect from '../../Hooks/UseSelect';\nimport { allowToggle, getFieldIcon } from '../../Utils';\n\nexport const colsVisibility = 'Show/hide columns';\nexport const pinning = 'Freeze columns';\n\nexport function getIconByFieldType(type) {\n const iconName = getFieldIcon(type);\n return <Icon data-test-id={iconName} data-testid={iconName} name={iconName} />;\n}\n/**\n * Transforms the columns array into array of columns grouped by category\n * @param {Array} columns : ;\n * @returns Arrays of columns nested by category\n */\nexport function transformData(columns, action) {\n const result = [];\n if (!columns?.length) return result;\n\n const categoryObj = {};\n const allowColumnToggle = allowToggle(columns[0].parent.getVisibleColumns());\n\n columns\n ?.filter(c => c.field.toggle)\n .forEach(column => {\n const {\n field: { id, category = [], type },\n label,\n hidden,\n frozen\n } = column;\n const lastCategoryLabel = category.length ? category[category.length - 1].label : undefined;\n let selectAction;\n let disabled;\n if (action === colsVisibility) {\n selectAction = !hidden;\n disabled = !allowColumnToggle && !hidden;\n } else if (action === pinning) selectAction = frozen;\n if (categoryObj[lastCategoryLabel])\n categoryObj[lastCategoryLabel].items.push({\n id,\n primary: label,\n label,\n selected: selectAction,\n type,\n disabled\n });\n else {\n categoryObj[lastCategoryLabel] = {\n id: lastCategoryLabel,\n label: lastCategoryLabel,\n items: [\n {\n id,\n primary: label,\n selected: selectAction,\n label,\n type,\n disabled\n }\n ]\n };\n }\n });\n // Items with no category attribute are set in the root of returned array\n if (categoryObj[undefined] && categoryObj[undefined].items) {\n result.push(...categoryObj[undefined].items);\n delete categoryObj[undefined];\n }\n const keys = Object.keys(categoryObj);\n // Items with category attribute are grouped inside the nested category object\n keys.forEach(key => {\n result.push(categoryObj[key]);\n });\n return result;\n}\n\nexport function ColumnSelectorControl(props) {\n const { data, onSelect, forceShowPopup } = props;\n const flatData = menuHelpers.flatten(data);\n\n data.forEach(d => {\n if (d.items)\n d.items.forEach(item => {\n item.visual = getIconByFieldType(item.type);\n });\n else {\n d.visual = getIconByFieldType(d.type);\n }\n });\n\n const selectedData = flatData.filter(o => o.selected).map(obj => obj.id);\n const [visibleColumns, onChecked] = useSelect(selectedData);\n const onChange = useCallback(id => onChecked(id), [onChecked]);\n const [searchQuery, onSearch] = useState('');\n const [searchEl, setSearchEl] = useElement(null);\n\n const hasMountedRef = useRef(false);\n\n const onSearchTriggered = useCallback(\n searchString => {\n onSearch(searchString);\n },\n [onSearch]\n );\n\n useEffect(() => {\n if (forceShowPopup && searchEl) searchEl.focus();\n }, [forceShowPopup, searchEl]);\n\n useEffect(() => {\n if (hasMountedRef.current) {\n const previousVisibleColumns = flatData.filter(o => o.selected).map(o => o.id);\n const currentVisibleColumns = [...visibleColumns];\n const toggledColumns = [\n ...currentVisibleColumns.filter(id => !previousVisibleColumns.includes(id)),\n ...previousVisibleColumns.filter(id => !visibleColumns.has(id))\n ];\n onSelect(toggledColumns);\n }\n hasMountedRef.current = true;\n }, [visibleColumns]);\n\n const itemsToRender = searchQuery\n ? flatData.filter(item => item.label.toLowerCase().includes(searchQuery.toLowerCase()))\n : data;\n\n return (\n <Menu\n items={itemsToRender}\n mode='multi-select'\n onItemClick={onChange}\n role='listbox'\n focusControlEl={searchEl || undefined}\n header={\n <SearchInput value={searchQuery} onSearchChange={onSearchTriggered} ref={setSearchEl} />\n }\n />\n );\n}\n\nColumnSelectorControl.propTypes = {\n data: PropTypes.arrayOf(PropTypes.object).isRequired,\n onSelect: PropTypes.func.isRequired,\n forceShowPopup: PropTypes.bool.isRequired\n};\n\nfunction ColumnSelector({ dispatch, columns, action }) {\n const data = useMemo(() => transformData(columns, action), [columns, action]);\n const [forceShowPopup, setForceShowPopup] = useState(true);\n const onSelectHandler = useCallback(\n cols => {\n if (columns.length > 100) {\n setForceShowPopup(false);\n }\n if (cols.length > 0) dispatch(cols);\n },\n [dispatch, columns.length]\n );\n\n return (\n <>\n {forceShowPopup && (\n <ColumnSelectorControl\n data={data}\n onSelect={onSelectHandler}\n forceShowPopup={forceShowPopup}\n />\n )}\n </>\n );\n}\n\nColumnSelector.propTypes = {\n dispatch: PropTypes.func.isRequired,\n columns: PropTypes.arrayOf(PropTypes.object).isRequired,\n action: PropTypes.string.isRequired\n};\n\nexport default memo(ColumnSelector);\n"]}
1
+ {"version":3,"file":"ColumnSelector.js","sourceRoot":"","sources":["../../../../Core/Components/Toolbar/ColumnSelector.jsx"],"names":[],"mappings":"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","sourcesContent":["import { memo, useCallback, useEffect, useRef, useState, useMemo } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { Icon, SearchInput, Menu, menuHelpers, useElement } from '@pega/cosmos-react-core';\n\nimport useSelect from '../../Hooks/useSelect';\nimport { allowToggle, getFieldIcon } from '../../Utils';\n\nexport const colsVisibility = 'Show/hide columns';\nexport const pinning = 'Freeze columns';\n\nexport function getIconByFieldType(type) {\n const iconName = getFieldIcon(type);\n return <Icon data-test-id={iconName} data-testid={iconName} name={iconName} />;\n}\n/**\n * Transforms the columns array into array of columns grouped by category\n * @param {Array} columns : ;\n * @returns Arrays of columns nested by category\n */\nexport function transformData(columns, action) {\n const result = [];\n if (!columns?.length) return result;\n\n const categoryObj = {};\n const allowColumnToggle = allowToggle(columns[0].parent.getVisibleColumns());\n\n columns\n ?.filter(c => c.field.toggle)\n .forEach(column => {\n const {\n field: { id, category = [], type },\n label,\n hidden,\n frozen\n } = column;\n const lastCategoryLabel = category.length ? category[category.length - 1].label : undefined;\n let selectAction;\n let disabled;\n if (action === colsVisibility) {\n selectAction = !hidden;\n disabled = !allowColumnToggle && !hidden;\n } else if (action === pinning) selectAction = frozen;\n if (categoryObj[lastCategoryLabel])\n categoryObj[lastCategoryLabel].items.push({\n id,\n primary: label,\n label,\n selected: selectAction,\n type,\n disabled\n });\n else {\n categoryObj[lastCategoryLabel] = {\n id: lastCategoryLabel,\n label: lastCategoryLabel,\n items: [\n {\n id,\n primary: label,\n selected: selectAction,\n label,\n type,\n disabled\n }\n ]\n };\n }\n });\n // Items with no category attribute are set in the root of returned array\n if (categoryObj[undefined] && categoryObj[undefined].items) {\n result.push(...categoryObj[undefined].items);\n delete categoryObj[undefined];\n }\n const keys = Object.keys(categoryObj);\n // Items with category attribute are grouped inside the nested category object\n keys.forEach(key => {\n result.push(categoryObj[key]);\n });\n return result;\n}\n\nexport function ColumnSelectorControl(props) {\n const { data, onSelect, forceShowPopup } = props;\n const flatData = menuHelpers.flatten(data);\n\n data.forEach(d => {\n if (d.items)\n d.items.forEach(item => {\n item.visual = getIconByFieldType(item.type);\n });\n else {\n d.visual = getIconByFieldType(d.type);\n }\n });\n\n const selectedData = flatData.filter(o => o.selected).map(obj => obj.id);\n const [visibleColumns, onChecked] = useSelect(selectedData);\n const onChange = useCallback(id => onChecked(id), [onChecked]);\n const [searchQuery, onSearch] = useState('');\n const [searchEl, setSearchEl] = useElement(null);\n\n const hasMountedRef = useRef(false);\n\n const onSearchTriggered = useCallback(\n searchString => {\n onSearch(searchString);\n },\n [onSearch]\n );\n\n useEffect(() => {\n if (forceShowPopup && searchEl) searchEl.focus();\n }, [forceShowPopup, searchEl]);\n\n useEffect(() => {\n if (hasMountedRef.current) {\n const previousVisibleColumns = flatData.filter(o => o.selected).map(o => o.id);\n const currentVisibleColumns = [...visibleColumns];\n const toggledColumns = [\n ...currentVisibleColumns.filter(id => !previousVisibleColumns.includes(id)),\n ...previousVisibleColumns.filter(id => !visibleColumns.has(id))\n ];\n onSelect(toggledColumns);\n }\n hasMountedRef.current = true;\n }, [visibleColumns]);\n\n const itemsToRender = searchQuery\n ? flatData.filter(item => item.label.toLowerCase().includes(searchQuery.toLowerCase()))\n : data;\n\n return (\n <Menu\n items={itemsToRender}\n mode='multi-select'\n onItemClick={onChange}\n role='listbox'\n focusControlEl={searchEl || undefined}\n header={\n <SearchInput value={searchQuery} onSearchChange={onSearchTriggered} ref={setSearchEl} />\n }\n />\n );\n}\n\nColumnSelectorControl.propTypes = {\n data: PropTypes.arrayOf(PropTypes.object).isRequired,\n onSelect: PropTypes.func.isRequired,\n forceShowPopup: PropTypes.bool.isRequired\n};\n\nfunction ColumnSelector({ dispatch, columns, action }) {\n const data = useMemo(() => transformData(columns, action), [columns, action]);\n const [forceShowPopup, setForceShowPopup] = useState(true);\n const onSelectHandler = useCallback(\n cols => {\n if (columns.length > 100) {\n setForceShowPopup(false);\n }\n if (cols.length > 0) dispatch(cols);\n },\n [dispatch, columns.length]\n );\n\n return (\n <>\n {forceShowPopup && (\n <ColumnSelectorControl\n data={data}\n onSelect={onSelectHandler}\n forceShowPopup={forceShowPopup}\n />\n )}\n </>\n );\n}\n\nColumnSelector.propTypes = {\n dispatch: PropTypes.func.isRequired,\n columns: PropTypes.arrayOf(PropTypes.object).isRequired,\n action: PropTypes.string.isRequired\n};\n\nexport default memo(ColumnSelector);\n"]}
@@ -1,5 +1,5 @@
1
1
  import { useState, useEffect, useRef, useCallback } from 'react';
2
- import useThrottle from '../../Hooks/UseThrottle';
2
+ import useThrottle from '../../Hooks/useThrottle';
3
3
  import { getRecordCountForLayoutPaint, isViewNotFilled } from './utility';
4
4
  // import useDebounce from '../../Hooks/UseDebounce';
5
5
  export const useApplyStyleOnScroll = vi => {
@@ -1 +1 @@
1
- {"version":3,"file":"UseScroll.js","sourceRoot":"","sources":["../../../../Core/Components/Virtualise/UseScroll.js"],"names":[],"mappings":"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","sourcesContent":["import { useState, useEffect, useRef, useCallback } from 'react';\n\nimport useThrottle from '../../Hooks/UseThrottle';\n\nimport { getRecordCountForLayoutPaint, isViewNotFilled } from './utility';\n// import useDebounce from '../../Hooks/UseDebounce';\n\nexport const useApplyStyleOnScroll = vi => {\n const footerElement = vi.pContainer?.querySelector('.footer > .row');\n return useCallback(() => {\n // Calculate the difference between bottom co-ordinates of p and r Containers\n // along with the row height of footer element to check if the bottom of the table is reached.\n if (\n Math.abs(\n vi.pContainer.getBoundingClientRect().bottom -\n vi.rContainer.getBoundingClientRect().bottom -\n (footerElement?.hasChildNodes() ? footerElement.offsetHeight : 0)\n ) < 1\n ) {\n vi.rContainer.classList.add('scroll-end');\n } else {\n vi.rContainer.classList.remove('scroll-end');\n }\n }, [vi.pContainer, vi.rContainer, vi.pContainer?.offsetHeight, footerElement]);\n};\n\nexport default function useScroll(\n callback,\n getContext,\n vi,\n totalRecordCount,\n header,\n isFetching,\n viewHeight\n) {\n const applyScrollEndStyle = useApplyStyleOnScroll(vi);\n const [vScroll, setVScroll] = useState();\n const ref = useRef({\n oldScrollTop: 0\n }).current;\n const updateScrollTop = useCallback(\n top => {\n ref.oldScrollTop = top;\n },\n [ref]\n );\n // const deBouncedVScroll = useDebounce(vScroll, 100);\n\n const getDirection = useCallback(() => {\n const context = getContext();\n let dir;\n if (ref.oldScrollTop > context.scrollTop) dir = -1;\n else if (ref.oldScrollTop < context.scrollTop) dir = 1;\n ref.oldScrollTop = context.scrollTop;\n return dir;\n }, [getContext, ref.oldScrollTop]);\n\n const onScroll = useCallback(\n e => {\n setVScroll(e.target.scrollTop);\n vi.pInfo.bufferNewCords = vi.bContainer.getBoundingClientRect();\n\n // Style is to be applied upon scroll after successful\n // check of bottom position of containers\n applyScrollEndStyle(vi.rContainer, vi.pContainer);\n },\n [\n isFetching,\n vi.pInfo.bufferNewCords,\n vi.bContainer,\n vi.pContainer,\n vi.rContainer,\n applyScrollEndStyle\n ]\n );\n\n const handleScroll = useCallback(() => {\n const context = getContext();\n const direction = getDirection();\n const distance = direction === 1 ? 0.8 : 0.2;\n const eleIndex = Math.floor(vi.rContainer.childElementCount * distance);\n const boundaryEle = vi.rContainer.childNodes[eleIndex];\n const boundaryElePos = boundaryEle?.getBoundingClientRect();\n const { bottom, top } = context?.getBoundingClientRect() || {};\n if (\n (direction === 1 &&\n boundaryElePos?.bottom < bottom &&\n // eslint-disable-next-line no-unsafe-optional-chaining\n vi.pInfo?.view?.endIndex + 1 < totalRecordCount) ||\n (direction === -1 && boundaryElePos?.top > top && vi.pInfo?.view?.startIndex > 0) ||\n isViewNotFilled(getRecordCountForLayoutPaint(totalRecordCount), vi, context, header)\n ) {\n vi.direction = direction;\n callback();\n }\n }, [getDirection, vi, getContext, isFetching, totalRecordCount, header, callback]);\n\n useThrottle(vScroll, handleScroll);\n\n useEffect(() => {\n const context = getContext();\n if (context) context.addEventListener('scroll', onScroll);\n return () => {\n if (context) context.removeEventListener('scroll', onScroll);\n };\n }, [getContext, onScroll, vi.rContainer, vi.pContainer, applyScrollEndStyle]);\n\n // useEffect for scrollEndStyle hook\n useEffect(() => {\n applyScrollEndStyle(vi.rContainer, vi.pContainer);\n }, [vi.rContainer, vi.pContainer, applyScrollEndStyle, totalRecordCount, viewHeight]);\n // useEffect(() => {\n // if (deBouncedVScroll !== undefined)\n // handleScroll();\n // }, [deBouncedVScroll]);\n\n return [updateScrollTop];\n}\n"]}
1
+ {"version":3,"file":"UseScroll.js","sourceRoot":"","sources":["../../../../Core/Components/Virtualise/UseScroll.js"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAEjE,OAAO,WAAW,MAAM,yBAAyB,CAAC;AAElD,OAAO,EAAE,4BAA4B,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC1E,qDAAqD;AAErD,MAAM,CAAC,MAAM,qBAAqB,GAAG,EAAE,CAAC,EAAE;IACxC,MAAM,aAAa,GAAG,EAAE,CAAC,UAAU,EAAE,aAAa,CAAC,gBAAgB,CAAC,CAAC;IACrE,OAAO,WAAW,CAAC,GAAG,EAAE;QACtB,6EAA6E;QAC7E,8FAA8F;QAC9F,IACE,IAAI,CAAC,GAAG,CACN,EAAE,CAAC,UAAU,CAAC,qBAAqB,EAAE,CAAC,MAAM;YAC1C,EAAE,CAAC,UAAU,CAAC,qBAAqB,EAAE,CAAC,MAAM;YAC5C,CAAC,aAAa,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CACpE,GAAG,CAAC,EACL,CAAC;YACD,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAC5C,CAAC;aAAM,CAAC;YACN,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,EAAE,YAAY,EAAE,aAAa,CAAC,CAAC,CAAC;AACjF,CAAC,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,SAAS,CAC/B,QAAQ,EACR,UAAU,EACV,EAAE,EACF,gBAAgB,EAChB,MAAM,EACN,UAAU,EACV,UAAU;IAEV,MAAM,mBAAmB,GAAG,qBAAqB,CAAC,EAAE,CAAC,CAAC;IACtD,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,EAAE,CAAC;IACzC,MAAM,GAAG,GAAG,MAAM,CAAC;QACjB,YAAY,EAAE,CAAC;KAChB,CAAC,CAAC,OAAO,CAAC;IACX,MAAM,eAAe,GAAG,WAAW,CACjC,GAAG,CAAC,EAAE;QACJ,GAAG,CAAC,YAAY,GAAG,GAAG,CAAC;IACzB,CAAC,EACD,CAAC,GAAG,CAAC,CACN,CAAC;IACF,sDAAsD;IAEtD,MAAM,YAAY,GAAG,WAAW,CAAC,GAAG,EAAE;QACpC,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;QAC7B,IAAI,GAAG,CAAC;QACR,IAAI,GAAG,CAAC,YAAY,GAAG,OAAO,CAAC,SAAS;YAAE,GAAG,GAAG,CAAC,CAAC,CAAC;aAC9C,IAAI,GAAG,CAAC,YAAY,GAAG,OAAO,CAAC,SAAS;YAAE,GAAG,GAAG,CAAC,CAAC;QACvD,GAAG,CAAC,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC;QACrC,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,CAAC,UAAU,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC;IAEnC,MAAM,QAAQ,GAAG,WAAW,CAC1B,CAAC,CAAC,EAAE;QACF,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC/B,EAAE,CAAC,KAAK,CAAC,cAAc,GAAG,EAAE,CAAC,UAAU,CAAC,qBAAqB,EAAE,CAAC;QAEhE,sDAAsD;QACtD,yCAAyC;QACzC,mBAAmB,CAAC,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC;IACpD,CAAC,EACD;QACE,UAAU;QACV,EAAE,CAAC,KAAK,CAAC,cAAc;QACvB,EAAE,CAAC,UAAU;QACb,EAAE,CAAC,UAAU;QACb,EAAE,CAAC,UAAU;QACb,mBAAmB;KACpB,CACF,CAAC;IAEF,MAAM,YAAY,GAAG,WAAW,CAAC,GAAG,EAAE;QACpC,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;QAC7B,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC;QACjC,MAAM,QAAQ,GAAG,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;QAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,UAAU,CAAC,iBAAiB,GAAG,QAAQ,CAAC,CAAC;QACxE,MAAM,WAAW,GAAG,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QACvD,MAAM,cAAc,GAAG,WAAW,EAAE,qBAAqB,EAAE,CAAC;QAC5D,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,OAAO,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC;QAC/D,IACE,CAAC,SAAS,KAAK,CAAC;YACd,cAAc,EAAE,MAAM,GAAG,MAAM;YAC/B,uDAAuD;YACvD,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,GAAG,CAAC,GAAG,gBAAgB,CAAC;YAClD,CAAC,SAAS,KAAK,CAAC,CAAC,IAAI,cAAc,EAAE,GAAG,GAAG,GAAG,IAAI,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU,GAAG,CAAC,CAAC;YACjF,eAAe,CAAC,4BAA4B,CAAC,gBAAgB,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,EACpF,CAAC;YACD,EAAE,CAAC,SAAS,GAAG,SAAS,CAAC;YACzB,QAAQ,EAAE,CAAC;QACb,CAAC;IACH,CAAC,EAAE,CAAC,YAAY,EAAE,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;IAEnF,WAAW,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IAEnC,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;QAC7B,IAAI,OAAO;YAAE,OAAO,CAAC,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAC1D,OAAO,GAAG,EAAE;YACV,IAAI,OAAO;gBAAE,OAAO,CAAC,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAC/D,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,UAAU,EAAE,QAAQ,EAAE,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,EAAE,mBAAmB,CAAC,CAAC,CAAC;IAE9E,oCAAoC;IACpC,SAAS,CAAC,GAAG,EAAE;QACb,mBAAmB,CAAC,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC;IACpD,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,UAAU,CAAC,CAAC,CAAC;IACtF,oBAAoB;IACpB,wCAAwC;IACxC,sBAAsB;IACtB,0BAA0B;IAE1B,OAAO,CAAC,eAAe,CAAC,CAAC;AAC3B,CAAC","sourcesContent":["import { useState, useEffect, useRef, useCallback } from 'react';\n\nimport useThrottle from '../../Hooks/useThrottle';\n\nimport { getRecordCountForLayoutPaint, isViewNotFilled } from './utility';\n// import useDebounce from '../../Hooks/UseDebounce';\n\nexport const useApplyStyleOnScroll = vi => {\n const footerElement = vi.pContainer?.querySelector('.footer > .row');\n return useCallback(() => {\n // Calculate the difference between bottom co-ordinates of p and r Containers\n // along with the row height of footer element to check if the bottom of the table is reached.\n if (\n Math.abs(\n vi.pContainer.getBoundingClientRect().bottom -\n vi.rContainer.getBoundingClientRect().bottom -\n (footerElement?.hasChildNodes() ? footerElement.offsetHeight : 0)\n ) < 1\n ) {\n vi.rContainer.classList.add('scroll-end');\n } else {\n vi.rContainer.classList.remove('scroll-end');\n }\n }, [vi.pContainer, vi.rContainer, vi.pContainer?.offsetHeight, footerElement]);\n};\n\nexport default function useScroll(\n callback,\n getContext,\n vi,\n totalRecordCount,\n header,\n isFetching,\n viewHeight\n) {\n const applyScrollEndStyle = useApplyStyleOnScroll(vi);\n const [vScroll, setVScroll] = useState();\n const ref = useRef({\n oldScrollTop: 0\n }).current;\n const updateScrollTop = useCallback(\n top => {\n ref.oldScrollTop = top;\n },\n [ref]\n );\n // const deBouncedVScroll = useDebounce(vScroll, 100);\n\n const getDirection = useCallback(() => {\n const context = getContext();\n let dir;\n if (ref.oldScrollTop > context.scrollTop) dir = -1;\n else if (ref.oldScrollTop < context.scrollTop) dir = 1;\n ref.oldScrollTop = context.scrollTop;\n return dir;\n }, [getContext, ref.oldScrollTop]);\n\n const onScroll = useCallback(\n e => {\n setVScroll(e.target.scrollTop);\n vi.pInfo.bufferNewCords = vi.bContainer.getBoundingClientRect();\n\n // Style is to be applied upon scroll after successful\n // check of bottom position of containers\n applyScrollEndStyle(vi.rContainer, vi.pContainer);\n },\n [\n isFetching,\n vi.pInfo.bufferNewCords,\n vi.bContainer,\n vi.pContainer,\n vi.rContainer,\n applyScrollEndStyle\n ]\n );\n\n const handleScroll = useCallback(() => {\n const context = getContext();\n const direction = getDirection();\n const distance = direction === 1 ? 0.8 : 0.2;\n const eleIndex = Math.floor(vi.rContainer.childElementCount * distance);\n const boundaryEle = vi.rContainer.childNodes[eleIndex];\n const boundaryElePos = boundaryEle?.getBoundingClientRect();\n const { bottom, top } = context?.getBoundingClientRect() || {};\n if (\n (direction === 1 &&\n boundaryElePos?.bottom < bottom &&\n // eslint-disable-next-line no-unsafe-optional-chaining\n vi.pInfo?.view?.endIndex + 1 < totalRecordCount) ||\n (direction === -1 && boundaryElePos?.top > top && vi.pInfo?.view?.startIndex > 0) ||\n isViewNotFilled(getRecordCountForLayoutPaint(totalRecordCount), vi, context, header)\n ) {\n vi.direction = direction;\n callback();\n }\n }, [getDirection, vi, getContext, isFetching, totalRecordCount, header, callback]);\n\n useThrottle(vScroll, handleScroll);\n\n useEffect(() => {\n const context = getContext();\n if (context) context.addEventListener('scroll', onScroll);\n return () => {\n if (context) context.removeEventListener('scroll', onScroll);\n };\n }, [getContext, onScroll, vi.rContainer, vi.pContainer, applyScrollEndStyle]);\n\n // useEffect for scrollEndStyle hook\n useEffect(() => {\n applyScrollEndStyle(vi.rContainer, vi.pContainer);\n }, [vi.rContainer, vi.pContainer, applyScrollEndStyle, totalRecordCount, viewHeight]);\n // useEffect(() => {\n // if (deBouncedVScroll !== undefined)\n // handleScroll();\n // }, [deBouncedVScroll]);\n\n return [updateScrollTop];\n}\n"]}
@@ -1,9 +1,8 @@
1
1
  import type { ReactNode } from 'react';
2
- import type { TranslationPack } from '@pega/cosmos-react-core';
3
2
  import defaultTranslations from '../Localization/defaultTranslations';
4
- export type RepeatingStructureTranslationPack = Readonly<typeof defaultTranslations> | TranslationPack;
3
+ export type RepeatingStructureTranslationPack = Readonly<typeof defaultTranslations>;
5
4
  interface LocalizationContextValue {
6
- translate: (rawString: keyof RepeatingStructureTranslationPack) => string;
5
+ translate: (rawString: string) => string;
7
6
  }
8
7
  declare const LocalizationContext: import("react").Context<LocalizationContextValue>;
9
8
  export default LocalizationContext;
@@ -1 +1 @@
1
- {"version":3,"file":"LocalizationContext.d.ts","sourceRoot":"","sources":["../../../Core/Context/LocalizationContext.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE/D,OAAO,mBAAmB,MAAM,qCAAqC,CAAC;AAEtE,MAAM,MAAM,iCAAiC,GACzC,QAAQ,CAAC,OAAO,mBAAmB,CAAC,GACpC,eAAe,CAAC;AACpB,UAAU,wBAAwB;IAChC,SAAS,EAAE,CAAC,SAAS,EAAE,MAAM,iCAAiC,KAAK,MAAM,CAAC;CAC3E;AAED,QAAA,MAAM,mBAAmB,mDAAmE,CAAC;AAC7F,eAAe,mBAAmB,CAAC;AAEnC,wBAAgB,oBAAoB,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,2CAoBzE"}
1
+ {"version":3,"file":"LocalizationContext.d.ts","sourceRoot":"","sources":["../../../Core/Context/LocalizationContext.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIvC,OAAO,mBAAmB,MAAM,qCAAqC,CAAC;AAEtE,MAAM,MAAM,iCAAiC,GAAG,QAAQ,CAAC,OAAO,mBAAmB,CAAC,CAAC;AACrF,UAAU,wBAAwB;IAChC,SAAS,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,CAAC;CAC1C;AAED,QAAA,MAAM,mBAAmB,mDAAmE,CAAC;AAC7F,eAAe,mBAAmB,CAAC;AAEnC,wBAAgB,oBAAoB,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,2CAyBzE"}
@@ -6,10 +6,14 @@ const LocalizationContext = createContext({ translate: () => '' });
6
6
  export default LocalizationContext;
7
7
  export function LocalizationProvider({ children }) {
8
8
  const { translations } = useConfiguration();
9
- // @ts-ignore - until translations pack is updated to have lists key specific to lists-lib static translations
10
- const lists = translations.lists ?? {};
9
+ // TODO: until translations pack is updated to have lists key specific to lists-lib static translations, we have to type cast.
10
+ const lists = 'lists' in translations
11
+ ? translations.lists
12
+ : {};
11
13
  const repeatingStructureTranslation = useMemo(() => lists, []);
12
- const translate = useCallback((rawString) => repeatingStructureTranslation[rawString] || rawString, [repeatingStructureTranslation]);
14
+ const translate = useCallback((rawString) => rawString in repeatingStructureTranslation
15
+ ? repeatingStructureTranslation[rawString]
16
+ : rawString, [repeatingStructureTranslation]);
13
17
  const providerValue = useMemo(() => ({ translate }), [translate]);
14
18
  return (_jsx(LocalizationContext.Provider, { value: providerValue, children: children }));
15
19
  }
@@ -1 +1 @@
1
- {"version":3,"file":"LocalizationContext.js","sourceRoot":"","sources":["../../../Core/Context/LocalizationContext.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAG5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAG3D,OAAO,mBAAmB,MAAM,qCAAqC,CAAC;AAStE,MAAM,mBAAmB,GAAG,aAAa,CAA2B,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;AAC7F,eAAe,mBAAmB,CAAC;AAEnC,MAAM,UAAU,oBAAoB,CAAC,EAAE,QAAQ,EAA2B;IACxE,MAAM,EAAE,YAAY,EAAE,GAAG,gBAAgB,EAAE,CAAC;IAC5C,8GAA8G;IAC9G,MAAM,KAAK,GAAyC,YAAY,CAAC,KAAK,IAAI,EAAE,CAAC;IAC7E,MAAM,6BAA6B,GAAG,OAAO,CAC3C,GAAG,EAAE,CAAC,KAAK,EAEX,EAAE,CACH,CAAC;IAEF,MAAM,SAAS,GAAG,WAAW,CAC3B,CAAC,SAAkD,EAAE,EAAE,CACrD,6BAA6B,CAAC,SAAS,CAAC,IAAI,SAAS,EACvD,CAAC,6BAA6B,CAAC,CAChC,CAAC;IAEF,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAClE,OAAO,CACL,KAAC,mBAAmB,CAAC,QAAQ,IAAC,KAAK,EAAE,aAAa,YAAG,QAAQ,GAAgC,CAC9F,CAAC;AACJ,CAAC","sourcesContent":["import { createContext, useCallback, useMemo } from 'react';\nimport type { ReactNode } from 'react';\n\nimport { useConfiguration } from '@pega/cosmos-react-core';\nimport type { TranslationPack } from '@pega/cosmos-react-core';\n\nimport defaultTranslations from '../Localization/defaultTranslations';\n\nexport type RepeatingStructureTranslationPack =\n | Readonly<typeof defaultTranslations>\n | TranslationPack;\ninterface LocalizationContextValue {\n translate: (rawString: keyof RepeatingStructureTranslationPack) => string;\n}\n\nconst LocalizationContext = createContext<LocalizationContextValue>({ translate: () => '' });\nexport default LocalizationContext;\n\nexport function LocalizationProvider({ children }: { children: ReactNode }) {\n const { translations } = useConfiguration();\n // @ts-ignore - until translations pack is updated to have lists key specific to lists-lib static translations\n const lists: Readonly<typeof defaultTranslations> = translations.lists ?? {};\n const repeatingStructureTranslation = useMemo(\n () => lists,\n\n []\n );\n\n const translate = useCallback(\n (rawString: keyof RepeatingStructureTranslationPack) =>\n repeatingStructureTranslation[rawString] || rawString,\n [repeatingStructureTranslation]\n );\n\n const providerValue = useMemo(() => ({ translate }), [translate]);\n return (\n <LocalizationContext.Provider value={providerValue}>{children}</LocalizationContext.Provider>\n );\n}\n"]}
1
+ {"version":3,"file":"LocalizationContext.js","sourceRoot":"","sources":["../../../Core/Context/LocalizationContext.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAG5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE3D,OAAO,mBAAmB,MAAM,qCAAqC,CAAC;AAOtE,MAAM,mBAAmB,GAAG,aAAa,CAA2B,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;AAC7F,eAAe,mBAAmB,CAAC;AAEnC,MAAM,UAAU,oBAAoB,CAAC,EAAE,QAAQ,EAA2B;IACxE,MAAM,EAAE,YAAY,EAAE,GAAG,gBAAgB,EAAE,CAAC;IAC5C,8HAA8H;IAC9H,MAAM,KAAK,GACT,OAAO,IAAI,YAAY;QACrB,CAAC,CAAE,YAAY,CAAC,KAA2C;QAC3D,CAAC,CAAE,EAAwC,CAAC;IAChD,MAAM,6BAA6B,GAAG,OAAO,CAC3C,GAAG,EAAE,CAAC,KAAK,EAEX,EAAE,CACH,CAAC;IAEF,MAAM,SAAS,GAAG,WAAW,CAC3B,CAAC,SAAiB,EAAE,EAAE,CACpB,SAAS,IAAI,6BAA6B;QACxC,CAAC,CAAC,6BAA6B,CAAC,SAAoD,CAAC;QACrF,CAAC,CAAC,SAAS,EACf,CAAC,6BAA6B,CAAC,CAChC,CAAC;IAEF,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAClE,OAAO,CACL,KAAC,mBAAmB,CAAC,QAAQ,IAAC,KAAK,EAAE,aAAa,YAAG,QAAQ,GAAgC,CAC9F,CAAC;AACJ,CAAC","sourcesContent":["import { createContext, useCallback, useMemo } from 'react';\nimport type { ReactNode } from 'react';\n\nimport { useConfiguration } from '@pega/cosmos-react-core';\n\nimport defaultTranslations from '../Localization/defaultTranslations';\n\nexport type RepeatingStructureTranslationPack = Readonly<typeof defaultTranslations>;\ninterface LocalizationContextValue {\n translate: (rawString: string) => string;\n}\n\nconst LocalizationContext = createContext<LocalizationContextValue>({ translate: () => '' });\nexport default LocalizationContext;\n\nexport function LocalizationProvider({ children }: { children: ReactNode }) {\n const { translations } = useConfiguration();\n // TODO: until translations pack is updated to have lists key specific to lists-lib static translations, we have to type cast.\n const lists =\n 'lists' in translations\n ? (translations.lists as RepeatingStructureTranslationPack)\n : ({} as RepeatingStructureTranslationPack);\n const repeatingStructureTranslation = useMemo(\n () => lists,\n\n []\n );\n\n const translate = useCallback(\n (rawString: string) =>\n rawString in repeatingStructureTranslation\n ? repeatingStructureTranslation[rawString as keyof RepeatingStructureTranslationPack]\n : rawString,\n [repeatingStructureTranslation]\n );\n\n const providerValue = useMemo(() => ({ translate }), [translate]);\n return (\n <LocalizationContext.Provider value={providerValue}>{children}</LocalizationContext.Provider>\n );\n}\n"]}
@@ -1,3 +1,3 @@
1
- export { useKeyboardA11y };
2
1
  import useKeyboardA11y from './useKeyboardA11y';
2
+ export { useKeyboardA11y };
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../Core/Hooks/a11y/index.js"],"names":[],"mappings":";4BAC4B,mBAAmB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../Core/Hooks/a11y/index.ts"],"names":[],"mappings":"AACA,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAE,eAAe,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../Core/Hooks/a11y/index.js"],"names":[],"mappings":"AAAA,iDAAiD;AACjD,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAE,eAAe,EAAE,CAAC","sourcesContent":["/* eslint-disable import/prefer-default-export */\nimport useKeyboardA11y from './useKeyboardA11y';\n\nexport { useKeyboardA11y };\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../Core/Hooks/a11y/index.ts"],"names":[],"mappings":"AAAA,iDAAiD;AACjD,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAE,eAAe,EAAE,CAAC","sourcesContent":["/* eslint-disable import/prefer-default-export */\nimport useKeyboardA11y from './useKeyboardA11y';\n\nexport { useKeyboardA11y };\n"]}
@@ -1,3 +1,11 @@
1
+ import type { RsCoreTypes } from 'pega-repeating-structures-core';
2
+ /**
3
+ * A custom React hook to announce changes in grouping for accessibility purposes.
4
+ *
5
+ * @param state - The current {@link RsCoreTypes.View.state state} of the view.
6
+ *
7
+ * @returns void.
8
+ */
9
+ declare const useAnnounceGroup: (state: RsCoreTypes.View["state"]) => void;
1
10
  export default useAnnounceGroup;
2
- declare function useAnnounceGroup(state: any): void;
3
11
  //# sourceMappingURL=useAnnounceGroup.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useAnnounceGroup.d.ts","sourceRoot":"","sources":["../../../../Core/Hooks/a11y/useAnnounceGroup.js"],"names":[],"mappings":";AAQA,oDAwCC"}
1
+ {"version":3,"file":"useAnnounceGroup.d.ts","sourceRoot":"","sources":["../../../../Core/Hooks/a11y/useAnnounceGroup.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAKlE;;;;;;GAMG;AACH,QAAA,MAAM,gBAAgB,UAAW,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,SAyCzD,CAAC;AACF,eAAe,gBAAgB,CAAC"}
@@ -3,43 +3,50 @@ import { useLiveLog } from '@pega/cosmos-react-core/lib/hooks';
3
3
  import { usePrevious } from '@pega/cosmos-react-core';
4
4
  import useTranslate from '../useTranslate';
5
5
  import { deepEqual } from '../../Utils';
6
- const useAnnounceGroup = state => {
6
+ /**
7
+ * A custom React hook to announce changes in grouping for accessibility purposes.
8
+ *
9
+ * @param state - The current {@link RsCoreTypes.View.state state} of the view.
10
+ *
11
+ * @returns void.
12
+ */
13
+ const useAnnounceGroup = (state) => {
7
14
  const { announcePolite } = useLiveLog();
8
- const { isLoading, groups, personalization } = state || {};
15
+ const { groups, personalization } = state;
9
16
  const [translate] = useTranslate();
10
17
  const prevGroups = usePrevious(groups);
11
18
  const personalizationActive = personalization?.active;
12
19
  const prevPersonalizationActive = usePrevious(personalizationActive);
13
20
  useEffect(() => {
14
- if (isLoading)
15
- return undefined;
16
- const groupsChanged = prevGroups?.length > 0 && groups?.length > 0 && !deepEqual(prevGroups, groups);
17
- const groupsRemoved = personalizationActive === prevPersonalizationActive &&
18
- prevGroups?.length > 0 &&
19
- groups?.length === 0;
20
- const timeout = setTimeout(() => {
21
- let groupingTranslate = '';
22
- if ((prevGroups === undefined ||
23
- prevGroups?.length === 0 ||
24
- (prevGroups?.length > 0 && personalizationActive !== prevPersonalizationActive)) &&
25
- groups?.length > 0) {
26
- groupingTranslate = translate('Group applied');
27
- }
28
- else if (groupsChanged && personalizationActive === prevPersonalizationActive) {
29
- groupingTranslate = translate('Group modified');
30
- }
31
- else if (groupsRemoved) {
32
- groupingTranslate = translate('Group removed');
33
- }
34
- announcePolite({
35
- message: groupingTranslate,
36
- type: 'info'
37
- });
38
- }, 1000);
39
- return () => {
40
- clearTimeout(timeout);
41
- };
42
- }, [isLoading, groups]);
21
+ if (groups && prevGroups) {
22
+ const groupsChanged = prevGroups?.length > 0 && groups?.length > 0 && !deepEqual(prevGroups, groups);
23
+ const groupsRemoved = personalizationActive === prevPersonalizationActive &&
24
+ prevGroups?.length > 0 &&
25
+ groups?.length === 0;
26
+ const timeout = setTimeout(() => {
27
+ let groupingTranslate = '';
28
+ if ((prevGroups === undefined ||
29
+ prevGroups?.length === 0 ||
30
+ (prevGroups?.length > 0 && personalizationActive !== prevPersonalizationActive)) &&
31
+ groups?.length > 0) {
32
+ groupingTranslate = translate('Group applied');
33
+ }
34
+ else if (groupsChanged && personalizationActive === prevPersonalizationActive) {
35
+ groupingTranslate = translate('Group modified');
36
+ }
37
+ else if (groupsRemoved) {
38
+ groupingTranslate = translate('Group removed');
39
+ }
40
+ announcePolite({
41
+ message: groupingTranslate,
42
+ type: 'info'
43
+ });
44
+ }, 1000);
45
+ return () => {
46
+ clearTimeout(timeout);
47
+ };
48
+ }
49
+ }, [groups]);
43
50
  };
44
51
  export default useAnnounceGroup;
45
52
  //# sourceMappingURL=useAnnounceGroup.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useAnnounceGroup.js","sourceRoot":"","sources":["../../../../Core/Hooks/a11y/useAnnounceGroup.js"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElC,OAAO,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEtD,OAAO,YAAY,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,MAAM,gBAAgB,GAAG,KAAK,CAAC,EAAE;IAC/B,MAAM,EAAE,cAAc,EAAE,GAAG,UAAU,EAAE,CAAC;IACxC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,eAAe,EAAE,GAAG,KAAK,IAAI,EAAE,CAAC;IAC3D,MAAM,CAAC,SAAS,CAAC,GAAG,YAAY,EAAE,CAAC;IACnC,MAAM,UAAU,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IACvC,MAAM,qBAAqB,GAAG,eAAe,EAAE,MAAM,CAAC;IACtD,MAAM,yBAAyB,GAAG,WAAW,CAAC,qBAAqB,CAAC,CAAC;IAErE,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,SAAS;YAAE,OAAO,SAAS,CAAC;QAChC,MAAM,aAAa,GACjB,UAAU,EAAE,MAAM,GAAG,CAAC,IAAI,MAAM,EAAE,MAAM,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QACjF,MAAM,aAAa,GACjB,qBAAqB,KAAK,yBAAyB;YACnD,UAAU,EAAE,MAAM,GAAG,CAAC;YACtB,MAAM,EAAE,MAAM,KAAK,CAAC,CAAC;QACvB,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;YAC9B,IAAI,iBAAiB,GAAG,EAAE,CAAC;YAE3B,IACE,CAAC,UAAU,KAAK,SAAS;gBACvB,UAAU,EAAE,MAAM,KAAK,CAAC;gBACxB,CAAC,UAAU,EAAE,MAAM,GAAG,CAAC,IAAI,qBAAqB,KAAK,yBAAyB,CAAC,CAAC;gBAClF,MAAM,EAAE,MAAM,GAAG,CAAC,EAClB,CAAC;gBACD,iBAAiB,GAAG,SAAS,CAAC,eAAe,CAAC,CAAC;YACjD,CAAC;iBAAM,IAAI,aAAa,IAAI,qBAAqB,KAAK,yBAAyB,EAAE,CAAC;gBAChF,iBAAiB,GAAG,SAAS,CAAC,gBAAgB,CAAC,CAAC;YAClD,CAAC;iBAAM,IAAI,aAAa,EAAE,CAAC;gBACzB,iBAAiB,GAAG,SAAS,CAAC,eAAe,CAAC,CAAC;YACjD,CAAC;YACD,cAAc,CAAC;gBACb,OAAO,EAAE,iBAAiB;gBAC1B,IAAI,EAAE,MAAM;aACb,CAAC,CAAC;QACL,CAAC,EAAE,IAAI,CAAC,CAAC;QACT,OAAO,GAAG,EAAE;YACV,YAAY,CAAC,OAAO,CAAC,CAAC;QACxB,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;AAC1B,CAAC,CAAC;AACF,eAAe,gBAAgB,CAAC","sourcesContent":["import { useEffect } from 'react';\n\nimport { useLiveLog } from '@pega/cosmos-react-core/lib/hooks';\nimport { usePrevious } from '@pega/cosmos-react-core';\n\nimport useTranslate from '../useTranslate';\nimport { deepEqual } from '../../Utils';\n\nconst useAnnounceGroup = state => {\n const { announcePolite } = useLiveLog();\n const { isLoading, groups, personalization } = state || {};\n const [translate] = useTranslate();\n const prevGroups = usePrevious(groups);\n const personalizationActive = personalization?.active;\n const prevPersonalizationActive = usePrevious(personalizationActive);\n\n useEffect(() => {\n if (isLoading) return undefined;\n const groupsChanged =\n prevGroups?.length > 0 && groups?.length > 0 && !deepEqual(prevGroups, groups);\n const groupsRemoved =\n personalizationActive === prevPersonalizationActive &&\n prevGroups?.length > 0 &&\n groups?.length === 0;\n const timeout = setTimeout(() => {\n let groupingTranslate = '';\n\n if (\n (prevGroups === undefined ||\n prevGroups?.length === 0 ||\n (prevGroups?.length > 0 && personalizationActive !== prevPersonalizationActive)) &&\n groups?.length > 0\n ) {\n groupingTranslate = translate('Group applied');\n } else if (groupsChanged && personalizationActive === prevPersonalizationActive) {\n groupingTranslate = translate('Group modified');\n } else if (groupsRemoved) {\n groupingTranslate = translate('Group removed');\n }\n announcePolite({\n message: groupingTranslate,\n type: 'info'\n });\n }, 1000);\n return () => {\n clearTimeout(timeout);\n };\n }, [isLoading, groups]);\n};\nexport default useAnnounceGroup;\n"]}
1
+ {"version":3,"file":"useAnnounceGroup.js","sourceRoot":"","sources":["../../../../Core/Hooks/a11y/useAnnounceGroup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElC,OAAO,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAGtD,OAAO,YAAY,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC;;;;;;GAMG;AACH,MAAM,gBAAgB,GAAG,CAAC,KAAgC,EAAE,EAAE;IAC5D,MAAM,EAAE,cAAc,EAAE,GAAG,UAAU,EAAE,CAAC;IACxC,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,GAAG,KAAK,CAAC;IAC1C,MAAM,CAAC,SAAS,CAAC,GAAG,YAAY,EAAE,CAAC;IACnC,MAAM,UAAU,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IACvC,MAAM,qBAAqB,GAAG,eAAe,EAAE,MAAM,CAAC;IACtD,MAAM,yBAAyB,GAAG,WAAW,CAAC,qBAAqB,CAAC,CAAC;IAErE,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,MAAM,IAAI,UAAU,EAAE,CAAC;YACzB,MAAM,aAAa,GACjB,UAAU,EAAE,MAAM,GAAG,CAAC,IAAI,MAAM,EAAE,MAAM,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;YACjF,MAAM,aAAa,GACjB,qBAAqB,KAAK,yBAAyB;gBACnD,UAAU,EAAE,MAAM,GAAG,CAAC;gBACtB,MAAM,EAAE,MAAM,KAAK,CAAC,CAAC;YACvB,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC9B,IAAI,iBAAiB,GAAG,EAAE,CAAC;gBAE3B,IACE,CAAC,UAAU,KAAK,SAAS;oBACvB,UAAU,EAAE,MAAM,KAAK,CAAC;oBACxB,CAAC,UAAU,EAAE,MAAM,GAAG,CAAC,IAAI,qBAAqB,KAAK,yBAAyB,CAAC,CAAC;oBAClF,MAAM,EAAE,MAAM,GAAG,CAAC,EAClB,CAAC;oBACD,iBAAiB,GAAG,SAAS,CAAC,eAAe,CAAC,CAAC;gBACjD,CAAC;qBAAM,IAAI,aAAa,IAAI,qBAAqB,KAAK,yBAAyB,EAAE,CAAC;oBAChF,iBAAiB,GAAG,SAAS,CAAC,gBAAgB,CAAC,CAAC;gBAClD,CAAC;qBAAM,IAAI,aAAa,EAAE,CAAC;oBACzB,iBAAiB,GAAG,SAAS,CAAC,eAAe,CAAC,CAAC;gBACjD,CAAC;gBACD,cAAc,CAAC;oBACb,OAAO,EAAE,iBAAiB;oBAC1B,IAAI,EAAE,MAAM;iBACb,CAAC,CAAC;YACL,CAAC,EAAE,IAAI,CAAC,CAAC;YACT,OAAO,GAAG,EAAE;gBACV,YAAY,CAAC,OAAO,CAAC,CAAC;YACxB,CAAC,CAAC;QACJ,CAAC;IACH,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;AACf,CAAC,CAAC;AACF,eAAe,gBAAgB,CAAC","sourcesContent":["import { useEffect } from 'react';\n\nimport { useLiveLog } from '@pega/cosmos-react-core/lib/hooks';\nimport { usePrevious } from '@pega/cosmos-react-core';\nimport type { RsCoreTypes } from 'pega-repeating-structures-core';\n\nimport useTranslate from '../useTranslate';\nimport { deepEqual } from '../../Utils';\n\n/**\n * A custom React hook to announce changes in grouping for accessibility purposes.\n *\n * @param state - The current {@link RsCoreTypes.View.state state} of the view.\n *\n * @returns void.\n */\nconst useAnnounceGroup = (state: RsCoreTypes.View['state']) => {\n const { announcePolite } = useLiveLog();\n const { groups, personalization } = state;\n const [translate] = useTranslate();\n const prevGroups = usePrevious(groups);\n const personalizationActive = personalization?.active;\n const prevPersonalizationActive = usePrevious(personalizationActive);\n\n useEffect(() => {\n if (groups && prevGroups) {\n const groupsChanged =\n prevGroups?.length > 0 && groups?.length > 0 && !deepEqual(prevGroups, groups);\n const groupsRemoved =\n personalizationActive === prevPersonalizationActive &&\n prevGroups?.length > 0 &&\n groups?.length === 0;\n const timeout = setTimeout(() => {\n let groupingTranslate = '';\n\n if (\n (prevGroups === undefined ||\n prevGroups?.length === 0 ||\n (prevGroups?.length > 0 && personalizationActive !== prevPersonalizationActive)) &&\n groups?.length > 0\n ) {\n groupingTranslate = translate('Group applied');\n } else if (groupsChanged && personalizationActive === prevPersonalizationActive) {\n groupingTranslate = translate('Group modified');\n } else if (groupsRemoved) {\n groupingTranslate = translate('Group removed');\n }\n announcePolite({\n message: groupingTranslate,\n type: 'info'\n });\n }, 1000);\n return () => {\n clearTimeout(timeout);\n };\n }\n }, [groups]);\n};\nexport default useAnnounceGroup;\n"]}
@@ -1,6 +1,22 @@
1
+ /**
2
+ * @param
3
+ */
4
+ type KeyboardA11yProps = {
5
+ /**
6
+ * The container element to manage keyboard accessibility for.
7
+ */
8
+ container: HTMLElement | null;
9
+ /**
10
+ * Callback triggered when the Escape key or mouse click is pressed.
11
+ */
12
+ onClose: (event?: Event) => void;
13
+ };
14
+ /**
15
+ * A custom React hook to manage keyboard accessibility for a container element.
16
+ * It handles focus management and trigger `onClose` action on pressing Escape or mouse click outside container element.
17
+ *
18
+ * @returns void.
19
+ */
20
+ declare function useKeyboardA11y({ container, onClose }: KeyboardA11yProps): void;
1
21
  export default useKeyboardA11y;
2
- declare function useKeyboardA11y({ container, onClose }: {
3
- container: any;
4
- onClose: any;
5
- }): void;
6
22
  //# sourceMappingURL=useKeyboardA11y.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useKeyboardA11y.d.ts","sourceRoot":"","sources":["../../../../Core/Hooks/a11y/useKeyboardA11y.js"],"names":[],"mappings":";AAKA;;;SA4BC"}
1
+ {"version":3,"file":"useKeyboardA11y.d.ts","sourceRoot":"","sources":["../../../../Core/Hooks/a11y/useKeyboardA11y.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,KAAK,iBAAiB,GAAG;IACvB;;OAEG;IACH,SAAS,EAAE,WAAW,GAAG,IAAI,CAAC;IAC9B;;OAEG;IACH,OAAO,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,KAAK,IAAI,CAAC;CAClC,CAAC;AAEF;;;;;GAKG;AACH,iBAAS,eAAe,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,iBAAiB,QA4BjE;AAED,eAAe,eAAe,CAAC"}
@@ -1,12 +1,18 @@
1
1
  /* istanbul ignore file */
2
2
  import { useCallback, useEffect } from 'react';
3
3
  import { getFocusables, useOuterEvent } from '@pega/cosmos-react-core';
4
+ /**
5
+ * A custom React hook to manage keyboard accessibility for a container element.
6
+ * It handles focus management and trigger `onClose` action on pressing Escape or mouse click outside container element.
7
+ *
8
+ * @returns void.
9
+ */
4
10
  function useKeyboardA11y({ container, onClose }) {
5
11
  /**
6
12
  * key down handler for the container element
7
13
  * @param {Event} event event is needed for getting the info such as keyCode
8
14
  */
9
- const onKeyDown = useCallback(event => {
15
+ const onKeyDown = useCallback((event) => {
10
16
  if (event.key === 'Escape') {
11
17
  onClose(event);
12
18
  }
@@ -1 +1 @@
1
- {"version":3,"file":"useKeyboardA11y.js","sourceRoot":"","sources":["../../../../Core/Hooks/a11y/useKeyboardA11y.js"],"names":[],"mappings":"AAAA,0BAA0B;AAC1B,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAE/C,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAEvE,SAAS,eAAe,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE;IAC7C;;;OAGG;IACH,MAAM,SAAS,GAAG,WAAW,CAC3B,KAAK,CAAC,EAAE;QACN,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC3B,OAAO,CAAC,KAAK,CAAC,CAAC;QACjB,CAAC;IACH,CAAC,EACD,CAAC,OAAO,CAAC,CACV,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,SAAS,EAAE,CAAC;YACd,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;YACrC,SAAS,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QACnD,CAAC;QAED,OAAO,GAAG,EAAE;YACV,SAAS,EAAE,mBAAmB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QACvD,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;IAE3B,aAAa,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE;QAC3C,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,eAAe,eAAe,CAAC","sourcesContent":["/* istanbul ignore file */\nimport { useCallback, useEffect } from 'react';\n\nimport { getFocusables, useOuterEvent } from '@pega/cosmos-react-core';\n\nfunction useKeyboardA11y({ container, onClose }) {\n /**\n * key down handler for the container element\n * @param {Event} event event is needed for getting the info such as keyCode\n */\n const onKeyDown = useCallback(\n event => {\n if (event.key === 'Escape') {\n onClose(event);\n }\n },\n [onClose]\n );\n\n useEffect(() => {\n if (container) {\n getFocusables(container)[0]?.focus();\n container.addEventListener('keydown', onKeyDown);\n }\n\n return () => {\n container?.removeEventListener('keydown', onKeyDown);\n };\n }, [container, onKeyDown]);\n\n useOuterEvent('mousedown', [container], () => {\n onClose();\n });\n}\n\nexport default useKeyboardA11y;\n"]}
1
+ {"version":3,"file":"useKeyboardA11y.js","sourceRoot":"","sources":["../../../../Core/Hooks/a11y/useKeyboardA11y.ts"],"names":[],"mappings":"AAAA,0BAA0B;AAC1B,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAE/C,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAgBvE;;;;;GAKG;AACH,SAAS,eAAe,CAAC,EAAE,SAAS,EAAE,OAAO,EAAqB;IAChE;;;OAGG;IACH,MAAM,SAAS,GAAG,WAAW,CAC3B,CAAC,KAAoB,EAAE,EAAE;QACvB,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC3B,OAAO,CAAC,KAAK,CAAC,CAAC;QACjB,CAAC;IACH,CAAC,EACD,CAAC,OAAO,CAAC,CACV,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,SAAS,EAAE,CAAC;YACd,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;YACrC,SAAS,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QACnD,CAAC;QAED,OAAO,GAAG,EAAE;YACV,SAAS,EAAE,mBAAmB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QACvD,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;IAE3B,aAAa,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE;QAC3C,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,eAAe,eAAe,CAAC","sourcesContent":["/* istanbul ignore file */\nimport { useCallback, useEffect } from 'react';\n\nimport { getFocusables, useOuterEvent } from '@pega/cosmos-react-core';\n\n/**\n * @param\n */\ntype KeyboardA11yProps = {\n /**\n * The container element to manage keyboard accessibility for.\n */\n container: HTMLElement | null;\n /**\n * Callback triggered when the Escape key or mouse click is pressed.\n */\n onClose: (event?: Event) => void;\n};\n\n/**\n * A custom React hook to manage keyboard accessibility for a container element.\n * It handles focus management and trigger `onClose` action on pressing Escape or mouse click outside container element.\n *\n * @returns void.\n */\nfunction useKeyboardA11y({ container, onClose }: KeyboardA11yProps) {\n /**\n * key down handler for the container element\n * @param {Event} event event is needed for getting the info such as keyCode\n */\n const onKeyDown = useCallback(\n (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n onClose(event);\n }\n },\n [onClose]\n );\n\n useEffect(() => {\n if (container) {\n getFocusables(container)[0]?.focus();\n container.addEventListener('keydown', onKeyDown);\n }\n\n return () => {\n container?.removeEventListener('keydown', onKeyDown);\n };\n }, [container, onKeyDown]);\n\n useOuterEvent('mousedown', [container], () => {\n onClose();\n });\n}\n\nexport default useKeyboardA11y;\n"]}