@nuskin/foundation-ui-components 1.22.0-cx130-1102.2 → 1.22.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/common/accordion/NsAccordion.tsx +2 -0
- package/src/common/accordion/NsAccordionHeader.tsx +6 -3
- package/src/common/accordion/NsAccordionItem.tsx +15 -11
- package/src/common/accordion/specs/NsAccordion.spec.tsx +20 -0
- package/src/common/accordion/specs/NsAccordionHeader.spec.tsx +2 -1
- package/src/common/accordion/types.d.ts +6 -2
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nuskin/foundation-ui-components",
|
|
3
|
-
"version": "1.22.
|
|
3
|
+
"version": "1.22.1",
|
|
4
4
|
"description": "It is a foundation library written in react, that provides common components to all UI pages",
|
|
5
5
|
"main": "src/common/index.ts",
|
|
6
6
|
"repository": {
|
|
@@ -25,6 +25,7 @@ const NsAccordion = ({
|
|
|
25
25
|
openedIconName,
|
|
26
26
|
additionalProps,
|
|
27
27
|
isChild = false,
|
|
28
|
+
showEndIconWhenEmpty = false,
|
|
28
29
|
}: NsAccordionProps) => {
|
|
29
30
|
const defaultOpenIds = useMemo(() => {
|
|
30
31
|
return items
|
|
@@ -64,6 +65,7 @@ const NsAccordion = ({
|
|
|
64
65
|
</NsTypography>
|
|
65
66
|
}
|
|
66
67
|
variant={variant}
|
|
68
|
+
showEndIconWhenEmpty={showEndIconWhenEmpty}
|
|
67
69
|
/>
|
|
68
70
|
);
|
|
69
71
|
})}
|
|
@@ -40,6 +40,7 @@ const NsAccordionHeader = ({
|
|
|
40
40
|
startIcon,
|
|
41
41
|
invert,
|
|
42
42
|
cslp,
|
|
43
|
+
showEndIconWhenEmpty,
|
|
43
44
|
}: NsAccordionHeaderProps) => {
|
|
44
45
|
return (
|
|
45
46
|
<StyledHeader
|
|
@@ -58,9 +59,11 @@ const NsAccordionHeader = ({
|
|
|
58
59
|
) : (
|
|
59
60
|
title
|
|
60
61
|
)}
|
|
61
|
-
|
|
62
|
-
<
|
|
63
|
-
|
|
62
|
+
{showEndIconWhenEmpty ? (
|
|
63
|
+
<span className="header-icon">
|
|
64
|
+
<NsIcon name={isOpen ? openedIconName ?? 'arrowUp' : closedIconName ?? 'arrowDown'} />
|
|
65
|
+
</span>
|
|
66
|
+
) : null}
|
|
64
67
|
</StyledHeader>
|
|
65
68
|
);
|
|
66
69
|
};
|
|
@@ -25,6 +25,7 @@ const NsAccordionItem = ({
|
|
|
25
25
|
type,
|
|
26
26
|
cslp,
|
|
27
27
|
allowMultipleExpanded,
|
|
28
|
+
showEndIconWhenEmpty,
|
|
28
29
|
}: NsAccordionItemProps) => {
|
|
29
30
|
return (
|
|
30
31
|
<StyledToggleSection variant={variant}>
|
|
@@ -40,18 +41,21 @@ const NsAccordionItem = ({
|
|
|
40
41
|
variant={variant}
|
|
41
42
|
startIcon={startIcon}
|
|
42
43
|
cslp={cslp}
|
|
44
|
+
showEndIconWhenEmpty={showEndIconWhenEmpty}
|
|
43
45
|
/>
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
46
|
+
{content ? (
|
|
47
|
+
<NsCollapse
|
|
48
|
+
type={type}
|
|
49
|
+
isChild={isChild}
|
|
50
|
+
isOpen={isOpen}
|
|
51
|
+
variant={variant}
|
|
52
|
+
level={level}
|
|
53
|
+
invert={invert}
|
|
54
|
+
content={content}
|
|
55
|
+
cslp={cslp}
|
|
56
|
+
allowMultipleExpanded={allowMultipleExpanded}
|
|
57
|
+
/>
|
|
58
|
+
) : null}
|
|
55
59
|
</StyledToggleSection>
|
|
56
60
|
);
|
|
57
61
|
};
|
|
@@ -160,4 +160,24 @@ describe('NsAccordion', () => {
|
|
|
160
160
|
expect(c3.parentNode).toHaveStyle('opacity: 0');
|
|
161
161
|
}
|
|
162
162
|
});
|
|
163
|
+
it('7. shows end icon only when showEndIconWhenEmpty is true', async () => {
|
|
164
|
+
const items = generateContentArray(3, false);
|
|
165
|
+
const defaultProps = {
|
|
166
|
+
additionalProps: {
|
|
167
|
+
testid: 'test-accordion',
|
|
168
|
+
},
|
|
169
|
+
allowMultipleExpanded: false,
|
|
170
|
+
items,
|
|
171
|
+
variant: AccordionVariant.Compact,
|
|
172
|
+
level: 0,
|
|
173
|
+
invert: false,
|
|
174
|
+
showEndIconWhenEmpty: true,
|
|
175
|
+
};
|
|
176
|
+
const { getAllByTestId } = render(<NsAccordion {...defaultProps} />);
|
|
177
|
+
const elements = getAllByTestId('arrowDown');
|
|
178
|
+
|
|
179
|
+
elements.forEach((element) => {
|
|
180
|
+
expect(element).toBeInTheDocument();
|
|
181
|
+
});
|
|
182
|
+
});
|
|
163
183
|
});
|
|
@@ -83,7 +83,7 @@ describe('NsAccordionHeader', () => {
|
|
|
83
83
|
expect(container.querySelector('header')).toHaveClass('expanded');
|
|
84
84
|
});
|
|
85
85
|
|
|
86
|
-
it('6. renders with header icon', () => {
|
|
86
|
+
it('6. renders with header icon when showEndIconWhenEmpty is true', () => {
|
|
87
87
|
const onClick = jest.fn();
|
|
88
88
|
const { getByTestId } = render(
|
|
89
89
|
<NsAccordionHeader
|
|
@@ -92,6 +92,7 @@ describe('NsAccordionHeader', () => {
|
|
|
92
92
|
onClick={onClick}
|
|
93
93
|
invert={false}
|
|
94
94
|
isOpen
|
|
95
|
+
showEndIconWhenEmpty={true}
|
|
95
96
|
/>
|
|
96
97
|
);
|
|
97
98
|
// this icon refers to end icon which is either arrowUp or arrowDown
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
//types
|
|
1
2
|
import { ReactElement, ReactNode } from 'react';
|
|
2
3
|
import { AdditionalProps } from '../common.types';
|
|
3
4
|
import { NsIconNameType, NsIconProps } from '../icon';
|
|
@@ -8,9 +9,9 @@ export type AccordionItem = {
|
|
|
8
9
|
allowMultipleExpanded?: boolean;
|
|
9
10
|
type: AccordionContentType;
|
|
10
11
|
id: string;
|
|
11
|
-
content: string | AccordionItem[] | ReactElement;
|
|
12
|
+
content: string | AccordionItem[] | ReactElement | null;
|
|
12
13
|
icon?: NsIconProps;
|
|
13
|
-
title: string;
|
|
14
|
+
title: string | ReactElement;
|
|
14
15
|
isDefaultOpen?: boolean;
|
|
15
16
|
};
|
|
16
17
|
|
|
@@ -26,6 +27,7 @@ export type NsAccordionProps = AdditionalProps & {
|
|
|
26
27
|
/** NsIcon's icon name to be shown in closed state */
|
|
27
28
|
closedIconName?: NsIconNameType;
|
|
28
29
|
allowMultipleExpanded: boolean;
|
|
30
|
+
showEndIconWhenEmpty?: boolean;
|
|
29
31
|
};
|
|
30
32
|
|
|
31
33
|
type CommonAccordionType = {
|
|
@@ -47,6 +49,7 @@ export type NsAccordionHeaderProps = AdditionalProps & {
|
|
|
47
49
|
closedIconName?: NsIconNameType;
|
|
48
50
|
headerTypographyVariant?: Variants;
|
|
49
51
|
startIcon?: NsIconProps;
|
|
52
|
+
showEndIconWhenEmpty?: boolean;
|
|
50
53
|
} & Pick<CommonAccordionType, 'invert' | 'variant'>;
|
|
51
54
|
|
|
52
55
|
export type NsCollapseProps = AdditionalProps & {
|
|
@@ -78,4 +81,5 @@ export type NsAccordionItemProps = AdditionalProps & {
|
|
|
78
81
|
isChild: boolean;
|
|
79
82
|
type: AccordionContentType;
|
|
80
83
|
allowMultipleExpanded?: boolean;
|
|
84
|
+
showEndIconWhenEmpty?: boolean;
|
|
81
85
|
} & CommonAccordionType;
|