@availity/mui-accordion 2.0.2 → 2.1.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.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,25 @@
2
2
 
3
3
  This file was generated using [@jscutlery/semver](https://github.com/jscutlery/semver).
4
4
 
5
+ ## [2.1.0](https://github.com/Availity/element/compare/@availity/mui-accordion@2.0.2...@availity/mui-accordion@2.1.0) (2025-12-31)
6
+
7
+
8
+ ### Features
9
+
10
+ * added expanded flush variant to states as well as flush option to spacing, UXDS-999 ([0e43b14](https://github.com/Availity/element/commit/0e43b143f7a6afa64aede0066fae4ac9acaf6b2f))
11
+ * added flush variant for accordion component, UXDS-999 ([31e6a5b](https://github.com/Availity/element/commit/31e6a5b21a7cf47d9f6eded41f57baaafe2cea26))
12
+ * rounded the corners of nested accordions to 4px, UXDS-999 ([9e9013c](https://github.com/Availity/element/commit/9e9013c1a342b2a5cadba88ca8c6a09f3ec71a45))
13
+
14
+
15
+ ### Bug Fixes
16
+
17
+ * added flush as an option for variants on accordion storybook page, UXDS-999 ([3ad5734](https://github.com/Availity/element/commit/3ad5734da5f53e0ebc28846345ba616836e3f215))
18
+ * fixed accidental paste, UXDS-999 ([d12a542](https://github.com/Availity/element/commit/d12a54212456090e00ec9072fb0811025ff6e34c))
19
+ * fixed another naming issue, UXDS-999 ([fe02598](https://github.com/Availity/element/commit/fe0259892eca9f569a7d0cb5a6012455f638c5c3))
20
+ * fixed naming issue, UXDS-999 ([ddd24d2](https://github.com/Availity/element/commit/ddd24d299e6d953771b170e207386e65696684c5))
21
+ * fixed spacing between button and header, UXDS-999 ([a5be06f](https://github.com/Availity/element/commit/a5be06fd731e0d55a34165f359d7fc22c5cdb1bc))
22
+ * removed shared styles, UXDS-999 ([b150b28](https://github.com/Availity/element/commit/b150b28d2da33e0dc1e6b68f1e660e9de1d7b27f))
23
+
5
24
  ## [2.0.2](https://github.com/Availity/element/compare/@availity/mui-accordion@2.0.1...@availity/mui-accordion@2.0.2) (2025-12-09)
6
25
 
7
26
  ### Dependency Updates
package/dist/index.d.mts CHANGED
@@ -6,9 +6,10 @@ import { AccordionDetailsProps as AccordionDetailsProps$1 } from '@mui/material/
6
6
  import { AccordionSummaryProps as AccordionSummaryProps$1 } from '@mui/material/AccordionSummary';
7
7
  import { TypographyProps as TypographyProps$1 } from '@mui/material/Typography';
8
8
 
9
+ type Variant = 'filled' | 'outlined' | 'flush';
9
10
  type AccordionProps = {
10
11
  /** @default "filled" */
11
- variant?: 'filled' | 'outlined';
12
+ variant?: Variant;
12
13
  /**
13
14
  * Disable nested styling for child `Accordions`
14
15
  * @default false
package/dist/index.d.ts CHANGED
@@ -6,9 +6,10 @@ import { AccordionDetailsProps as AccordionDetailsProps$1 } from '@mui/material/
6
6
  import { AccordionSummaryProps as AccordionSummaryProps$1 } from '@mui/material/AccordionSummary';
7
7
  import { TypographyProps as TypographyProps$1 } from '@mui/material/Typography';
8
8
 
9
+ type Variant = 'filled' | 'outlined' | 'flush';
9
10
  type AccordionProps = {
10
11
  /** @default "filled" */
11
- variant?: 'filled' | 'outlined';
12
+ variant?: Variant;
12
13
  /**
13
14
  * Disable nested styling for child `Accordions`
14
15
  * @default false
package/dist/index.js CHANGED
@@ -94,10 +94,43 @@ var OutlinedAccordion = (0, import_styles.styled)(import_Accordion.default, {
94
94
  borderTop: `1px solid ${theme.palette.divider}`
95
95
  }
96
96
  }));
97
+ var FlushAccordion = (0, import_styles.styled)(import_Accordion.default, {
98
+ name: "MuiAccordion",
99
+ slot: "AvFlush",
100
+ overridesResolver: (props, styles) => styles.avFlush
101
+ })(({ theme }) => ({
102
+ border: 0,
103
+ borderBottom: `1px solid ${theme.palette.divider}`,
104
+ "&&": {
105
+ borderRadius: 0
106
+ },
107
+ "&:first-of-type": {
108
+ borderTop: `1px solid ${theme.palette.divider}`
109
+ },
110
+ "> .MuiAccordion-heading .MuiAccordionSummary-root:not(.Mui-focusVisible, :hover, :active)": {
111
+ backgroundColor: "transparent"
112
+ },
113
+ "> .MuiAccordion-heading .MuiAccordionSummary-root": {
114
+ padding: 8,
115
+ minHeight: 40
116
+ },
117
+ "> .MuiAccordion-heading .MuiAccordionSummary-root .MuiAccordionSummary-content": {
118
+ margin: 0
119
+ },
120
+ "& .MuiAccordionDetails-root .MuiAccordion-heading": {
121
+ borderRadius: 4
122
+ }
123
+ }));
124
+ var VariantComponent = {
125
+ filled: FilledAccordion,
126
+ outlined: OutlinedAccordion,
127
+ flush: FlushAccordion
128
+ };
97
129
  var Accordion = (0, import_react.forwardRef)((allProps, ref) => {
98
130
  const _a = allProps, { variant = "filled", disableNestedStyling = false, className } = _a, props = __objRest(_a, ["variant", "disableNestedStyling", "className"]);
99
- const classnames = `${variant === "filled" ? "MuiAccordion-avFilled" : "MuiAccordion-avOutlined"}${disableNestedStyling ? " Av-disableNested" : ""} ${className || ""}`;
100
- return variant === "filled" ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(FilledAccordion, __spreadProps(__spreadValues({ className: classnames }, props), { ref })) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(OutlinedAccordion, __spreadProps(__spreadValues({ className: classnames }, props), { ref }));
131
+ const Variant = VariantComponent[variant];
132
+ const classnames = `MuiAccordion-av${variant.charAt(0).toUpperCase() + variant.slice(1)}${disableNestedStyling ? " Av-disableNested" : ""} ${className || ""}`;
133
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Variant, __spreadProps(__spreadValues({ className: classnames }, props), { ref }));
101
134
  });
102
135
 
103
136
  // src/lib/AccordionActions.tsx
package/dist/index.mjs CHANGED
@@ -58,10 +58,43 @@ var OutlinedAccordion = styled(MuiAccordion, {
58
58
  borderTop: `1px solid ${theme.palette.divider}`
59
59
  }
60
60
  }));
61
+ var FlushAccordion = styled(MuiAccordion, {
62
+ name: "MuiAccordion",
63
+ slot: "AvFlush",
64
+ overridesResolver: (props, styles) => styles.avFlush
65
+ })(({ theme }) => ({
66
+ border: 0,
67
+ borderBottom: `1px solid ${theme.palette.divider}`,
68
+ "&&": {
69
+ borderRadius: 0
70
+ },
71
+ "&:first-of-type": {
72
+ borderTop: `1px solid ${theme.palette.divider}`
73
+ },
74
+ "> .MuiAccordion-heading .MuiAccordionSummary-root:not(.Mui-focusVisible, :hover, :active)": {
75
+ backgroundColor: "transparent"
76
+ },
77
+ "> .MuiAccordion-heading .MuiAccordionSummary-root": {
78
+ padding: 8,
79
+ minHeight: 40
80
+ },
81
+ "> .MuiAccordion-heading .MuiAccordionSummary-root .MuiAccordionSummary-content": {
82
+ margin: 0
83
+ },
84
+ "& .MuiAccordionDetails-root .MuiAccordion-heading": {
85
+ borderRadius: 4
86
+ }
87
+ }));
88
+ var VariantComponent = {
89
+ filled: FilledAccordion,
90
+ outlined: OutlinedAccordion,
91
+ flush: FlushAccordion
92
+ };
61
93
  var Accordion = forwardRef((allProps, ref) => {
62
94
  const _a = allProps, { variant = "filled", disableNestedStyling = false, className } = _a, props = __objRest(_a, ["variant", "disableNestedStyling", "className"]);
63
- const classnames = `${variant === "filled" ? "MuiAccordion-avFilled" : "MuiAccordion-avOutlined"}${disableNestedStyling ? " Av-disableNested" : ""} ${className || ""}`;
64
- return variant === "filled" ? /* @__PURE__ */ jsx(FilledAccordion, __spreadProps(__spreadValues({ className: classnames }, props), { ref })) : /* @__PURE__ */ jsx(OutlinedAccordion, __spreadProps(__spreadValues({ className: classnames }, props), { ref }));
95
+ const Variant = VariantComponent[variant];
96
+ const classnames = `MuiAccordion-av${variant.charAt(0).toUpperCase() + variant.slice(1)}${disableNestedStyling ? " Av-disableNested" : ""} ${className || ""}`;
97
+ return /* @__PURE__ */ jsx(Variant, __spreadProps(__spreadValues({ className: classnames }, props), { ref }));
65
98
  });
66
99
 
67
100
  // src/lib/AccordionActions.tsx
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@availity/mui-accordion",
3
- "version": "2.0.2",
3
+ "version": "2.1.0",
4
4
  "description": "Availity MUI Accordion Component - part of the @availity/element design system",
5
5
  "keywords": [
6
6
  "react",
@@ -13,7 +13,7 @@ const meta: Meta<typeof Accordion> = {
13
13
  tags: ['autodocs'],
14
14
  argTypes: {
15
15
  variant: {
16
- options: ['filled', 'outlined'],
16
+ options: ['filled', 'outlined', 'flush'],
17
17
  },
18
18
  },
19
19
  };
@@ -85,6 +85,28 @@ export const _Variants: StoryObj<typeof Accordion> = {
85
85
  </AccordionDetails>
86
86
  </Accordion>
87
87
  </Grid>
88
+ <Grid size={{ xs: 12 }}>
89
+ <Accordion {...args} variant='flush'>
90
+ <AccordionSummary aria-controls="flush-summary-content" id="flush-summary-header" secondary="Secondary">
91
+ Flush
92
+ </AccordionSummary>
93
+ <AccordionDetails>
94
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse malesuada lacus ex, sit amet blandit
95
+ leo lobortis eget.
96
+ <Box sx={{ mt: 2 }}>
97
+ <Accordion {...args} variant='flush'>
98
+ <AccordionSummary aria-controls="flush-nested-content" id="flush-nested-header">
99
+ Flush Nested Accordion
100
+ </AccordionSummary>
101
+ <AccordionDetails>
102
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse malesuada lacus ex, sit amet
103
+ blandit leo lobortis eget.
104
+ </AccordionDetails>
105
+ </Accordion>
106
+ </Box>
107
+ </AccordionDetails>
108
+ </Accordion>
109
+ </Grid>
88
110
  </Grid>
89
111
  ),
90
112
  };
@@ -97,13 +119,13 @@ export const _Variants: StoryObj<typeof Accordion> = {
97
119
  * this is due to Material's default gutter behavior when expanded along with how they overwrite the behavior when disabling the gutters.
98
120
  */
99
121
  export const _Spacing: StoryObj<typeof Accordion> = {
100
- render: () => (
122
+ render: (args: AccordionProps) => (
101
123
  <div>
102
124
  <Typography variant="h5" component="h2">
103
125
  Grouped
104
126
  </Typography>
105
127
  <div>
106
- <Accordion>
128
+ <Accordion {...args}>
107
129
  <AccordionSummary aria-controls="grouped-panel1-content" id="grouped-panel1-header">
108
130
  Accordion 1
109
131
  </AccordionSummary>
@@ -112,7 +134,7 @@ export const _Spacing: StoryObj<typeof Accordion> = {
112
134
  leo lobortis eget.
113
135
  </AccordionDetails>
114
136
  </Accordion>
115
- <Accordion>
137
+ <Accordion {...args}>
116
138
  <AccordionSummary aria-controls="grouped-panel2-content" id="grouped-panel2-header">
117
139
  Accordion 2
118
140
  </AccordionSummary>
@@ -121,7 +143,7 @@ export const _Spacing: StoryObj<typeof Accordion> = {
121
143
  leo lobortis eget.
122
144
  </AccordionDetails>
123
145
  </Accordion>
124
- <Accordion>
146
+ <Accordion {...args}>
125
147
  <AccordionSummary aria-controls="grouped-panel3-content" id="grouped-panel3-header">
126
148
  Accordion 3 with Actions
127
149
  </AccordionSummary>
@@ -140,7 +162,7 @@ export const _Spacing: StoryObj<typeof Accordion> = {
140
162
  Separated in a Grid
141
163
  </Typography>
142
164
  <Grid size={{ xs: 12 }}>
143
- <Accordion>
165
+ <Accordion {...args}>
144
166
  <AccordionSummary aria-controls="panel1-content" id="panel1-header">
145
167
  Accordion 4
146
168
  </AccordionSummary>
@@ -151,7 +173,7 @@ export const _Spacing: StoryObj<typeof Accordion> = {
151
173
  </Accordion>
152
174
  </Grid>
153
175
  <Grid size={{ xs: 12 }}>
154
- <Accordion>
176
+ <Accordion {...args}>
155
177
  <AccordionSummary aria-controls="panel2-content" id="panel2-header">
156
178
  Accordion 5
157
179
  </AccordionSummary>
@@ -162,7 +184,7 @@ export const _Spacing: StoryObj<typeof Accordion> = {
162
184
  </Accordion>
163
185
  </Grid>
164
186
  <Grid size={{ xs: 12 }}>
165
- <Accordion>
187
+ <Accordion {...args}>
166
188
  <AccordionSummary aria-controls="panel3-content" id="panel3-header">
167
189
  Accordion 6 with Actions
168
190
  </AccordionSummary>
@@ -220,6 +242,24 @@ export const _States: StoryObj<typeof Accordion> = {
220
242
  </AccordionDetails>
221
243
  </Accordion>
222
244
  </Grid>
245
+ <Grid size={{ xs: 12 }}>
246
+ <Accordion {...args} variant="flush" defaultExpanded>
247
+ <AccordionSummary aria-controls="flushexpanded-content" id="flushexpanded-header">
248
+ Flush Expanded
249
+ </AccordionSummary>
250
+ <AccordionDetails>
251
+ <Accordion>
252
+ <AccordionSummary aria-controls="flushexpanded-nested-content" id="flushexpanded-nested-header">
253
+ Flush Nested Accordion
254
+ </AccordionSummary>
255
+ <AccordionDetails>
256
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse malesuada lacus ex, sit amet
257
+ blandit leo lobortis eget.
258
+ </AccordionDetails>
259
+ </Accordion>
260
+ </AccordionDetails>
261
+ </Accordion>
262
+ </Grid>
223
263
  <Grid size={{ xs: 12 }}>
224
264
  <Accordion {...args}>
225
265
  <AccordionSummary aria-controls="focused-content" id="focused-header" className="Mui-focusVisible">
@@ -2,9 +2,11 @@ import MuiAccordion, { AccordionProps as MuiAccordionProps } from '@mui/material
2
2
  import { styled } from '@mui/material/styles';
3
3
  import { forwardRef } from 'react';
4
4
 
5
+ type Variant = 'filled' | 'outlined' | 'flush';
6
+
5
7
  export type AccordionProps = {
6
8
  /** @default "filled" */
7
- variant?: 'filled' | 'outlined';
9
+ variant?: Variant
8
10
  /**
9
11
  * Disable nested styling for child `Accordions`
10
12
  * @default false
@@ -33,19 +35,50 @@ const OutlinedAccordion = styled(MuiAccordion, {
33
35
  backgroundColor: theme.palette.background.paper,
34
36
  },
35
37
  '> .MuiCollapse-root > .MuiCollapse-wrapper > .MuiCollapse-wrapperInner > .MuiAccordion-region > .MuiAccordionDetails-root:first-of-type':
36
- {
37
- borderTop: `1px solid ${theme.palette.divider}`,
38
- },
38
+ {
39
+ borderTop: `1px solid ${theme.palette.divider}`,
40
+ },
41
+ }));
42
+
43
+ const FlushAccordion = styled(MuiAccordion, {
44
+ name: 'MuiAccordion',
45
+ slot: 'AvFlush',
46
+ overridesResolver: (props, styles) => styles.avFlush,
47
+ })(({ theme }) => ({
48
+ border: 0,
49
+ borderBottom: `1px solid ${theme.palette.divider}`,
50
+ '&&': {
51
+ borderRadius: 0,
52
+ },
53
+ '&:first-of-type': {
54
+ borderTop: `1px solid ${theme.palette.divider}`,
55
+ },
56
+ '> .MuiAccordion-heading .MuiAccordionSummary-root:not(.Mui-focusVisible, :hover, :active)': {
57
+ backgroundColor: 'transparent'
58
+ },
59
+ '> .MuiAccordion-heading .MuiAccordionSummary-root': {
60
+ padding: 8,
61
+ minHeight: 40,
62
+ },
63
+ '> .MuiAccordion-heading .MuiAccordionSummary-root .MuiAccordionSummary-content': {
64
+ margin: 0
65
+ },
66
+ '& .MuiAccordionDetails-root .MuiAccordion-heading': {
67
+ borderRadius: 4,
68
+ }
39
69
  }));
40
70
 
71
+ const VariantComponent: Record<Variant, typeof FilledAccordion> = {
72
+ filled: FilledAccordion,
73
+ outlined: OutlinedAccordion,
74
+ flush: FlushAccordion
75
+ }
76
+
41
77
  export const Accordion = forwardRef<HTMLDivElement, AccordionProps>((allProps, ref) => {
42
78
  const { variant = 'filled', disableNestedStyling = false, className, ...props } = allProps;
79
+ const Variant = VariantComponent[variant]
43
80
 
44
- const classnames = `${variant === 'filled' ? 'MuiAccordion-avFilled' : 'MuiAccordion-avOutlined'}${disableNestedStyling ? ' Av-disableNested' : ''} ${className || ''}`;
81
+ const classnames = `MuiAccordion-av${variant.charAt(0).toUpperCase() + variant.slice(1)}${disableNestedStyling ? ' Av-disableNested' : ''} ${className || ''}`;
45
82
 
46
- return variant === 'filled' ? (
47
- <FilledAccordion className={classnames} {...props} ref={ref} />
48
- ) : (
49
- <OutlinedAccordion className={classnames} {...props} ref={ref} />
50
- );
83
+ return <Variant className={classnames} {...props} ref={ref} />;
51
84
  });