@popsure/dirty-swan 0.66.12 → 0.66.14

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 (54) hide show
  1. package/dist/cjs/index.js +51 -36
  2. package/dist/cjs/index.js.map +1 -1
  3. package/dist/cjs/lib/components/table/Table.d.ts +3 -1
  4. package/dist/cjs/lib/components/table/Table.stories.d.ts +10 -2
  5. package/dist/cjs/lib/components/table/components/TableCell/TableCell.d.ts +3 -1
  6. package/dist/cjs/lib/components/table/components/TableContents/TableContents.d.ts +2 -1
  7. package/dist/cjs/lib/components/table/components/TableSection/TableSection.d.ts +2 -1
  8. package/dist/cjs/lib/models/styles.d.ts +1 -1
  9. package/dist/esm/{TableSection-CEhD4eoy.js → TableSection-Cm50RX-V.js} +28 -9
  10. package/dist/esm/TableSection-Cm50RX-V.js.map +1 -0
  11. package/dist/esm/components/table/Table.js +10 -10
  12. package/dist/esm/components/table/Table.js.map +1 -1
  13. package/dist/esm/components/table/Table.stories.js +79 -4
  14. package/dist/esm/components/table/Table.stories.js.map +1 -1
  15. package/dist/esm/components/table/Table.test.js +7 -1
  16. package/dist/esm/components/table/Table.test.js.map +1 -1
  17. package/dist/esm/components/table/components/TableCell/BaseCell/BaseCell.js +1 -1
  18. package/dist/esm/components/table/components/TableCell/BaseCell/BaseCell.js.map +1 -1
  19. package/dist/esm/components/table/components/TableCell/ButtonCell/ButtonCell.js +1 -1
  20. package/dist/esm/components/table/components/TableCell/ButtonCell/ButtonCell.js.map +1 -1
  21. package/dist/esm/components/table/components/TableCell/CTACell/CTACell.js +1 -1
  22. package/dist/esm/components/table/components/TableCell/CTACell/CTACell.js.map +1 -1
  23. package/dist/esm/components/table/components/TableCell/TableCell.js +6 -4
  24. package/dist/esm/components/table/components/TableCell/TableCell.js.map +1 -1
  25. package/dist/esm/components/table/components/TableContents/TableContents.js +9 -15
  26. package/dist/esm/components/table/components/TableContents/TableContents.js.map +1 -1
  27. package/dist/esm/components/table/components/TableContents/TableContents.test.js +14 -2
  28. package/dist/esm/components/table/components/TableContents/TableContents.test.js.map +1 -1
  29. package/dist/esm/components/table/components/TableSection/TableSection.js +1 -1
  30. package/dist/esm/components/table/components/TableSection/TableSection.test.js +1 -1
  31. package/dist/esm/index.js +1 -1
  32. package/dist/esm/lib/components/table/Table.d.ts +3 -1
  33. package/dist/esm/lib/components/table/Table.stories.d.ts +10 -2
  34. package/dist/esm/lib/components/table/components/TableCell/TableCell.d.ts +3 -1
  35. package/dist/esm/lib/components/table/components/TableContents/TableContents.d.ts +2 -1
  36. package/dist/esm/lib/components/table/components/TableSection/TableSection.d.ts +2 -1
  37. package/dist/esm/lib/models/styles.d.ts +1 -1
  38. package/package.json +1 -1
  39. package/src/lib/components/table/Table.module.scss +3 -0
  40. package/src/lib/components/table/Table.stories.tsx +92 -0
  41. package/src/lib/components/table/Table.test.tsx +15 -0
  42. package/src/lib/components/table/Table.tsx +27 -20
  43. package/src/lib/components/table/components/TableCell/BaseCell/BaseCell.tsx +1 -1
  44. package/src/lib/components/table/components/TableCell/ButtonCell/ButtonCell.tsx +1 -1
  45. package/src/lib/components/table/components/TableCell/CTACell/CTACell.tsx +2 -2
  46. package/src/lib/components/table/components/TableCell/TableCell.module.scss +8 -12
  47. package/src/lib/components/table/components/TableCell/TableCell.tsx +7 -1
  48. package/src/lib/components/table/components/TableContents/TableContents.module.scss +23 -24
  49. package/src/lib/components/table/components/TableContents/TableContents.test.tsx +22 -1
  50. package/src/lib/components/table/components/TableContents/TableContents.tsx +40 -31
  51. package/src/lib/components/table/components/TableSection/TableSection.module.scss +7 -0
  52. package/src/lib/components/table/components/TableSection/TableSection.tsx +32 -3
  53. package/src/lib/models/styles.ts +1 -0
  54. package/dist/esm/TableSection-CEhD4eoy.js.map +0 -1
@@ -1,7 +1,6 @@
1
1
  import { MutableRefObject, useCallback, useRef, useState } from 'react';
2
2
  import { TableSection } from '../TableSection/TableSection';
3
3
  import { ChevronDownIcon, ChevronUpIcon } from '../../../icon';
4
- import { Card } from '../../../cards/card';
5
4
 
6
5
  import styles from './TableContents.module.scss';
7
6
  import classNames from 'classnames';
@@ -25,6 +24,7 @@ export interface TableContentsProps {
25
24
  title: string;
26
25
  cellReplacements?: CellReplacements;
27
26
  imageComponent?: (args: any) => JSX.Element;
27
+ selectedColumn?: number;
28
28
  }
29
29
 
30
30
  const TableContents = ({
@@ -43,6 +43,7 @@ const TableContents = ({
43
43
  title,
44
44
  cellReplacements,
45
45
  imageComponent,
46
+ selectedColumn,
46
47
  }: TableContentsProps) => {
47
48
  const [isSectionOpen, setOpenSection] = useState<number | null>(null);
48
49
  const lastToggledSection = useRef<number | null>(null);
@@ -96,35 +97,40 @@ const TableContents = ({
96
97
  const result = (isFirstSection || isVisible) && (
97
98
  <div key={index} ref={(el) => { sectionRefs.current[index] = el; }}>
98
99
  {section?.title && (
99
- <div className={styles.cardWrapper}>
100
- <div className={classNames(styles.card, 'p0')}>
101
- <Card
102
- actionIcon={
103
- isExpanded ? (
104
- <ChevronUpIcon size={24} />
105
- ) : (
106
- <ChevronDownIcon size={24} />
107
- )
108
- }
109
- aria-expanded={isExpanded ? 'true' : 'false'}
110
- aria-hidden
111
- classNames={{
112
- wrapper: 'pl16',
113
- buttonWrapper: styles.cardButton,
114
- icon: classNames(styles.cardIcon, 'tc-neutral-900'),
115
- }}
116
- dropShadow={false}
117
- icon={renderedIcon}
118
- title={section.title}
119
- titleVariant="medium"
120
- variant="primary"
121
- {...(collapsibleSections
122
- ? {
123
- onClick: () => handleToggleSection(index),
124
- }
125
- : {})}
126
- />
127
- </div>
100
+ <div className={styles.sectionButtonWrapper}>
101
+ {collapsibleSections ? (
102
+ <button
103
+ type="button"
104
+ aria-expanded={isExpanded}
105
+ className={classNames(
106
+ 'd-flex ai-center jc-between ta-left bg-white',
107
+ styles.sectionButton
108
+ )}
109
+ onClick={() => handleToggleSection(index)}
110
+ >
111
+ <span className="d-flex ai-center gap8">
112
+ {renderedIcon}
113
+ <span className="p-h3">{section.title}</span>
114
+ </span>
115
+ {isExpanded ? (
116
+ <ChevronUpIcon size={20} />
117
+ ) : (
118
+ <ChevronDownIcon size={20} />
119
+ )}
120
+ </button>
121
+ ) : (
122
+ <div
123
+ className={classNames(
124
+ 'd-flex ai-center jc-between ta-left bg-white',
125
+ styles.sectionButton
126
+ )}
127
+ >
128
+ <span className="d-flex ai-center gap8">
129
+ {renderedIcon}
130
+ <span className="p-h3">{section.title}</span>
131
+ </span>
132
+ </div>
133
+ )}
128
134
  </div>
129
135
  )}
130
136
 
@@ -133,7 +139,9 @@ const TableContents = ({
133
139
  onTransitionEnd={() => handleScrollToSection(index)}
134
140
  >
135
141
  <TableSection
136
- className={classNames(className, 'mb24')}
142
+ className={classNames(className, 'mb16', {
143
+ mt16: !!section?.title,
144
+ })}
137
145
  tableCellRows={
138
146
  isFirstSection ? rows : [firstHeadRow, ...rows]
139
147
  }
@@ -147,6 +155,7 @@ const TableContents = ({
147
155
  width={tableWidth}
148
156
  cellReplacements={cellReplacements}
149
157
  imageComponent={imageComponent}
158
+ selectedColumn={selectedColumn}
150
159
  />
151
160
  </Collapsible>
152
161
  </div>
@@ -4,7 +4,9 @@
4
4
  .table {
5
5
  border-collapse: collapse;
6
6
  table-layout: fixed;
7
+ }
7
8
 
9
+ .tableMultiplePlans {
8
10
  @include p-size-tablet {
9
11
  min-width: 845px;
10
12
  }
@@ -12,4 +14,9 @@
12
14
 
13
15
  .tr {
14
16
  min-height: 72px;
17
+ border-bottom: 1px solid $ds-neutral-300;
18
+
19
+ &:last-child {
20
+ border-bottom: none;
21
+ }
15
22
  }
@@ -23,6 +23,7 @@ export interface TableSectionProps {
23
23
  width?: number | string;
24
24
  cellReplacements?: CellReplacements;
25
25
  imageComponent?: (args: any) => JSX.Element;
26
+ selectedColumn?: number;
26
27
  }
27
28
 
28
29
  const TableSection = ({
@@ -36,10 +37,21 @@ const TableSection = ({
36
37
  width,
37
38
  cellReplacements,
38
39
  imageComponent,
40
+ selectedColumn,
39
41
  }: TableSectionProps) => {
40
42
  const headerRow = tableCellRows?.[0];
41
43
  const isBelowDesktop = useMediaQuery('BELOW_DESKTOP');
42
44
 
45
+ const firstVisibleBodyRowIndex = tableCellRows.findIndex(
46
+ (_, index) => index > 0 && !hideRows.includes(index)
47
+ );
48
+
49
+ const lastVisibleRowIndex = tableCellRows.reduce(
50
+ (last, row, index) =>
51
+ index > 0 && !hideRows.includes(index) && row.length > 1 ? index : last,
52
+ -1
53
+ );
54
+
43
55
  const getModalTitleFromColumnHeader = (cellIndex: number) => {
44
56
  const firstCellInColumn = tableCellRows?.[0]?.[cellIndex];
45
57
  let titleFromColumn;
@@ -77,9 +89,14 @@ const TableSection = ({
77
89
  [hideRows]
78
90
  );
79
91
 
92
+ const visibleColumnsLength =
93
+ headerRow?.filter((_, cellIndex) => isVisibleColumn(cellIndex)).length ?? 0;
94
+
80
95
  return (
81
96
  <table
82
- className={classNames(className, 'w100', styles.table)}
97
+ className={classNames(className, 'w100', styles.table, {
98
+ [styles.tableMultiplePlans]: visibleColumnsLength > 2,
99
+ })}
83
100
  width={width}
84
101
  >
85
102
  <caption className="sr-only">{title}</caption>
@@ -102,7 +119,7 @@ const TableSection = ({
102
119
  modalTitle:
103
120
  (isBaseCell(tableCellData) && tableCellData.text) ||
104
121
  getModalTitleFromColumnHeader(cellIndex),
105
- align: isFirstCellInRow ? 'left' : 'center',
122
+ align: 'left',
106
123
  },
107
124
  } as TableCellData;
108
125
 
@@ -114,6 +131,8 @@ const TableSection = ({
114
131
  isHeader
115
132
  isFirstCellInRow={isFirstCellInRow}
116
133
  isTopLeftCell={isFirstCellInRow}
134
+ isSelectedColumn={selectedColumn === cellIndex}
135
+ selectedColumnPosition={selectedColumn === cellIndex ? 'top' : undefined}
117
136
  {...cellProps}
118
137
  imageComponent={imageComponent}
119
138
  />
@@ -133,6 +152,14 @@ const TableSection = ({
133
152
  const key = `${rowIndex}-${cellIndex}`;
134
153
  const isFirstCellInRow = cellIndex === 0;
135
154
  const titleFromRow = getModalTitleFromRowHeader(row);
155
+ const isSelected = selectedColumn === cellIndex;
156
+
157
+ const getSelectedColumnPosition = () => {
158
+ if (!isSelected) return undefined;
159
+ if (rowIndex === lastVisibleRowIndex) return 'bottom';
160
+ if (hideHeader && rowIndex === firstVisibleBodyRowIndex) return 'top';
161
+ return 'middle';
162
+ };
136
163
 
137
164
  const cellReplacementData =
138
165
  (tableCellData.cellId &&
@@ -145,7 +172,7 @@ const TableSection = ({
145
172
  ...{
146
173
  openModal,
147
174
  modalTitle: tableCellData?.modalTitle || titleFromRow,
148
- align: isFirstCellInRow ? 'left' : 'center',
175
+ align: 'left',
149
176
  },
150
177
  } as TableCellData;
151
178
 
@@ -154,6 +181,8 @@ const TableSection = ({
154
181
  <TableCell
155
182
  isBelowDesktop={isBelowDesktop}
156
183
  isFirstCellInRow={isFirstCellInRow}
184
+ isSelectedColumn={isSelected}
185
+ selectedColumnPosition={getSelectedColumnPosition()}
157
186
  key={key}
158
187
  {...cellProps}
159
188
  imageComponent={imageComponent}
@@ -22,6 +22,7 @@ export type Color = 'transparent' | 'blue-100'
22
22
  | 'neutral-100'
23
23
  | 'neutral-300'
24
24
  | 'neutral-400'
25
+ | 'neutral-500'
25
26
  | 'neutral-600'
26
27
  | 'neutral-700'
27
28
  | 'neutral-800'
@@ -1 +0,0 @@
1
- {"version":3,"file":"TableSection-CEhD4eoy.js","sources":["../../../src/lib/components/table/types.ts","../../../src/lib/components/table/components/TableSection/TableSection.tsx"],"sourcesContent":["import { ReactNode } from 'react';\nimport { BaseCellProps } from './components/TableCell/BaseCell/BaseCell';\nimport { CTACellProps } from './components/TableCell/CTACell/CTACell';\nimport { ButtonCellProps } from './components/TableCell/ButtonCell/ButtonCell';\nimport { CardCellProps } from './components/TableCell/CardCell/CardCell';\n\ntype DefaultCellProps = {\n cellId?: string;\n colSpan?: number;\n modalTitle?: ReactNode;\n};\n\ntype BaseCellData = BaseCellProps & { type?: undefined } & DefaultCellProps;\ntype CTACellData = CTACellProps & { type: 'CTA' } & DefaultCellProps;\ntype ButtonCellData = ButtonCellProps & { type: 'BUTTON' } & DefaultCellProps;\ntype CardCellData = CardCellProps & { type: 'CARD' } & DefaultCellProps;\n\nexport type TableCellData =\n | BaseCellData\n | CTACellData\n | ButtonCellData\n | CardCellData;\n\nexport const isBaseCell = (\n tableCellData: TableCellData\n): tableCellData is BaseCellData => {\n return !tableCellData.type;\n};\n\nexport type TableSectionType = {\n title?: string;\n icon?: ReactNode;\n};\n\nexport type ModalData = {\n title?: ReactNode;\n body?: ReactNode;\n};\n\nexport type TableCellRowData = TableCellData[];\n\nexport type TableSectionData = {\n section?: TableSectionType;\n rows: TableCellRowData[];\n};\n\nexport type TableData = TableSectionData[];\n\nexport type ModalFunction = (modalData: ModalData) => void;\n\nexport type CellReplacements = Record<string, Partial<TableCellData>>;\n","import classNames from 'classnames';\n\nimport styles from './TableSection.module.scss';\nimport { TableCell } from '../TableCell/TableCell';\nimport {\n CellReplacements,\n isBaseCell,\n ModalFunction,\n TableCellData,\n TableCellRowData,\n} from '../../types';\nimport { useCallback } from 'react';\nimport { useMediaQuery } from '../../../../hooks/useMediaQuery';\n\nexport interface TableSectionProps {\n className?: string;\n tableCellRows: TableCellRowData[];\n hideColumns?: number[];\n hideRows?: number[];\n hideHeader?: boolean;\n openModal?: ModalFunction;\n title: string;\n width?: number | string;\n cellReplacements?: CellReplacements;\n imageComponent?: (args: any) => JSX.Element;\n}\n\nconst TableSection = ({\n className,\n tableCellRows,\n hideColumns = [],\n hideRows = [],\n hideHeader,\n openModal,\n title,\n width,\n cellReplacements,\n imageComponent,\n}: TableSectionProps) => {\n const headerRow = tableCellRows?.[0];\n const isBelowDesktop = useMediaQuery('BELOW_DESKTOP');\n\n const getModalTitleFromColumnHeader = (cellIndex: number) => {\n const firstCellInColumn = tableCellRows?.[0]?.[cellIndex];\n let titleFromColumn;\n\n switch (firstCellInColumn.type) {\n case 'BUTTON':\n titleFromColumn = firstCellInColumn.buttonCaption;\n break;\n case 'CTA':\n titleFromColumn = firstCellInColumn.title;\n break;\n case undefined:\n titleFromColumn = firstCellInColumn.text || '';\n break;\n }\n\n return titleFromColumn;\n };\n\n const getModalTitleFromRowHeader = (currentRow: TableCellRowData) => {\n const firstCellInRow = currentRow?.[0];\n const titleFromRow =\n (isBaseCell(firstCellInRow) && firstCellInRow.text) || '';\n\n return titleFromRow;\n };\n\n const isVisibleColumn = useCallback(\n (cellIndex: number) => !hideColumns.includes(cellIndex),\n [hideColumns]\n );\n\n const isVisibleRow = useCallback(\n (rowIndex: number) => !hideRows.includes(rowIndex),\n [hideRows]\n );\n\n return (\n <table\n className={classNames(className, 'w100', styles.table)}\n width={width}\n >\n <caption className=\"sr-only\">{title}</caption>\n\n {headerRow && (\n <thead className={hideHeader ? 'sr-only' : ''}>\n <tr>\n {headerRow.map((tableCellData, cellIndex) => {\n const isFirstCellInRow = cellIndex === 0;\n const cellReplacementData =\n (tableCellData.cellId &&\n cellReplacements?.[tableCellData.cellId]) ||\n {};\n\n const cellProps = {\n ...tableCellData,\n ...cellReplacementData,\n ...{\n openModal,\n modalTitle:\n (isBaseCell(tableCellData) && tableCellData.text) ||\n getModalTitleFromColumnHeader(cellIndex),\n align: isFirstCellInRow ? 'left' : 'center',\n },\n } as TableCellData;\n\n return (\n isVisibleColumn(cellIndex) && (\n <TableCell\n key={cellIndex}\n isBelowDesktop={isBelowDesktop}\n isHeader\n isFirstCellInRow={isFirstCellInRow}\n isTopLeftCell={isFirstCellInRow}\n {...cellProps}\n imageComponent={imageComponent}\n />\n )\n );\n })}\n </tr>\n </thead>\n )}\n\n <tbody>\n {tableCellRows.map(\n (row, rowIndex) =>\n rowIndex > 0 && isVisibleRow(rowIndex) && (\n <tr key={rowIndex} className={styles.tr}>\n {row.map((tableCellData, cellIndex) => {\n const key = `${rowIndex}-${cellIndex}`;\n const isFirstCellInRow = cellIndex === 0;\n const titleFromRow = getModalTitleFromRowHeader(row);\n\n const cellReplacementData =\n (tableCellData.cellId &&\n cellReplacements?.[tableCellData.cellId]) ||\n {};\n\n const cellProps = {\n ...tableCellData,\n ...cellReplacementData,\n ...{\n openModal,\n modalTitle: tableCellData?.modalTitle || titleFromRow,\n align: isFirstCellInRow ? 'left' : 'center',\n },\n } as TableCellData;\n\n return (\n !hideColumns.includes(cellIndex) && (\n <TableCell\n isBelowDesktop={isBelowDesktop}\n isFirstCellInRow={isFirstCellInRow}\n key={key}\n {...cellProps}\n imageComponent={imageComponent}\n />\n )\n );\n })}\n </tr>\n )\n )}\n </tbody>\n </table>\n );\n};\n\nexport { TableSection };\n"],"names":["_jsxs","_jsx"],"mappings":"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"}