react-image-accordion 1.1.6 → 1.1.8

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: relative;\n left: -0.1rem;\n /* bottom: 1rem; */\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,28 @@ 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
+ style: {
131
+ bottom: `calc((${AccordionHeight} - 12rem - 5px) * -1 )`,
132
+ zIndex: "100",
133
+ isolation: "isolate"
134
+ },
135
+ onClick: e => {
136
+ e.stopPropagation();
137
+ onClick({
138
+ id: item.id,
139
+ title: item.title
140
+ });
141
+ }
142
+ }, item.title), /*#__PURE__*/React.createElement("img", {
124
143
  className: "accordion-image",
125
144
  src: item.image,
126
145
  alt: item.alt
@@ -131,13 +150,17 @@ const ReactImageAccordion = ({
131
150
  accordionData,
132
151
  AccordionWidth,
133
152
  AccordionHeight,
134
- ContentSize
153
+ ContentSize,
154
+ onClick,
155
+ ShowButton
135
156
  }) => {
136
157
  return /*#__PURE__*/React.createElement(UseImageAccordion, {
137
158
  accordionData: accordionData,
138
159
  AccordionWidth: AccordionWidth,
139
160
  AccordionHeight: AccordionHeight,
140
- ContentSize: ContentSize
161
+ ContentSize: ContentSize,
162
+ onClick: onClick,
163
+ ShowButton: ShowButton
141
164
  });
142
165
  };
143
166
 
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: relative;\n left: -0.1rem;\n /* bottom: 1rem; */\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,28 @@ 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
+ style: {
139
+ bottom: `calc((${AccordionHeight} - 12rem - 5px) * -1 )`,
140
+ zIndex: "100",
141
+ isolation: "isolate"
142
+ },
143
+ onClick: e => {
144
+ e.stopPropagation();
145
+ onClick({
146
+ id: item.id,
147
+ title: item.title
148
+ });
149
+ }
150
+ }, item.title), /*#__PURE__*/React__default["default"].createElement("img", {
132
151
  className: "accordion-image",
133
152
  src: item.image,
134
153
  alt: item.alt
@@ -139,13 +158,17 @@ const ReactImageAccordion = ({
139
158
  accordionData,
140
159
  AccordionWidth,
141
160
  AccordionHeight,
142
- ContentSize
161
+ ContentSize,
162
+ onClick,
163
+ ShowButton
143
164
  }) => {
144
165
  return /*#__PURE__*/React__default["default"].createElement(UseImageAccordion, {
145
166
  accordionData: accordionData,
146
167
  AccordionWidth: AccordionWidth,
147
168
  AccordionHeight: AccordionHeight,
148
- ContentSize: ContentSize
169
+ ContentSize: ContentSize,
170
+ onClick: onClick,
171
+ ShowButton: ShowButton
149
172
  });
150
173
  };
151
174
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-image-accordion",
3
- "version": "1.1.6",
3
+ "version": "1.1.8",
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,20 @@ img {
158
159
  }
159
160
  }
160
161
 
162
+ .accordion-Link {
163
+ all:revert;
164
+ display: block;
165
+ position: relative;
166
+ left: -0.1rem;
167
+ /* bottom: 1rem; */
168
+ width: 10rem;
169
+ height: var(--_button-size);
170
+ background: hsl(0 0% 0% /0.55);
171
+ border-radius: 100vw;
172
+ padding: 0.75rem;
173
+ font-weight: bolder;
174
+ }
175
+
161
176
  .accordion-image {
162
177
  position: absolute;
163
178
  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,31 @@ 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
+ style={{
109
+ bottom: `calc((${AccordionHeight} - 12rem - 5px) * -1 )`,
110
+ zIndex: "100",
111
+ isolation: "isolate",
112
+ }}
113
+ onClick={(e) => {
114
+ e.stopPropagation();
115
+ onClick({ id: item.id, title: item.title });
116
+ }}
117
+ >
118
+ {item.title}
119
+ </button>
120
+ )}
121
+
101
122
  <img
102
123
  className="accordion-image"
103
124
  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
  };