@pega/cosmos-react-work 2.0.0-dev.9.2 → 2.0.0-rc.2

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 (170) hide show
  1. package/lib/components/AppAnnouncement/AppAnnouncement.d.ts +3 -3
  2. package/lib/components/AppAnnouncement/AppAnnouncement.d.ts.map +1 -1
  3. package/lib/components/AppAnnouncement/AppAnnouncement.js +5 -7
  4. package/lib/components/AppAnnouncement/AppAnnouncement.js.map +1 -1
  5. package/lib/components/CaseHeader/CaseHeader.d.ts +2 -2
  6. package/lib/components/CaseHeader/CaseHeader.d.ts.map +1 -1
  7. package/lib/components/CaseHeader/CaseHeader.js +9 -9
  8. package/lib/components/CaseHeader/CaseHeader.js.map +1 -1
  9. package/lib/components/CasePreview/CasePreview.d.ts.map +1 -1
  10. package/lib/components/CasePreview/CasePreview.js +14 -11
  11. package/lib/components/CasePreview/CasePreview.js.map +1 -1
  12. package/lib/components/CaseSummary/CaseSummary.d.ts +18 -1
  13. package/lib/components/CaseSummary/CaseSummary.d.ts.map +1 -1
  14. package/lib/components/CaseSummary/CaseSummary.js +122 -10
  15. package/lib/components/CaseSummary/CaseSummary.js.map +1 -1
  16. package/lib/components/CaseSummaryFields/CaseSummaryFields.d.ts.map +1 -1
  17. package/lib/components/CaseSummaryFields/CaseSummaryFields.js +12 -10
  18. package/lib/components/CaseSummaryFields/CaseSummaryFields.js.map +1 -1
  19. package/lib/components/CaseView/CaseView.d.ts +6 -23
  20. package/lib/components/CaseView/CaseView.d.ts.map +1 -1
  21. package/lib/components/CaseView/CaseView.js +167 -170
  22. package/lib/components/CaseView/CaseView.js.map +1 -1
  23. package/lib/components/CaseView/CaseView.styles.d.ts +24 -0
  24. package/lib/components/CaseView/CaseView.styles.d.ts.map +1 -0
  25. package/lib/components/CaseView/CaseView.styles.js +111 -0
  26. package/lib/components/CaseView/CaseView.styles.js.map +1 -0
  27. package/lib/components/CaseView/MobileCaseView.js +1 -3
  28. package/lib/components/CaseView/MobileCaseView.js.map +1 -1
  29. package/lib/components/CaseView/UtilitiesSummary.js +4 -5
  30. package/lib/components/CaseView/UtilitiesSummary.js.map +1 -1
  31. package/lib/components/CaseView/index.d.ts +2 -1
  32. package/lib/components/CaseView/index.d.ts.map +1 -1
  33. package/lib/components/CaseView/index.js +1 -1
  34. package/lib/components/CaseView/index.js.map +1 -1
  35. package/lib/components/ConfigurableLayout/ConfigurableLayout.d.ts +4 -0
  36. package/lib/components/ConfigurableLayout/ConfigurableLayout.d.ts.map +1 -0
  37. package/lib/components/ConfigurableLayout/ConfigurableLayout.js +93 -0
  38. package/lib/components/ConfigurableLayout/ConfigurableLayout.js.map +1 -0
  39. package/lib/components/ConfigurableLayout/ConfigurableLayout.types.d.ts +43 -0
  40. package/lib/components/ConfigurableLayout/ConfigurableLayout.types.d.ts.map +1 -0
  41. package/lib/components/ConfigurableLayout/ConfigurableLayout.types.js +2 -0
  42. package/lib/components/ConfigurableLayout/ConfigurableLayout.types.js.map +1 -0
  43. package/lib/components/ConfigurableLayout/LayoutCell.d.ts +6 -0
  44. package/lib/components/ConfigurableLayout/LayoutCell.d.ts.map +1 -0
  45. package/lib/components/ConfigurableLayout/LayoutCell.js +64 -0
  46. package/lib/components/ConfigurableLayout/LayoutCell.js.map +1 -0
  47. package/lib/components/ConfigurableLayout/defaults.d.ts +4 -0
  48. package/lib/components/ConfigurableLayout/defaults.d.ts.map +1 -0
  49. package/lib/components/ConfigurableLayout/defaults.js +4 -0
  50. package/lib/components/ConfigurableLayout/defaults.js.map +1 -0
  51. package/lib/components/ConfigurableLayout/index.d.ts +3 -0
  52. package/lib/components/ConfigurableLayout/index.d.ts.map +1 -0
  53. package/lib/components/ConfigurableLayout/index.js +3 -0
  54. package/lib/components/ConfigurableLayout/index.js.map +1 -0
  55. package/lib/components/ConfigurableLayout/options.d.ts +10 -0
  56. package/lib/components/ConfigurableLayout/options.d.ts.map +1 -0
  57. package/lib/components/ConfigurableLayout/options.js +10 -0
  58. package/lib/components/ConfigurableLayout/options.js.map +1 -0
  59. package/lib/components/ConfigurableLayout/useTrackWrappedRegions.d.ts +7 -0
  60. package/lib/components/ConfigurableLayout/useTrackWrappedRegions.d.ts.map +1 -0
  61. package/lib/components/ConfigurableLayout/useTrackWrappedRegions.js +37 -0
  62. package/lib/components/ConfigurableLayout/useTrackWrappedRegions.js.map +1 -0
  63. package/lib/components/Confirmation/Confirmation.d.ts +19 -0
  64. package/lib/components/Confirmation/Confirmation.d.ts.map +1 -0
  65. package/lib/components/Confirmation/Confirmation.js +14 -0
  66. package/lib/components/Confirmation/Confirmation.js.map +1 -0
  67. package/lib/components/Confirmation/index.d.ts +3 -0
  68. package/lib/components/Confirmation/index.d.ts.map +1 -0
  69. package/lib/components/Confirmation/index.js +2 -0
  70. package/lib/components/Confirmation/index.js.map +1 -0
  71. package/lib/components/Details/Details.d.ts +13 -0
  72. package/lib/components/Details/Details.d.ts.map +1 -0
  73. package/lib/components/Details/Details.js +38 -0
  74. package/lib/components/Details/Details.js.map +1 -0
  75. package/lib/components/Details/index.d.ts +4 -0
  76. package/lib/components/Details/index.d.ts.map +1 -0
  77. package/lib/components/Details/index.js +3 -0
  78. package/lib/components/Details/index.js.map +1 -0
  79. package/lib/components/Glimpse/Glimpse.d.ts +2 -2
  80. package/lib/components/Glimpse/Glimpse.d.ts.map +1 -1
  81. package/lib/components/Glimpse/Glimpse.js +1 -2
  82. package/lib/components/Glimpse/Glimpse.js.map +1 -1
  83. package/lib/components/SearchResults/Filter.d.ts.map +1 -1
  84. package/lib/components/SearchResults/Filter.js +10 -42
  85. package/lib/components/SearchResults/Filter.js.map +1 -1
  86. package/lib/components/SearchResults/SearchResult.js +1 -4
  87. package/lib/components/SearchResults/SearchResult.js.map +1 -1
  88. package/lib/components/SearchResults/SearchResults.d.ts.map +1 -1
  89. package/lib/components/SearchResults/SearchResults.js +33 -69
  90. package/lib/components/SearchResults/SearchResults.js.map +1 -1
  91. package/lib/components/SearchResults/SearchResults.styles.d.ts +8 -0
  92. package/lib/components/SearchResults/SearchResults.styles.d.ts.map +1 -0
  93. package/lib/components/SearchResults/SearchResults.styles.js +67 -0
  94. package/lib/components/SearchResults/SearchResults.styles.js.map +1 -0
  95. package/lib/components/SearchResults/SearchResults.types.d.ts +16 -6
  96. package/lib/components/SearchResults/SearchResults.types.d.ts.map +1 -1
  97. package/lib/components/SearchResults/SearchResults.types.js.map +1 -1
  98. package/lib/components/Stages/Stages.d.ts.map +1 -1
  99. package/lib/components/Stages/Stages.js +13 -15
  100. package/lib/components/Stages/Stages.js.map +1 -1
  101. package/lib/components/Stages/Stages.styles.d.ts.map +1 -1
  102. package/lib/components/Stages/Stages.styles.js +2 -2
  103. package/lib/components/Stages/Stages.styles.js.map +1 -1
  104. package/lib/components/Stages/Stages.types.d.ts +2 -2
  105. package/lib/components/Stages/Stages.types.d.ts.map +1 -1
  106. package/lib/components/Stages/Stages.types.js.map +1 -1
  107. package/lib/components/Stages/Steps.d.ts.map +1 -1
  108. package/lib/components/Stages/Steps.js +5 -3
  109. package/lib/components/Stages/Steps.js.map +1 -1
  110. package/lib/components/Stages/StepsContainer.d.ts.map +1 -1
  111. package/lib/components/Stages/StepsContainer.js +4 -6
  112. package/lib/components/Stages/StepsContainer.js.map +1 -1
  113. package/lib/components/Stakeholders/StakeholderForm.d.ts +7 -0
  114. package/lib/components/Stakeholders/StakeholderForm.d.ts.map +1 -0
  115. package/lib/components/Stakeholders/StakeholderForm.js +49 -0
  116. package/lib/components/Stakeholders/StakeholderForm.js.map +1 -0
  117. package/lib/components/Stakeholders/Stakeholders.d.ts +6 -0
  118. package/lib/components/Stakeholders/Stakeholders.d.ts.map +1 -0
  119. package/lib/components/Stakeholders/Stakeholders.js +215 -0
  120. package/lib/components/Stakeholders/Stakeholders.js.map +1 -0
  121. package/lib/components/Stakeholders/Stakeholders.types.d.ts +83 -0
  122. package/lib/components/Stakeholders/Stakeholders.types.d.ts.map +1 -0
  123. package/lib/components/Stakeholders/Stakeholders.types.js +2 -0
  124. package/lib/components/Stakeholders/Stakeholders.types.js.map +1 -0
  125. package/lib/components/Stakeholders/index.d.ts +3 -0
  126. package/lib/components/Stakeholders/index.d.ts.map +1 -0
  127. package/lib/components/Stakeholders/index.js +2 -0
  128. package/lib/components/Stakeholders/index.js.map +1 -0
  129. package/lib/components/Tags/Tags.d.ts +34 -0
  130. package/lib/components/Tags/Tags.d.ts.map +1 -0
  131. package/lib/components/Tags/Tags.js +227 -0
  132. package/lib/components/Tags/Tags.js.map +1 -0
  133. package/lib/components/Tags/index.d.ts +3 -0
  134. package/lib/components/Tags/index.d.ts.map +1 -0
  135. package/lib/components/Tags/index.js +2 -0
  136. package/lib/components/Tags/index.js.map +1 -0
  137. package/lib/components/Tasks/TaskList.d.ts +25 -0
  138. package/lib/components/Tasks/TaskList.d.ts.map +1 -0
  139. package/lib/components/Tasks/TaskList.js +25 -0
  140. package/lib/components/Tasks/TaskList.js.map +1 -0
  141. package/lib/components/Tasks/Tasks.d.ts +3 -15
  142. package/lib/components/Tasks/Tasks.d.ts.map +1 -1
  143. package/lib/components/Tasks/Tasks.js +9 -28
  144. package/lib/components/Tasks/Tasks.js.map +1 -1
  145. package/lib/components/Tasks/index.d.ts +3 -0
  146. package/lib/components/Tasks/index.d.ts.map +1 -1
  147. package/lib/components/Tasks/index.js +1 -0
  148. package/lib/components/Tasks/index.js.map +1 -1
  149. package/lib/components/Timeline/Timeline.d.ts.map +1 -1
  150. package/lib/components/Timeline/Timeline.js +10 -12
  151. package/lib/components/Timeline/Timeline.js.map +1 -1
  152. package/lib/components/Timeline/Timeline.styles.d.ts.map +1 -1
  153. package/lib/components/Timeline/Timeline.styles.js +8 -4
  154. package/lib/components/Timeline/Timeline.styles.js.map +1 -1
  155. package/lib/components/Timeline/Timeline.types.d.ts +18 -5
  156. package/lib/components/Timeline/Timeline.types.d.ts.map +1 -1
  157. package/lib/components/Timeline/Timeline.types.js.map +1 -1
  158. package/lib/components/Timeline/TimelineItem.d.ts +2 -1
  159. package/lib/components/Timeline/TimelineItem.d.ts.map +1 -1
  160. package/lib/components/Timeline/TimelineItem.js +4 -11
  161. package/lib/components/Timeline/TimelineItem.js.map +1 -1
  162. package/lib/components/Timeline/utils.d.ts +11 -3
  163. package/lib/components/Timeline/utils.d.ts.map +1 -1
  164. package/lib/components/Timeline/utils.js +48 -4
  165. package/lib/components/Timeline/utils.js.map +1 -1
  166. package/lib/index.d.ts +10 -0
  167. package/lib/index.d.ts.map +1 -1
  168. package/lib/index.js +10 -0
  169. package/lib/index.js.map +1 -1
  170. package/package.json +12 -12
@@ -1,52 +1,24 @@
1
- import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { forwardRef, useContext, useRef } from 'react';
3
- import styled, { css } from 'styled-components';
4
- import { Button, Card, CardContent, Count, defaultThemeProp, Flex, Grid, Icon, Modal, ModalManagerContext, NoItems, SearchInput, Selectable, Text, useI18n, useBreakpoint, useAfterInitialEffect } from '@pega/cosmos-react-core';
3
+ import { Button, Card, CardContent, Count, Flex, Grid, Icon, registerIcon, Modal, ModalManagerContext, EmptyState, SearchInput, Selectable, Text, useI18n, useBreakpoint, useAfterInitialEffect } from '@pega/cosmos-react-core';
4
+ import * as filterIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/filter.icon';
5
+ import * as filterOnIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/filter-on.icon';
5
6
  import SearchResult from './SearchResult';
6
7
  import Filter from './Filter';
7
- const StyledSearchResults = styled.div ``;
8
- StyledSearchResults.defaultProps = defaultThemeProp;
9
- const FilterTitle = styled.span(({ theme: { base } }) => {
10
- return css `
11
- padding-bottom: calc(2 * ${base.spacing});
12
- `;
13
- });
14
- FilterTitle.defaultProps = defaultThemeProp;
15
- const CountText = styled.span(({ theme: { base } }) => {
16
- return css `
17
- font-weight: ${base['font-weight']['semi-bold']};
18
- `;
19
- });
20
- CountText.defaultProps = defaultThemeProp;
21
- const ModalFilterContent = styled.div(({ theme: { base: { spacing } } }) => {
22
- return css `
23
- margin-top: calc(0.25 * ${spacing});
24
- width: 25rem;
25
- `;
26
- });
27
- ModalFilterContent.defaultProps = defaultThemeProp;
28
- const SelectedFilters = styled.div(({ theme: { base: { spacing } } }) => {
29
- return css `
30
- overflow-x: auto;
31
- padding-bottom: calc(0.5 * ${spacing});
32
- `;
33
- });
34
- SelectedFilters.defaultProps = defaultThemeProp;
8
+ import { StyledModalFilterContent, StyledCountText, StyledSelectedFilters, StyledSearchResults, StyledFilterTitle } from './SearchResults.styles';
9
+ registerIcon(filterIcon, filterOnIcon);
35
10
  const FilterModal = (props) => {
36
11
  const { activeFilters, count, filters, onFilterChange, onClearFilter, onClearAllFilters } = props;
37
12
  const t = useI18n();
38
- return (_jsx(Modal, Object.assign({ heading: t('filters'), autoWidth: true }, { children: _jsxs(Grid, Object.assign({ as: ModalFilterContent, container: { rowGap: 2 } }, { children: [_jsxs(Flex, Object.assign({ container: { gap: 1, alignItems: 'center' } }, { children: [_jsxs(Text, Object.assign({ as: CountText, variant: 'secondary' }, { children: [count, " ", t('count_results')] }), void 0),
39
- onClearAllFilters && !!activeFilters.length && (_jsx(Button, Object.assign({ variant: 'link', onClick: onClearAllFilters }, { children: t('clear_all') }), void 0))] }), void 0),
40
- !!activeFilters.length && (_jsx(Flex, Object.assign({ as: SelectedFilters, container: { direction: 'row', gap: 1 } }, { children: activeFilters.map(filter => {
41
- return (_jsx(Selectable, Object.assign({ id: filter.id, onRemove: () => onFilterChange === null || onFilterChange === void 0 ? void 0 : onFilterChange({
13
+ return (_jsx(Modal, { heading: t('filters'), autoWidth: true, children: _jsxs(Grid, { as: StyledModalFilterContent, container: { rowGap: 2 }, children: [_jsxs(Flex, { container: { gap: 1, alignItems: 'center' }, children: [_jsx(Text, { as: StyledCountText, variant: 'secondary', children: t('results_count', [count], { count }) }, void 0), onClearAllFilters && !!activeFilters.length && (_jsx(Button, { variant: 'link', onClick: onClearAllFilters, children: t('clear_all') }, void 0))] }, void 0), !!activeFilters.length && (_jsx(Flex, { as: StyledSelectedFilters, container: { gap: 1 }, children: activeFilters.map(filter => {
14
+ return (_jsx(Selectable, { id: filter.id, onRemove: () => onFilterChange?.({
42
15
  name: filter.groupName,
43
16
  type: filter.type,
44
17
  value: filter.resetValue
45
- }) }, { children: `${filter.groupName}: ${filter.name}` }), filter.id));
46
- }) }), void 0)),
47
- _jsx("div", { children: filters.map((filter) => {
48
- return (_jsx(Filter, Object.assign({ onFilterChange: onFilterChange, onClearFilter: onClearFilter }, filter), filter.name));
49
- }) }, void 0)] }), void 0) }), void 0));
18
+ }), children: `${filter.groupName}: ${filter.name}` }, filter.id));
19
+ }) }, void 0)), _jsx("div", { children: filters.map((filter) => {
20
+ return (_jsx(Filter, { onFilterChange: onFilterChange, onClearFilter: onClearFilter, ...filter }, filter.name));
21
+ }) }, void 0)] }, void 0) }, void 0));
50
22
  };
51
23
  const SearchResults = forwardRef(({ results, searchInputProps, count, filters, onFilterChange, onClearAllFilters, onClearFilter, onShowMore, ...restProps }, ref) => {
52
24
  const t = useI18n();
@@ -56,18 +28,18 @@ const SearchResults = forwardRef(({ results, searchInputProps, count, filters, o
56
28
  const { placeholder = t('search_placeholder_default') } = searchInputProps;
57
29
  const activeFilters = filters.flatMap(group => {
58
30
  if (group.type === 'select') {
59
- return group.items.reduce((acc, curr) => {
60
- if (curr.checked) {
61
- acc.push({
62
- id: curr.id,
31
+ return group.items.flatMap(item => {
32
+ if (item.checked) {
33
+ return {
34
+ id: item.id,
35
+ name: item.name,
36
+ resetValue: { ...item, checked: false },
63
37
  groupName: group.name,
64
- name: curr.name,
65
- resetValue: { ...curr, checked: false },
66
38
  type: group.type
67
- });
39
+ };
68
40
  }
69
- return acc;
70
- }, []);
41
+ return [];
42
+ });
71
43
  }
72
44
  return [];
73
45
  });
@@ -94,7 +66,7 @@ const SearchResults = forwardRef(({ results, searchInputProps, count, filters, o
94
66
  if (isMedium && filtersMethods.current)
95
67
  filtersMethods.current.dismiss();
96
68
  }, [isMedium]);
97
- return (_jsx(Card, { children: _jsx(CardContent, { children: _jsxs(Grid, Object.assign({}, restProps, { as: StyledSearchResults, ref: ref, md: filters.length
69
+ return (_jsx(Card, { children: _jsx(CardContent, { children: _jsxs(Grid, { ...restProps, as: StyledSearchResults, ref: ref, md: filters.length
98
70
  ? {
99
71
  container: {
100
72
  cols: '15rem auto',
@@ -107,32 +79,24 @@ const SearchResults = forwardRef(({ results, searchInputProps, count, filters, o
107
79
  cols: 'auto'
108
80
  }
109
81
  }
110
- : {}, container: { rows: '1fr auto', areas: '"search" "results"', rowGap: 2, colGap: 4 } }, { children: [_jsx(Grid, Object.assign({ item: { area: 'search' } }, { children: _jsx(SearchInput, Object.assign({}, searchInputProps, { placeholder: placeholder }), void 0) }), void 0),
111
- isMedium && !!filters.length && (_jsxs(Grid, Object.assign({ item: { area: 'filters', alignSelf: 'start' } }, { children: [_jsxs(Flex, Object.assign({ as: FilterTitle, container: { justify: 'between' } }, { children: [_jsx(Text, Object.assign({ variant: 'h2' }, { children: t('filters') }), void 0),
112
- onClearAllFilters && !!activeFilters.length && (_jsx(Button, Object.assign({ variant: 'link', onClick: onClearAllFilters }, { children: t('clear_all') }), void 0))] }), void 0),
113
- filters.map((filter) => {
114
- return (_jsx(Filter, Object.assign({ onFilterChange: onFilterChange, onClearFilter: onClearFilter }, filter), filter.name));
115
- })] }), void 0)),
116
- _jsxs(Grid, Object.assign({ item: { area: 'results' }, container: {
82
+ : {}, container: { rows: '1fr auto', areas: '"search" "results"', rowGap: 2, colGap: 4 }, children: [_jsx(Grid, { item: { area: 'search' }, children: _jsx(SearchInput, { ...searchInputProps, placeholder: placeholder }, void 0) }, void 0), isMedium && !!filters.length && (_jsxs(Grid, { item: { area: 'filters', alignSelf: 'start' }, children: [_jsxs(Flex, { as: StyledFilterTitle, container: { justify: 'between' }, children: [_jsx(Text, { variant: 'h2', children: t('filters') }, void 0), onClearAllFilters && !!activeFilters.length && (_jsx(Button, { variant: 'link', onClick: onClearAllFilters, children: t('clear_all') }, void 0))] }, void 0), filters.map((filter) => {
83
+ return (_jsx(Filter, { onFilterChange: onFilterChange, onClearFilter: onClearFilter, ...filter }, filter.name));
84
+ })] }, void 0)), _jsxs(Grid, { item: { area: 'results' }, container: {
117
85
  alignItems: 'center',
118
86
  rowGap: 2,
119
87
  rows: 'auto 1fr',
120
88
  areas: '"meta" "items"'
121
- } }, { children: [_jsxs(Grid, Object.assign({ item: { area: 'meta' }, container: { rowGap: 1 } }, { children: [_jsxs(Flex, Object.assign({ container: { justify: 'between', alignItems: 'center' } }, { children: [_jsx(Text, Object.assign({ as: CountText, variant: 'secondary' }, { children: searchInputProps.value !== '' || results.length > 0
122
- ? `${count} ${t('count_results')}`
123
- : '' }), void 0),
124
- !isMedium && !!filters.length && (_jsxs(Button, Object.assign({ variant: 'simple', onClick: openFiltersModal }, { children: [_jsx(Icon, { name: activeFilters.length > 0 ? 'filter-on' : 'filter' }, void 0), "\u00A0", t('filters'), "\u00A0", _jsx(Count, { children: activeFilters.length }, void 0)] }), void 0))] }), void 0),
125
- !!activeFilters.length && (_jsx(Flex, Object.assign({ as: SelectedFilters, container: { direction: 'row', gap: 1 } }, { children: activeFilters.map(filter => {
126
- return (_jsx(Selectable, Object.assign({ id: filter.id, onRemove: () => onFilterChange === null || onFilterChange === void 0 ? void 0 : onFilterChange({
89
+ }, children: [_jsxs(Grid, { item: { area: 'meta' }, container: { rowGap: 1 }, children: [_jsxs(Flex, { container: { justify: 'between', alignItems: 'center' }, children: [_jsx(Text, { as: StyledCountText, variant: 'secondary', children: searchInputProps.value !== '' || results.length > 0
90
+ ? t('results_count', [results.length], { count: results.length })
91
+ : '' }, void 0), !isMedium && !!filters.length && (_jsxs(Button, { variant: 'simple', onClick: openFiltersModal, children: [_jsx(Icon, { name: activeFilters.length > 0 ? 'filter-on' : 'filter' }, void 0), "\u00A0", t('filters'), "\u00A0", _jsx(Count, { children: activeFilters.length }, void 0)] }, void 0))] }, void 0), !!activeFilters.length && (_jsx(Flex, { as: StyledSelectedFilters, container: { gap: 1 }, children: activeFilters.map(filter => {
92
+ return (_jsx(Selectable, { id: filter.id, onRemove: () => onFilterChange?.({
127
93
  name: filter.groupName,
128
94
  type: filter.type,
129
95
  value: filter.resetValue
130
- }) }, { children: `${filter.groupName}: ${filter.name}` }), filter.id));
131
- }) }), void 0))] }), void 0),
132
- _jsx(Grid, Object.assign({ item: { area: 'items', alignSelf: results.length ? 'start' : 'center' }, container: { rowGap: 4 } }, { children: results.length ? (results.map((result) => {
133
- return _jsx(SearchResult, Object.assign({}, result), result.id);
134
- })) : (_jsx(Grid, Object.assign({ item: { alignSelf: 'stretch' } }, { children: _jsx(NoItems, { message: searchInputProps.value === '' ? t('empty_search') : undefined }, void 0) }), void 0)) }), void 0),
135
- onShowMore && (_jsx(Flex, Object.assign({ container: { justify: 'center' } }, { children: _jsx(Button, Object.assign({ variant: 'link', onClick: onShowMore }, { children: t('show_more') }), void 0) }), void 0))] }), void 0)] }), void 0) }, void 0) }, void 0));
96
+ }), children: `${filter.groupName}: ${filter.name}` }, filter.id));
97
+ }) }, void 0))] }, void 0), _jsx(Grid, { item: { area: 'items', alignSelf: results.length ? 'start' : 'center' }, container: { rowGap: 4 }, children: results.length ? (results.map((result) => {
98
+ return _jsx(SearchResult, { ...result }, result.id);
99
+ })) : (_jsx(Grid, { item: { alignSelf: 'stretch' }, children: _jsx(EmptyState, { message: searchInputProps.value === '' ? t('empty_search') : undefined }, void 0) }, void 0)) }, void 0), onShowMore && (_jsx(Flex, { container: { justify: 'center' }, children: _jsx(Button, { variant: 'link', onClick: onShowMore, children: t('show_more') }, void 0) }, void 0))] }, void 0)] }, void 0) }, void 0) }, void 0));
136
100
  });
137
101
  export default SearchResults;
138
102
  //# sourceMappingURL=SearchResults.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SearchResults.js","sourceRoot":"","sources":["../../../src/components/SearchResults/SearchResults.tsx"],"names":[],"mappings":"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","sourcesContent":["import { forwardRef, useContext, useRef, FunctionComponent, PropsWithoutRef } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport {\n Button,\n Card,\n CardContent,\n Count,\n defaultThemeProp,\n Flex,\n ForwardProps,\n Grid,\n Icon,\n Modal,\n ModalMethods,\n ModalManagerContext,\n NoItems,\n SearchInput,\n Selectable,\n Text,\n useI18n,\n useBreakpoint,\n useAfterInitialEffect\n} from '@pega/cosmos-react-core';\n\nimport { SearchResultsProps, SearchResultProps, FilterProps } from './SearchResults.types';\nimport SearchResult from './SearchResult';\nimport Filter from './Filter';\n\nconst StyledSearchResults = styled.div``;\n\nStyledSearchResults.defaultProps = defaultThemeProp;\n\nconst FilterTitle = styled.span(({ theme: { base } }) => {\n return css`\n padding-bottom: calc(2 * ${base.spacing});\n `;\n});\n\nFilterTitle.defaultProps = defaultThemeProp;\n\nconst CountText = styled.span(({ theme: { base } }) => {\n return css`\n font-weight: ${base['font-weight']['semi-bold']};\n `;\n});\n\nCountText.defaultProps = defaultThemeProp;\n\nconst ModalFilterContent = styled.div(\n ({\n theme: {\n base: { spacing }\n }\n }) => {\n return css`\n margin-top: calc(0.25 * ${spacing});\n width: 25rem;\n `;\n }\n);\n\nModalFilterContent.defaultProps = defaultThemeProp;\n\nconst SelectedFilters = styled.div(\n ({\n theme: {\n base: { spacing }\n }\n }) => {\n return css`\n overflow-x: auto;\n padding-bottom: calc(0.5 * ${spacing});\n `;\n }\n);\n\nSelectedFilters.defaultProps = defaultThemeProp;\n\nconst FilterModal = (\n props: Pick<\n SearchResultsProps,\n 'count' | 'filters' | 'onFilterChange' | 'onClearFilter' | 'onClearAllFilters'\n > & {\n activeFilters: any[];\n }\n) => {\n const { activeFilters, count, filters, onFilterChange, onClearFilter, onClearAllFilters } = props;\n const t = useI18n();\n\n return (\n <Modal heading={t('filters')} autoWidth>\n <Grid as={ModalFilterContent} container={{ rowGap: 2 }}>\n <Flex container={{ gap: 1, alignItems: 'center' }}>\n <Text as={CountText} variant='secondary'>\n {count} {t('count_results')}\n </Text>\n {onClearAllFilters && !!activeFilters.length && (\n <Button variant='link' onClick={onClearAllFilters}>\n {t('clear_all')}\n </Button>\n )}\n </Flex>\n {!!activeFilters.length && (\n <Flex as={SelectedFilters} container={{ direction: 'row', gap: 1 }}>\n {activeFilters.map(filter => {\n return (\n <Selectable\n key={filter.id}\n id={filter.id}\n onRemove={() =>\n onFilterChange?.({\n name: filter.groupName,\n type: filter.type,\n value: filter.resetValue\n })\n }\n >\n {`${filter.groupName}: ${filter.name}`}\n </Selectable>\n );\n })}\n </Flex>\n )}\n <div>\n {filters.map((filter: FilterProps) => {\n return (\n <Filter\n key={filter.name}\n onFilterChange={onFilterChange}\n onClearFilter={onClearFilter}\n {...filter}\n />\n );\n })}\n </div>\n </Grid>\n </Modal>\n );\n};\n\nconst SearchResults: FunctionComponent<SearchResultsProps & ForwardProps> = forwardRef(\n (\n {\n results,\n searchInputProps,\n count,\n filters,\n onFilterChange,\n onClearAllFilters,\n onClearFilter,\n onShowMore,\n ...restProps\n }: PropsWithoutRef<SearchResultsProps>,\n ref: SearchResultsProps['ref']\n ) => {\n const t = useI18n();\n const isMedium = useBreakpoint('md');\n const { create } = useContext(ModalManagerContext);\n const filtersMethods = useRef<\n ModalMethods<\n Pick<\n SearchResultsProps,\n 'count' | 'filters' | 'onFilterChange' | 'onClearFilter' | 'onClearAllFilters'\n > & {\n activeFilters: any[];\n }\n >\n >();\n const { placeholder = t('search_placeholder_default') } = searchInputProps;\n\n const activeFilters = filters.flatMap(group => {\n if (group.type === 'select') {\n return group.items.reduce((acc, curr) => {\n if (curr.checked) {\n acc.push({\n id: curr.id,\n groupName: group.name,\n name: curr.name,\n resetValue: { ...curr, checked: false },\n type: group.type\n });\n }\n return acc;\n }, [] as any[]);\n }\n return [];\n });\n\n const openFiltersModal = () => {\n filtersMethods.current = create<\n Pick<\n SearchResultsProps,\n 'count' | 'filters' | 'onFilterChange' | 'onClearFilter' | 'onClearAllFilters'\n > & {\n activeFilters: any[];\n }\n >(FilterModal, {\n activeFilters,\n count,\n filters,\n onFilterChange,\n onClearFilter,\n onClearAllFilters\n });\n };\n\n useAfterInitialEffect(() => {\n if (filtersMethods.current) {\n filtersMethods.current.update({\n activeFilters,\n count,\n filters\n });\n }\n }, [activeFilters, count, filters]);\n\n useAfterInitialEffect(() => {\n if (isMedium && filtersMethods.current) filtersMethods.current.dismiss();\n }, [isMedium]);\n\n return (\n <Card>\n <CardContent>\n <Grid\n {...restProps}\n as={StyledSearchResults}\n ref={ref}\n md={\n filters.length\n ? {\n container: {\n cols: '15rem auto',\n areas: '\"search search\" \"filters results\"'\n }\n }\n : {}\n }\n s={\n filters.length\n ? {\n container: {\n cols: 'auto'\n }\n }\n : {}\n }\n container={{ rows: '1fr auto', areas: '\"search\" \"results\"', rowGap: 2, colGap: 4 }}\n >\n <Grid item={{ area: 'search' }}>\n <SearchInput {...searchInputProps} placeholder={placeholder} />\n </Grid>\n {isMedium && !!filters.length && (\n <Grid item={{ area: 'filters', alignSelf: 'start' }}>\n <Flex as={FilterTitle} container={{ justify: 'between' }}>\n <Text variant='h2'>{t('filters')}</Text>\n {onClearAllFilters && !!activeFilters.length && (\n <Button variant='link' onClick={onClearAllFilters}>\n {t('clear_all')}\n </Button>\n )}\n </Flex>\n {filters.map((filter: FilterProps) => {\n return (\n <Filter\n key={filter.name}\n onFilterChange={onFilterChange}\n onClearFilter={onClearFilter}\n {...filter}\n />\n );\n })}\n </Grid>\n )}\n <Grid\n item={{ area: 'results' }}\n container={{\n alignItems: 'center',\n rowGap: 2,\n rows: 'auto 1fr',\n areas: '\"meta\" \"items\"'\n }}\n >\n <Grid item={{ area: 'meta' }} container={{ rowGap: 1 }}>\n <Flex container={{ justify: 'between', alignItems: 'center' }}>\n <Text as={CountText} variant='secondary'>\n {searchInputProps.value !== '' || results.length > 0\n ? `${count} ${t('count_results')}`\n : ''}\n </Text>\n {!isMedium && !!filters.length && (\n <Button variant='simple' onClick={openFiltersModal}>\n <Icon name={activeFilters.length > 0 ? 'filter-on' : 'filter'} />\n &nbsp;{t('filters')}&nbsp;\n <Count>{activeFilters.length}</Count>\n </Button>\n )}\n </Flex>\n {!!activeFilters.length && (\n <Flex as={SelectedFilters} container={{ direction: 'row', gap: 1 }}>\n {activeFilters.map(filter => {\n return (\n <Selectable\n key={filter.id}\n id={filter.id}\n onRemove={() =>\n onFilterChange?.({\n name: filter.groupName,\n type: filter.type,\n value: filter.resetValue\n })\n }\n >\n {`${filter.groupName}: ${filter.name}`}\n </Selectable>\n );\n })}\n </Flex>\n )}\n </Grid>\n <Grid\n item={{ area: 'items', alignSelf: results.length ? 'start' : 'center' }}\n container={{ rowGap: 4 }}\n >\n {results.length ? (\n results.map((result: SearchResultProps) => {\n return <SearchResult key={result.id} {...result} />;\n })\n ) : (\n <Grid item={{ alignSelf: 'stretch' }}>\n <NoItems\n message={searchInputProps.value === '' ? t('empty_search') : undefined}\n />\n </Grid>\n )}\n </Grid>\n {onShowMore && (\n <Flex container={{ justify: 'center' }}>\n <Button variant='link' onClick={onShowMore}>\n {t('show_more')}\n </Button>\n </Flex>\n )}\n </Grid>\n </Grid>\n </CardContent>\n </Card>\n );\n }\n);\n\nexport default SearchResults;\n"]}
1
+ {"version":3,"file":"SearchResults.js","sourceRoot":"","sources":["../../../src/components/SearchResults/SearchResults.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n forwardRef,\n useContext,\n useRef,\n FunctionComponent,\n PropsWithoutRef,\n ComponentProps\n} from 'react';\n\nimport {\n Button,\n Card,\n CardContent,\n Count,\n Flex,\n ForwardProps,\n Grid,\n Icon,\n registerIcon,\n Modal,\n ModalMethods,\n ModalManagerContext,\n EmptyState,\n SearchInput,\n Selectable,\n Text,\n useI18n,\n useBreakpoint,\n useAfterInitialEffect\n} from '@pega/cosmos-react-core';\nimport * as filterIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/filter.icon';\nimport * as filterOnIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/filter-on.icon';\n\nimport {\n SearchResultsProps,\n SearchResultProps,\n FilterProps,\n ActiveFilters\n} from './SearchResults.types';\nimport SearchResult from './SearchResult';\nimport Filter from './Filter';\nimport {\n StyledModalFilterContent,\n StyledCountText,\n StyledSelectedFilters,\n StyledSearchResults,\n StyledFilterTitle\n} from './SearchResults.styles';\n\nregisterIcon(filterIcon, filterOnIcon);\n\nconst FilterModal = (\n props: Pick<\n SearchResultsProps,\n 'count' | 'filters' | 'onFilterChange' | 'onClearFilter' | 'onClearAllFilters'\n > & {\n activeFilters: ActiveFilters[];\n }\n) => {\n const { activeFilters, count, filters, onFilterChange, onClearFilter, onClearAllFilters } = props;\n const t = useI18n();\n\n return (\n <Modal heading={t('filters')} autoWidth>\n <Grid as={StyledModalFilterContent} container={{ rowGap: 2 }}>\n <Flex container={{ gap: 1, alignItems: 'center' }}>\n <Text as={StyledCountText} variant='secondary'>\n {t('results_count', [count], { count })}\n </Text>\n {onClearAllFilters && !!activeFilters.length && (\n <Button variant='link' onClick={onClearAllFilters}>\n {t('clear_all')}\n </Button>\n )}\n </Flex>\n {!!activeFilters.length && (\n <Flex as={StyledSelectedFilters} container={{ gap: 1 }}>\n {activeFilters.map(filter => {\n return (\n <Selectable\n key={filter.id}\n id={filter.id}\n onRemove={() =>\n onFilterChange?.({\n name: filter.groupName,\n type: filter.type,\n value: filter.resetValue\n })\n }\n >\n {`${filter.groupName}: ${filter.name}`}\n </Selectable>\n );\n })}\n </Flex>\n )}\n <div>\n {filters.map((filter: FilterProps) => {\n return (\n <Filter\n key={filter.name}\n onFilterChange={onFilterChange}\n onClearFilter={onClearFilter}\n {...filter}\n />\n );\n })}\n </div>\n </Grid>\n </Modal>\n );\n};\n\nconst SearchResults: FunctionComponent<SearchResultsProps & ForwardProps> = forwardRef(\n (\n {\n results,\n searchInputProps,\n count,\n filters,\n onFilterChange,\n onClearAllFilters,\n onClearFilter,\n onShowMore,\n ...restProps\n }: PropsWithoutRef<SearchResultsProps>,\n ref: SearchResultsProps['ref']\n ) => {\n const t = useI18n();\n const isMedium = useBreakpoint('md');\n const { create } = useContext(ModalManagerContext);\n const filtersMethods = useRef<ModalMethods<ComponentProps<typeof FilterModal>>>();\n const { placeholder = t('search_placeholder_default') } = searchInputProps;\n\n const activeFilters: ActiveFilters[] = filters.flatMap(group => {\n if (group.type === 'select') {\n return group.items.flatMap(item => {\n if (item.checked) {\n return {\n id: item.id,\n name: item.name,\n resetValue: { ...item, checked: false },\n groupName: group.name,\n type: group.type\n };\n }\n return [];\n });\n }\n return [];\n });\n\n const openFiltersModal = () => {\n filtersMethods.current = create(FilterModal, {\n activeFilters,\n count,\n filters,\n onFilterChange,\n onClearFilter,\n onClearAllFilters\n });\n };\n\n useAfterInitialEffect(() => {\n if (filtersMethods.current) {\n filtersMethods.current.update({\n activeFilters,\n count,\n filters\n });\n }\n }, [activeFilters, count, filters]);\n\n useAfterInitialEffect(() => {\n if (isMedium && filtersMethods.current) filtersMethods.current.dismiss();\n }, [isMedium]);\n\n return (\n <Card>\n <CardContent>\n <Grid\n {...restProps}\n as={StyledSearchResults}\n ref={ref}\n md={\n filters.length\n ? {\n container: {\n cols: '15rem auto',\n areas: '\"search search\" \"filters results\"'\n }\n }\n : {}\n }\n s={\n filters.length\n ? {\n container: {\n cols: 'auto'\n }\n }\n : {}\n }\n container={{ rows: '1fr auto', areas: '\"search\" \"results\"', rowGap: 2, colGap: 4 }}\n >\n <Grid item={{ area: 'search' }}>\n <SearchInput {...searchInputProps} placeholder={placeholder} />\n </Grid>\n {isMedium && !!filters.length && (\n <Grid item={{ area: 'filters', alignSelf: 'start' }}>\n <Flex as={StyledFilterTitle} container={{ justify: 'between' }}>\n <Text variant='h2'>{t('filters')}</Text>\n {onClearAllFilters && !!activeFilters.length && (\n <Button variant='link' onClick={onClearAllFilters}>\n {t('clear_all')}\n </Button>\n )}\n </Flex>\n {filters.map((filter: FilterProps) => {\n return (\n <Filter\n key={filter.name}\n onFilterChange={onFilterChange}\n onClearFilter={onClearFilter}\n {...filter}\n />\n );\n })}\n </Grid>\n )}\n <Grid\n item={{ area: 'results' }}\n container={{\n alignItems: 'center',\n rowGap: 2,\n rows: 'auto 1fr',\n areas: '\"meta\" \"items\"'\n }}\n >\n <Grid item={{ area: 'meta' }} container={{ rowGap: 1 }}>\n <Flex container={{ justify: 'between', alignItems: 'center' }}>\n <Text as={StyledCountText} variant='secondary'>\n {searchInputProps.value !== '' || results.length > 0\n ? t('results_count', [results.length], { count: results.length })\n : ''}\n </Text>\n {!isMedium && !!filters.length && (\n <Button variant='simple' onClick={openFiltersModal}>\n <Icon name={activeFilters.length > 0 ? 'filter-on' : 'filter'} />\n &nbsp;{t('filters')}&nbsp;\n <Count>{activeFilters.length}</Count>\n </Button>\n )}\n </Flex>\n {!!activeFilters.length && (\n <Flex as={StyledSelectedFilters} container={{ gap: 1 }}>\n {activeFilters.map(filter => {\n return (\n <Selectable\n key={filter.id}\n id={filter.id}\n onRemove={() =>\n onFilterChange?.({\n name: filter.groupName,\n type: filter.type,\n value: filter.resetValue\n })\n }\n >\n {`${filter.groupName}: ${filter.name}`}\n </Selectable>\n );\n })}\n </Flex>\n )}\n </Grid>\n <Grid\n item={{ area: 'items', alignSelf: results.length ? 'start' : 'center' }}\n container={{ rowGap: 4 }}\n >\n {results.length ? (\n results.map((result: SearchResultProps) => {\n return <SearchResult key={result.id} {...result} />;\n })\n ) : (\n <Grid item={{ alignSelf: 'stretch' }}>\n <EmptyState\n message={searchInputProps.value === '' ? t('empty_search') : undefined}\n />\n </Grid>\n )}\n </Grid>\n {onShowMore && (\n <Flex container={{ justify: 'center' }}>\n <Button variant='link' onClick={onShowMore}>\n {t('show_more')}\n </Button>\n </Flex>\n )}\n </Grid>\n </Grid>\n </CardContent>\n </Card>\n );\n }\n);\n\nexport default SearchResults;\n"]}
@@ -0,0 +1,8 @@
1
+ export declare const StyledSearchResults: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, {}, never>;
2
+ export declare const StyledFilterTitle: import("styled-components").StyledComponent<"span", import("styled-components").DefaultTheme, {}, never>;
3
+ export declare const StyledCountText: import("styled-components").StyledComponent<"span", import("styled-components").DefaultTheme, {}, never>;
4
+ export declare const StyledModalFilterContent: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, {}, never>;
5
+ export declare const StyledSelectedFilters: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, {}, never>;
6
+ export declare const StyledFilter: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, {}, never>;
7
+ export declare const StyledFilterButton: import("styled-components").StyledComponent<import("react").FunctionComponent<import("@pega/cosmos-react-core").ButtonProps & import("@pega/cosmos-react-core").ForwardProps>, import("styled-components").DefaultTheme, {}, never>;
8
+ //# sourceMappingURL=SearchResults.styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SearchResults.styles.d.ts","sourceRoot":"","sources":["../../../src/components/SearchResults/SearchResults.styles.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,mBAAmB,yGAAe,CAAC;AAIhD,eAAO,MAAM,iBAAiB,0GAI5B,CAAC;AAIH,eAAO,MAAM,eAAe,0GAI1B,CAAC;AAIH,eAAO,MAAM,wBAAwB,yGAWpC,CAAC;AAIF,eAAO,MAAM,qBAAqB,yGAWjC,CAAC;AAIF,eAAO,MAAM,YAAY,yGAWvB,CAAC;AAIH,eAAO,MAAM,kBAAkB,qOAsB7B,CAAC"}
@@ -0,0 +1,67 @@
1
+ import styled, { css } from 'styled-components';
2
+ import { Button, calculateFontSize, defaultThemeProp, StyledIcon, useDirection } from '@pega/cosmos-react-core';
3
+ export const StyledSearchResults = styled.div ``;
4
+ StyledSearchResults.defaultProps = defaultThemeProp;
5
+ export const StyledFilterTitle = styled.span(({ theme: { base } }) => {
6
+ return css `
7
+ padding-bottom: calc(2 * ${base.spacing});
8
+ `;
9
+ });
10
+ StyledFilterTitle.defaultProps = defaultThemeProp;
11
+ export const StyledCountText = styled.span(({ theme: { base } }) => {
12
+ return css `
13
+ font-weight: ${base['font-weight']['semi-bold']};
14
+ `;
15
+ });
16
+ StyledCountText.defaultProps = defaultThemeProp;
17
+ export const StyledModalFilterContent = styled.div(({ theme: { base: { spacing } } }) => {
18
+ return css `
19
+ margin-top: calc(0.25 * ${spacing});
20
+ width: 25rem;
21
+ `;
22
+ });
23
+ StyledModalFilterContent.defaultProps = defaultThemeProp;
24
+ export const StyledSelectedFilters = styled.div(({ theme: { base: { spacing } } }) => {
25
+ return css `
26
+ overflow-x: auto;
27
+ padding-bottom: calc(0.5 * ${spacing});
28
+ `;
29
+ });
30
+ StyledSelectedFilters.defaultProps = defaultThemeProp;
31
+ export const StyledFilter = styled.div(props => {
32
+ const { base } = props.theme;
33
+ return css `
34
+ border-bottom: 0.0625rem solid ${base.palette['border-line']};
35
+ padding-bottom: calc(${base.spacing} * 2);
36
+ margin-bottom: calc(${base.spacing} * 2);
37
+
38
+ > :last-child > :first-child {
39
+ padding-block-start: ${base.spacing};
40
+ }
41
+ `;
42
+ });
43
+ StyledFilter.defaultProps = defaultThemeProp;
44
+ export const StyledFilterButton = styled(Button)(({ theme: { base } }) => {
45
+ const fontSize = calculateFontSize(base['font-size'], base['font-scale']);
46
+ const { rtl } = useDirection();
47
+ return css `
48
+ display: inline-flex;
49
+ font-size: ${fontSize.xl};
50
+
51
+ ${StyledIcon} {
52
+ height: 1em;
53
+ width: 1em;
54
+ transition: transform ${base.animation.speed} ${base.animation.timing.ease};
55
+ }
56
+
57
+ &[aria-expanded='true'] ${StyledIcon} {
58
+ transform: rotate(0);
59
+ }
60
+
61
+ &[aria-expanded='false'] ${StyledIcon} {
62
+ transform: rotate(calc(${rtl ? '1' : '-1'} * 90deg));
63
+ }
64
+ `;
65
+ });
66
+ StyledFilterButton.defaultProps = defaultThemeProp;
67
+ //# sourceMappingURL=SearchResults.styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SearchResults.styles.js","sourceRoot":"","sources":["../../../src/components/SearchResults/SearchResults.styles.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EACL,MAAM,EACN,iBAAiB,EACjB,gBAAgB,EAChB,UAAU,EACV,YAAY,EACb,MAAM,yBAAyB,CAAC;AAEjC,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,CAAC,GAAG,CAAA,EAAE,CAAC;AAEhD,mBAAmB,CAAC,YAAY,GAAG,gBAAgB,CAAC;AAEpD,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE;IACnE,OAAO,GAAG,CAAA;+BACmB,IAAI,CAAC,OAAO;GACxC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,iBAAiB,CAAC,YAAY,GAAG,gBAAgB,CAAC;AAElD,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE;IACjE,OAAO,GAAG,CAAA;mBACO,IAAI,CAAC,aAAa,CAAC,CAAC,WAAW,CAAC;GAChD,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,eAAe,CAAC,YAAY,GAAG,gBAAgB,CAAC;AAEhD,MAAM,CAAC,MAAM,wBAAwB,GAAG,MAAM,CAAC,GAAG,CAChD,CAAC,EACC,KAAK,EAAE,EACL,IAAI,EAAE,EAAE,OAAO,EAAE,EAClB,EACF,EAAE,EAAE;IACH,OAAO,GAAG,CAAA;gCACkB,OAAO;;KAElC,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,wBAAwB,CAAC,YAAY,GAAG,gBAAgB,CAAC;AAEzD,MAAM,CAAC,MAAM,qBAAqB,GAAG,MAAM,CAAC,GAAG,CAC7C,CAAC,EACC,KAAK,EAAE,EACL,IAAI,EAAE,EAAE,OAAO,EAAE,EAClB,EACF,EAAE,EAAE;IACH,OAAO,GAAG,CAAA;;mCAEqB,OAAO;KACrC,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,qBAAqB,CAAC,YAAY,GAAG,gBAAgB,CAAC;AAEtD,MAAM,CAAC,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;IAC7C,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC;IAC7B,OAAO,GAAG,CAAA;qCACyB,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;2BACrC,IAAI,CAAC,OAAO;0BACb,IAAI,CAAC,OAAO;;;6BAGT,IAAI,CAAC,OAAO;;GAEtC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,YAAY,CAAC,YAAY,GAAG,gBAAgB,CAAC;AAE7C,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE;IACvE,MAAM,QAAQ,GAAG,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;IAE1E,MAAM,EAAE,GAAG,EAAE,GAAG,YAAY,EAAE,CAAC;IAC/B,OAAO,GAAG,CAAA;;iBAEK,QAAQ,CAAC,EAAE;;MAEtB,UAAU;;;8BAGc,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI;;;8BAGlD,UAAU;;;;+BAIT,UAAU;+BACV,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI;;GAE5C,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,kBAAkB,CAAC,YAAY,GAAG,gBAAgB,CAAC","sourcesContent":["import styled, { css } from 'styled-components';\n\nimport {\n Button,\n calculateFontSize,\n defaultThemeProp,\n StyledIcon,\n useDirection\n} from '@pega/cosmos-react-core';\n\nexport const StyledSearchResults = styled.div``;\n\nStyledSearchResults.defaultProps = defaultThemeProp;\n\nexport const StyledFilterTitle = styled.span(({ theme: { base } }) => {\n return css`\n padding-bottom: calc(2 * ${base.spacing});\n `;\n});\n\nStyledFilterTitle.defaultProps = defaultThemeProp;\n\nexport const StyledCountText = styled.span(({ theme: { base } }) => {\n return css`\n font-weight: ${base['font-weight']['semi-bold']};\n `;\n});\n\nStyledCountText.defaultProps = defaultThemeProp;\n\nexport const StyledModalFilterContent = styled.div(\n ({\n theme: {\n base: { spacing }\n }\n }) => {\n return css`\n margin-top: calc(0.25 * ${spacing});\n width: 25rem;\n `;\n }\n);\n\nStyledModalFilterContent.defaultProps = defaultThemeProp;\n\nexport const StyledSelectedFilters = styled.div(\n ({\n theme: {\n base: { spacing }\n }\n }) => {\n return css`\n overflow-x: auto;\n padding-bottom: calc(0.5 * ${spacing});\n `;\n }\n);\n\nStyledSelectedFilters.defaultProps = defaultThemeProp;\n\nexport const StyledFilter = styled.div(props => {\n const { base } = props.theme;\n return css`\n border-bottom: 0.0625rem solid ${base.palette['border-line']};\n padding-bottom: calc(${base.spacing} * 2);\n margin-bottom: calc(${base.spacing} * 2);\n\n > :last-child > :first-child {\n padding-block-start: ${base.spacing};\n }\n `;\n});\n\nStyledFilter.defaultProps = defaultThemeProp;\n\nexport const StyledFilterButton = styled(Button)(({ theme: { base } }) => {\n const fontSize = calculateFontSize(base['font-size'], base['font-scale']);\n\n const { rtl } = useDirection();\n return css`\n display: inline-flex;\n font-size: ${fontSize.xl};\n\n ${StyledIcon} {\n height: 1em;\n width: 1em;\n transition: transform ${base.animation.speed} ${base.animation.timing.ease};\n }\n\n &[aria-expanded='true'] ${StyledIcon} {\n transform: rotate(0);\n }\n\n &[aria-expanded='false'] ${StyledIcon} {\n transform: rotate(calc(${rtl ? '1' : '-1'} * 90deg));\n }\n `;\n});\n\nStyledFilterButton.defaultProps = defaultThemeProp;\n"]}
@@ -1,5 +1,5 @@
1
1
  import { Ref } from 'react';
2
- import { LinkProps, MetaListProps, OmitStrict, RadioCheckProps, SearchInputProps } from '@pega/cosmos-react-core';
2
+ import { LinkProps, MetaListProps, NoChildrenProp, OmitStrict, RadioCheckProps, SearchInputProps } from '@pega/cosmos-react-core';
3
3
  interface BaseFilterProps {
4
4
  /** The name of the filter. */
5
5
  name: string;
@@ -11,13 +11,13 @@ interface BaseFilterProps {
11
11
  }
12
12
  export interface SelectFilterItemProps {
13
13
  /** The id for the filter option. */
14
- id: RadioCheckProps['id'];
14
+ id: NonNullable<RadioCheckProps['id']>;
15
15
  /** The label for the filter option. */
16
16
  label: RadioCheckProps['label'];
17
17
  /** Determines if the filter option is active or not. */
18
18
  checked: RadioCheckProps['checked'];
19
19
  /** The name for the filter item that will show in the selected filters section */
20
- name: RadioCheckProps['name'];
20
+ name: NonNullable<RadioCheckProps['name']>;
21
21
  }
22
22
  export interface SelectFilterProps extends BaseFilterProps {
23
23
  /** Internal prop designating this object as a select filter. */
@@ -30,18 +30,28 @@ export interface SelectFilterProps extends BaseFilterProps {
30
30
  */
31
31
  selectType?: 'single-select' | 'multi-select';
32
32
  }
33
+ export interface ActiveSelectFilter {
34
+ id: SelectFilterItemProps['id'];
35
+ name: SelectFilterItemProps['name'];
36
+ resetValue: SelectFilterItemProps & {
37
+ checked: false;
38
+ };
39
+ groupName: SelectFilterProps['name'];
40
+ type: SelectFilterProps['type'];
41
+ }
33
42
  export interface TextFilterProps extends BaseFilterProps {
34
43
  /** Internal prop designating this object as a text filter. */
35
44
  type: 'text';
36
45
  /** The value of the filter. */
37
46
  value?: string;
38
47
  /**
39
- * Placeholder text. The default value is a locale translation of 'Search...'
40
- * @default "Search..."
48
+ * Placeholder text. The default value is a locale translation of 'Search'
49
+ * @default "Search"
41
50
  */
42
51
  placeholder?: string;
43
52
  }
44
53
  export declare type FilterProps = SelectFilterProps;
54
+ export declare type ActiveFilters = ActiveSelectFilter;
45
55
  export interface SearchResultProps {
46
56
  /** The id of the search result to be displayed. */
47
57
  id: string;
@@ -62,7 +72,7 @@ interface SelectFilterEvent extends BaseFilterEvent {
62
72
  value: SelectFilterItemProps;
63
73
  }
64
74
  export declare type FilterEvent = SelectFilterEvent;
65
- export interface SearchResultsProps {
75
+ export interface SearchResultsProps extends NoChildrenProp {
66
76
  /** A set of results to render for a given search. */
67
77
  results: SearchResultProps[];
68
78
  /** Props related to the SearchInput. */
@@ -1 +1 @@
1
- {"version":3,"file":"SearchResults.types.d.ts","sourceRoot":"","sources":["../../../src/components/SearchResults/SearchResults.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAE5B,OAAO,EACL,SAAS,EACT,aAAa,EACb,UAAU,EACV,eAAe,EACf,gBAAgB,EACjB,MAAM,yBAAyB,CAAC;AAEjC,UAAU,eAAe;IACvB,8BAA8B;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,qBAAqB;IACpC,oCAAoC;IACpC,EAAE,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC;IAC1B,uCAAuC;IACvC,KAAK,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC;IAChC,wDAAwD;IACxD,OAAO,EAAE,eAAe,CAAC,SAAS,CAAC,CAAC;IACpC,kFAAkF;IAClF,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;CAC/B;AAED,MAAM,WAAW,iBAAkB,SAAQ,eAAe;IACxD,gEAAgE;IAChE,IAAI,EAAE,QAAQ,CAAC;IACf,yCAAyC;IACzC,KAAK,EAAE,qBAAqB,EAAE,CAAC;IAC/B;;;OAGG;IACH,UAAU,CAAC,EAAE,eAAe,GAAG,cAAc,CAAC;CAC/C;AAED,MAAM,WAAW,eAAgB,SAAQ,eAAe;IACtD,8DAA8D;IAC9D,IAAI,EAAE,MAAM,CAAC;IACb,+BAA+B;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAGD,oBAAY,WAAW,GAAG,iBAAiB,CAAC;AAC5C,MAAM,WAAW,iBAAiB;IAChC,mDAAmD;IACnD,EAAE,EAAE,MAAM,CAAC;IACX,sCAAsC;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,kCAAkC;IAClC,IAAI,EAAE,UAAU,CAAC,SAAS,EAAE,UAAU,GAAG,SAAS,GAAG,MAAM,CAAC,CAAC;IAC7D,2CAA2C;IAC3C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mFAAmF;IACnF,IAAI,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;CAC/B;AAED,UAAU,eAAe;IACvB,IAAI,EAAE,MAAM,CAAC;CACd;AACD,UAAU,iBAAkB,SAAQ,eAAe;IACjD,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,EAAE,qBAAqB,CAAC;CAC9B;AAGD,oBAAY,WAAW,GAAG,iBAAiB,CAAC;AAC5C,MAAM,WAAW,kBAAkB;IACjC,qDAAqD;IACrD,OAAO,EAAE,iBAAiB,EAAE,CAAC;IAC7B,wCAAwC;IACxC,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,6DAA6D;IAC7D,KAAK,EAAE,MAAM,CAAC;IACd,oEAAoE;IACpE,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,iEAAiE;IACjE,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,IAAI,CAAC;IAC/C,mEAAmE;IACnE,iBAAiB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC/B,+EAA+E;IAC/E,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC;IACxD,0HAA0H;IAC1H,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,sCAAsC;IACtC,GAAG,CAAC,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC;CAC3B"}
1
+ {"version":3,"file":"SearchResults.types.d.ts","sourceRoot":"","sources":["../../../src/components/SearchResults/SearchResults.types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"SearchResults.types.js","sourceRoot":"","sources":["../../../src/components/SearchResults/SearchResults.types.ts"],"names":[],"mappings":"","sourcesContent":["import { Ref } from 'react';\n\nimport {\n LinkProps,\n MetaListProps,\n OmitStrict,\n RadioCheckProps,\n SearchInputProps\n} from '@pega/cosmos-react-core';\n\ninterface BaseFilterProps {\n /** The name of the filter. */\n name: string;\n /**\n * Determines if the filter will start in an expanded state.\n * @default true\n */\n expanded?: boolean;\n}\n\nexport interface SelectFilterItemProps {\n /** The id for the filter option. */\n id: RadioCheckProps['id'];\n /** The label for the filter option. */\n label: RadioCheckProps['label'];\n /** Determines if the filter option is active or not. */\n checked: RadioCheckProps['checked'];\n /** The name for the filter item that will show in the selected filters section */\n name: RadioCheckProps['name'];\n}\n\nexport interface SelectFilterProps extends BaseFilterProps {\n /** Internal prop designating this object as a select filter. */\n type: 'select';\n /** The set of options for the filter. */\n items: SelectFilterItemProps[];\n /**\n * Determines if the filter will render as a RadioButtonGroup or CheckboxGroup.\n * @default \"multi-select\"\n */\n selectType?: 'single-select' | 'multi-select';\n}\n\nexport interface TextFilterProps extends BaseFilterProps {\n /** Internal prop designating this object as a text filter. */\n type: 'text';\n /** The value of the filter. */\n value?: string;\n /**\n * Placeholder text. The default value is a locale translation of 'Search...'\n * @default \"Search...\"\n */\n placeholder?: string;\n}\n\n// For use later: export type FilterProps = TextFilterProps | SelectFilterProps;\nexport type FilterProps = SelectFilterProps;\nexport interface SearchResultProps {\n /** The id of the search result to be displayed. */\n id: string;\n /** The title of the search result. */\n title: string;\n /** LinkProps to be passed to . */\n link: OmitStrict<LinkProps, 'children' | 'variant' | 'icon'>;\n /** A description for the search result. */\n description?: string;\n /** A list of elements to be rendered within a MetaList categorizing the result. */\n meta?: MetaListProps['items'];\n}\n\ninterface BaseFilterEvent {\n name: string;\n}\ninterface SelectFilterEvent extends BaseFilterEvent {\n type: 'select';\n value: SelectFilterItemProps;\n}\n\n// For use later: export type FilterEvent = SelectFilterEvent | TextFilterEvent;\nexport type FilterEvent = SelectFilterEvent;\nexport interface SearchResultsProps {\n /** A set of results to render for a given search. */\n results: SearchResultProps[];\n /** Props related to the SearchInput. */\n searchInputProps: SearchInputProps;\n /** The number of total results related to a given search. */\n count: number;\n /** A set of filters and their current states for a given search. */\n filters: FilterProps[];\n /** Callback that is fired when the value of a filter changes. */\n onFilterChange?: (filter: FilterEvent) => void;\n /** Callback that is fired when the Clear all button is clicked. */\n onClearAllFilters?: () => void;\n /** Callback that is fired when the Clear button is clicked within a filter. */\n onClearFilter?: (name: BaseFilterProps['name']) => void;\n /** Callback that will render a Show more button at the bottom of the results and is fired when that button is clicked. */\n onShowMore?: () => void;\n /** A ref for the wrapping element. */\n ref?: Ref<HTMLDivElement>;\n}\n"]}
1
+ {"version":3,"file":"SearchResults.types.js","sourceRoot":"","sources":["../../../src/components/SearchResults/SearchResults.types.ts"],"names":[],"mappings":"","sourcesContent":["import { Ref } from 'react';\n\nimport {\n LinkProps,\n MetaListProps,\n NoChildrenProp,\n OmitStrict,\n RadioCheckProps,\n SearchInputProps\n} from '@pega/cosmos-react-core';\n\ninterface BaseFilterProps {\n /** The name of the filter. */\n name: string;\n /**\n * Determines if the filter will start in an expanded state.\n * @default true\n */\n expanded?: boolean;\n}\n\nexport interface SelectFilterItemProps {\n /** The id for the filter option. */\n id: NonNullable<RadioCheckProps['id']>;\n /** The label for the filter option. */\n label: RadioCheckProps['label'];\n /** Determines if the filter option is active or not. */\n checked: RadioCheckProps['checked'];\n /** The name for the filter item that will show in the selected filters section */\n name: NonNullable<RadioCheckProps['name']>;\n}\n\nexport interface SelectFilterProps extends BaseFilterProps {\n /** Internal prop designating this object as a select filter. */\n type: 'select';\n /** The set of options for the filter. */\n items: SelectFilterItemProps[];\n /**\n * Determines if the filter will render as a RadioButtonGroup or CheckboxGroup.\n * @default \"multi-select\"\n */\n selectType?: 'single-select' | 'multi-select';\n}\n\nexport interface ActiveSelectFilter {\n id: SelectFilterItemProps['id'];\n name: SelectFilterItemProps['name'];\n resetValue: SelectFilterItemProps & { checked: false };\n groupName: SelectFilterProps['name'];\n type: SelectFilterProps['type'];\n}\n\nexport interface TextFilterProps extends BaseFilterProps {\n /** Internal prop designating this object as a text filter. */\n type: 'text';\n /** The value of the filter. */\n value?: string;\n /**\n * Placeholder text. The default value is a locale translation of 'Search'\n * @default \"Search…\"\n */\n placeholder?: string;\n}\n\n// For use later: export type FilterProps = TextFilterProps | SelectFilterProps;\nexport type FilterProps = SelectFilterProps;\n\nexport type ActiveFilters = ActiveSelectFilter;\n\nexport interface SearchResultProps {\n /** The id of the search result to be displayed. */\n id: string;\n /** The title of the search result. */\n title: string;\n /** LinkProps to be passed to . */\n link: OmitStrict<LinkProps, 'children' | 'variant' | 'icon'>;\n /** A description for the search result. */\n description?: string;\n /** A list of elements to be rendered within a MetaList categorizing the result. */\n meta?: MetaListProps['items'];\n}\n\ninterface BaseFilterEvent {\n name: string;\n}\ninterface SelectFilterEvent extends BaseFilterEvent {\n type: 'select';\n value: SelectFilterItemProps;\n}\n\n// For use later: export type FilterEvent = SelectFilterEvent | TextFilterEvent;\nexport type FilterEvent = SelectFilterEvent;\n\nexport interface SearchResultsProps extends NoChildrenProp {\n /** A set of results to render for a given search. */\n results: SearchResultProps[];\n /** Props related to the SearchInput. */\n searchInputProps: SearchInputProps;\n /** The number of total results related to a given search. */\n count: number;\n /** A set of filters and their current states for a given search. */\n filters: FilterProps[];\n /** Callback that is fired when the value of a filter changes. */\n onFilterChange?: (filter: FilterEvent) => void;\n /** Callback that is fired when the Clear all button is clicked. */\n onClearAllFilters?: () => void;\n /** Callback that is fired when the Clear button is clicked within a filter. */\n onClearFilter?: (name: BaseFilterProps['name']) => void;\n /** Callback that will render a Show more button at the bottom of the results and is fired when that button is clicked. */\n onShowMore?: () => void;\n /** A ref for the wrapping element. */\n ref?: Ref<HTMLDivElement>;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"Stages.d.ts","sourceRoot":"","sources":["../../../src/components/Stages/Stages.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAwD,MAAM,OAAO,CAAC;AAGhG,OAAO,EAGL,YAAY,EAab,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAI7C,QAAA,MAAM,MAAM,EAAE,iBAAiB,CAAC,WAAW,GAAG,YAAY,CAsMzD,CAAC;AAEF,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"Stages.d.ts","sourceRoot":"","sources":["../../../src/components/Stages/Stages.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAwD,MAAM,OAAO,CAAC;AAGhG,OAAO,EAIL,YAAY,EAab,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAM7C,QAAA,MAAM,MAAM,EAAE,iBAAiB,CAAC,WAAW,GAAG,YAAY,CAwMzD,CAAC;AAEF,eAAe,MAAM,CAAC"}
@@ -1,9 +1,11 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  import { useState, useRef, useEffect, useContext, useCallback } from 'react';
3
3
  import { remToPx } from 'polished';
4
- import { Icon, Flex, useElement, useOuterEvent, Popover, useI18n, Button, ModalManagerContext, Modal, getFocusables, useBreakpoint, debounce, useTheme } from '@pega/cosmos-react-core';
4
+ import { Icon, registerIcon, Flex, useElement, useOuterEvent, Popover, useI18n, Button, ModalManagerContext, Modal, getFocusables, useBreakpoint, debounce, useTheme } from '@pega/cosmos-react-core';
5
+ import * as checkIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/check.icon';
5
6
  import StepsContainer from './StepsContainer';
6
7
  import { StyledInnerStage, StyledStage, StyledStagePopover, StyledStages } from './Stages.styles';
8
+ registerIcon(checkIcon);
7
9
  const Stages = (props) => {
8
10
  const { current, stages, caseTitle, ...restProps } = props;
9
11
  const t = useI18n();
@@ -22,7 +24,7 @@ const Stages = (props) => {
22
24
  const focusableElements = getFocusables(popoverContentRef);
23
25
  const [compressedView, setCompressedView] = useState(false);
24
26
  const [minExpandedWidth, setMinExpandedWidth] = useState(0);
25
- const resizeObserver = new ResizeObserver(debounce(entries => {
27
+ const resizeObserver = new ResizeObserver(debounce((entries) => {
26
28
  if (entries[0].contentRect.width > minExpandedWidth)
27
29
  setCompressedView(false);
28
30
  }, 100));
@@ -57,22 +59,21 @@ const Stages = (props) => {
57
59
  const onKeyDown = useCallback(({ key }) => {
58
60
  if (key === 'Escape') {
59
61
  setShowPopover(false);
60
- activeStageEl === null || activeStageEl === void 0 ? void 0 : activeStageEl.focus();
62
+ activeStageEl?.focus();
61
63
  }
62
64
  }, [activeStageEl]);
63
65
  const onKeyDownPopover = useCallback((event) => {
64
- var _a;
65
66
  if (event.key === 'Tab' && event.shiftKey) {
66
67
  const firstFocusable = focusableElements[0];
67
68
  if (document.activeElement === firstFocusable) {
68
- (_a = stagesRefs.current[activeStageIndex + 1]) === null || _a === void 0 ? void 0 : _a.focus();
69
+ stagesRefs.current[activeStageIndex + 1]?.focus();
69
70
  setShowPopover(false);
70
71
  }
71
72
  }
72
73
  if (event.key === 'Tab' && !event.shiftKey) {
73
74
  const lastFocusable = focusableElements[focusableElements.length - 1];
74
75
  if (document.activeElement === lastFocusable) {
75
- activeStageEl === null || activeStageEl === void 0 ? void 0 : activeStageEl.focus();
76
+ activeStageEl?.focus();
76
77
  setShowPopover(false);
77
78
  }
78
79
  }
@@ -91,19 +92,19 @@ const Stages = (props) => {
91
92
  useEffect(() => {
92
93
  if (requestDismiss) {
93
94
  setShowPopover(false);
94
- activeStageEl === null || activeStageEl === void 0 ? void 0 : activeStageEl.focus();
95
+ activeStageEl?.focus();
95
96
  setRequestDismiss(false);
96
97
  }
97
98
  }, [activeStageEl, requestDismiss]);
98
- const RenderModal = ({ heading = t('lifecycle', caseTitle || 'Case') }) => {
99
- return (_jsx(Modal, Object.assign({}, restProps, { heading: heading, onRequestDismiss: () => setRequestDismiss(true) }, { children: stages.map((stage, id) => (_jsx(StepsContainer, { currentStage: [stage] }, id.toString()))) }), void 0));
99
+ const RenderModal = ({ heading = t('lifecycle', [caseTitle || 'Case']) }) => {
100
+ return (_jsx(Modal, { ...restProps, heading: heading, onRequestDismiss: () => setRequestDismiss(true), children: stages.map((stage, id) => (_jsx(StepsContainer, { currentStage: [stage] }, id.toString()))) }, void 0));
100
101
  };
101
102
  const openModal = () => {
102
103
  setShowPopover(false);
103
104
  create(RenderModal);
104
105
  };
105
106
  const isCurrent = (stageId) => current === stageId;
106
- return (_jsxs(_Fragment, { children: [_jsx(Flex, Object.assign({ container: true, as: StyledStages, ref: setStagesEl }, restProps, { children: stages.map((stage, index) => (_jsxs(Flex, Object.assign({ container: { justify: 'center', alignItems: 'center' }, as: StyledStage, item: { grow: compressedView && !isCurrent(stage.id) ? 0 : 1, shrink: 1 }, "aria-current": isCurrent(stage.id) ? 'step' : undefined, "aria-label": `Stage ${stage.name}`, ref: (el) => {
107
+ return (_jsxs(_Fragment, { children: [_jsx(Flex, { container: true, as: StyledStages, ref: setStagesEl, ...restProps, children: stages.map((stage, index) => (_jsxs(Flex, { container: { justify: 'center', alignItems: 'center' }, as: StyledStage, item: { grow: compressedView && !isCurrent(stage.id) ? 0 : 1, shrink: 1 }, "aria-current": isCurrent(stage.id) ? 'step' : undefined, "aria-label": `Stage ${stage.name}`, ref: (el) => {
107
108
  stagesRefs.current[index] = el;
108
109
  if (isCurrent(stage.id))
109
110
  setCurrentStageButtonEl(el);
@@ -115,17 +116,14 @@ const Stages = (props) => {
115
116
  else {
116
117
  openModal();
117
118
  }
118
- } }, { children: [stage.complete && _jsx(Icon, { name: 'check' }, void 0),
119
- !(stage.complete && compressedView) && (_jsx(StyledInnerStage, Object.assign({ ref: isCurrent(stage.id) ? setCurrentStageNameEl : undefined, ellipsis: isCurrent(stage.id) && compressedView }, { children: !isCurrent(stage.id) && compressedView ? index + 1 : stage.name }), void 0))] }), `stage-${stage.id}`))) }), void 0),
120
- _jsx(Flex, Object.assign({ ref: popoverContentRef }, { children: _jsxs(Popover, Object.assign({ as: StyledStagePopover, show: showPopover && isSmallOrAbove, target: stagesRefs.current[activeStageIndex], id: 'id', ref: setPopoverRef, arrow: true, placement: 'bottom-start', onKeyDown: onKeyDownPopover, modifiers: [
119
+ }, children: [stage.complete && _jsx(Icon, { name: 'check' }, void 0), !(stage.complete && compressedView) && (_jsx(StyledInnerStage, { ref: isCurrent(stage.id) ? setCurrentStageNameEl : undefined, ellipsis: isCurrent(stage.id) && compressedView, children: !isCurrent(stage.id) && compressedView ? index + 1 : stage.name }, void 0))] }, `stage-${stage.id}`))) }, void 0), _jsx(Flex, { ref: popoverContentRef, children: _jsxs(Popover, { as: StyledStagePopover, show: showPopover && isSmallOrAbove, target: stagesRefs.current[activeStageIndex], id: 'id', ref: setPopoverRef, arrow: true, placement: 'bottom-start', onKeyDown: onKeyDownPopover, modifiers: [
121
120
  {
122
121
  name: 'flip',
123
122
  options: {
124
123
  fallbackPlacements: ['bottom-end', 'right', 'left']
125
124
  }
126
125
  }
127
- ] }, { children: [_jsx(StepsContainer, { currentStage: [activeStageObj] }, void 0),
128
- _jsx(Button, Object.assign({ variant: 'secondary', onClick: openModal }, { children: t('stage_see_full_lifecycle') }), void 0)] }), void 0) }), void 0)] }, void 0));
126
+ ], children: [_jsx(StepsContainer, { currentStage: [activeStageObj] }, void 0), _jsx(Button, { variant: 'secondary', onClick: openModal, children: t('stage_see_full_lifecycle') }, void 0)] }, void 0) }, void 0)] }, void 0));
129
127
  };
130
128
  export default Stages;
131
129
  //# sourceMappingURL=Stages.js.map