@chayns-components/core 5.0.0-beta.24 → 5.0.0-beta.25

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.
@@ -13,6 +13,14 @@ declare type AccordionGroupProps = {
13
13
  * automatically closed when an `Accordion` of the group is opened.
14
14
  */
15
15
  children: ReactNode;
16
+ /**
17
+ * Function that is executed when all accordions in group are closed.
18
+ */
19
+ onClose?: VoidFunction;
20
+ /**
21
+ * Function that is executed when any accordion in group will be opened.
22
+ */
23
+ onOpen?: VoidFunction;
16
24
  };
17
25
  declare const AccordionGroup: FC<AccordionGroupProps>;
18
26
  export default AccordionGroup;
@@ -34,13 +34,16 @@ exports.AccordionGroupContext = AccordionGroupContext;
34
34
  AccordionGroupContext.displayName = 'AccordionGroupContext';
35
35
 
36
36
  var AccordionGroup = function AccordionGroup(_ref) {
37
- var children = _ref.children;
37
+ var children = _ref.children,
38
+ onClose = _ref.onClose,
39
+ onOpen = _ref.onOpen;
38
40
 
39
41
  var _useState = (0, _react.useState)(undefined),
40
42
  _useState2 = _slicedToArray(_useState, 2),
41
43
  openAccordionUuid = _useState2[0],
42
44
  setOpenAccordionUuid = _useState2[1];
43
45
 
46
+ var isInitialRenderRef = (0, _react.useRef)(true);
44
47
  var updateOpenAccordionUuid = (0, _react.useCallback)(function (uuid) {
45
48
  var _ref2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
46
49
  shouldOnlyOpen = _ref2.shouldOnlyOpen;
@@ -53,6 +56,17 @@ var AccordionGroup = function AccordionGroup(_ref) {
53
56
  return uuid;
54
57
  });
55
58
  }, [setOpenAccordionUuid]);
59
+ (0, _react.useEffect)(function () {
60
+ if (isInitialRenderRef.current) {
61
+ isInitialRenderRef.current = false;
62
+ } else if (typeof openAccordionUuid === 'string') {
63
+ if (typeof onOpen === 'function') {
64
+ onOpen();
65
+ }
66
+ } else if (typeof onClose === 'function') {
67
+ onClose();
68
+ }
69
+ }, [onClose, onOpen, openAccordionUuid]);
56
70
  var providerValue = (0, _react.useMemo)(function () {
57
71
  return {
58
72
  openAccordionUuid: openAccordionUuid,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/accordion/accordion-group/AccordionGroup.tsx"],"names":["AccordionGroupContext","React","createContext","openAccordionUuid","undefined","updateOpenAccordionUuid","displayName","AccordionGroup","children","setOpenAccordionUuid","uuid","shouldOnlyOpen","currentOpenAccordionUuid","providerValue"],"mappings":";;;;;;;;;AAAA;;;;;;;;;;;;;;;;;;AASO,IAAMA,qBAAqB,gBAAGC,eAAMC,aAAN,CAA4C;AAC7EC,EAAAA,iBAAiB,EAAEC,SAD0D;AAE7EC,EAAAA,uBAAuB,EAAED;AAFoD,CAA5C,CAA9B;;;AAKPJ,qBAAqB,CAACM,WAAtB,GAAoC,uBAApC;;AAUA,IAAMC,cAAuC,GAAG,SAA1CA,cAA0C,OAAkB;AAAA,MAAfC,QAAe,QAAfA,QAAe;;AAC9D,kBACI,qBAAsDJ,SAAtD,CADJ;AAAA;AAAA,MAAOD,iBAAP;AAAA,MAA0BM,oBAA1B;;AAGA,MAAMJ,uBAAuB,GAAG,wBAC5B,UAACK,IAAD,EAAmC;AAAA,oFAAP,EAAO;AAAA,QAA1BC,cAA0B,SAA1BA,cAA0B;;AAC/BF,IAAAA,oBAAoB,CAAC,UAACG,wBAAD,EAA8B;AAC/C,UAAIA,wBAAwB,KAAKF,IAA7B,IAAqCC,cAAc,KAAK,IAA5D,EAAkE;AAC9D,eAAOP,SAAP;AACH;;AAED,aAAOM,IAAP;AACH,KANmB,CAApB;AAOH,GAT2B,EAU5B,CAACD,oBAAD,CAV4B,CAAhC;AAaA,MAAMI,aAAa,GAAG,oBAClB;AAAA,WAAO;AACHV,MAAAA,iBAAiB,EAAjBA,iBADG;AAEHE,MAAAA,uBAAuB,EAAvBA;AAFG,KAAP;AAAA,GADkB,EAKlB,CAACF,iBAAD,EAAoBE,uBAApB,CALkB,CAAtB;AAQA,sBACI,6BAAC,qBAAD,CAAuB,QAAvB;AAAgC,IAAA,KAAK,EAAEQ;AAAvC,KACKL,QADL,CADJ;AAKH,CA9BD;;AAgCAD,cAAc,CAACD,WAAf,GAA6B,gBAA7B;eAEeC,c","sourcesContent":["import React, { FC, ReactNode, useCallback, useMemo, useState } from 'react';\n\ntype IUpdateOpenAccordionUuid = (uuid: string, options?: { shouldOnlyOpen?: boolean }) => void;\n\ninterface IAccordionGroupContext {\n openAccordionUuid: string | undefined;\n updateOpenAccordionUuid?: IUpdateOpenAccordionUuid;\n}\n\nexport const AccordionGroupContext = React.createContext<IAccordionGroupContext>({\n openAccordionUuid: undefined,\n updateOpenAccordionUuid: undefined,\n});\n\nAccordionGroupContext.displayName = 'AccordionGroupContext';\n\ntype AccordionGroupProps = {\n /**\n * The Accordions that should be grouped. Accordions with the same group are\n * automatically closed when an `Accordion` of the group is opened.\n */\n children: ReactNode;\n};\n\nconst AccordionGroup: FC<AccordionGroupProps> = ({ children }) => {\n const [openAccordionUuid, setOpenAccordionUuid] =\n useState<IAccordionGroupContext['openAccordionUuid']>(undefined);\n\n const updateOpenAccordionUuid = useCallback<IUpdateOpenAccordionUuid>(\n (uuid, { shouldOnlyOpen } = {}) => {\n setOpenAccordionUuid((currentOpenAccordionUuid) => {\n if (currentOpenAccordionUuid === uuid && shouldOnlyOpen !== true) {\n return undefined;\n }\n\n return uuid;\n });\n },\n [setOpenAccordionUuid]\n );\n\n const providerValue = useMemo<IAccordionGroupContext>(\n () => ({\n openAccordionUuid,\n updateOpenAccordionUuid,\n }),\n [openAccordionUuid, updateOpenAccordionUuid]\n );\n\n return (\n <AccordionGroupContext.Provider value={providerValue}>\n {children}\n </AccordionGroupContext.Provider>\n );\n};\n\nAccordionGroup.displayName = 'AccordionGroup';\n\nexport default AccordionGroup;\n"],"file":"AccordionGroup.js"}
1
+ {"version":3,"sources":["../../../../src/components/accordion/accordion-group/AccordionGroup.tsx"],"names":["AccordionGroupContext","React","createContext","openAccordionUuid","undefined","updateOpenAccordionUuid","displayName","AccordionGroup","children","onClose","onOpen","setOpenAccordionUuid","isInitialRenderRef","uuid","shouldOnlyOpen","currentOpenAccordionUuid","current","providerValue"],"mappings":";;;;;;;;;AAAA;;;;;;;;;;;;;;;;;;AASO,IAAMA,qBAAqB,gBAAGC,eAAMC,aAAN,CAA4C;AAC7EC,EAAAA,iBAAiB,EAAEC,SAD0D;AAE7EC,EAAAA,uBAAuB,EAAED;AAFoD,CAA5C,CAA9B;;;AAKPJ,qBAAqB,CAACM,WAAtB,GAAoC,uBAApC;;AAkBA,IAAMC,cAAuC,GAAG,SAA1CA,cAA0C,OAAmC;AAAA,MAAhCC,QAAgC,QAAhCA,QAAgC;AAAA,MAAtBC,OAAsB,QAAtBA,OAAsB;AAAA,MAAbC,MAAa,QAAbA,MAAa;;AAC/E,kBACI,qBAAsDN,SAAtD,CADJ;AAAA;AAAA,MAAOD,iBAAP;AAAA,MAA0BQ,oBAA1B;;AAGA,MAAMC,kBAAkB,GAAG,mBAAO,IAAP,CAA3B;AAEA,MAAMP,uBAAuB,GAAG,wBAC5B,UAACQ,IAAD,EAAmC;AAAA,oFAAP,EAAO;AAAA,QAA1BC,cAA0B,SAA1BA,cAA0B;;AAC/BH,IAAAA,oBAAoB,CAAC,UAACI,wBAAD,EAA8B;AAC/C,UAAIA,wBAAwB,KAAKF,IAA7B,IAAqCC,cAAc,KAAK,IAA5D,EAAkE;AAC9D,eAAOV,SAAP;AACH;;AAED,aAAOS,IAAP;AACH,KANmB,CAApB;AAOH,GAT2B,EAU5B,CAACF,oBAAD,CAV4B,CAAhC;AAaA,wBAAU,YAAM;AACZ,QAAIC,kBAAkB,CAACI,OAAvB,EAAgC;AAC5BJ,MAAAA,kBAAkB,CAACI,OAAnB,GAA6B,KAA7B;AACH,KAFD,MAEO,IAAI,OAAOb,iBAAP,KAA6B,QAAjC,EAA2C;AAC9C,UAAI,OAAOO,MAAP,KAAkB,UAAtB,EAAkC;AAC9BA,QAAAA,MAAM;AACT;AACJ,KAJM,MAIA,IAAI,OAAOD,OAAP,KAAmB,UAAvB,EAAmC;AACtCA,MAAAA,OAAO;AACV;AACJ,GAVD,EAUG,CAACA,OAAD,EAAUC,MAAV,EAAkBP,iBAAlB,CAVH;AAYA,MAAMc,aAAa,GAAG,oBAClB;AAAA,WAAO;AACHd,MAAAA,iBAAiB,EAAjBA,iBADG;AAEHE,MAAAA,uBAAuB,EAAvBA;AAFG,KAAP;AAAA,GADkB,EAKlB,CAACF,iBAAD,EAAoBE,uBAApB,CALkB,CAAtB;AAQA,sBACI,6BAAC,qBAAD,CAAuB,QAAvB;AAAgC,IAAA,KAAK,EAAEY;AAAvC,KACKT,QADL,CADJ;AAKH,CA5CD;;AA8CAD,cAAc,CAACD,WAAf,GAA6B,gBAA7B;eAEeC,c","sourcesContent":["import React, { FC, ReactNode, useCallback, useEffect, useMemo, useRef, useState } from 'react';\n\ntype IUpdateOpenAccordionUuid = (uuid: string, options?: { shouldOnlyOpen?: boolean }) => void;\n\ninterface IAccordionGroupContext {\n openAccordionUuid: string | undefined;\n updateOpenAccordionUuid?: IUpdateOpenAccordionUuid;\n}\n\nexport const AccordionGroupContext = React.createContext<IAccordionGroupContext>({\n openAccordionUuid: undefined,\n updateOpenAccordionUuid: undefined,\n});\n\nAccordionGroupContext.displayName = 'AccordionGroupContext';\n\ntype AccordionGroupProps = {\n /**\n * The Accordions that should be grouped. Accordions with the same group are\n * automatically closed when an `Accordion` of the group is opened.\n */\n children: ReactNode;\n /**\n * Function that is executed when all accordions in group are closed.\n */\n onClose?: VoidFunction;\n /**\n * Function that is executed when any accordion in group will be opened.\n */\n onOpen?: VoidFunction;\n};\n\nconst AccordionGroup: FC<AccordionGroupProps> = ({ children, onClose, onOpen }) => {\n const [openAccordionUuid, setOpenAccordionUuid] =\n useState<IAccordionGroupContext['openAccordionUuid']>(undefined);\n\n const isInitialRenderRef = useRef(true);\n\n const updateOpenAccordionUuid = useCallback<IUpdateOpenAccordionUuid>(\n (uuid, { shouldOnlyOpen } = {}) => {\n setOpenAccordionUuid((currentOpenAccordionUuid) => {\n if (currentOpenAccordionUuid === uuid && shouldOnlyOpen !== true) {\n return undefined;\n }\n\n return uuid;\n });\n },\n [setOpenAccordionUuid]\n );\n\n useEffect(() => {\n if (isInitialRenderRef.current) {\n isInitialRenderRef.current = false;\n } else if (typeof openAccordionUuid === 'string') {\n if (typeof onOpen === 'function') {\n onOpen();\n }\n } else if (typeof onClose === 'function') {\n onClose();\n }\n }, [onClose, onOpen, openAccordionUuid]);\n\n const providerValue = useMemo<IAccordionGroupContext>(\n () => ({\n openAccordionUuid,\n updateOpenAccordionUuid,\n }),\n [openAccordionUuid, updateOpenAccordionUuid]\n );\n\n return (\n <AccordionGroupContext.Provider value={providerValue}>\n {children}\n </AccordionGroupContext.Provider>\n );\n};\n\nAccordionGroup.displayName = 'AccordionGroup';\n\nexport default AccordionGroup;\n"],"file":"AccordionGroup.js"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@chayns-components/core",
3
- "version": "5.0.0-beta.24",
3
+ "version": "5.0.0-beta.25",
4
4
  "description": "A set of beautiful React components for developing your own applications with chayns.",
5
5
  "keywords": [
6
6
  "chayns",
@@ -61,5 +61,5 @@
61
61
  "publishConfig": {
62
62
  "access": "public"
63
63
  },
64
- "gitHead": "25ce67f034604002e951be063b7467bf77e444ce"
64
+ "gitHead": "bbd2561950d231cbe1c30c4e1d1c8e2a3da106ec"
65
65
  }