@basic-ui/core 0.0.60 → 0.0.62

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.
Files changed (214) hide show
  1. package/build/cjs/index.js.map +1 -1
  2. package/build/esm/Accordion/AccordionBody.d.ts.map +1 -1
  3. package/build/esm/Accordion/AccordionBody.js +6 -26
  4. package/build/esm/Accordion/AccordionBody.js.map +1 -1
  5. package/build/esm/Accordion/AccordionHeader.d.ts.map +1 -1
  6. package/build/esm/Accordion/AccordionHeader.js +21 -69
  7. package/build/esm/Accordion/AccordionHeader.js.map +1 -1
  8. package/build/esm/Accordion/AccordionItem.d.ts.map +1 -1
  9. package/build/esm/Accordion/AccordionItem.js +31 -18
  10. package/build/esm/Accordion/AccordionItem.js.map +1 -1
  11. package/build/esm/Accordion/context.d.ts +0 -8
  12. package/build/esm/Accordion/context.d.ts.map +1 -1
  13. package/build/esm/Accordion/context.js +0 -11
  14. package/build/esm/Accordion/context.js.map +1 -1
  15. package/build/esm/Accordion/scopeQuery.d.ts +1 -0
  16. package/build/esm/Accordion/scopeQuery.d.ts.map +1 -1
  17. package/build/esm/Accordion/scopeQuery.js +3 -0
  18. package/build/esm/Accordion/scopeQuery.js.map +1 -1
  19. package/build/esm/Collapsible/Collapsible.d.ts +13 -0
  20. package/build/esm/Collapsible/Collapsible.d.ts.map +1 -0
  21. package/build/esm/Collapsible/Collapsible.js +53 -0
  22. package/build/esm/Collapsible/Collapsible.js.map +1 -0
  23. package/build/esm/Collapsible/CollapsiblePanel.d.ts +10 -0
  24. package/build/esm/Collapsible/CollapsiblePanel.d.ts.map +1 -0
  25. package/build/esm/Collapsible/CollapsiblePanel.js +85 -0
  26. package/build/esm/Collapsible/CollapsiblePanel.js.map +1 -0
  27. package/build/esm/Collapsible/CollapsibleTrigger.d.ts +11 -0
  28. package/build/esm/Collapsible/CollapsibleTrigger.d.ts.map +1 -0
  29. package/build/esm/Collapsible/CollapsibleTrigger.js +51 -0
  30. package/build/esm/Collapsible/CollapsibleTrigger.js.map +1 -0
  31. package/build/esm/Collapsible/context.d.ts +16 -0
  32. package/build/esm/Collapsible/context.d.ts.map +1 -0
  33. package/build/esm/Collapsible/context.js +11 -0
  34. package/build/esm/Collapsible/context.js.map +1 -0
  35. package/build/esm/Collapsible/index.d.ts +4 -0
  36. package/build/esm/Collapsible/index.d.ts.map +1 -0
  37. package/build/esm/Collapsible/index.js +4 -0
  38. package/build/esm/Collapsible/index.js.map +1 -0
  39. package/build/esm/Menu/Menu.d.ts +3 -2
  40. package/build/esm/Menu/Menu.d.ts.map +1 -1
  41. package/build/esm/Menu/Menu.js +64 -4
  42. package/build/esm/Menu/Menu.js.map +1 -1
  43. package/build/esm/Menu/MenuButton.d.ts.map +1 -1
  44. package/build/esm/Menu/MenuButton.js +85 -8
  45. package/build/esm/Menu/MenuButton.js.map +1 -1
  46. package/build/esm/Menu/MenuItem.d.ts.map +1 -1
  47. package/build/esm/Menu/MenuItem.js +16 -4
  48. package/build/esm/Menu/MenuItem.js.map +1 -1
  49. package/build/esm/Menu/MenuList.d.ts.map +1 -1
  50. package/build/esm/Menu/MenuList.js +47 -12
  51. package/build/esm/Menu/MenuList.js.map +1 -1
  52. package/build/esm/Menu/MenuPopover.d.ts.map +1 -1
  53. package/build/esm/Menu/MenuPopover.js +12 -1
  54. package/build/esm/Menu/MenuPopover.js.map +1 -1
  55. package/build/esm/Menu/MenuSubmenuTrigger.d.ts +8 -0
  56. package/build/esm/Menu/MenuSubmenuTrigger.d.ts.map +1 -0
  57. package/build/esm/Menu/MenuSubmenuTrigger.js +131 -0
  58. package/build/esm/Menu/MenuSubmenuTrigger.js.map +1 -0
  59. package/build/esm/Menu/context.d.ts +13 -3
  60. package/build/esm/Menu/context.d.ts.map +1 -1
  61. package/build/esm/Menu/context.js +1 -0
  62. package/build/esm/Menu/context.js.map +1 -1
  63. package/build/esm/Menu/index.d.ts +3 -0
  64. package/build/esm/Menu/index.d.ts.map +1 -1
  65. package/build/esm/Menu/index.js +2 -0
  66. package/build/esm/Menu/index.js.map +1 -1
  67. package/build/esm/Menu/scope.d.ts +1 -0
  68. package/build/esm/Menu/scope.d.ts.map +1 -1
  69. package/build/esm/Menu/scope.js +2 -1
  70. package/build/esm/Menu/scope.js.map +1 -1
  71. package/build/esm/MenuBar/MenuBar.d.ts +11 -0
  72. package/build/esm/MenuBar/MenuBar.d.ts.map +1 -0
  73. package/build/esm/MenuBar/MenuBar.js +153 -0
  74. package/build/esm/MenuBar/MenuBar.js.map +1 -0
  75. package/build/esm/MenuBar/context.d.ts +29 -0
  76. package/build/esm/MenuBar/context.d.ts.map +1 -0
  77. package/build/esm/MenuBar/context.js +7 -0
  78. package/build/esm/MenuBar/context.js.map +1 -0
  79. package/build/esm/MenuBar/index.d.ts +2 -0
  80. package/build/esm/MenuBar/index.d.ts.map +1 -0
  81. package/build/esm/MenuBar/index.js +2 -0
  82. package/build/esm/MenuBar/index.js.map +1 -0
  83. package/build/esm/Slider/Slider.d.ts +47 -1
  84. package/build/esm/Slider/Slider.d.ts.map +1 -1
  85. package/build/esm/Slider/Slider.js +91 -5
  86. package/build/esm/Slider/Slider.js.map +1 -1
  87. package/build/esm/ToggleGroup/ToggleGroup.d.ts +40 -0
  88. package/build/esm/ToggleGroup/ToggleGroup.d.ts.map +1 -0
  89. package/build/esm/ToggleGroup/ToggleGroup.js +113 -0
  90. package/build/esm/ToggleGroup/ToggleGroup.js.map +1 -0
  91. package/build/esm/ToggleGroup/ToggleGroupContext.d.ts +10 -0
  92. package/build/esm/ToggleGroup/ToggleGroupContext.d.ts.map +1 -0
  93. package/build/esm/ToggleGroup/ToggleGroupContext.js +6 -0
  94. package/build/esm/ToggleGroup/ToggleGroupContext.js.map +1 -0
  95. package/build/esm/ToggleGroup/index.d.ts +3 -0
  96. package/build/esm/ToggleGroup/index.d.ts.map +1 -0
  97. package/build/esm/ToggleGroup/index.js +3 -0
  98. package/build/esm/ToggleGroup/index.js.map +1 -0
  99. package/build/esm/Tree/Tree.d.ts +3 -0
  100. package/build/esm/Tree/Tree.d.ts.map +1 -0
  101. package/build/esm/Tree/Tree.js +730 -0
  102. package/build/esm/Tree/Tree.js.map +1 -0
  103. package/build/esm/Tree/TreeHeader.d.ts +3 -0
  104. package/build/esm/Tree/TreeHeader.d.ts.map +1 -0
  105. package/build/esm/Tree/TreeHeader.js +5 -0
  106. package/build/esm/Tree/TreeHeader.js.map +1 -0
  107. package/build/esm/Tree/TreeItem.d.ts +3 -0
  108. package/build/esm/Tree/TreeItem.d.ts.map +1 -0
  109. package/build/esm/Tree/TreeItem.js +5 -0
  110. package/build/esm/Tree/TreeItem.js.map +1 -0
  111. package/build/esm/Tree/TreeItemContent.d.ts +3 -0
  112. package/build/esm/Tree/TreeItemContent.d.ts.map +1 -0
  113. package/build/esm/Tree/TreeItemContent.js +69 -0
  114. package/build/esm/Tree/TreeItemContent.js.map +1 -0
  115. package/build/esm/Tree/TreeSection.d.ts +3 -0
  116. package/build/esm/Tree/TreeSection.d.ts.map +1 -0
  117. package/build/esm/Tree/TreeSection.js +5 -0
  118. package/build/esm/Tree/TreeSection.js.map +1 -0
  119. package/build/esm/Tree/collection.d.ts +18 -0
  120. package/build/esm/Tree/collection.d.ts.map +1 -0
  121. package/build/esm/Tree/collection.js +252 -0
  122. package/build/esm/Tree/collection.js.map +1 -0
  123. package/build/esm/Tree/context.d.ts +3 -0
  124. package/build/esm/Tree/context.d.ts.map +1 -0
  125. package/build/esm/Tree/context.js +3 -0
  126. package/build/esm/Tree/context.js.map +1 -0
  127. package/build/esm/Tree/index.d.ts +8 -0
  128. package/build/esm/Tree/index.d.ts.map +1 -0
  129. package/build/esm/Tree/index.js +7 -0
  130. package/build/esm/Tree/index.js.map +1 -0
  131. package/build/esm/Tree/types.d.ts +128 -0
  132. package/build/esm/Tree/types.d.ts.map +1 -0
  133. package/build/esm/Tree/types.js +2 -0
  134. package/build/esm/Tree/types.js.map +1 -0
  135. package/build/esm/hooks/index.d.ts +1 -0
  136. package/build/esm/hooks/index.d.ts.map +1 -1
  137. package/build/esm/hooks/index.js +1 -0
  138. package/build/esm/hooks/index.js.map +1 -1
  139. package/build/esm/hooks/useTransitionStatus.d.ts +7 -0
  140. package/build/esm/hooks/useTransitionStatus.d.ts.map +1 -0
  141. package/build/esm/hooks/useTransitionStatus.js +48 -0
  142. package/build/esm/hooks/useTransitionStatus.js.map +1 -0
  143. package/build/esm/index.d.ts +5 -0
  144. package/build/esm/index.d.ts.map +1 -1
  145. package/build/esm/index.js +5 -0
  146. package/build/esm/index.js.map +1 -1
  147. package/build/esm/toggle/Toggle.d.ts +28 -0
  148. package/build/esm/toggle/Toggle.d.ts.map +1 -0
  149. package/build/esm/toggle/Toggle.js +55 -0
  150. package/build/esm/toggle/Toggle.js.map +1 -0
  151. package/build/esm/toggle/index.d.ts +2 -0
  152. package/build/esm/toggle/index.d.ts.map +1 -0
  153. package/build/esm/toggle/index.js +2 -0
  154. package/build/esm/toggle/index.js.map +1 -0
  155. package/build/esm/utils/assign-ref.d.ts +3 -3
  156. package/build/esm/utils/assign-ref.d.ts.map +1 -1
  157. package/build/esm/utils/assign-ref.js +1 -1
  158. package/build/esm/utils/assign-ref.js.map +1 -1
  159. package/build/tsconfig-build.tsbuildinfo +1 -1
  160. package/build/tsconfig.tsbuildinfo +1 -1
  161. package/package.json +7 -4
  162. package/src/Accordion/AccordionBody.tsx +6 -35
  163. package/src/Accordion/AccordionHeader.tsx +29 -103
  164. package/src/Accordion/AccordionItem.tsx +40 -29
  165. package/src/Accordion/context.ts +0 -18
  166. package/src/Accordion/scopeQuery.ts +4 -0
  167. package/src/Collapsible/Collapsible.story.tsx +153 -0
  168. package/src/Collapsible/Collapsible.tsx +79 -0
  169. package/src/Collapsible/CollapsiblePanel.tsx +103 -0
  170. package/src/Collapsible/CollapsibleTrigger.tsx +60 -0
  171. package/src/Collapsible/context.ts +28 -0
  172. package/src/Collapsible/index.ts +3 -0
  173. package/src/Menu/Menu.story.tsx +70 -1
  174. package/src/Menu/Menu.tsx +141 -65
  175. package/src/Menu/MenuButton.tsx +115 -9
  176. package/src/Menu/MenuItem.tsx +20 -3
  177. package/src/Menu/MenuList.tsx +50 -13
  178. package/src/Menu/MenuPopover.tsx +12 -2
  179. package/src/Menu/MenuSubmenuTrigger.tsx +167 -0
  180. package/src/Menu/context.ts +20 -10
  181. package/src/Menu/index.ts +3 -0
  182. package/src/Menu/scope.ts +4 -1
  183. package/src/Menu/styles.css +57 -22
  184. package/src/MenuBar/MenuBar.story.tsx +92 -0
  185. package/src/MenuBar/MenuBar.tsx +236 -0
  186. package/src/MenuBar/context.ts +46 -0
  187. package/src/MenuBar/index.ts +1 -0
  188. package/src/MenuBar/styles.css +78 -0
  189. package/src/Slider/Slider.story.tsx +1 -1
  190. package/src/Slider/Slider.tsx +145 -8
  191. package/src/Toggle/Toggle.story.tsx +42 -0
  192. package/src/Toggle/Toggle.tsx +95 -0
  193. package/src/Toggle/index.ts +1 -0
  194. package/src/Toggle/styles.css +39 -0
  195. package/src/ToggleGroup/ToggleGroup.story.tsx +86 -0
  196. package/src/ToggleGroup/ToggleGroup.tsx +185 -0
  197. package/src/ToggleGroup/ToggleGroupContext.ts +17 -0
  198. package/src/ToggleGroup/index.ts +2 -0
  199. package/src/ToggleGroup/styles.css +66 -0
  200. package/src/Tree/Tree.story.tsx +221 -0
  201. package/src/Tree/Tree.tsx +1081 -0
  202. package/src/Tree/TreeHeader.tsx +9 -0
  203. package/src/Tree/TreeItem.tsx +9 -0
  204. package/src/Tree/TreeItemContent.tsx +91 -0
  205. package/src/Tree/TreeSection.tsx +9 -0
  206. package/src/Tree/collection.tsx +371 -0
  207. package/src/Tree/context.ts +6 -0
  208. package/src/Tree/index.ts +7 -0
  209. package/src/Tree/styles.css +135 -0
  210. package/src/Tree/types.ts +161 -0
  211. package/src/hooks/index.ts +1 -0
  212. package/src/hooks/useTransitionStatus.ts +65 -0
  213. package/src/index.ts +5 -0
  214. package/src/utils/assign-ref.ts +4 -4
@@ -1 +1 @@
1
- {"version":3,"file":"AccordionBody.d.ts","sourceRoot":"","sources":["../../../src/Accordion/AccordionBody.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAOzD,MAAM,WAAW,kBAAmB,SAAQ,cAAc,CAAC,cAAc,CAAC;IACxE,EAAE,CAAC,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;IACtB,OAAO,CAAC,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;CAC5B;AAED,eAAO,MAAM,aAAa,+GAuCzB,CAAC"}
1
+ {"version":3,"file":"AccordionBody.d.ts","sourceRoot":"","sources":["../../../src/Accordion/AccordionBody.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAIzD,MAAM,WAAW,kBAAmB,SAAQ,cAAc,CAAC,cAAc,CAAC;IACxE,EAAE,CAAC,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;IACtB,OAAO,CAAC,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;CAC5B;AAED,eAAO,MAAM,aAAa,+GAazB,CAAC"}
@@ -1,36 +1,16 @@
1
- import { forwardRef, useState, useEffect, useRef } from 'react';
2
- import { useAccordionItemContext, useAccordionContext } from './context';
3
- import { bodyScopeQuery as scopeQuery } from './scopeQuery';
4
- import { assignMultipleRefs } from '../utils';
1
+ import { forwardRef } from 'react';
2
+ import { CollapsiblePanel } from '../Collapsible';
5
3
  import { jsx as _jsx } from "react/jsx-runtime";
6
4
  export const AccordionBody = /*#__PURE__*/forwardRef(function AccordionBody(props, forwardedRef) {
7
5
  const {
8
6
  as: Comp = 'div',
9
7
  ...otherProps
10
8
  } = props;
11
- const accordionItemContext = useAccordionItemContext();
12
- const accordionContext = useAccordionContext();
13
- const ref = useRef(null);
14
- const [index, setIndex] = useState();
15
- if (!accordionItemContext) {
16
- throw new Error('Missing parent <Accordion /> component');
17
- }
18
- useEffect(() => {
19
- if (accordionContext) {
20
- const allHeaders = accordionContext.scope.current.queryAllNodes(scopeQuery);
21
- const index = allHeaders.findIndex(e => e === ref.current);
22
- setIndex(index);
23
- }
24
- }, [accordionContext]);
25
- const expanded = Boolean(accordionItemContext.expanded || accordionContext && accordionContext.expandedIndex === index);
26
- return /*#__PURE__*/_jsx(Comp, {
27
- ref: assignMultipleRefs(forwardedRef, ref),
28
- ...otherProps,
29
- "aria-labelledby": accordionItemContext.headerId,
30
- id: accordionItemContext.bodyId,
31
- role: "region",
9
+ return /*#__PURE__*/_jsx(CollapsiblePanel, {
10
+ as: Comp,
11
+ ref: forwardedRef,
32
12
  "data-accordion-body": "",
33
- hidden: expanded ? undefined : 'hidden'
13
+ ...otherProps
34
14
  });
35
15
  });
36
16
  //# sourceMappingURL=AccordionBody.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AccordionBody.js","names":["forwardRef","useState","useEffect","useRef","useAccordionItemContext","useAccordionContext","bodyScopeQuery","scopeQuery","assignMultipleRefs","jsx","_jsx","AccordionBody","props","forwardedRef","as","Comp","otherProps","accordionItemContext","accordionContext","ref","index","setIndex","Error","allHeaders","scope","current","queryAllNodes","findIndex","e","expanded","Boolean","expandedIndex","headerId","id","bodyId","role","hidden","undefined"],"sources":["../../../src/Accordion/AccordionBody.tsx"],"sourcesContent":["import type { HTMLAttributes, ElementType } from 'react';\nimport { forwardRef, useState, useEffect, useRef } from 'react';\n\nimport { useAccordionItemContext, useAccordionContext } from './context';\nimport { bodyScopeQuery as scopeQuery } from './scopeQuery';\nimport { assignMultipleRefs } from '../utils';\n\nexport interface AccordionBodyProps extends HTMLAttributes<HTMLDivElement> {\n as?: ElementType<any>;\n innerAs?: ElementType<any>;\n}\n\nexport const AccordionBody = forwardRef<HTMLDivElement, AccordionBodyProps>(\n function AccordionBody(props, forwardedRef) {\n const { as: Comp = 'div', ...otherProps } = props;\n const accordionItemContext = useAccordionItemContext();\n const accordionContext = useAccordionContext();\n const ref = useRef<HTMLDivElement | null>(null);\n const [index, setIndex] = useState<number>();\n\n if (!accordionItemContext) {\n throw new Error('Missing parent <Accordion /> component');\n }\n\n useEffect(() => {\n if (accordionContext) {\n const allHeaders =\n accordionContext.scope.current.queryAllNodes(scopeQuery);\n\n const index = allHeaders.findIndex((e) => e === ref.current);\n setIndex(index);\n }\n }, [accordionContext]);\n\n const expanded = Boolean(\n accordionItemContext.expanded ||\n (accordionContext && accordionContext.expandedIndex === index)\n );\n\n return (\n <Comp\n ref={assignMultipleRefs(forwardedRef, ref)}\n {...otherProps}\n aria-labelledby={accordionItemContext.headerId}\n id={accordionItemContext.bodyId}\n role=\"region\"\n data-accordion-body=\"\"\n hidden={expanded ? undefined : 'hidden'}\n />\n );\n }\n);\n"],"mappings":"AACA,SAASA,UAAU,EAAEC,QAAQ,EAAEC,SAAS,EAAEC,MAAM,QAAQ,OAAO;AAE/D,SAASC,uBAAuB,EAAEC,mBAAmB,QAAQ,WAAW;AACxE,SAASC,cAAc,IAAIC,UAAU,QAAQ,cAAc;AAC3D,SAASC,kBAAkB,QAAQ,UAAU;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAO9C,OAAO,MAAMC,aAAa,gBAAGX,UAAU,CACrC,SAASW,aAAaA,CAACC,KAAK,EAAEC,YAAY,EAAE;EAC1C,MAAM;IAAEC,EAAE,EAAEC,IAAI,GAAG,KAAK;IAAE,GAAGC;EAAW,CAAC,GAAGJ,KAAK;EACjD,MAAMK,oBAAoB,GAAGb,uBAAuB,CAAC,CAAC;EACtD,MAAMc,gBAAgB,GAAGb,mBAAmB,CAAC,CAAC;EAC9C,MAAMc,GAAG,GAAGhB,MAAM,CAAwB,IAAI,CAAC;EAC/C,MAAM,CAACiB,KAAK,EAAEC,QAAQ,CAAC,GAAGpB,QAAQ,CAAS,CAAC;EAE5C,IAAI,CAACgB,oBAAoB,EAAE;IACzB,MAAM,IAAIK,KAAK,CAAC,wCAAwC,CAAC;EAC3D;EAEApB,SAAS,CAAC,MAAM;IACd,IAAIgB,gBAAgB,EAAE;MACpB,MAAMK,UAAU,GACdL,gBAAgB,CAACM,KAAK,CAACC,OAAO,CAACC,aAAa,CAACnB,UAAU,CAAC;MAE1D,MAAMa,KAAK,GAAGG,UAAU,CAACI,SAAS,CAAEC,CAAC,IAAKA,CAAC,KAAKT,GAAG,CAACM,OAAO,CAAC;MAC5DJ,QAAQ,CAACD,KAAK,CAAC;IACjB;EACF,CAAC,EAAE,CAACF,gBAAgB,CAAC,CAAC;EAEtB,MAAMW,QAAQ,GAAGC,OAAO,CACtBb,oBAAoB,CAACY,QAAQ,IAC1BX,gBAAgB,IAAIA,gBAAgB,CAACa,aAAa,KAAKX,KAC5D,CAAC;EAED,oBACEV,IAAA,CAACK,IAAI;IACHI,GAAG,EAAEX,kBAAkB,CAACK,YAAY,EAAEM,GAAG,CAAE;IAAA,GACvCH,UAAU;IACd,mBAAiBC,oBAAoB,CAACe,QAAS;IAC/CC,EAAE,EAAEhB,oBAAoB,CAACiB,MAAO;IAChCC,IAAI,EAAC,QAAQ;IACb,uBAAoB,EAAE;IACtBC,MAAM,EAAEP,QAAQ,GAAGQ,SAAS,GAAG;EAAS,CACzC,CAAC;AAEN,CACF,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"AccordionBody.js","names":["forwardRef","CollapsiblePanel","jsx","_jsx","AccordionBody","props","forwardedRef","as","Comp","otherProps","ref"],"sources":["../../../src/Accordion/AccordionBody.tsx"],"sourcesContent":["import type { HTMLAttributes, ElementType } from 'react';\nimport { forwardRef } from 'react';\nimport { CollapsiblePanel } from '../Collapsible';\n\nexport interface AccordionBodyProps extends HTMLAttributes<HTMLDivElement> {\n as?: ElementType<any>;\n innerAs?: ElementType<any>;\n}\n\nexport const AccordionBody = forwardRef<HTMLDivElement, AccordionBodyProps>(\n function AccordionBody(props, forwardedRef) {\n const { as: Comp = 'div', ...otherProps } = props;\n\n return (\n <CollapsiblePanel\n as={Comp}\n ref={forwardedRef}\n data-accordion-body=\"\"\n {...otherProps}\n />\n );\n }\n);\n"],"mappings":"AACA,SAASA,UAAU,QAAQ,OAAO;AAClC,SAASC,gBAAgB,QAAQ,gBAAgB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAOlD,OAAO,MAAMC,aAAa,gBAAGJ,UAAU,CACrC,SAASI,aAAaA,CAACC,KAAK,EAAEC,YAAY,EAAE;EAC1C,MAAM;IAAEC,EAAE,EAAEC,IAAI,GAAG,KAAK;IAAE,GAAGC;EAAW,CAAC,GAAGJ,KAAK;EAEjD,oBACEF,IAAA,CAACF,gBAAgB;IACfM,EAAE,EAAEC,IAAK;IACTE,GAAG,EAAEJ,YAAa;IAClB,uBAAoB,EAAE;IAAA,GAClBG;EAAU,CACf,CAAC;AAEN,CACF,CAAC","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"AccordionHeader.d.ts","sourceRoot":"","sources":["../../../src/Accordion/AccordionHeader.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,WAAW,EACX,SAAS,EAIV,MAAM,OAAO,CAAC;AAOf,MAAM,WAAW,oBAAqB,SAAQ,cAAc,CAAC,cAAc,CAAC;IAC1E,EAAE,CAAC,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;IACtB,OAAO,CAAC,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;IAC3B,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED,eAAO,MAAM,eAAe,iHAiJ3B,CAAC"}
1
+ {"version":3,"file":"AccordionHeader.d.ts","sourceRoot":"","sources":["../../../src/Accordion/AccordionHeader.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,SAAS,EAA6B,MAAM,OAAO,CAAC;AAQ/F,MAAM,WAAW,oBAAqB,SAAQ,cAAc,CAAC,cAAc,CAAC;IAC1E,EAAE,CAAC,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;IACtB,OAAO,CAAC,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;IAC3B,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED,eAAO,MAAM,eAAe,iHA6E3B,CAAC"}
@@ -1,54 +1,20 @@
1
- import { forwardRef, useRef, useState, useEffect } from 'react';
2
- import { wrapEvent, assignMultipleRefs, getCircularIndex } from '../utils';
3
- import { useAccordionContext, useAccordionItemContext } from './context';
4
- import { headerScopeQuery as scopeQuery } from './scopeQuery';
1
+ import { forwardRef } from 'react';
2
+ import { wrapEvent, getCircularIndex } from '../utils';
3
+ import { useAccordionContext } from './context';
4
+ import { CollapsibleTrigger } from '../Collapsible';
5
+ import { headerScopeQuery } from './scopeQuery';
5
6
  import { jsx as _jsx } from "react/jsx-runtime";
6
7
  export const AccordionHeader = /*#__PURE__*/forwardRef(function AccordionHeader(props, forwardedRef) {
7
8
  const {
8
9
  as: Comp = 'div',
9
10
  onKeyDown,
10
- onClick: onClickProp,
11
11
  onFocus,
12
12
  onBlur,
13
13
  ...otherProps
14
14
  } = props;
15
15
  const accordionContext = useAccordionContext();
16
- const accordionItemContext = useAccordionItemContext();
17
- const ref = useRef(null);
18
- const [index, setIndex] = useState();
19
- if (!accordionItemContext) {
20
- throw new Error('Missing parent <Accordion /> component');
21
- }
22
- useEffect(() => {
23
- if (accordionContext) {
24
- const allHeaders = accordionContext.scope.current.queryAllNodes(scopeQuery) || [];
25
- const index = allHeaders.findIndex(e => e === ref.current);
26
- setIndex(index);
27
- }
28
- }, [accordionContext]);
29
- const onClick = wrapEvent(onClickProp, e => {
30
- let index = 0;
31
- if (accordionItemContext.expanded) {
32
- index = -1;
33
- } else if (accordionContext) {
34
- const allHeaders = accordionContext.scope.current.queryAllNodes(scopeQuery) || [];
35
- index = allHeaders.findIndex(e => e === ref.current);
36
- if (index === accordionContext.expandedIndex) {
37
- index = -1;
38
- }
39
- accordionContext.onChange && accordionContext.onChange(e, index);
40
- }
41
- accordionItemContext.onChange && accordionItemContext.onChange(e, index >= 0);
42
- });
43
16
  const handleKeyDown = e => {
44
17
  switch (e.key) {
45
- case 'Enter':
46
- case ' ':
47
- {
48
- onClick(e);
49
- e.preventDefault();
50
- break;
51
- }
52
18
  case 'ArrowUp':
53
19
  case 'ArrowDown':
54
20
  case 'Home':
@@ -57,18 +23,18 @@ export const AccordionHeader = /*#__PURE__*/forwardRef(function AccordionHeader(
57
23
  if (!accordionContext) {
58
24
  return;
59
25
  }
60
- const allHeaders = accordionContext.scope.current.queryAllNodes(scopeQuery);
61
- e.preventDefault();
26
+ const allHeaders = accordionContext.scope.current.queryAllNodes(headerScopeQuery);
62
27
  if (allHeaders.length === 0) {
63
28
  return;
64
29
  }
65
- let nextIndex = allHeaders.findIndex(e => e === ref.current);
30
+ e.preventDefault();
31
+ let nextIndex = allHeaders.findIndex(el => el === e.currentTarget);
66
32
  switch (e.key) {
67
33
  case 'ArrowUp':
68
- nextIndex += -1;
34
+ nextIndex -= 1;
69
35
  break;
70
36
  case 'ArrowDown':
71
- nextIndex += +1;
37
+ nextIndex += 1;
72
38
  break;
73
39
  case 'Home':
74
40
  nextIndex = 0;
@@ -77,51 +43,37 @@ export const AccordionHeader = /*#__PURE__*/forwardRef(function AccordionHeader(
77
43
  nextIndex = -1;
78
44
  break;
79
45
  }
80
-
81
- // We're sure it will not be null, because we already checked for allHeaders.length > 0 above
82
46
  nextIndex = getCircularIndex(nextIndex, allHeaders.length);
83
- allHeaders[nextIndex] && allHeaders[nextIndex].focus();
47
+ allHeaders[nextIndex]?.focus();
84
48
  break;
85
49
  }
86
- default:
87
- return;
88
50
  }
89
51
  };
90
52
  const handleFocus = () => {
91
- if (accordionContext) {
92
- if (!accordionContext.childrenHeaderHasFocus) {
93
- // this is needed to avoid rerendering the parent and
94
- // messing up with the internal count for children/parent count
95
- accordionContext.setChildrenHeaderHasFocus(true);
96
- }
53
+ if (accordionContext && !accordionContext.childrenHeaderHasFocus) {
54
+ accordionContext.setChildrenHeaderHasFocus(true);
97
55
  }
98
56
  };
99
57
  const handleBlur = e => {
100
58
  if (accordionContext) {
101
- const allHeaders = accordionContext.scope.current.queryAllNodes(scopeQuery);
59
+ const allHeaders = accordionContext.scope.current.queryAllNodes(headerScopeQuery);
102
60
  const newFocusIsHeader = allHeaders.findIndex(header => header === e.relatedTarget) >= 0;
103
-
104
- // only remove focus flag if the focus went to some element
105
- // that is not an accordion header
106
61
  if (!newFocusIsHeader) {
107
62
  accordionContext.setChildrenHeaderHasFocus(false);
108
63
  }
109
64
  }
110
65
  };
111
- const expanded = Boolean(accordionItemContext.expanded || accordionContext && accordionContext.expandedIndex === index);
112
- return /*#__PURE__*/_jsx(Comp, {
113
- ref: assignMultipleRefs(ref, forwardedRef),
114
- ...otherProps,
115
- id: accordionItemContext.headerId,
116
- "aria-controls": accordionItemContext.bodyId,
117
- role: "button",
66
+ const isNonButton = Comp !== 'button';
67
+ return /*#__PURE__*/_jsx(CollapsibleTrigger, {
68
+ as: Comp,
69
+ ref: forwardedRef,
118
70
  "data-accordion-header": "",
119
- tabIndex: "0",
71
+ role: isNonButton ? 'button' : undefined,
72
+ tabIndex: isNonButton ? 0 : undefined,
120
73
  onKeyDown: wrapEvent(onKeyDown, handleKeyDown),
121
74
  onFocus: wrapEvent(onFocus, handleFocus),
122
75
  onBlur: wrapEvent(onBlur, handleBlur),
123
- onClick: onClick,
124
- "aria-expanded": String(expanded)
76
+ ...otherProps
125
77
  });
126
78
  });
127
79
  //# sourceMappingURL=AccordionHeader.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AccordionHeader.js","names":["forwardRef","useRef","useState","useEffect","wrapEvent","assignMultipleRefs","getCircularIndex","useAccordionContext","useAccordionItemContext","headerScopeQuery","scopeQuery","jsx","_jsx","AccordionHeader","props","forwardedRef","as","Comp","onKeyDown","onClick","onClickProp","onFocus","onBlur","otherProps","accordionContext","accordionItemContext","ref","index","setIndex","Error","allHeaders","scope","current","queryAllNodes","findIndex","e","expanded","expandedIndex","onChange","handleKeyDown","key","preventDefault","length","nextIndex","focus","handleFocus","childrenHeaderHasFocus","setChildrenHeaderHasFocus","handleBlur","newFocusIsHeader","header","relatedTarget","Boolean","id","headerId","bodyId","role","tabIndex","String"],"sources":["../../../src/Accordion/AccordionHeader.tsx"],"sourcesContent":["import type {\n HTMLAttributes,\n ElementType,\n ReactNode,\n MouseEvent,\n KeyboardEvent,\n FocusEvent,\n} from 'react';\nimport { forwardRef, useRef, useState, useEffect } from 'react';\n\nimport { wrapEvent, assignMultipleRefs, getCircularIndex } from '../utils';\nimport { useAccordionContext, useAccordionItemContext } from './context';\nimport { headerScopeQuery as scopeQuery } from './scopeQuery';\n\nexport interface AccordionHeaderProps extends HTMLAttributes<HTMLDivElement> {\n as?: ElementType<any>;\n innerAs?: ElementType<any>;\n children?: ReactNode;\n}\n\nexport const AccordionHeader = forwardRef<HTMLDivElement, AccordionHeaderProps>(\n function AccordionHeader(props, forwardedRef) {\n const {\n as: Comp = 'div',\n onKeyDown,\n onClick: onClickProp,\n onFocus,\n onBlur,\n ...otherProps\n } = props;\n const accordionContext = useAccordionContext();\n const accordionItemContext = useAccordionItemContext();\n const ref = useRef<HTMLDivElement | null>(null);\n const [index, setIndex] = useState<number | undefined>();\n\n if (!accordionItemContext) {\n throw new Error('Missing parent <Accordion /> component');\n }\n\n useEffect(() => {\n if (accordionContext) {\n const allHeaders =\n accordionContext.scope.current.queryAllNodes(scopeQuery) || [];\n\n const index = allHeaders.findIndex((e) => e === ref.current);\n setIndex(index);\n }\n }, [accordionContext]);\n\n const onClick = wrapEvent(onClickProp, (e: MouseEvent<HTMLDivElement>) => {\n let index = 0;\n if (accordionItemContext.expanded) {\n index = -1;\n } else if (accordionContext) {\n const allHeaders =\n accordionContext.scope.current.queryAllNodes(scopeQuery) || [];\n\n index = allHeaders.findIndex((e) => e === ref.current);\n if (index === accordionContext.expandedIndex) {\n index = -1;\n }\n accordionContext.onChange && accordionContext.onChange(e, index);\n }\n\n accordionItemContext.onChange &&\n accordionItemContext.onChange(e, index >= 0);\n });\n\n const handleKeyDown = (e: KeyboardEvent<HTMLDivElement>) => {\n switch (e.key) {\n case 'Enter':\n case ' ': {\n onClick(e as unknown as MouseEvent<HTMLDivElement>);\n e.preventDefault();\n break;\n }\n case 'ArrowUp':\n case 'ArrowDown':\n case 'Home':\n case 'End': {\n if (!accordionContext) {\n return;\n }\n const allHeaders =\n accordionContext.scope.current.queryAllNodes(scopeQuery);\n\n e.preventDefault();\n\n if (allHeaders.length === 0) {\n return;\n }\n\n let nextIndex = allHeaders.findIndex((e) => e === ref.current);\n switch (e.key) {\n case 'ArrowUp':\n nextIndex += -1;\n break;\n case 'ArrowDown':\n nextIndex += +1;\n break;\n case 'Home':\n nextIndex = 0;\n break;\n case 'End':\n nextIndex = -1;\n break;\n }\n\n // We're sure it will not be null, because we already checked for allHeaders.length > 0 above\n nextIndex = getCircularIndex(nextIndex, allHeaders.length)!;\n allHeaders[nextIndex] && allHeaders[nextIndex].focus();\n break;\n }\n default:\n return;\n }\n };\n\n const handleFocus = () => {\n if (accordionContext) {\n if (!accordionContext.childrenHeaderHasFocus) {\n // this is needed to avoid rerendering the parent and\n // messing up with the internal count for children/parent count\n accordionContext.setChildrenHeaderHasFocus(true);\n }\n }\n };\n\n const handleBlur = (e: FocusEvent<HTMLDivElement>) => {\n if (accordionContext) {\n const allHeaders =\n accordionContext.scope.current.queryAllNodes(scopeQuery);\n const newFocusIsHeader =\n allHeaders.findIndex((header) => header === e.relatedTarget) >= 0;\n\n // only remove focus flag if the focus went to some element\n // that is not an accordion header\n if (!newFocusIsHeader) {\n accordionContext.setChildrenHeaderHasFocus(false);\n }\n }\n };\n\n const expanded = Boolean(\n accordionItemContext.expanded ||\n (accordionContext && accordionContext.expandedIndex === index)\n );\n\n return (\n <Comp\n ref={assignMultipleRefs(ref, forwardedRef)}\n {...otherProps}\n id={accordionItemContext.headerId}\n aria-controls={accordionItemContext.bodyId}\n role=\"button\"\n data-accordion-header=\"\"\n tabIndex=\"0\"\n onKeyDown={wrapEvent(onKeyDown, handleKeyDown)}\n onFocus={wrapEvent(onFocus, handleFocus)}\n onBlur={wrapEvent(onBlur, handleBlur)}\n onClick={onClick}\n aria-expanded={String(expanded)}\n />\n );\n }\n);\n"],"mappings":"AAQA,SAASA,UAAU,EAAEC,MAAM,EAAEC,QAAQ,EAAEC,SAAS,QAAQ,OAAO;AAE/D,SAASC,SAAS,EAAEC,kBAAkB,EAAEC,gBAAgB,QAAQ,UAAU;AAC1E,SAASC,mBAAmB,EAAEC,uBAAuB,QAAQ,WAAW;AACxE,SAASC,gBAAgB,IAAIC,UAAU,QAAQ,cAAc;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAQ9D,OAAO,MAAMC,eAAe,gBAAGb,UAAU,CACvC,SAASa,eAAeA,CAACC,KAAK,EAAEC,YAAY,EAAE;EAC5C,MAAM;IACJC,EAAE,EAAEC,IAAI,GAAG,KAAK;IAChBC,SAAS;IACTC,OAAO,EAAEC,WAAW;IACpBC,OAAO;IACPC,MAAM;IACN,GAAGC;EACL,CAAC,GAAGT,KAAK;EACT,MAAMU,gBAAgB,GAAGjB,mBAAmB,CAAC,CAAC;EAC9C,MAAMkB,oBAAoB,GAAGjB,uBAAuB,CAAC,CAAC;EACtD,MAAMkB,GAAG,GAAGzB,MAAM,CAAwB,IAAI,CAAC;EAC/C,MAAM,CAAC0B,KAAK,EAAEC,QAAQ,CAAC,GAAG1B,QAAQ,CAAqB,CAAC;EAExD,IAAI,CAACuB,oBAAoB,EAAE;IACzB,MAAM,IAAII,KAAK,CAAC,wCAAwC,CAAC;EAC3D;EAEA1B,SAAS,CAAC,MAAM;IACd,IAAIqB,gBAAgB,EAAE;MACpB,MAAMM,UAAU,GACdN,gBAAgB,CAACO,KAAK,CAACC,OAAO,CAACC,aAAa,CAACvB,UAAU,CAAC,IAAI,EAAE;MAEhE,MAAMiB,KAAK,GAAGG,UAAU,CAACI,SAAS,CAAEC,CAAC,IAAKA,CAAC,KAAKT,GAAG,CAACM,OAAO,CAAC;MAC5DJ,QAAQ,CAACD,KAAK,CAAC;IACjB;EACF,CAAC,EAAE,CAACH,gBAAgB,CAAC,CAAC;EAEtB,MAAML,OAAO,GAAGf,SAAS,CAACgB,WAAW,EAAGe,CAA6B,IAAK;IACxE,IAAIR,KAAK,GAAG,CAAC;IACb,IAAIF,oBAAoB,CAACW,QAAQ,EAAE;MACjCT,KAAK,GAAG,CAAC,CAAC;IACZ,CAAC,MAAM,IAAIH,gBAAgB,EAAE;MAC3B,MAAMM,UAAU,GACdN,gBAAgB,CAACO,KAAK,CAACC,OAAO,CAACC,aAAa,CAACvB,UAAU,CAAC,IAAI,EAAE;MAEhEiB,KAAK,GAAGG,UAAU,CAACI,SAAS,CAAEC,CAAC,IAAKA,CAAC,KAAKT,GAAG,CAACM,OAAO,CAAC;MACtD,IAAIL,KAAK,KAAKH,gBAAgB,CAACa,aAAa,EAAE;QAC5CV,KAAK,GAAG,CAAC,CAAC;MACZ;MACAH,gBAAgB,CAACc,QAAQ,IAAId,gBAAgB,CAACc,QAAQ,CAACH,CAAC,EAAER,KAAK,CAAC;IAClE;IAEAF,oBAAoB,CAACa,QAAQ,IAC3Bb,oBAAoB,CAACa,QAAQ,CAACH,CAAC,EAAER,KAAK,IAAI,CAAC,CAAC;EAChD,CAAC,CAAC;EAEF,MAAMY,aAAa,GAAIJ,CAAgC,IAAK;IAC1D,QAAQA,CAAC,CAACK,GAAG;MACX,KAAK,OAAO;MACZ,KAAK,GAAG;QAAE;UACRrB,OAAO,CAACgB,CAA0C,CAAC;UACnDA,CAAC,CAACM,cAAc,CAAC,CAAC;UAClB;QACF;MACA,KAAK,SAAS;MACd,KAAK,WAAW;MAChB,KAAK,MAAM;MACX,KAAK,KAAK;QAAE;UACV,IAAI,CAACjB,gBAAgB,EAAE;YACrB;UACF;UACA,MAAMM,UAAU,GACdN,gBAAgB,CAACO,KAAK,CAACC,OAAO,CAACC,aAAa,CAACvB,UAAU,CAAC;UAE1DyB,CAAC,CAACM,cAAc,CAAC,CAAC;UAElB,IAAIX,UAAU,CAACY,MAAM,KAAK,CAAC,EAAE;YAC3B;UACF;UAEA,IAAIC,SAAS,GAAGb,UAAU,CAACI,SAAS,CAAEC,CAAC,IAAKA,CAAC,KAAKT,GAAG,CAACM,OAAO,CAAC;UAC9D,QAAQG,CAAC,CAACK,GAAG;YACX,KAAK,SAAS;cACZG,SAAS,IAAI,CAAC,CAAC;cACf;YACF,KAAK,WAAW;cACdA,SAAS,IAAI,CAAC,CAAC;cACf;YACF,KAAK,MAAM;cACTA,SAAS,GAAG,CAAC;cACb;YACF,KAAK,KAAK;cACRA,SAAS,GAAG,CAAC,CAAC;cACd;UACJ;;UAEA;UACAA,SAAS,GAAGrC,gBAAgB,CAACqC,SAAS,EAAEb,UAAU,CAACY,MAAM,CAAE;UAC3DZ,UAAU,CAACa,SAAS,CAAC,IAAIb,UAAU,CAACa,SAAS,CAAC,CAACC,KAAK,CAAC,CAAC;UACtD;QACF;MACA;QACE;IACJ;EACF,CAAC;EAED,MAAMC,WAAW,GAAGA,CAAA,KAAM;IACxB,IAAIrB,gBAAgB,EAAE;MACpB,IAAI,CAACA,gBAAgB,CAACsB,sBAAsB,EAAE;QAC5C;QACA;QACAtB,gBAAgB,CAACuB,yBAAyB,CAAC,IAAI,CAAC;MAClD;IACF;EACF,CAAC;EAED,MAAMC,UAAU,GAAIb,CAA6B,IAAK;IACpD,IAAIX,gBAAgB,EAAE;MACpB,MAAMM,UAAU,GACdN,gBAAgB,CAACO,KAAK,CAACC,OAAO,CAACC,aAAa,CAACvB,UAAU,CAAC;MAC1D,MAAMuC,gBAAgB,GACpBnB,UAAU,CAACI,SAAS,CAAEgB,MAAM,IAAKA,MAAM,KAAKf,CAAC,CAACgB,aAAa,CAAC,IAAI,CAAC;;MAEnE;MACA;MACA,IAAI,CAACF,gBAAgB,EAAE;QACrBzB,gBAAgB,CAACuB,yBAAyB,CAAC,KAAK,CAAC;MACnD;IACF;EACF,CAAC;EAED,MAAMX,QAAQ,GAAGgB,OAAO,CACtB3B,oBAAoB,CAACW,QAAQ,IAC1BZ,gBAAgB,IAAIA,gBAAgB,CAACa,aAAa,KAAKV,KAC5D,CAAC;EAED,oBACEf,IAAA,CAACK,IAAI;IACHS,GAAG,EAAErB,kBAAkB,CAACqB,GAAG,EAAEX,YAAY,CAAE;IAAA,GACvCQ,UAAU;IACd8B,EAAE,EAAE5B,oBAAoB,CAAC6B,QAAS;IAClC,iBAAe7B,oBAAoB,CAAC8B,MAAO;IAC3CC,IAAI,EAAC,QAAQ;IACb,yBAAsB,EAAE;IACxBC,QAAQ,EAAC,GAAG;IACZvC,SAAS,EAAEd,SAAS,CAACc,SAAS,EAAEqB,aAAa,CAAE;IAC/ClB,OAAO,EAAEjB,SAAS,CAACiB,OAAO,EAAEwB,WAAW,CAAE;IACzCvB,MAAM,EAAElB,SAAS,CAACkB,MAAM,EAAE0B,UAAU,CAAE;IACtC7B,OAAO,EAAEA,OAAQ;IACjB,iBAAeuC,MAAM,CAACtB,QAAQ;EAAE,CACjC,CAAC;AAEN,CACF,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"AccordionHeader.js","names":["forwardRef","wrapEvent","getCircularIndex","useAccordionContext","CollapsibleTrigger","headerScopeQuery","jsx","_jsx","AccordionHeader","props","forwardedRef","as","Comp","onKeyDown","onFocus","onBlur","otherProps","accordionContext","handleKeyDown","e","key","allHeaders","scope","current","queryAllNodes","length","preventDefault","nextIndex","findIndex","el","currentTarget","focus","handleFocus","childrenHeaderHasFocus","setChildrenHeaderHasFocus","handleBlur","newFocusIsHeader","header","relatedTarget","isNonButton","ref","role","undefined","tabIndex"],"sources":["../../../src/Accordion/AccordionHeader.tsx"],"sourcesContent":["import type { HTMLAttributes, ElementType, ReactNode, KeyboardEvent, FocusEvent } from 'react';\nimport { forwardRef } from 'react';\n\nimport { wrapEvent, getCircularIndex } from '../utils';\nimport { useAccordionContext } from './context';\nimport { CollapsibleTrigger } from '../Collapsible';\nimport { headerScopeQuery } from './scopeQuery';\n\nexport interface AccordionHeaderProps extends HTMLAttributes<HTMLDivElement> {\n as?: ElementType<any>;\n innerAs?: ElementType<any>;\n children?: ReactNode;\n}\n\nexport const AccordionHeader = forwardRef<HTMLDivElement, AccordionHeaderProps>(\n function AccordionHeader(props, forwardedRef) {\n const {\n as: Comp = 'div',\n onKeyDown,\n onFocus,\n onBlur,\n ...otherProps\n } = props;\n \n const accordionContext = useAccordionContext();\n\n const handleKeyDown = (e: KeyboardEvent<HTMLDivElement>) => {\n switch (e.key) {\n case 'ArrowUp':\n case 'ArrowDown':\n case 'Home':\n case 'End': {\n if (!accordionContext) {\n return;\n }\n const allHeaders = accordionContext.scope.current.queryAllNodes(headerScopeQuery);\n \n if (allHeaders.length === 0) {\n return;\n }\n\n e.preventDefault();\n let nextIndex = allHeaders.findIndex(el => el === e.currentTarget);\n \n switch (e.key) {\n case 'ArrowUp': nextIndex -= 1; break;\n case 'ArrowDown': nextIndex += 1; break;\n case 'Home': nextIndex = 0; break;\n case 'End': nextIndex = -1; break;\n }\n\n nextIndex = getCircularIndex(nextIndex, allHeaders.length)!;\n allHeaders[nextIndex]?.focus();\n break;\n }\n }\n };\n\n const handleFocus = () => {\n if (accordionContext && !accordionContext.childrenHeaderHasFocus) {\n accordionContext.setChildrenHeaderHasFocus(true);\n }\n };\n\n const handleBlur = (e: FocusEvent<HTMLDivElement>) => {\n if (accordionContext) {\n const allHeaders = accordionContext.scope.current.queryAllNodes(headerScopeQuery);\n const newFocusIsHeader = allHeaders.findIndex(header => header === e.relatedTarget) >= 0;\n \n if (!newFocusIsHeader) {\n accordionContext.setChildrenHeaderHasFocus(false);\n }\n }\n };\n\n const isNonButton = Comp !== 'button';\n\n return (\n <CollapsibleTrigger\n as={Comp}\n ref={forwardedRef}\n data-accordion-header=\"\"\n role={isNonButton ? 'button' : undefined}\n tabIndex={isNonButton ? 0 : undefined}\n onKeyDown={wrapEvent(onKeyDown, handleKeyDown)}\n onFocus={wrapEvent(onFocus, handleFocus)}\n onBlur={wrapEvent(onBlur, handleBlur)}\n {...otherProps}\n />\n );\n }\n);\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"AccordionItem.d.ts","sourceRoot":"","sources":["../../../src/Accordion/AccordionItem.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,WAAW,EACX,SAAS,EACT,aAAa,EACb,UAAU,EACX,MAAM,OAAO,CAAC;AAMf,MAAM,WAAW,kBACf,SAAQ,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,UAAU,CAAC;IACxD,EAAE,CAAC,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;IACtB,OAAO,CAAC,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;IAC3B,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,CACT,CAAC,EAAE,aAAa,CAAC,cAAc,CAAC,GAAG,UAAU,CAAC,cAAc,CAAC,EAC7D,KAAK,EAAE,OAAO,KACX,IAAI,CAAC;CACX;AAED,eAAO,MAAM,aAAa,+GAyBzB,CAAC"}
1
+ {"version":3,"file":"AccordionItem.d.ts","sourceRoot":"","sources":["../../../src/Accordion/AccordionItem.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,SAAS,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAQ/F,MAAM,WAAW,kBAAmB,SAAQ,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,UAAU,CAAC;IAC1F,EAAE,CAAC,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;IACtB,OAAO,CAAC,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;IAC3B,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,aAAa,CAAC,cAAc,CAAC,GAAG,UAAU,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CACpG;AAED,eAAO,MAAM,aAAa,+GA4CzB,CAAC"}
@@ -1,28 +1,41 @@
1
- import { Fragment, forwardRef, useId } from 'react';
2
- import { AccordionItemProvider } from './context';
1
+ import { forwardRef, useRef, useState, useEffect } from 'react';
2
+ import { useAccordionContext } from './context';
3
+ import { Collapsible } from '../Collapsible';
4
+ import { assignMultipleRefs } from '../utils';
5
+ import { itemScopeQuery } from './scopeQuery';
3
6
  import { jsx as _jsx } from "react/jsx-runtime";
4
7
  export const AccordionItem = /*#__PURE__*/forwardRef(function AccordionItem(props, forwardedRef) {
5
8
  const {
6
- as: Comp = Fragment,
7
- expanded = false,
9
+ as: Comp = 'div',
10
+ innerAs,
11
+ expanded: expandedProp = false,
8
12
  onChange,
9
13
  ...otherProps
10
14
  } = props;
11
- const id = useId();
12
- const headerId = id ? `accordion-header-${id}` : undefined;
13
- const bodyId = id ? `accordion-body-${id}` : undefined;
14
- const contextValue = {
15
- headerId,
16
- bodyId,
17
- expanded,
18
- onChange
15
+ const accordionContext = useAccordionContext();
16
+ const ref = useRef(null);
17
+ const [index, setIndex] = useState();
18
+ useEffect(() => {
19
+ if (accordionContext && ref.current) {
20
+ const allItems = accordionContext.scope.current.queryAllNodes(itemScopeQuery) || [];
21
+ setIndex(allItems.findIndex(e => e === ref.current));
22
+ }
23
+ }, [accordionContext]);
24
+ const isExpanded = Boolean(expandedProp || accordionContext && index !== undefined && accordionContext.expandedIndex === index);
25
+ const handleOpenChange = (e, isOpen) => {
26
+ onChange?.(e, isOpen);
27
+ if (accordionContext && index !== undefined) {
28
+ accordionContext.onChange?.(e, isOpen ? index : -1);
29
+ }
19
30
  };
20
- return /*#__PURE__*/_jsx(AccordionItemProvider, {
21
- value: contextValue,
22
- children: /*#__PURE__*/_jsx(Comp, {
23
- ref: forwardedRef,
24
- ...otherProps
25
- })
31
+ return /*#__PURE__*/_jsx(Collapsible, {
32
+ as: Comp,
33
+ innerAs: innerAs,
34
+ open: isExpanded,
35
+ onChange: handleOpenChange,
36
+ ref: assignMultipleRefs(forwardedRef, ref),
37
+ "data-accordion-item": "",
38
+ ...otherProps
26
39
  });
27
40
  });
28
41
  //# sourceMappingURL=AccordionItem.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AccordionItem.js","names":["Fragment","forwardRef","useId","AccordionItemProvider","jsx","_jsx","AccordionItem","props","forwardedRef","as","Comp","expanded","onChange","otherProps","id","headerId","undefined","bodyId","contextValue","value","children","ref"],"sources":["../../../src/Accordion/AccordionItem.tsx"],"sourcesContent":["import type {\n HTMLAttributes,\n ElementType,\n ReactNode,\n KeyboardEvent,\n MouseEvent,\n} from 'react';\nimport { Fragment, forwardRef, useId } from 'react';\n\nimport type { AccordionItemContextProps } from './context';\nimport { AccordionItemProvider } from './context';\n\nexport interface AccordionItemProps\n extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange'> {\n as?: ElementType<any>;\n innerAs?: ElementType<any>;\n children?: ReactNode;\n expanded?: boolean;\n onChange?: (\n e: KeyboardEvent<HTMLDivElement> | MouseEvent<HTMLDivElement>,\n value: boolean\n ) => void;\n}\n\nexport const AccordionItem = forwardRef<HTMLDivElement, AccordionItemProps>(\n function AccordionItem(props, forwardedRef) {\n const {\n as: Comp = Fragment,\n expanded = false,\n onChange,\n ...otherProps\n } = props;\n const id = useId();\n\n const headerId = id ? `accordion-header-${id}` : undefined;\n const bodyId = id ? `accordion-body-${id}` : undefined;\n const contextValue: AccordionItemContextProps = {\n headerId,\n bodyId,\n expanded,\n onChange,\n };\n\n return (\n <AccordionItemProvider value={contextValue}>\n <Comp ref={forwardedRef} {...otherProps} />\n </AccordionItemProvider>\n );\n }\n);\n"],"mappings":"AAOA,SAASA,QAAQ,EAAEC,UAAU,EAAEC,KAAK,QAAQ,OAAO;AAGnD,SAASC,qBAAqB,QAAQ,WAAW;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAclD,OAAO,MAAMC,aAAa,gBAAGL,UAAU,CACrC,SAASK,aAAaA,CAACC,KAAK,EAAEC,YAAY,EAAE;EAC1C,MAAM;IACJC,EAAE,EAAEC,IAAI,GAAGV,QAAQ;IACnBW,QAAQ,GAAG,KAAK;IAChBC,QAAQ;IACR,GAAGC;EACL,CAAC,GAAGN,KAAK;EACT,MAAMO,EAAE,GAAGZ,KAAK,CAAC,CAAC;EAElB,MAAMa,QAAQ,GAAGD,EAAE,GAAG,oBAAoBA,EAAE,EAAE,GAAGE,SAAS;EAC1D,MAAMC,MAAM,GAAGH,EAAE,GAAG,kBAAkBA,EAAE,EAAE,GAAGE,SAAS;EACtD,MAAME,YAAuC,GAAG;IAC9CH,QAAQ;IACRE,MAAM;IACNN,QAAQ;IACRC;EACF,CAAC;EAED,oBACEP,IAAA,CAACF,qBAAqB;IAACgB,KAAK,EAAED,YAAa;IAAAE,QAAA,eACzCf,IAAA,CAACK,IAAI;MAACW,GAAG,EAAEb,YAAa;MAAA,GAAKK;IAAU,CAAG;EAAC,CACtB,CAAC;AAE5B,CACF,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"AccordionItem.js","names":["forwardRef","useRef","useState","useEffect","useAccordionContext","Collapsible","assignMultipleRefs","itemScopeQuery","jsx","_jsx","AccordionItem","props","forwardedRef","as","Comp","innerAs","expanded","expandedProp","onChange","otherProps","accordionContext","ref","index","setIndex","current","allItems","scope","queryAllNodes","findIndex","e","isExpanded","Boolean","undefined","expandedIndex","handleOpenChange","isOpen","open"],"sources":["../../../src/Accordion/AccordionItem.tsx"],"sourcesContent":["import type { HTMLAttributes, ElementType, ReactNode, KeyboardEvent, MouseEvent } from 'react';\nimport { forwardRef, useRef, useState, useEffect } from 'react';\n\nimport { useAccordionContext } from './context';\nimport { Collapsible } from '../Collapsible';\nimport { assignMultipleRefs } from '../utils';\nimport { itemScopeQuery } from './scopeQuery';\n\nexport interface AccordionItemProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange'> {\n as?: ElementType<any>;\n innerAs?: ElementType<any>;\n children?: ReactNode;\n expanded?: boolean;\n onChange?: (e: KeyboardEvent<HTMLDivElement> | MouseEvent<HTMLDivElement>, value: boolean) => void;\n}\n\nexport const AccordionItem = forwardRef<HTMLDivElement, AccordionItemProps>(\n function AccordionItem(props, forwardedRef) {\n const {\n as: Comp = 'div',\n innerAs,\n expanded: expandedProp = false,\n onChange,\n ...otherProps\n } = props;\n \n const accordionContext = useAccordionContext();\n const ref = useRef<HTMLDivElement | null>(null);\n const [index, setIndex] = useState<number | undefined>();\n\n useEffect(() => {\n if (accordionContext && ref.current) {\n const allItems = accordionContext.scope.current.queryAllNodes(itemScopeQuery) || [];\n setIndex(allItems.findIndex(e => e === ref.current));\n }\n }, [accordionContext]);\n\n const isExpanded = Boolean(\n expandedProp || (accordionContext && index !== undefined && accordionContext.expandedIndex === index)\n );\n\n const handleOpenChange = (e: any, isOpen: boolean) => {\n onChange?.(e, isOpen);\n if (accordionContext && index !== undefined) {\n accordionContext.onChange?.(e, isOpen ? index : -1);\n }\n };\n\n return (\n <Collapsible\n as={Comp}\n innerAs={innerAs}\n open={isExpanded}\n onChange={handleOpenChange}\n ref={assignMultipleRefs(forwardedRef, ref)}\n data-accordion-item=\"\"\n {...otherProps}\n />\n );\n }\n);\n"],"mappings":"AACA,SAASA,UAAU,EAAEC,MAAM,EAAEC,QAAQ,EAAEC,SAAS,QAAQ,OAAO;AAE/D,SAASC,mBAAmB,QAAQ,WAAW;AAC/C,SAASC,WAAW,QAAQ,gBAAgB;AAC5C,SAASC,kBAAkB,QAAQ,UAAU;AAC7C,SAASC,cAAc,QAAQ,cAAc;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAU9C,OAAO,MAAMC,aAAa,gBAAGV,UAAU,CACrC,SAASU,aAAaA,CAACC,KAAK,EAAEC,YAAY,EAAE;EAC1C,MAAM;IACJC,EAAE,EAAEC,IAAI,GAAG,KAAK;IAChBC,OAAO;IACPC,QAAQ,EAAEC,YAAY,GAAG,KAAK;IAC9BC,QAAQ;IACR,GAAGC;EACL,CAAC,GAAGR,KAAK;EAET,MAAMS,gBAAgB,GAAGhB,mBAAmB,CAAC,CAAC;EAC9C,MAAMiB,GAAG,GAAGpB,MAAM,CAAwB,IAAI,CAAC;EAC/C,MAAM,CAACqB,KAAK,EAAEC,QAAQ,CAAC,GAAGrB,QAAQ,CAAqB,CAAC;EAExDC,SAAS,CAAC,MAAM;IACd,IAAIiB,gBAAgB,IAAIC,GAAG,CAACG,OAAO,EAAE;MACnC,MAAMC,QAAQ,GAAGL,gBAAgB,CAACM,KAAK,CAACF,OAAO,CAACG,aAAa,CAACpB,cAAc,CAAC,IAAI,EAAE;MACnFgB,QAAQ,CAACE,QAAQ,CAACG,SAAS,CAACC,CAAC,IAAIA,CAAC,KAAKR,GAAG,CAACG,OAAO,CAAC,CAAC;IACtD;EACF,CAAC,EAAE,CAACJ,gBAAgB,CAAC,CAAC;EAEtB,MAAMU,UAAU,GAAGC,OAAO,CACxBd,YAAY,IAAKG,gBAAgB,IAAIE,KAAK,KAAKU,SAAS,IAAIZ,gBAAgB,CAACa,aAAa,KAAKX,KACjG,CAAC;EAED,MAAMY,gBAAgB,GAAGA,CAACL,CAAM,EAAEM,MAAe,KAAK;IACpDjB,QAAQ,GAAGW,CAAC,EAAEM,MAAM,CAAC;IACrB,IAAIf,gBAAgB,IAAIE,KAAK,KAAKU,SAAS,EAAE;MAC3CZ,gBAAgB,CAACF,QAAQ,GAAGW,CAAC,EAAEM,MAAM,GAAGb,KAAK,GAAG,CAAC,CAAC,CAAC;IACrD;EACF,CAAC;EAED,oBACEb,IAAA,CAACJ,WAAW;IACVQ,EAAE,EAAEC,IAAK;IACTC,OAAO,EAAEA,OAAQ;IACjBqB,IAAI,EAAEN,UAAW;IACjBZ,QAAQ,EAAEgB,gBAAiB;IAC3Bb,GAAG,EAAEf,kBAAkB,CAACM,YAAY,EAAES,GAAG,CAAE;IAC3C,uBAAoB,EAAE;IAAA,GAClBF;EAAU,CACf,CAAC;AAEN,CACF,CAAC","ignoreList":[]}
@@ -9,12 +9,4 @@ export interface AccordionContextProps {
9
9
  }
10
10
  export declare const AccordionProvider: import("react").Provider<AccordionContextProps | null>;
11
11
  export declare const useAccordionContext: () => AccordionContextProps | null;
12
- export interface AccordionItemContextProps {
13
- headerId: string | undefined;
14
- bodyId: string | undefined;
15
- expanded: boolean;
16
- onChange?: (e: KeyboardEvent<HTMLDivElement> | MouseEvent<HTMLDivElement>, value: boolean) => void;
17
- }
18
- export declare const AccordionItemProvider: import("react").Provider<AccordionItemContextProps | null>;
19
- export declare const useAccordionItemContext: () => AccordionItemContextProps | null;
20
12
  //# sourceMappingURL=context.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/Accordion/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAGvD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAG/C,MAAM,WAAW,qBAAqB;IACpC,sBAAsB,EAAE,OAAO,CAAC;IAChC,yBAAyB,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACpD,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,CACT,CAAC,EAAE,aAAa,CAAC,cAAc,CAAC,GAAG,UAAU,CAAC,cAAc,CAAC,EAC7D,KAAK,EAAE,MAAM,KACV,IAAI,CAAC;CACX;AAGD,eAAO,MAAkB,iBAAiB,wDAAqB,CAAC;AAChE,eAAO,MAAM,mBAAmB,oCAAqC,CAAC;AAGtE,MAAM,WAAW,yBAAyB;IACxC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,CACT,CAAC,EAAE,aAAa,CAAC,cAAc,CAAC,GAAG,UAAU,CAAC,cAAc,CAAC,EAC7D,KAAK,EAAE,OAAO,KACX,IAAI,CAAC;CACX;AAKD,eAAO,MAAkB,qBAAqB,4DAAyB,CAAC;AACxE,eAAO,MAAM,uBAAuB,wCAAyC,CAAC"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/Accordion/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAGvD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE/C,MAAM,WAAW,qBAAqB;IACpC,sBAAsB,EAAE,OAAO,CAAC;IAChC,yBAAyB,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACpD,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,CACT,CAAC,EAAE,aAAa,CAAC,cAAc,CAAC,GAAG,UAAU,CAAC,cAAc,CAAC,EAC7D,KAAK,EAAE,MAAM,KACV,IAAI,CAAC;CACX;AAGD,eAAO,MAAkB,iBAAiB,wDAAqB,CAAC;AAChE,eAAO,MAAM,mBAAmB,oCAAqC,CAAC"}
@@ -1,18 +1,7 @@
1
1
  import { useContext, createContext } from 'react';
2
-
3
- // AccordionGroup Component
4
-
5
2
  const accordionContext = /*#__PURE__*/createContext(null);
6
3
  export const {
7
4
  Provider: AccordionProvider
8
5
  } = accordionContext;
9
6
  export const useAccordionContext = () => useContext(accordionContext);
10
-
11
- // Accordion Component
12
-
13
- const accordionItemContext = /*#__PURE__*/createContext(null);
14
- export const {
15
- Provider: AccordionItemProvider
16
- } = accordionItemContext;
17
- export const useAccordionItemContext = () => useContext(accordionItemContext);
18
7
  //# sourceMappingURL=context.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","names":["useContext","createContext","accordionContext","Provider","AccordionProvider","useAccordionContext","accordionItemContext","AccordionItemProvider","useAccordionItemContext"],"sources":["../../../src/Accordion/context.ts"],"sourcesContent":["import type { KeyboardEvent, MouseEvent } from 'react';\nimport { useContext, createContext } from 'react';\n\nimport type { Scope } from '../hooks/useScope';\n\n// AccordionGroup Component\nexport interface AccordionContextProps {\n childrenHeaderHasFocus: boolean;\n setChildrenHeaderHasFocus: (value: boolean) => void;\n scope: Scope<HTMLElement>;\n expandedIndex: number;\n onChange?: (\n e: KeyboardEvent<HTMLDivElement> | MouseEvent<HTMLDivElement>,\n index: number\n ) => void;\n}\n\nconst accordionContext = createContext<AccordionContextProps | null>(null);\nexport const { Provider: AccordionProvider } = accordionContext;\nexport const useAccordionContext = () => useContext(accordionContext);\n\n// Accordion Component\nexport interface AccordionItemContextProps {\n headerId: string | undefined;\n bodyId: string | undefined;\n expanded: boolean;\n onChange?: (\n e: KeyboardEvent<HTMLDivElement> | MouseEvent<HTMLDivElement>,\n value: boolean\n ) => void;\n}\n\nconst accordionItemContext = createContext<AccordionItemContextProps | null>(\n null\n);\nexport const { Provider: AccordionItemProvider } = accordionItemContext;\nexport const useAccordionItemContext = () => useContext(accordionItemContext);\n"],"mappings":"AACA,SAASA,UAAU,EAAEC,aAAa,QAAQ,OAAO;;AAIjD;;AAYA,MAAMC,gBAAgB,gBAAGD,aAAa,CAA+B,IAAI,CAAC;AAC1E,OAAO,MAAM;EAAEE,QAAQ,EAAEC;AAAkB,CAAC,GAAGF,gBAAgB;AAC/D,OAAO,MAAMG,mBAAmB,GAAGA,CAAA,KAAML,UAAU,CAACE,gBAAgB,CAAC;;AAErE;;AAWA,MAAMI,oBAAoB,gBAAGL,aAAa,CACxC,IACF,CAAC;AACD,OAAO,MAAM;EAAEE,QAAQ,EAAEI;AAAsB,CAAC,GAAGD,oBAAoB;AACvE,OAAO,MAAME,uBAAuB,GAAGA,CAAA,KAAMR,UAAU,CAACM,oBAAoB,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"context.js","names":["useContext","createContext","accordionContext","Provider","AccordionProvider","useAccordionContext"],"sources":["../../../src/Accordion/context.ts"],"sourcesContent":["import type { KeyboardEvent, MouseEvent } from 'react';\nimport { useContext, createContext } from 'react';\n\nimport type { Scope } from '../hooks/useScope';\n\nexport interface AccordionContextProps {\n childrenHeaderHasFocus: boolean;\n setChildrenHeaderHasFocus: (value: boolean) => void;\n scope: Scope<HTMLElement>;\n expandedIndex: number;\n onChange?: (\n e: KeyboardEvent<HTMLDivElement> | MouseEvent<HTMLDivElement>,\n index: number\n ) => void;\n}\n\nconst accordionContext = createContext<AccordionContextProps | null>(null);\nexport const { Provider: AccordionProvider } = accordionContext;\nexport const useAccordionContext = () => useContext(accordionContext);\n"],"mappings":"AACA,SAASA,UAAU,EAAEC,aAAa,QAAQ,OAAO;AAejD,MAAMC,gBAAgB,gBAAGD,aAAa,CAA+B,IAAI,CAAC;AAC1E,OAAO,MAAM;EAAEE,QAAQ,EAAEC;AAAkB,CAAC,GAAGF,gBAAgB;AAC/D,OAAO,MAAMG,mBAAmB,GAAGA,CAAA,KAAML,UAAU,CAACE,gBAAgB,CAAC","ignoreList":[]}
@@ -1,3 +1,4 @@
1
1
  export declare function headerScopeQuery(type: string, props: Record<string, unknown>): boolean;
2
2
  export declare function bodyScopeQuery(type: string, props: Record<string, unknown>): boolean;
3
+ export declare function itemScopeQuery(type: string, props: Record<string, unknown>): boolean;
3
4
  //# sourceMappingURL=scopeQuery.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"scopeQuery.d.ts","sourceRoot":"","sources":["../../../src/Accordion/scopeQuery.ts"],"names":[],"mappings":"AAAA,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,WAE5E;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,WAE1E"}
1
+ {"version":3,"file":"scopeQuery.d.ts","sourceRoot":"","sources":["../../../src/Accordion/scopeQuery.ts"],"names":[],"mappings":"AAAA,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,WAE5E;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,WAE1E;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,WAE1E"}
@@ -4,4 +4,7 @@ export function headerScopeQuery(type, props) {
4
4
  export function bodyScopeQuery(type, props) {
5
5
  return props['data-accordion-body'] === '';
6
6
  }
7
+ export function itemScopeQuery(type, props) {
8
+ return props['data-accordion-item'] === '';
9
+ }
7
10
  //# sourceMappingURL=scopeQuery.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"scopeQuery.js","names":["headerScopeQuery","type","props","bodyScopeQuery"],"sources":["../../../src/Accordion/scopeQuery.ts"],"sourcesContent":["export function headerScopeQuery(type: string, props: Record<string, unknown>) {\n return props['data-accordion-header'] === '';\n}\n\nexport function bodyScopeQuery(type: string, props: Record<string, unknown>) {\n return props['data-accordion-body'] === '';\n}\n"],"mappings":"AAAA,OAAO,SAASA,gBAAgBA,CAACC,IAAY,EAAEC,KAA8B,EAAE;EAC7E,OAAOA,KAAK,CAAC,uBAAuB,CAAC,KAAK,EAAE;AAC9C;AAEA,OAAO,SAASC,cAAcA,CAACF,IAAY,EAAEC,KAA8B,EAAE;EAC3E,OAAOA,KAAK,CAAC,qBAAqB,CAAC,KAAK,EAAE;AAC5C","ignoreList":[]}
1
+ {"version":3,"file":"scopeQuery.js","names":["headerScopeQuery","type","props","bodyScopeQuery","itemScopeQuery"],"sources":["../../../src/Accordion/scopeQuery.ts"],"sourcesContent":["export function headerScopeQuery(type: string, props: Record<string, unknown>) {\n return props['data-accordion-header'] === '';\n}\n\nexport function bodyScopeQuery(type: string, props: Record<string, unknown>) {\n return props['data-accordion-body'] === '';\n}\n\nexport function itemScopeQuery(type: string, props: Record<string, unknown>) {\n return props['data-accordion-item'] === '';\n}\n"],"mappings":"AAAA,OAAO,SAASA,gBAAgBA,CAACC,IAAY,EAAEC,KAA8B,EAAE;EAC7E,OAAOA,KAAK,CAAC,uBAAuB,CAAC,KAAK,EAAE;AAC9C;AAEA,OAAO,SAASC,cAAcA,CAACF,IAAY,EAAEC,KAA8B,EAAE;EAC3E,OAAOA,KAAK,CAAC,qBAAqB,CAAC,KAAK,EAAE;AAC5C;AAEA,OAAO,SAASE,cAAcA,CAACH,IAAY,EAAEC,KAA8B,EAAE;EAC3E,OAAOA,KAAK,CAAC,qBAAqB,CAAC,KAAK,EAAE;AAC5C","ignoreList":[]}
@@ -0,0 +1,13 @@
1
+ import type { ElementType, ReactNode, SyntheticEvent, MouseEvent as ReactMouseEvent, KeyboardEvent as ReactKeyboardEvent, HTMLAttributes } from 'react';
2
+ export type CollapsibleTriggerEvent = ReactKeyboardEvent<any> | ReactMouseEvent<any> | Event | SyntheticEvent<any>;
3
+ export interface CollapsibleProps extends Omit<HTMLAttributes<HTMLElement>, 'onChange'> {
4
+ as?: ElementType<any>;
5
+ innerAs?: ElementType<any>;
6
+ children?: ReactNode;
7
+ open?: boolean;
8
+ defaultOpen?: boolean;
9
+ onChange?: (e: CollapsibleTriggerEvent, isOpen: boolean) => void;
10
+ disabled?: boolean;
11
+ }
12
+ export declare const Collapsible: import("react").ForwardRefExoticComponent<CollapsibleProps & import("react").RefAttributes<HTMLElement>>;
13
+ //# sourceMappingURL=Collapsible.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Collapsible.d.ts","sourceRoot":"","sources":["../../../src/Collapsible/Collapsible.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,cAAc,EAAE,UAAU,IAAI,eAAe,EAAE,aAAa,IAAI,kBAAkB,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAKxJ,MAAM,MAAM,uBAAuB,GAC/B,kBAAkB,CAAC,GAAG,CAAC,GACvB,eAAe,CAAC,GAAG,CAAC,GACpB,KAAK,GACL,cAAc,CAAC,GAAG,CAAC,CAAC;AAExB,MAAM,WAAW,gBAAiB,SAAQ,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,UAAU,CAAC;IACrF,EAAE,CAAC,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;IACtB,OAAO,CAAC,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;IAC3B,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,uBAAuB,EAAE,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IACjE,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,eAAO,MAAM,WAAW,0GAyDvB,CAAC"}
@@ -0,0 +1,53 @@
1
+ import { forwardRef, Fragment, useState, useCallback } from 'react';
2
+ import { CollapsibleProvider } from './context';
3
+ import { useControlledState, useTransitionStatus } from '../hooks';
4
+ import { jsx as _jsx } from "react/jsx-runtime";
5
+ export const Collapsible = /*#__PURE__*/forwardRef(function Collapsible(props, forwardedRef) {
6
+ const {
7
+ as: Comp = 'div',
8
+ innerAs,
9
+ open: openProp,
10
+ defaultOpen = false,
11
+ onChange: onChangeProp,
12
+ disabled = false,
13
+ ...otherProps
14
+ } = props;
15
+ const [openState, setOpenState] = useControlledState(openProp, onChangeProp, defaultOpen, setState => (e, isOpen) => {
16
+ setState(isOpen);
17
+ });
18
+ const [panelId, setPanelId] = useState();
19
+ const {
20
+ mounted,
21
+ setMounted,
22
+ transitionStatus
23
+ } = useTransitionStatus(openState, true, true);
24
+ const onChange = useCallback((e, isOpen) => {
25
+ if (!disabled) {
26
+ setOpenState(e, isOpen);
27
+ }
28
+ }, [setOpenState, disabled]);
29
+ const contextValue = {
30
+ open: openState,
31
+ mounted,
32
+ transitionStatus,
33
+ setMounted,
34
+ panelId,
35
+ disabled,
36
+ onChange,
37
+ setPanelId
38
+ };
39
+ return /*#__PURE__*/_jsx(CollapsibleProvider, {
40
+ value: contextValue,
41
+ children: /*#__PURE__*/_jsx(Comp, {
42
+ ...(Comp !== Fragment ? {
43
+ as: innerAs,
44
+ ref: forwardedRef
45
+ } : {}),
46
+ "data-open": openState ? '' : undefined,
47
+ "data-disabled": disabled ? '' : undefined,
48
+ "data-state": openState ? 'open' : 'closed',
49
+ ...otherProps
50
+ })
51
+ });
52
+ });
53
+ //# sourceMappingURL=Collapsible.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Collapsible.js","names":["forwardRef","Fragment","useState","useCallback","CollapsibleProvider","useControlledState","useTransitionStatus","jsx","_jsx","Collapsible","props","forwardedRef","as","Comp","innerAs","open","openProp","defaultOpen","onChange","onChangeProp","disabled","otherProps","openState","setOpenState","setState","e","isOpen","panelId","setPanelId","mounted","setMounted","transitionStatus","contextValue","value","children","ref","undefined"],"sources":["../../../src/Collapsible/Collapsible.tsx"],"sourcesContent":["import type { ElementType, ReactNode, SyntheticEvent, MouseEvent as ReactMouseEvent, KeyboardEvent as ReactKeyboardEvent, HTMLAttributes } from 'react';\nimport { forwardRef, Fragment, useState, useCallback } from 'react';\nimport { CollapsibleProvider } from './context';\nimport { useControlledState, useTransitionStatus } from '../hooks';\n\nexport type CollapsibleTriggerEvent =\n | ReactKeyboardEvent<any>\n | ReactMouseEvent<any>\n | Event\n | SyntheticEvent<any>;\n\nexport interface CollapsibleProps extends Omit<HTMLAttributes<HTMLElement>, 'onChange'> {\n as?: ElementType<any>;\n innerAs?: ElementType<any>;\n children?: ReactNode;\n open?: boolean;\n defaultOpen?: boolean;\n onChange?: (e: CollapsibleTriggerEvent, isOpen: boolean) => void;\n disabled?: boolean;\n}\n\nexport const Collapsible = forwardRef<HTMLElement, CollapsibleProps>(\n function Collapsible(props, forwardedRef) {\n const {\n as: Comp = 'div',\n innerAs,\n open: openProp,\n defaultOpen = false,\n onChange: onChangeProp,\n disabled = false,\n ...otherProps\n } = props;\n\n const [openState, setOpenState] = useControlledState(\n openProp,\n onChangeProp,\n defaultOpen,\n (setState) => (e, isOpen) => {\n setState(isOpen);\n }\n );\n\n const [panelId, setPanelId] = useState<string | undefined>();\n\n const { mounted, setMounted, transitionStatus } = useTransitionStatus(openState, true, true);\n\n const onChange = useCallback(\n (e: CollapsibleTriggerEvent, isOpen: boolean) => {\n if (!disabled) {\n setOpenState(e, isOpen);\n }\n },\n [setOpenState, disabled]\n );\n\n const contextValue = {\n open: openState,\n mounted,\n transitionStatus,\n setMounted,\n panelId,\n disabled,\n onChange,\n setPanelId,\n };\n\n return (\n <CollapsibleProvider value={contextValue}>\n <Comp\n {...(Comp !== Fragment ? { as: innerAs, ref: forwardedRef } : {})}\n data-open={openState ? '' : undefined}\n data-disabled={disabled ? '' : undefined}\n data-state={openState ? 'open' : 'closed'}\n {...otherProps}\n />\n </CollapsibleProvider>\n );\n }\n);\n"],"mappings":"AACA,SAASA,UAAU,EAAEC,QAAQ,EAAEC,QAAQ,EAAEC,WAAW,QAAQ,OAAO;AACnE,SAASC,mBAAmB,QAAQ,WAAW;AAC/C,SAASC,kBAAkB,EAAEC,mBAAmB,QAAQ,UAAU;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAkBnE,OAAO,MAAMC,WAAW,gBAAGT,UAAU,CACnC,SAASS,WAAWA,CAACC,KAAK,EAAEC,YAAY,EAAE;EACxC,MAAM;IACJC,EAAE,EAAEC,IAAI,GAAG,KAAK;IAChBC,OAAO;IACPC,IAAI,EAAEC,QAAQ;IACdC,WAAW,GAAG,KAAK;IACnBC,QAAQ,EAAEC,YAAY;IACtBC,QAAQ,GAAG,KAAK;IAChB,GAAGC;EACL,CAAC,GAAGX,KAAK;EAET,MAAM,CAACY,SAAS,EAAEC,YAAY,CAAC,GAAGlB,kBAAkB,CAClDW,QAAQ,EACRG,YAAY,EACZF,WAAW,EACVO,QAAQ,IAAK,CAACC,CAAC,EAAEC,MAAM,KAAK;IAC3BF,QAAQ,CAACE,MAAM,CAAC;EAClB,CACF,CAAC;EAED,MAAM,CAACC,OAAO,EAAEC,UAAU,CAAC,GAAG1B,QAAQ,CAAqB,CAAC;EAE5D,MAAM;IAAE2B,OAAO;IAAEC,UAAU;IAAEC;EAAiB,CAAC,GAAGzB,mBAAmB,CAACgB,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC;EAE5F,MAAMJ,QAAQ,GAAGf,WAAW,CAC1B,CAACsB,CAA0B,EAAEC,MAAe,KAAK;IAC/C,IAAI,CAACN,QAAQ,EAAE;MACbG,YAAY,CAACE,CAAC,EAAEC,MAAM,CAAC;IACzB;EACF,CAAC,EACD,CAACH,YAAY,EAAEH,QAAQ,CACzB,CAAC;EAED,MAAMY,YAAY,GAAG;IACnBjB,IAAI,EAAEO,SAAS;IACfO,OAAO;IACPE,gBAAgB;IAChBD,UAAU;IACVH,OAAO;IACPP,QAAQ;IACRF,QAAQ;IACRU;EACF,CAAC;EAED,oBACEpB,IAAA,CAACJ,mBAAmB;IAAC6B,KAAK,EAAED,YAAa;IAAAE,QAAA,eACvC1B,IAAA,CAACK,IAAI;MAAA,IACEA,IAAI,KAAKZ,QAAQ,GAAG;QAAEW,EAAE,EAAEE,OAAO;QAAEqB,GAAG,EAAExB;MAAa,CAAC,GAAG,CAAC,CAAC;MAChE,aAAWW,SAAS,GAAG,EAAE,GAAGc,SAAU;MACtC,iBAAehB,QAAQ,GAAG,EAAE,GAAGgB,SAAU;MACzC,cAAYd,SAAS,GAAG,MAAM,GAAG,QAAS;MAAA,GACtCD;IAAU,CACf;EAAC,CACiB,CAAC;AAE1B,CACF,CAAC","ignoreList":[]}
@@ -0,0 +1,10 @@
1
+ import type { ElementType, ReactNode, HTMLAttributes } from 'react';
2
+ export interface CollapsiblePanelProps extends HTMLAttributes<HTMLElement> {
3
+ as?: ElementType<any>;
4
+ innerAs?: ElementType<any>;
5
+ children?: ReactNode;
6
+ id?: string;
7
+ keepMounted?: boolean;
8
+ }
9
+ export declare const CollapsiblePanel: import("react").ForwardRefExoticComponent<CollapsiblePanelProps & import("react").RefAttributes<HTMLElement>>;
10
+ //# sourceMappingURL=CollapsiblePanel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CollapsiblePanel.d.ts","sourceRoot":"","sources":["../../../src/Collapsible/CollapsiblePanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAKpE,MAAM,WAAW,qBAAsB,SAAQ,cAAc,CAAC,WAAW,CAAC;IACxE,EAAE,CAAC,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;IACtB,OAAO,CAAC,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;IAC3B,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,eAAO,MAAM,gBAAgB,+GAyF5B,CAAC"}