react-image-accordion 1.1.6 → 1.2.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/README.md CHANGED
@@ -73,6 +73,8 @@ function MyComponent() {
73
73
  AccordionWidth={AccordionWidth}
74
74
  AccordionHeight={AccordionHeight}
75
75
  ContentSize=[ContentSize]
76
+ onClick={}
77
+ ShowButton={true/false}
76
78
  />
77
79
  );
78
80
  }
@@ -93,7 +95,8 @@ function MyComponent() {
93
95
  | AccordionWidth | css /optional| 50rem | Accordion Width |
94
96
  | AccordionHeight | css /optional| 30rem | Accordion Height |
95
97
  | ContentSize |Array /optional|[0,1,2,3,4]*| Content font size |
96
-
98
+ | onClick | onCLick | | onClick ATC event |
99
+ | ShowButton | boolean | false | show or hid button |
97
100
 
98
101
  *[0,1,2,3,4]
99
102
  ```
@@ -124,7 +127,9 @@ export const test = () => {
124
127
  accordionData= {MockAccordion}
125
128
  AccordionWidth= "40rem"
126
129
  AccordionHeight= "30rem"
127
- ContentSize= ["1rem", "1.2rem", "1.5rem", "1.8rem", "2rem"]
130
+ ContentSize={[".5rem", ".5rem", ".6rem", ".7rem", "1.1rem"]}
131
+ ShowButton= {false},
132
+ onClick= {(e) => console.log(e.id, e.title)},
128
133
  />
129
134
  );
130
135
  };
package/dist/index.es.js CHANGED
@@ -27,14 +27,16 @@ function styleInject(css, ref) {
27
27
  }
28
28
  }
29
29
 
30
- var css_248z = "*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\nhtml {\n color-scheme: dark;\n}\n\nbody {\n display: grid;\n justify-content: center;\n align-content: center;\n min-height: 100vh;\n\n margin: 0;\n font-family: system-ui;\n font-size: 1.125rem;\n line-height: 1.6;\n}\n\nimg {\n max-width: 100%;\n display: block;\n}\n\n.wrapper {\n /* max-width: 50rem; */\n margin-inline: auto;\n padding-inline: 1rem;\n}\n\n.accordion {\n --_button-size: 3rem;\n --_panel-padding: 0.75rem;\n --_panel-gap: 1rem;\n\n display: flex;\n flex-direction: column;\n gap: 1rem;\n}\n\n@media (min-width: 45em) {\n .accordion {\n flex-direction: row;\n height: 30rem;\n }\n}\n\n.accordion * {\n margin: 0;\n}\n\n.accordion-panel {\n position: relative;\n isolation: isolate;\n flex-basis: calc((var(--_panel-padding) * 2) + var(--_button-size));\n overflow: hidden;\n padding: var(--_panel-padding);\n padding-right: calc(var(--_panel-padding) * 4);\n border-radius: calc(((var(--_panel-padding) * 2) + var(--_button-size)) / 2);\n cursor: pointer;\n}\n\n@media (prefers-reduced-motion: no-preference) {\n .accordion-panel {\n transition: flex-basis 500ms, flex-grow 500ms;\n }\n}\n\n.accordion-panel:nth-child(1) {\n --_panel-color: red;\n}\n.accordion-panel:nth-child(2) {\n --_panel-color: blue;\n}\n.accordion-panel:nth-child(3) {\n --_panel-color: green;\n}\n.accordion-panel:nth-child(4) {\n --_panel-color: yellow;\n}\n.accordion-panel:nth-child(5) {\n --_panel-color: orange;\n}\n.accordion-panel:nth-child(6) {\n --_panel-color: purple;\n}\n.accordion-panel:nth-child(7) {\n --_panel-color: pink;\n}\n.accordion-panel:nth-child(8) {\n --_panel-color: brown;\n}\n.accordion-panel:nth-child(9) {\n --_panel-color: cyan;\n}\n.accordion-panel:nth-child(10) {\n --_panel-color: magenta;\n}\n\n.accordion-panel:has([aria-expanded=\"true\"]) {\n flex-basis: clamp(15rem, 40vh, 20rem);\n flex-grow: 1;\n}\n\n.accordion-trigger {\n outline: 0 !important;\n}\n\n.accordion-panel:focus-within {\n outline: 3px solid var(--_panel-color);\n outline-offset: 4px;\n}\n\n.accordion-content > p {\n transform: translateY(2rem);\n opacity: 0;\n margin-left: calc(var(--_button-size) + var(--_panel-gap));\n}\n\n@media (prefers-reduced-motion: no-preference) {\n .accordion-panel:has([aria-expanded=\"true\"]) .accordion-content > p {\n transition: transform 500ms 500ms, opacity 500ms 500ms;\n }\n}\n\n.accordion-panel:has([aria-expanded=\"true\"]) .accordion-content > p {\n transform: translateY(0);\n opacity: 1;\n}\n\n.accordion-title {\n font-size: 1.5rem;\n font-weight: 700;\n position: relative;\n isolation: isolate;\n display: grid;\n align-items: center;\n}\n\n.accordion-panel:has([aria-expanded=\"false\"]) .accordion-title {\n display: none;\n}\n\n@media (max-width: 44.999em) {\n .accordion-title::after {\n content: \"\";\n position: absolute;\n\n left: calc((var(--_panel-gap) + var(--_button-size)) * -1);\n width: calc(100% + (var(--_button-size) * 2));\n height: var(--_button-size);\n background: hsl(0 0% 0% /0.55);\n z-index: -1;\n border-radius: 100vw;\n }\n}\n\n.accordion-image {\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n z-index: -1;\n transition: filer 500ms;\n}\n\n.accordion-panel:has([aria-expanded=\"true\"]) .accordion-image {\n filter: brightness(0.5);\n}\n.accordion-trigger {\n display: flex;\n align-items: center;\n flex-direction: row-reverse;\n gap: var(--_panel-gap);\n background: transparent;\n border: 0;\n padding: 0;\n}\n.accordion-icon {\n fill: var(--_panel-color);\n background: hsl(0 0% 0% /0.55);\n width: var(--_button-size);\n aspect-ratio: 1/1;\n padding: 0.75rem;\n border-radius: 50%;\n z-index: 10;\n}\n";
30
+ var css_248z = "*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\nhtml {\n color-scheme: dark;\n}\n\nbody {\n display: grid;\n justify-content: center;\n align-content: center;\n min-height: 100vh;\n\n margin: 0;\n font-family: system-ui;\n font-size: 1.125rem;\n line-height: 1.6;\n}\n\nimg {\n max-width: 100%;\n display: block;\n}\n\n.wrapper {\n /* max-width: 50rem; */\n margin-inline: auto;\n padding-inline: 1rem;\n}\n\n.accordion {\n --_button-size: 3rem;\n --_panel-padding: 0.75rem;\n --_panel-gap: 1rem;\n\n display: flex;\n flex-direction: column;\n gap: 1rem;\n}\n\n@media (min-width: 45em) {\n .accordion {\n flex-direction: row;\n height: 30rem;\n }\n}\n\n.accordion * {\n margin: 0;\n}\n\n.accordion-panel {\n position: relative;\n isolation: isolate;\n flex-basis: calc((var(--_panel-padding) * 2) + var(--_button-size));\n overflow: hidden;\n padding: var(--_panel-padding);\n padding-right: calc(var(--_panel-padding) * 4);\n border-radius: calc(((var(--_panel-padding) * 2) + var(--_button-size)) / 2);\n cursor: pointer;\n}\n\n@media (prefers-reduced-motion: no-preference) {\n .accordion-panel {\n transition: flex-basis 500ms, flex-grow 500ms;\n }\n}\n\n.accordion-panel:nth-child(1) {\n --_panel-color: red;\n}\n.accordion-panel:nth-child(2) {\n --_panel-color: blue;\n}\n.accordion-panel:nth-child(3) {\n --_panel-color: green;\n}\n.accordion-panel:nth-child(4) {\n --_panel-color: yellow;\n}\n.accordion-panel:nth-child(5) {\n --_panel-color: orange;\n}\n.accordion-panel:nth-child(6) {\n --_panel-color: purple;\n}\n.accordion-panel:nth-child(7) {\n --_panel-color: pink;\n}\n.accordion-panel:nth-child(8) {\n --_panel-color: brown;\n}\n.accordion-panel:nth-child(9) {\n --_panel-color: cyan;\n}\n.accordion-panel:nth-child(10) {\n --_panel-color: magenta;\n}\n\n.accordion-panel:has([aria-expanded=\"true\"]) {\n flex-basis: clamp(15rem, 40vh, 20rem);\n flex-grow: 1;\n}\n\n.accordion-trigger {\n outline: 0 !important;\n}\n\n.accordion-panel:focus-within {\n outline: 3px solid var(--_panel-color);\n outline-offset: 4px;\n}\n\n.accordion-content > p {\n transform: translateY(2rem);\n opacity: 0;\n margin-left: calc(var(--_button-size) + var(--_panel-gap));\n}\n\n@media (prefers-reduced-motion: no-preference) {\n .accordion-panel:has([aria-expanded=\"true\"]) .accordion-content > p {\n transition: transform 500ms 500ms, opacity 500ms 500ms;\n }\n}\n\n.accordion-panel:has([aria-expanded=\"true\"]) .accordion-content > p {\n transform: translateY(0);\n opacity: 1;\n}\n\n.accordion-title {\n font-size: 1.5rem;\n font-weight: 700;\n position: relative;\n isolation: isolate;\n display: grid;\n align-items: center;\n}\n\n.accordion-panel:has([aria-expanded=\"false\"]) .accordion-Link,\n.accordion-panel:has([aria-expanded=\"false\"]) .accordion-title {\n display: none;\n}\n\n@media (max-width: 44.999em) {\n .accordion-title::after {\n content: \"\";\n position: absolute;\n\n left: calc((var(--_panel-gap) + var(--_button-size)) * -1);\n width: calc(100% + (var(--_button-size) * 2));\n height: var(--_button-size);\n background: hsl(0 0% 0% /0.55);\n z-index: -1;\n border-radius: 100vw;\n }\n}\n\n.accordion-Link {\n all: revert;\n display: block;\n position: absolute;\n left: -0.1rem;\n bottom: 0;\n margin: 0.75rem;\n width: 10rem;\n height: var(--_button-size);\n background: hsl(0 0% 0% /0.55);\n border-radius: 100vw;\n padding: 0.75rem;\n font-weight: bolder;\n}\n\n.accordion-image {\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n z-index: -1;\n transition: filer 500ms;\n}\n\n.accordion-panel:has([aria-expanded=\"true\"]) .accordion-image {\n filter: brightness(0.5);\n}\n.accordion-trigger {\n display: flex;\n align-items: center;\n flex-direction: row-reverse;\n gap: var(--_panel-gap);\n background: transparent;\n border: 0;\n padding: 0;\n}\n.accordion-icon {\n fill: var(--_panel-color);\n background: hsl(0 0% 0% /0.55);\n width: var(--_button-size);\n aspect-ratio: 1/1;\n padding: 0.75rem;\n border-radius: 50%;\n z-index: 10;\n}\n";
31
31
  styleInject(css_248z);
32
32
 
33
33
  function UseImageAccordion({
34
34
  accordionData,
35
35
  AccordionWidth,
36
36
  AccordionHeight,
37
- ContentSize
37
+ ContentSize,
38
+ onClick,
39
+ ShowButton
38
40
  }) {
39
41
  const [activePanel, setActivePanel] = useState(null);
40
42
  const ContentSizeFont = ContentSize || [];
@@ -48,7 +50,7 @@ function UseImageAccordion({
48
50
  });
49
51
  }
50
52
  const HeightStyle = `
51
- @media (min-width: 480px) {
53
+ @media (min-width: 768px) {
52
54
  .AccHeight {
53
55
  height: ${AccordionHeight};
54
56
  }
@@ -116,11 +118,23 @@ function UseImageAccordion({
116
118
  scoped: true
117
119
  }, css), /*#__PURE__*/React.createElement("div", {
118
120
  className: "accordion-content ContentSize",
121
+ style: {
122
+ height: `calc(${AccordionHeight} - 5rem)`
123
+ },
119
124
  id: item.id,
120
125
  "aria-labelledby": item.id,
121
126
  "aria-hidden": activePanel !== item.id,
122
127
  role: "region"
123
- }, /*#__PURE__*/React.createElement("p", null, item.content), /*#__PURE__*/React.createElement("img", {
128
+ }, /*#__PURE__*/React.createElement("p", null, item.content), ShowButton && /*#__PURE__*/React.createElement("button", {
129
+ className: "accordion-Link",
130
+ onClick: e => {
131
+ e.stopPropagation();
132
+ onClick({
133
+ id: item.id,
134
+ title: item.title
135
+ });
136
+ }
137
+ }, item.title), /*#__PURE__*/React.createElement("img", {
124
138
  className: "accordion-image",
125
139
  src: item.image,
126
140
  alt: item.alt
@@ -131,13 +145,17 @@ const ReactImageAccordion = ({
131
145
  accordionData,
132
146
  AccordionWidth,
133
147
  AccordionHeight,
134
- ContentSize
148
+ ContentSize,
149
+ onClick,
150
+ ShowButton
135
151
  }) => {
136
152
  return /*#__PURE__*/React.createElement(UseImageAccordion, {
137
153
  accordionData: accordionData,
138
154
  AccordionWidth: AccordionWidth,
139
155
  AccordionHeight: AccordionHeight,
140
- ContentSize: ContentSize
156
+ ContentSize: ContentSize,
157
+ onClick: onClick,
158
+ ShowButton: ShowButton
141
159
  });
142
160
  };
143
161
 
package/dist/index.js CHANGED
@@ -35,14 +35,16 @@ function styleInject(css, ref) {
35
35
  }
36
36
  }
37
37
 
38
- var css_248z = "*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\nhtml {\n color-scheme: dark;\n}\n\nbody {\n display: grid;\n justify-content: center;\n align-content: center;\n min-height: 100vh;\n\n margin: 0;\n font-family: system-ui;\n font-size: 1.125rem;\n line-height: 1.6;\n}\n\nimg {\n max-width: 100%;\n display: block;\n}\n\n.wrapper {\n /* max-width: 50rem; */\n margin-inline: auto;\n padding-inline: 1rem;\n}\n\n.accordion {\n --_button-size: 3rem;\n --_panel-padding: 0.75rem;\n --_panel-gap: 1rem;\n\n display: flex;\n flex-direction: column;\n gap: 1rem;\n}\n\n@media (min-width: 45em) {\n .accordion {\n flex-direction: row;\n height: 30rem;\n }\n}\n\n.accordion * {\n margin: 0;\n}\n\n.accordion-panel {\n position: relative;\n isolation: isolate;\n flex-basis: calc((var(--_panel-padding) * 2) + var(--_button-size));\n overflow: hidden;\n padding: var(--_panel-padding);\n padding-right: calc(var(--_panel-padding) * 4);\n border-radius: calc(((var(--_panel-padding) * 2) + var(--_button-size)) / 2);\n cursor: pointer;\n}\n\n@media (prefers-reduced-motion: no-preference) {\n .accordion-panel {\n transition: flex-basis 500ms, flex-grow 500ms;\n }\n}\n\n.accordion-panel:nth-child(1) {\n --_panel-color: red;\n}\n.accordion-panel:nth-child(2) {\n --_panel-color: blue;\n}\n.accordion-panel:nth-child(3) {\n --_panel-color: green;\n}\n.accordion-panel:nth-child(4) {\n --_panel-color: yellow;\n}\n.accordion-panel:nth-child(5) {\n --_panel-color: orange;\n}\n.accordion-panel:nth-child(6) {\n --_panel-color: purple;\n}\n.accordion-panel:nth-child(7) {\n --_panel-color: pink;\n}\n.accordion-panel:nth-child(8) {\n --_panel-color: brown;\n}\n.accordion-panel:nth-child(9) {\n --_panel-color: cyan;\n}\n.accordion-panel:nth-child(10) {\n --_panel-color: magenta;\n}\n\n.accordion-panel:has([aria-expanded=\"true\"]) {\n flex-basis: clamp(15rem, 40vh, 20rem);\n flex-grow: 1;\n}\n\n.accordion-trigger {\n outline: 0 !important;\n}\n\n.accordion-panel:focus-within {\n outline: 3px solid var(--_panel-color);\n outline-offset: 4px;\n}\n\n.accordion-content > p {\n transform: translateY(2rem);\n opacity: 0;\n margin-left: calc(var(--_button-size) + var(--_panel-gap));\n}\n\n@media (prefers-reduced-motion: no-preference) {\n .accordion-panel:has([aria-expanded=\"true\"]) .accordion-content > p {\n transition: transform 500ms 500ms, opacity 500ms 500ms;\n }\n}\n\n.accordion-panel:has([aria-expanded=\"true\"]) .accordion-content > p {\n transform: translateY(0);\n opacity: 1;\n}\n\n.accordion-title {\n font-size: 1.5rem;\n font-weight: 700;\n position: relative;\n isolation: isolate;\n display: grid;\n align-items: center;\n}\n\n.accordion-panel:has([aria-expanded=\"false\"]) .accordion-title {\n display: none;\n}\n\n@media (max-width: 44.999em) {\n .accordion-title::after {\n content: \"\";\n position: absolute;\n\n left: calc((var(--_panel-gap) + var(--_button-size)) * -1);\n width: calc(100% + (var(--_button-size) * 2));\n height: var(--_button-size);\n background: hsl(0 0% 0% /0.55);\n z-index: -1;\n border-radius: 100vw;\n }\n}\n\n.accordion-image {\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n z-index: -1;\n transition: filer 500ms;\n}\n\n.accordion-panel:has([aria-expanded=\"true\"]) .accordion-image {\n filter: brightness(0.5);\n}\n.accordion-trigger {\n display: flex;\n align-items: center;\n flex-direction: row-reverse;\n gap: var(--_panel-gap);\n background: transparent;\n border: 0;\n padding: 0;\n}\n.accordion-icon {\n fill: var(--_panel-color);\n background: hsl(0 0% 0% /0.55);\n width: var(--_button-size);\n aspect-ratio: 1/1;\n padding: 0.75rem;\n border-radius: 50%;\n z-index: 10;\n}\n";
38
+ var css_248z = "*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\nhtml {\n color-scheme: dark;\n}\n\nbody {\n display: grid;\n justify-content: center;\n align-content: center;\n min-height: 100vh;\n\n margin: 0;\n font-family: system-ui;\n font-size: 1.125rem;\n line-height: 1.6;\n}\n\nimg {\n max-width: 100%;\n display: block;\n}\n\n.wrapper {\n /* max-width: 50rem; */\n margin-inline: auto;\n padding-inline: 1rem;\n}\n\n.accordion {\n --_button-size: 3rem;\n --_panel-padding: 0.75rem;\n --_panel-gap: 1rem;\n\n display: flex;\n flex-direction: column;\n gap: 1rem;\n}\n\n@media (min-width: 45em) {\n .accordion {\n flex-direction: row;\n height: 30rem;\n }\n}\n\n.accordion * {\n margin: 0;\n}\n\n.accordion-panel {\n position: relative;\n isolation: isolate;\n flex-basis: calc((var(--_panel-padding) * 2) + var(--_button-size));\n overflow: hidden;\n padding: var(--_panel-padding);\n padding-right: calc(var(--_panel-padding) * 4);\n border-radius: calc(((var(--_panel-padding) * 2) + var(--_button-size)) / 2);\n cursor: pointer;\n}\n\n@media (prefers-reduced-motion: no-preference) {\n .accordion-panel {\n transition: flex-basis 500ms, flex-grow 500ms;\n }\n}\n\n.accordion-panel:nth-child(1) {\n --_panel-color: red;\n}\n.accordion-panel:nth-child(2) {\n --_panel-color: blue;\n}\n.accordion-panel:nth-child(3) {\n --_panel-color: green;\n}\n.accordion-panel:nth-child(4) {\n --_panel-color: yellow;\n}\n.accordion-panel:nth-child(5) {\n --_panel-color: orange;\n}\n.accordion-panel:nth-child(6) {\n --_panel-color: purple;\n}\n.accordion-panel:nth-child(7) {\n --_panel-color: pink;\n}\n.accordion-panel:nth-child(8) {\n --_panel-color: brown;\n}\n.accordion-panel:nth-child(9) {\n --_panel-color: cyan;\n}\n.accordion-panel:nth-child(10) {\n --_panel-color: magenta;\n}\n\n.accordion-panel:has([aria-expanded=\"true\"]) {\n flex-basis: clamp(15rem, 40vh, 20rem);\n flex-grow: 1;\n}\n\n.accordion-trigger {\n outline: 0 !important;\n}\n\n.accordion-panel:focus-within {\n outline: 3px solid var(--_panel-color);\n outline-offset: 4px;\n}\n\n.accordion-content > p {\n transform: translateY(2rem);\n opacity: 0;\n margin-left: calc(var(--_button-size) + var(--_panel-gap));\n}\n\n@media (prefers-reduced-motion: no-preference) {\n .accordion-panel:has([aria-expanded=\"true\"]) .accordion-content > p {\n transition: transform 500ms 500ms, opacity 500ms 500ms;\n }\n}\n\n.accordion-panel:has([aria-expanded=\"true\"]) .accordion-content > p {\n transform: translateY(0);\n opacity: 1;\n}\n\n.accordion-title {\n font-size: 1.5rem;\n font-weight: 700;\n position: relative;\n isolation: isolate;\n display: grid;\n align-items: center;\n}\n\n.accordion-panel:has([aria-expanded=\"false\"]) .accordion-Link,\n.accordion-panel:has([aria-expanded=\"false\"]) .accordion-title {\n display: none;\n}\n\n@media (max-width: 44.999em) {\n .accordion-title::after {\n content: \"\";\n position: absolute;\n\n left: calc((var(--_panel-gap) + var(--_button-size)) * -1);\n width: calc(100% + (var(--_button-size) * 2));\n height: var(--_button-size);\n background: hsl(0 0% 0% /0.55);\n z-index: -1;\n border-radius: 100vw;\n }\n}\n\n.accordion-Link {\n all: revert;\n display: block;\n position: absolute;\n left: -0.1rem;\n bottom: 0;\n margin: 0.75rem;\n width: 10rem;\n height: var(--_button-size);\n background: hsl(0 0% 0% /0.55);\n border-radius: 100vw;\n padding: 0.75rem;\n font-weight: bolder;\n}\n\n.accordion-image {\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n z-index: -1;\n transition: filer 500ms;\n}\n\n.accordion-panel:has([aria-expanded=\"true\"]) .accordion-image {\n filter: brightness(0.5);\n}\n.accordion-trigger {\n display: flex;\n align-items: center;\n flex-direction: row-reverse;\n gap: var(--_panel-gap);\n background: transparent;\n border: 0;\n padding: 0;\n}\n.accordion-icon {\n fill: var(--_panel-color);\n background: hsl(0 0% 0% /0.55);\n width: var(--_button-size);\n aspect-ratio: 1/1;\n padding: 0.75rem;\n border-radius: 50%;\n z-index: 10;\n}\n";
39
39
  styleInject(css_248z);
40
40
 
41
41
  function UseImageAccordion({
42
42
  accordionData,
43
43
  AccordionWidth,
44
44
  AccordionHeight,
45
- ContentSize
45
+ ContentSize,
46
+ onClick,
47
+ ShowButton
46
48
  }) {
47
49
  const [activePanel, setActivePanel] = React.useState(null);
48
50
  const ContentSizeFont = ContentSize || [];
@@ -56,7 +58,7 @@ function UseImageAccordion({
56
58
  });
57
59
  }
58
60
  const HeightStyle = `
59
- @media (min-width: 480px) {
61
+ @media (min-width: 768px) {
60
62
  .AccHeight {
61
63
  height: ${AccordionHeight};
62
64
  }
@@ -124,11 +126,23 @@ function UseImageAccordion({
124
126
  scoped: true
125
127
  }, css), /*#__PURE__*/React__default["default"].createElement("div", {
126
128
  className: "accordion-content ContentSize",
129
+ style: {
130
+ height: `calc(${AccordionHeight} - 5rem)`
131
+ },
127
132
  id: item.id,
128
133
  "aria-labelledby": item.id,
129
134
  "aria-hidden": activePanel !== item.id,
130
135
  role: "region"
131
- }, /*#__PURE__*/React__default["default"].createElement("p", null, item.content), /*#__PURE__*/React__default["default"].createElement("img", {
136
+ }, /*#__PURE__*/React__default["default"].createElement("p", null, item.content), ShowButton && /*#__PURE__*/React__default["default"].createElement("button", {
137
+ className: "accordion-Link",
138
+ onClick: e => {
139
+ e.stopPropagation();
140
+ onClick({
141
+ id: item.id,
142
+ title: item.title
143
+ });
144
+ }
145
+ }, item.title), /*#__PURE__*/React__default["default"].createElement("img", {
132
146
  className: "accordion-image",
133
147
  src: item.image,
134
148
  alt: item.alt
@@ -139,13 +153,17 @@ const ReactImageAccordion = ({
139
153
  accordionData,
140
154
  AccordionWidth,
141
155
  AccordionHeight,
142
- ContentSize
156
+ ContentSize,
157
+ onClick,
158
+ ShowButton
143
159
  }) => {
144
160
  return /*#__PURE__*/React__default["default"].createElement(UseImageAccordion, {
145
161
  accordionData: accordionData,
146
162
  AccordionWidth: AccordionWidth,
147
163
  AccordionHeight: AccordionHeight,
148
- ContentSize: ContentSize
164
+ ContentSize: ContentSize,
165
+ onClick: onClick,
166
+ ShowButton: ShowButton
149
167
  });
150
168
  };
151
169
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-image-accordion",
3
- "version": "1.1.6",
3
+ "version": "1.2.0",
4
4
  "description": "Accordion component for React",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.es.js",
@@ -58,7 +58,7 @@
58
58
  },
59
59
  "dependencies": {
60
60
  "@rollup/plugin-terser": "^0.4.1",
61
- "react-image-accordion": "^1.0.8",
61
+ "react-image-accordion": "^1.1.6",
62
62
  "rollup-plugin-local-resolve": "^1.0.7",
63
63
  "rollup-plugin-terser": "^7.0.2"
64
64
  }
@@ -140,6 +140,7 @@ img {
140
140
  align-items: center;
141
141
  }
142
142
 
143
+ .accordion-panel:has([aria-expanded="false"]) .accordion-Link,
143
144
  .accordion-panel:has([aria-expanded="false"]) .accordion-title {
144
145
  display: none;
145
146
  }
@@ -158,6 +159,21 @@ img {
158
159
  }
159
160
  }
160
161
 
162
+ .accordion-Link {
163
+ all: revert;
164
+ display: block;
165
+ position: absolute;
166
+ left: -0.1rem;
167
+ bottom: 0;
168
+ margin: 0.75rem;
169
+ width: 10rem;
170
+ height: var(--_button-size);
171
+ background: hsl(0 0% 0% /0.55);
172
+ border-radius: 100vw;
173
+ padding: 0.75rem;
174
+ font-weight: bolder;
175
+ }
176
+
161
177
  .accordion-image {
162
178
  position: absolute;
163
179
  inset: 0;
@@ -6,6 +6,8 @@ export const ReactImageAccordion = ({
6
6
  AccordionWidth,
7
7
  AccordionHeight,
8
8
  ContentSize,
9
+ onClick,
10
+ ShowButton,
9
11
  }) => {
10
12
  return (
11
13
  <UseImageAccordion
@@ -13,6 +15,8 @@ export const ReactImageAccordion = ({
13
15
  AccordionWidth={AccordionWidth}
14
16
  AccordionHeight={AccordionHeight}
15
17
  ContentSize={ContentSize}
18
+ onClick={onClick}
19
+ ShowButton={ShowButton}
16
20
  />
17
21
  );
18
22
  };
@@ -6,6 +6,8 @@ function UseImageAccordion({
6
6
  AccordionWidth,
7
7
  AccordionHeight,
8
8
  ContentSize,
9
+ onClick,
10
+ ShowButton,
9
11
  }) {
10
12
  const [activePanel, setActivePanel] = useState(null);
11
13
  const ContentSizeFont = ContentSize || [];
@@ -21,7 +23,7 @@ function UseImageAccordion({
21
23
  }
22
24
 
23
25
  const HeightStyle = `
24
- @media (min-width: 480px) {
26
+ @media (min-width: 768px) {
25
27
  .AccHeight {
26
28
  height: ${AccordionHeight};
27
29
  }
@@ -92,12 +94,26 @@ function UseImageAccordion({
92
94
  <style scoped>{css}</style>
93
95
  <div
94
96
  className="accordion-content ContentSize"
97
+ style={{ height: `calc(${AccordionHeight} - 5rem)` }}
95
98
  id={item.id}
96
99
  aria-labelledby={item.id}
97
100
  aria-hidden={activePanel !== item.id}
98
101
  role="region"
99
102
  >
100
103
  <p>{item.content}</p>
104
+
105
+ {ShowButton && (
106
+ <button
107
+ className="accordion-Link"
108
+ onClick={(e) => {
109
+ e.stopPropagation();
110
+ onClick({ id: item.id, title: item.title });
111
+ }}
112
+ >
113
+ {item.title}
114
+ </button>
115
+ )}
116
+
101
117
  <img
102
118
  className="accordion-image"
103
119
  src={item.image}
@@ -40,7 +40,7 @@
40
40
  "svg": "../svg/image-svgrepo-com.svg"
41
41
  },
42
42
  {
43
- "title": "Scuba diving",
43
+ "title": "sleep",
44
44
  "id": 6,
45
45
  "image": "https://picsum.photos/401/602",
46
46
  "alt": "fifth panel image",
@@ -48,7 +48,7 @@
48
48
  "svg": "../svg/bitcoin-svgrepo-com.svg"
49
49
  },
50
50
  {
51
- "title": "Scuba diving",
51
+ "title": "running",
52
52
  "id": 7,
53
53
  "image": "https://picsum.photos/402/602",
54
54
  "alt": "fifth panel image",
@@ -56,7 +56,7 @@
56
56
  "svg": "../svg/chrome-svgrepo-com.svg"
57
57
  },
58
58
  {
59
- "title": "Scuba diving",
59
+ "title": "Cooking",
60
60
  "id": 8,
61
61
  "image": "https://picsum.photos/399/599",
62
62
  "alt": "fifth panel image",
@@ -15,4 +15,6 @@ App.args = {
15
15
  AccordionWidth: "100%",
16
16
  AccordionHeight: "30rem",
17
17
  ContentSize: ["0.5rem", "0.8rem", "1rem", "1.2rem", "1.5rem"],
18
+ onClick: (e) => console.log(e.id, e.title),
19
+ ShowButton: false,
18
20
  };