datocms-react-ui 0.3.15 → 0.3.20

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 (193) hide show
  1. package/dist/cjs/Button/styles.module.css.json +1 -1
  2. package/dist/cjs/ButtonGroup/Button/index.js +19 -0
  3. package/dist/cjs/ButtonGroup/Button/index.js.map +1 -0
  4. package/dist/cjs/ButtonGroup/Button/styles.module.css.json +1 -0
  5. package/dist/cjs/ButtonGroup/Group/index.js +29 -0
  6. package/dist/cjs/ButtonGroup/Group/index.js.map +1 -0
  7. package/dist/cjs/ButtonGroup/Group/styles.module.css.json +1 -0
  8. package/dist/cjs/ButtonGroup/index.js +8 -0
  9. package/dist/cjs/ButtonGroup/index.js.map +1 -0
  10. package/dist/cjs/Canvas/index.js +16 -27
  11. package/dist/cjs/Canvas/index.js.map +1 -1
  12. package/dist/cjs/Canvas/styles.module.css.json +1 -1
  13. package/dist/cjs/Dropdown/Dropdown.js +166 -0
  14. package/dist/cjs/Dropdown/Dropdown.js.map +1 -0
  15. package/dist/cjs/Dropdown/DropdownContext.js +9 -0
  16. package/dist/cjs/Dropdown/DropdownContext.js.map +1 -0
  17. package/dist/cjs/Dropdown/Group.js +16 -0
  18. package/dist/cjs/Dropdown/Group.js.map +1 -0
  19. package/dist/cjs/Dropdown/Menu.js +250 -0
  20. package/dist/cjs/Dropdown/Menu.js.map +1 -0
  21. package/dist/cjs/Dropdown/MenuContext.js +12 -0
  22. package/dist/cjs/Dropdown/MenuContext.js.map +1 -0
  23. package/dist/cjs/Dropdown/Option.js +100 -0
  24. package/dist/cjs/Dropdown/Option.js.map +1 -0
  25. package/dist/cjs/Dropdown/OptionAction.js +29 -0
  26. package/dist/cjs/Dropdown/OptionAction.js.map +1 -0
  27. package/dist/cjs/Dropdown/Portal.js +53 -0
  28. package/dist/cjs/Dropdown/Portal.js.map +1 -0
  29. package/dist/cjs/Dropdown/Separator.js +37 -0
  30. package/dist/cjs/Dropdown/Separator.js.map +1 -0
  31. package/dist/cjs/Dropdown/Text.js +14 -0
  32. package/dist/cjs/Dropdown/Text.js.map +1 -0
  33. package/dist/cjs/Dropdown/index.js +18 -0
  34. package/dist/cjs/Dropdown/index.js.map +1 -0
  35. package/dist/cjs/Dropdown/styles.module.css.json +1 -0
  36. package/dist/cjs/SidebarPanel/index.js +88 -0
  37. package/dist/cjs/SidebarPanel/index.js.map +1 -0
  38. package/dist/cjs/SidebarPanel/styles.module.css.json +1 -0
  39. package/dist/cjs/Spinner/index.js +64 -0
  40. package/dist/cjs/Spinner/index.js.map +1 -0
  41. package/dist/cjs/Spinner/styles.module.css.json +1 -0
  42. package/dist/cjs/Toolbar/Button/index.js +15 -0
  43. package/dist/cjs/Toolbar/Button/index.js.map +1 -0
  44. package/dist/cjs/Toolbar/Button/styles.module.css.json +1 -0
  45. package/dist/cjs/Toolbar/Stack/index.js +19 -0
  46. package/dist/cjs/Toolbar/Stack/index.js.map +1 -0
  47. package/dist/cjs/Toolbar/Stack/styles.module.css.json +1 -0
  48. package/dist/cjs/Toolbar/Title/index.js +15 -0
  49. package/dist/cjs/Toolbar/Title/index.js.map +1 -0
  50. package/dist/cjs/Toolbar/Title/styles.module.css.json +1 -0
  51. package/dist/cjs/Toolbar/Toolbar/index.js +99 -0
  52. package/dist/cjs/Toolbar/Toolbar/index.js.map +1 -0
  53. package/dist/cjs/Toolbar/Toolbar/styles.module.css.json +1 -0
  54. package/dist/cjs/Toolbar/index.js +12 -0
  55. package/dist/cjs/Toolbar/index.js.map +1 -0
  56. package/dist/cjs/generateStyleFromCtx/index.js +32 -0
  57. package/dist/cjs/generateStyleFromCtx/index.js.map +1 -0
  58. package/dist/cjs/icons.js +38 -0
  59. package/dist/cjs/icons.js.map +1 -0
  60. package/dist/cjs/index.js +6 -0
  61. package/dist/cjs/index.js.map +1 -1
  62. package/dist/cjs/mergeRefs/index.js +19 -0
  63. package/dist/cjs/mergeRefs/index.js.map +1 -0
  64. package/dist/cjs/useClickOutside/index.js +24 -0
  65. package/dist/cjs/useClickOutside/index.js.map +1 -0
  66. package/dist/cjs/useMediaQuery/index.js +149 -0
  67. package/dist/cjs/useMediaQuery/index.js.map +1 -0
  68. package/dist/esm/Button/styles.module.css.json +1 -1
  69. package/dist/esm/ButtonGroup/Button/index.d.ts +10 -0
  70. package/dist/esm/ButtonGroup/Button/index.js +12 -0
  71. package/dist/esm/ButtonGroup/Button/index.js.map +1 -0
  72. package/dist/esm/ButtonGroup/Button/styles.module.css.json +1 -0
  73. package/dist/esm/ButtonGroup/Group/index.d.ts +21 -0
  74. package/dist/esm/ButtonGroup/Group/index.js +22 -0
  75. package/dist/esm/ButtonGroup/Group/index.js.map +1 -0
  76. package/dist/esm/ButtonGroup/Group/styles.module.css.json +1 -0
  77. package/dist/esm/ButtonGroup/index.d.ts +4 -0
  78. package/dist/esm/ButtonGroup/index.js +3 -0
  79. package/dist/esm/ButtonGroup/index.js.map +1 -0
  80. package/dist/esm/Canvas/index.d.ts +7 -3
  81. package/dist/esm/Canvas/index.js +16 -28
  82. package/dist/esm/Canvas/index.js.map +1 -1
  83. package/dist/esm/Canvas/styles.module.css.json +1 -1
  84. package/dist/esm/Dropdown/Dropdown.d.ts +113 -0
  85. package/dist/esm/Dropdown/Dropdown.js +140 -0
  86. package/dist/esm/Dropdown/Dropdown.js.map +1 -0
  87. package/dist/esm/Dropdown/DropdownContext.d.ts +6 -0
  88. package/dist/esm/Dropdown/DropdownContext.js +6 -0
  89. package/dist/esm/Dropdown/DropdownContext.js.map +1 -0
  90. package/dist/esm/Dropdown/Group.d.ts +6 -0
  91. package/dist/esm/Dropdown/Group.js +9 -0
  92. package/dist/esm/Dropdown/Group.js.map +1 -0
  93. package/dist/esm/Dropdown/Menu.d.ts +6 -0
  94. package/dist/esm/Dropdown/Menu.js +224 -0
  95. package/dist/esm/Dropdown/Menu.js.map +1 -0
  96. package/dist/esm/Dropdown/MenuContext.d.ts +8 -0
  97. package/dist/esm/Dropdown/MenuContext.js +9 -0
  98. package/dist/esm/Dropdown/MenuContext.js.map +1 -0
  99. package/dist/esm/Dropdown/Option.d.ts +13 -0
  100. package/dist/esm/Dropdown/Option.js +74 -0
  101. package/dist/esm/Dropdown/Option.js.map +1 -0
  102. package/dist/esm/Dropdown/OptionAction.d.ts +11 -0
  103. package/dist/esm/Dropdown/OptionAction.js +22 -0
  104. package/dist/esm/Dropdown/OptionAction.js.map +1 -0
  105. package/dist/esm/Dropdown/Portal.d.ts +4 -0
  106. package/dist/esm/Dropdown/Portal.js +27 -0
  107. package/dist/esm/Dropdown/Portal.js.map +1 -0
  108. package/dist/esm/Dropdown/Separator.d.ts +2 -0
  109. package/dist/esm/Dropdown/Separator.js +11 -0
  110. package/dist/esm/Dropdown/Separator.js.map +1 -0
  111. package/dist/esm/Dropdown/Text.d.ts +5 -0
  112. package/dist/esm/Dropdown/Text.js +7 -0
  113. package/dist/esm/Dropdown/Text.js.map +1 -0
  114. package/dist/esm/Dropdown/index.d.ts +9 -0
  115. package/dist/esm/Dropdown/index.js +9 -0
  116. package/dist/esm/Dropdown/index.js.map +1 -0
  117. package/dist/esm/Dropdown/styles.module.css.json +1 -0
  118. package/dist/esm/SidebarPanel/index.d.ts +43 -0
  119. package/dist/esm/SidebarPanel/index.js +62 -0
  120. package/dist/esm/SidebarPanel/index.js.map +1 -0
  121. package/dist/esm/SidebarPanel/styles.module.css.json +1 -0
  122. package/dist/esm/Spinner/index.d.ts +27 -0
  123. package/dist/esm/Spinner/index.js +57 -0
  124. package/dist/esm/Spinner/index.js.map +1 -0
  125. package/dist/esm/Spinner/styles.module.css.json +1 -0
  126. package/dist/esm/Toolbar/Button/index.d.ts +8 -0
  127. package/dist/esm/Toolbar/Button/index.js +8 -0
  128. package/dist/esm/Toolbar/Button/index.js.map +1 -0
  129. package/dist/esm/Toolbar/Button/styles.module.css.json +1 -0
  130. package/dist/esm/Toolbar/Stack/index.d.ts +8 -0
  131. package/dist/esm/Toolbar/Stack/index.js +12 -0
  132. package/dist/esm/Toolbar/Stack/index.js.map +1 -0
  133. package/dist/esm/Toolbar/Stack/styles.module.css.json +1 -0
  134. package/dist/esm/Toolbar/Title/index.d.ts +7 -0
  135. package/dist/esm/Toolbar/Title/index.js +8 -0
  136. package/dist/esm/Toolbar/Title/index.js.map +1 -0
  137. package/dist/esm/Toolbar/Title/styles.module.css.json +1 -0
  138. package/dist/esm/Toolbar/Toolbar/index.d.ts +91 -0
  139. package/dist/esm/Toolbar/Toolbar/index.js +92 -0
  140. package/dist/esm/Toolbar/Toolbar/index.js.map +1 -0
  141. package/dist/esm/Toolbar/Toolbar/styles.module.css.json +1 -0
  142. package/dist/esm/Toolbar/index.d.ts +8 -0
  143. package/dist/esm/Toolbar/index.js +5 -0
  144. package/dist/esm/Toolbar/index.js.map +1 -0
  145. package/dist/esm/generateStyleFromCtx/index.d.ts +3 -0
  146. package/dist/esm/generateStyleFromCtx/index.js +28 -0
  147. package/dist/esm/generateStyleFromCtx/index.js.map +1 -0
  148. package/dist/esm/icons.d.ts +12 -0
  149. package/dist/esm/icons.js +27 -0
  150. package/dist/esm/icons.js.map +1 -0
  151. package/dist/esm/index.d.ts +6 -0
  152. package/dist/esm/index.js +6 -0
  153. package/dist/esm/index.js.map +1 -1
  154. package/dist/esm/mergeRefs/index.d.ts +2 -0
  155. package/dist/esm/mergeRefs/index.js +15 -0
  156. package/dist/esm/mergeRefs/index.js.map +1 -0
  157. package/dist/esm/useClickOutside/index.d.ts +2 -0
  158. package/dist/esm/useClickOutside/index.js +21 -0
  159. package/dist/esm/useClickOutside/index.js.map +1 -0
  160. package/dist/esm/useMediaQuery/index.d.ts +8 -0
  161. package/dist/esm/useMediaQuery/index.js +140 -0
  162. package/dist/esm/useMediaQuery/index.js.map +1 -0
  163. package/dist/types/ButtonGroup/Button/index.d.ts +10 -0
  164. package/dist/types/ButtonGroup/Group/index.d.ts +21 -0
  165. package/dist/types/ButtonGroup/index.d.ts +4 -0
  166. package/dist/types/Canvas/index.d.ts +7 -3
  167. package/dist/types/Dropdown/Dropdown.d.ts +113 -0
  168. package/dist/types/Dropdown/DropdownContext.d.ts +6 -0
  169. package/dist/types/Dropdown/Group.d.ts +6 -0
  170. package/dist/types/Dropdown/Menu.d.ts +6 -0
  171. package/dist/types/Dropdown/MenuContext.d.ts +8 -0
  172. package/dist/types/Dropdown/Option.d.ts +13 -0
  173. package/dist/types/Dropdown/OptionAction.d.ts +11 -0
  174. package/dist/types/Dropdown/Portal.d.ts +4 -0
  175. package/dist/types/Dropdown/Separator.d.ts +2 -0
  176. package/dist/types/Dropdown/Text.d.ts +5 -0
  177. package/dist/types/Dropdown/index.d.ts +9 -0
  178. package/dist/types/SidebarPanel/index.d.ts +43 -0
  179. package/dist/types/Spinner/index.d.ts +27 -0
  180. package/dist/types/Toolbar/Button/index.d.ts +8 -0
  181. package/dist/types/Toolbar/Stack/index.d.ts +8 -0
  182. package/dist/types/Toolbar/Title/index.d.ts +7 -0
  183. package/dist/types/Toolbar/Toolbar/index.d.ts +91 -0
  184. package/dist/types/Toolbar/index.d.ts +8 -0
  185. package/dist/types/generateStyleFromCtx/index.d.ts +3 -0
  186. package/dist/types/icons.d.ts +12 -0
  187. package/dist/types/index.d.ts +6 -0
  188. package/dist/types/mergeRefs/index.d.ts +2 -0
  189. package/dist/types/useClickOutside/index.d.ts +2 -0
  190. package/dist/types/useMediaQuery/index.d.ts +8 -0
  191. package/package.json +9 -6
  192. package/styles.css +1 -1
  193. package/types.json +4699 -1855
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Canvas/index.tsx"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,KAAK,EAAE,EAAa,SAAS,EAAE,MAAM,OAAO,CAAC;AAEpD,OAAO,MAAM,MAAM,0BAA0B,CAAC;AAE9C,SAAS,WAAW,CAAC,GAAW;IAC9B,IAAI,GAAG,IAAI,GAAG,CAAC,WAAW,EAAE,EAAE;QAC5B,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,UAAC,CAAC,IAAK,OAAA,GAAG,GAAG,CAAC,CAAC,WAAW,EAAE,EAArB,CAAqB,CAAC,CAAC;KAC3D;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAQD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0eG;AAEH,MAAM,UAAU,MAAM,CAAC,EAIT;QAHZ,GAAG,SAAA,EACH,QAAQ,cAAA,EACR,aAAa,mBAAA;IAEL,IAAA,IAAI,GAAM,GAAmC,KAAzC,CAA0C;IAEtD,SAAS,CAAC;QACR,IAAI,IAAI,KAAK,YAAY,IAAI,CAAC,aAAa,EAAE;YAC3C,IAAM,oBAAkB,GAAI,GAAkC,CAAC;YAC/D,oBAAkB,CAAC,gBAAgB,EAAE,CAAC;YAEtC,CAAA;gBACE,oBAAkB,CAAC,eAAe,EAAE,CAAC;YACvC,CAAC,CAAA,CAAC;SACH;IACH,CAAC,EAAE,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC;IAE1B,IAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,MAAM,CAC5C,UAAC,GAAG,EAAE,EAAM;;;YAAL,CAAC,QAAA,EAAE,CAAC,QAAA;QACT,6BACK,GAAG,gBACL,OAAK,WAAW,CAAC,CAAC,CAAG,IAAG,CAAC,KACzB,OAAK,WAAW,CAAI,CAAC,kBAAe,CAAG,IACtC,CAAA,MAAA,CAAC,CAAC,KAAK,CAAC,wBAAwB,CAAC,0CAAG,CAAC,CAAC,KAAI,SAAS,OACrD;IACJ,CAAC,EACD;QACE,OAAO,EAAE,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,UAAC,CAAC,IAAK,OAAG,CAAC,OAAI,EAAR,CAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;KACxD,CACF,CAAC;IAEF,OAAO,CACL,6BAAK,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,IACxC,QAAQ,CACL,CACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Canvas/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,aAAa,EAAa,UAAU,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAM/E,OAAO,CAAC,MAAM,0BAA0B,CAAC;AACzC,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,UAAU,MAAM,YAAY,CAAC;AAIpC,8DAA8D;AAC9D,MAAM,CAAC,IAAM,UAAU,GAAG,aAAa,CACrC,IAAI,CACL,CAAC;AAEF,MAAM,UAAU,MAAM;IACpB,IAAM,GAAG,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;IAEnC,IAAI,CAAC,GAAG,EAAE;QACR,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;KAChD;IAED,OAAO,GAAQ,CAAC;AAClB,CAAC;AAQD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0eG;AAEH,MAAM,UAAU,MAAM,CAAC,EAIT;QAHZ,GAAG,SAAA,EACH,QAAQ,cAAA,EACR,aAAa,mBAAA;IAEL,IAAA,IAAI,GAAM,GAAmC,KAAzC,CAA0C;IAEtD,SAAS,CAAC;QACR,IAAI,IAAI,KAAK,YAAY,IAAI,CAAC,aAAa,EAAE;YAC3C,IAAM,oBAAkB,GAAI,GAAkC,CAAC;YAC/D,oBAAkB,CAAC,gBAAgB,EAAE,CAAC;YAEtC,OAAO;gBACL,oBAAkB,CAAC,eAAe,EAAE,CAAC;YACvC,CAAC,CAAC;SACH;QAED,OAAO,SAAS,CAAC;IACnB,CAAC,EAAE,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC;IAE1B,OAAO,CACL,oBAAC,UAAU,CAAC,QAAQ,IAAC,KAAK,EAAE,GAAG;QAC7B,6BACE,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EACvD,KAAK,EAAE,oBAAoB,CAAC,GAAG,CAAC,IAE/B,QAAQ,CACL,CACc,CACvB,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- { "canvas": "_canvas_1es76_1" }
1
+ { "themeVariables": "_themeVariables_ovgoa_1", "canvas": "_canvas_ovgoa_68" }
@@ -0,0 +1,113 @@
1
+ import React from 'react';
2
+ declare type RenderTriggerCtx = {
3
+ open: boolean;
4
+ onClick: () => void;
5
+ };
6
+ export declare type DropdownProps = {
7
+ renderTrigger: (ctx: RenderTriggerCtx) => JSX.Element;
8
+ children: React.ReactNode;
9
+ };
10
+ /**
11
+ * @example Basic example
12
+ *
13
+ * ```js
14
+ * <Canvas ctx={ctx}>
15
+ * <Dropdown
16
+ * renderTrigger={({ open, onClick }) => (
17
+ * <Button
18
+ * onClick={onClick}
19
+ * rightIcon={open ? <CaretUpIcon /> : <CaretDownIcon />}
20
+ * >
21
+ * Options
22
+ * </Button>
23
+ * )}
24
+ * >
25
+ * <DropdownMenu>
26
+ * <DropdownOption onClick={() => {}}>Edit</DropdownOption>
27
+ * <DropdownOption disabled onClick={() => {}}>
28
+ * Duplicate
29
+ * </DropdownOption>
30
+ * <DropdownSeparator />
31
+ * <DropdownOption red onClick={() => {}}>
32
+ * Delete
33
+ * </DropdownOption>
34
+ * </DropdownMenu>
35
+ * </Dropdown>
36
+ * </Canvas>;
37
+ * ```
38
+ *
39
+ * @example Option actions
40
+ *
41
+ * ```js
42
+ * <Canvas ctx={ctx}>
43
+ * <Dropdown
44
+ * renderTrigger={({ open, onClick }) => (
45
+ * <Button
46
+ * onClick={onClick}
47
+ * rightIcon={open ? <CaretUpIcon /> : <CaretDownIcon />}
48
+ * >
49
+ * Fields
50
+ * </Button>
51
+ * )}
52
+ * >
53
+ * <DropdownMenu>
54
+ * <DropdownOption>
55
+ * First option
56
+ * <DropdownOptionAction icon={<PlusIcon />} onClick={() => {}} />
57
+ * <DropdownOptionAction
58
+ * red
59
+ * icon={<TrashIcon />}
60
+ * onClick={() => {}}
61
+ * />
62
+ * </DropdownOption>
63
+ * <DropdownOption>
64
+ * Second option
65
+ * <DropdownOptionAction icon={<PlusIcon />} onClick={() => {}} />
66
+ * <DropdownOptionAction
67
+ * red
68
+ * icon={<TrashIcon />}
69
+ * onClick={() => {}}
70
+ * />
71
+ * </DropdownOption>
72
+ * </DropdownMenu>
73
+ * </Dropdown>
74
+ * </Canvas>;
75
+ * ```
76
+ *
77
+ * @example Option groups
78
+ *
79
+ * ```js
80
+ * <Canvas ctx={ctx}>
81
+ * <Dropdown
82
+ * renderTrigger={({ open, onClick }) => (
83
+ * <Button
84
+ * onClick={onClick}
85
+ * rightIcon={open ? <CaretUpIcon /> : <CaretDownIcon />}
86
+ * >
87
+ * Fields
88
+ * </Button>
89
+ * )}
90
+ * >
91
+ * <DropdownMenu>
92
+ * <DropdownGroup name="Group 1">
93
+ * <DropdownOption>Foo</DropdownOption>
94
+ * <DropdownOption>Bar</DropdownOption>
95
+ * <DropdownOption>Qux</DropdownOption>
96
+ * </DropdownGroup>
97
+ * <DropdownGroup name="Group 2">
98
+ * <DropdownOption>Foo</DropdownOption>
99
+ * <DropdownOption>Bar</DropdownOption>
100
+ * <DropdownOption>Qux</DropdownOption>
101
+ * </DropdownGroup>
102
+ * <DropdownGroup name="Group 3">
103
+ * <DropdownOption>Foo</DropdownOption>
104
+ * <DropdownOption>Bar</DropdownOption>
105
+ * <DropdownOption>Qux</DropdownOption>
106
+ * </DropdownGroup>
107
+ * </DropdownMenu>
108
+ * </Dropdown>
109
+ * </Canvas>;
110
+ * ```
111
+ */
112
+ export declare function Dropdown({ renderTrigger, children, }: DropdownProps): JSX.Element;
113
+ export {};
@@ -0,0 +1,140 @@
1
+ import React, { useCallback, useEffect, useRef, useState } from 'react';
2
+ import { MediaQuery } from '../useMediaQuery';
3
+ import useClickOutside from '../useClickOutside';
4
+ import { DropdownContext } from './DropdownContext';
5
+ import s from './styles.module.css.json';
6
+ /**
7
+ * @example Basic example
8
+ *
9
+ * ```js
10
+ * <Canvas ctx={ctx}>
11
+ * <Dropdown
12
+ * renderTrigger={({ open, onClick }) => (
13
+ * <Button
14
+ * onClick={onClick}
15
+ * rightIcon={open ? <CaretUpIcon /> : <CaretDownIcon />}
16
+ * >
17
+ * Options
18
+ * </Button>
19
+ * )}
20
+ * >
21
+ * <DropdownMenu>
22
+ * <DropdownOption onClick={() => {}}>Edit</DropdownOption>
23
+ * <DropdownOption disabled onClick={() => {}}>
24
+ * Duplicate
25
+ * </DropdownOption>
26
+ * <DropdownSeparator />
27
+ * <DropdownOption red onClick={() => {}}>
28
+ * Delete
29
+ * </DropdownOption>
30
+ * </DropdownMenu>
31
+ * </Dropdown>
32
+ * </Canvas>;
33
+ * ```
34
+ *
35
+ * @example Option actions
36
+ *
37
+ * ```js
38
+ * <Canvas ctx={ctx}>
39
+ * <Dropdown
40
+ * renderTrigger={({ open, onClick }) => (
41
+ * <Button
42
+ * onClick={onClick}
43
+ * rightIcon={open ? <CaretUpIcon /> : <CaretDownIcon />}
44
+ * >
45
+ * Fields
46
+ * </Button>
47
+ * )}
48
+ * >
49
+ * <DropdownMenu>
50
+ * <DropdownOption>
51
+ * First option
52
+ * <DropdownOptionAction icon={<PlusIcon />} onClick={() => {}} />
53
+ * <DropdownOptionAction
54
+ * red
55
+ * icon={<TrashIcon />}
56
+ * onClick={() => {}}
57
+ * />
58
+ * </DropdownOption>
59
+ * <DropdownOption>
60
+ * Second option
61
+ * <DropdownOptionAction icon={<PlusIcon />} onClick={() => {}} />
62
+ * <DropdownOptionAction
63
+ * red
64
+ * icon={<TrashIcon />}
65
+ * onClick={() => {}}
66
+ * />
67
+ * </DropdownOption>
68
+ * </DropdownMenu>
69
+ * </Dropdown>
70
+ * </Canvas>;
71
+ * ```
72
+ *
73
+ * @example Option groups
74
+ *
75
+ * ```js
76
+ * <Canvas ctx={ctx}>
77
+ * <Dropdown
78
+ * renderTrigger={({ open, onClick }) => (
79
+ * <Button
80
+ * onClick={onClick}
81
+ * rightIcon={open ? <CaretUpIcon /> : <CaretDownIcon />}
82
+ * >
83
+ * Fields
84
+ * </Button>
85
+ * )}
86
+ * >
87
+ * <DropdownMenu>
88
+ * <DropdownGroup name="Group 1">
89
+ * <DropdownOption>Foo</DropdownOption>
90
+ * <DropdownOption>Bar</DropdownOption>
91
+ * <DropdownOption>Qux</DropdownOption>
92
+ * </DropdownGroup>
93
+ * <DropdownGroup name="Group 2">
94
+ * <DropdownOption>Foo</DropdownOption>
95
+ * <DropdownOption>Bar</DropdownOption>
96
+ * <DropdownOption>Qux</DropdownOption>
97
+ * </DropdownGroup>
98
+ * <DropdownGroup name="Group 3">
99
+ * <DropdownOption>Foo</DropdownOption>
100
+ * <DropdownOption>Bar</DropdownOption>
101
+ * <DropdownOption>Qux</DropdownOption>
102
+ * </DropdownGroup>
103
+ * </DropdownMenu>
104
+ * </Dropdown>
105
+ * </Canvas>;
106
+ * ```
107
+ */
108
+ export function Dropdown(_a) {
109
+ var renderTrigger = _a.renderTrigger, children = _a.children;
110
+ var isClickOutsideEnabled = useRef();
111
+ var _b = useState(false), isOpen = _b[0], setOpen = _b[1];
112
+ useEffect(function () {
113
+ isClickOutsideEnabled.current = false;
114
+ }, []);
115
+ var handleClickOutside = useCallback(function (event) {
116
+ if (isClickOutsideEnabled.current &&
117
+ !event.target.closest(s['Dropdown__menu']) &&
118
+ isOpen) {
119
+ setOpen(false);
120
+ }
121
+ }, [setOpen, isOpen, isClickOutsideEnabled]);
122
+ var outsideRef = useClickOutside(handleClickOutside);
123
+ var handleClose = useCallback(function () {
124
+ setOpen(false);
125
+ }, [setOpen]);
126
+ var handleToggle = useCallback(function () {
127
+ setOpen(function (open) { return !open; });
128
+ }, [setOpen]);
129
+ return (React.createElement(MediaQuery, { media: "(max-width: 1024px)" }, function (_a) {
130
+ var matches = _a.matches;
131
+ // In small devices click outside is disabled because
132
+ // the menu goes full screen and has a close button.
133
+ isClickOutsideEnabled.current = !matches;
134
+ return (React.createElement(DropdownContext.Provider, { value: { closeMenu: handleClose } },
135
+ React.createElement("div", { className: s['Dropdown'], ref: outsideRef },
136
+ renderTrigger({ open: isOpen, onClick: handleToggle }),
137
+ isOpen && children)));
138
+ }));
139
+ }
140
+ //# sourceMappingURL=Dropdown.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Dropdown.js","sourceRoot":"","sources":["../../../src/Dropdown/Dropdown.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACxE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,eAAe,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,CAAC,MAAM,0BAA0B,CAAC;AAYzC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqGG;AACH,MAAM,UAAU,QAAQ,CAAC,EAGT;QAFd,aAAa,mBAAA,EACb,QAAQ,cAAA;IAER,IAAM,qBAAqB,GAAG,MAAM,EAAW,CAAC;IAC1C,IAAA,KAAoB,QAAQ,CAAC,KAAK,CAAC,EAAlC,MAAM,QAAA,EAAE,OAAO,QAAmB,CAAC;IAE1C,SAAS,CAAC;QACR,qBAAqB,CAAC,OAAO,GAAG,KAAK,CAAC;IACxC,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,IAAM,kBAAkB,GAAG,WAAW,CACpC,UAAC,KAAK;QACJ,IACE,qBAAqB,CAAC,OAAO;YAC7B,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;YAC1C,MAAM,EACN;YACA,OAAO,CAAC,KAAK,CAAC,CAAC;SAChB;IACH,CAAC,EACD,CAAC,OAAO,EAAE,MAAM,EAAE,qBAAqB,CAAC,CACzC,CAAC;IAEF,IAAM,UAAU,GAAG,eAAe,CAAiB,kBAAkB,CAAC,CAAC;IAEvE,IAAM,WAAW,GAAG,WAAW,CAAC;QAC9B,OAAO,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,IAAM,YAAY,GAAG,WAAW,CAAC;QAC/B,OAAO,CAAC,UAAC,IAAI,IAAK,OAAA,CAAC,IAAI,EAAL,CAAK,CAAC,CAAC;IAC3B,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,OAAO,CACL,oBAAC,UAAU,IAAC,KAAK,EAAC,qBAAqB,IACpC,UAAC,EAAW;YAAT,OAAO,aAAA;QACT,qDAAqD;QACrD,oDAAoD;QACpD,qBAAqB,CAAC,OAAO,GAAG,CAAC,OAAO,CAAC;QAEzC,OAAO,CACL,oBAAC,eAAe,CAAC,QAAQ,IAAC,KAAK,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE;YACzD,6BAAK,SAAS,EAAE,CAAC,CAAC,UAAU,CAAC,EAAE,GAAG,EAAE,UAAU;gBAC3C,aAAa,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC;gBACtD,MAAM,IAAI,QAAQ,CACf,CACmB,CAC5B,CAAC;IACJ,CAAC,CACU,CACd,CAAC;AACJ,CAAC"}
@@ -0,0 +1,6 @@
1
+ /// <reference types="react" />
2
+ declare type DropdownContextType = {
3
+ closeMenu: () => void;
4
+ };
5
+ export declare const DropdownContext: import("react").Context<DropdownContextType>;
6
+ export {};
@@ -0,0 +1,6 @@
1
+ import { createContext } from 'react';
2
+ export var DropdownContext = createContext({
3
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
4
+ closeMenu: function () { },
5
+ });
6
+ //# sourceMappingURL=DropdownContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DropdownContext.js","sourceRoot":"","sources":["../../../src/Dropdown/DropdownContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAMtC,MAAM,CAAC,IAAM,eAAe,GAAG,aAAa,CAAsB;IAChE,gEAAgE;IAChE,SAAS,EAAE,cAAO,CAAC;CACpB,CAAC,CAAC"}
@@ -0,0 +1,6 @@
1
+ import React, { ReactNode } from 'react';
2
+ export declare type GroupProps = {
3
+ children: React.ReactNode;
4
+ name: ReactNode;
5
+ };
6
+ export declare const Group: ({ children, name }: GroupProps) => JSX.Element;
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+ import s from './styles.module.css.json';
3
+ export var Group = function (_a) {
4
+ var children = _a.children, name = _a.name;
5
+ return (React.createElement("div", null,
6
+ React.createElement("div", { className: s['Dropdown__menu__group__title'] }, name),
7
+ React.createElement("div", { className: s['Dropdown__menu__group__content'] }, children)));
8
+ };
9
+ //# sourceMappingURL=Group.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Group.js","sourceRoot":"","sources":["../../../src/Dropdown/Group.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoB,MAAM,OAAO,CAAC;AACzC,OAAO,CAAC,MAAM,0BAA0B,CAAC;AAOzC,MAAM,CAAC,IAAM,KAAK,GAAG,UAAC,EAA8B;QAA5B,QAAQ,cAAA,EAAE,IAAI,UAAA;IACpC,OAAO,CACL;QACE,6BAAK,SAAS,EAAE,CAAC,CAAC,8BAA8B,CAAC,IAAG,IAAI,CAAO;QAC/D,6BAAK,SAAS,EAAE,CAAC,CAAC,gCAAgC,CAAC,IAAG,QAAQ,CAAO,CACjE,CACP,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,6 @@
1
+ import React from 'react';
2
+ export declare type MenuProps = {
3
+ children: React.ReactNode;
4
+ alignment?: 'left' | 'right';
5
+ };
6
+ export declare const Menu: ({ children, alignment, }: MenuProps) => JSX.Element;
@@ -0,0 +1,224 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
13
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
14
+ if (ar || !(i in from)) {
15
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
16
+ ar[i] = from[i];
17
+ }
18
+ }
19
+ return to.concat(ar || Array.prototype.slice.call(from));
20
+ };
21
+ import React, { createRef, useCallback, useContext, useEffect, useRef, useState, } from 'react';
22
+ import scrollIntoView from 'scroll-into-view-if-needed';
23
+ import { useInView } from 'react-intersection-observer';
24
+ import { Portal } from './Portal';
25
+ import { useMediaQuery } from '../useMediaQuery';
26
+ import { DropdownContext } from './DropdownContext';
27
+ import { Group } from './Group';
28
+ import { MenuContext } from './MenuContext';
29
+ import { Option } from './Option';
30
+ import s from './styles.module.css.json';
31
+ import { mergeRefs } from '../mergeRefs';
32
+ import classNames from 'classnames';
33
+ var MenuMobileContainer = function (_a) {
34
+ var children = _a.children;
35
+ return (React.createElement(Portal, null,
36
+ React.createElement("div", { className: s['Dropdown__menu__mobile-container'], style: { zIndex: 1000 } },
37
+ React.createElement("div", { className: s['Modal__backdrop'] }),
38
+ children)));
39
+ };
40
+ var MenuDesktopContainer = React.forwardRef(function (_a, ref) {
41
+ var children = _a.children;
42
+ return (React.createElement(Portal, null,
43
+ React.createElement("div", { className: s['Dropdown__menu-container'], style: { zIndex: 1000 }, ref: ref }, children)));
44
+ });
45
+ function getAbsoluteHeight(el) {
46
+ var styles = window.getComputedStyle(el);
47
+ var margin = parseFloat(styles.marginTop) + parseFloat(styles.marginBottom);
48
+ return Math.ceil(el.offsetHeight + margin);
49
+ }
50
+ function getAbsoluteWidth(el) {
51
+ var styles = window.getComputedStyle(el);
52
+ var margin = parseFloat(styles.marginLeft) + parseFloat(styles.marginRight);
53
+ return Math.ceil(el.offsetWidth + margin);
54
+ }
55
+ function setPosition(panel, parent, alignment) {
56
+ var rect = parent.getBoundingClientRect();
57
+ var height = getAbsoluteHeight(panel);
58
+ var parentWidth = getAbsoluteWidth(parent);
59
+ var width = getAbsoluteWidth(panel);
60
+ if (alignment === 'left') {
61
+ // eslint-disable-next-line no-param-reassign
62
+ panel.style.left = rect.left + window.pageXOffset + "px";
63
+ }
64
+ else {
65
+ // eslint-disable-next-line no-param-reassign
66
+ panel.style.left = rect.left + window.pageXOffset + parentWidth - width + "px";
67
+ }
68
+ var windowHeight = Math.max(document.documentElement.clientHeight || 0, window.innerHeight || 0);
69
+ var menu = panel.querySelector('.' + s['Dropdown__menu']);
70
+ if (!menu) {
71
+ return;
72
+ }
73
+ var styles = window.getComputedStyle(menu);
74
+ var marginTop = parseFloat(styles.marginTop);
75
+ var fitsBelow = rect.bottom + height <= windowHeight;
76
+ var fitsAbove = rect.top - height > 0;
77
+ if (!fitsBelow && fitsAbove) {
78
+ // eslint-disable-next-line no-param-reassign
79
+ panel.style.top = rect.bottom - height + "px";
80
+ }
81
+ else if (fitsBelow) {
82
+ // eslint-disable-next-line no-param-reassign
83
+ panel.style.top = rect.bottom + "px";
84
+ }
85
+ else {
86
+ var spaceAbove = rect.top;
87
+ var spaceBelow = windowHeight - rect.bottom;
88
+ if (spaceBelow > spaceAbove) {
89
+ // eslint-disable-next-line no-param-reassign
90
+ panel.style.top = rect.bottom + "px";
91
+ menu.style.maxHeight = windowHeight - rect.bottom - marginTop - 10 + "px";
92
+ }
93
+ else {
94
+ // eslint-disable-next-line no-param-reassign
95
+ panel.style.top = "0px";
96
+ menu.style.maxHeight = rect.top - marginTop + "px";
97
+ }
98
+ }
99
+ // eslint-disable-next-line no-param-reassign
100
+ panel.style.visibility = 'visible';
101
+ }
102
+ export var Menu = function (_a) {
103
+ var _b;
104
+ var children = _a.children, _c = _a.alignment, alignment = _c === void 0 ? 'left' : _c;
105
+ var closeMenu = useContext(DropdownContext).closeMenu;
106
+ var childrenArray = React.Children.toArray(children);
107
+ var _d = useState(''), searchTerm = _d[0], setSearchTerm = _d[1];
108
+ var _e = useState([]), options = _e[0], setOptions = _e[1];
109
+ var handleChange = useCallback(function (e) {
110
+ setSearchTerm(e.target.value);
111
+ }, [setSearchTerm]);
112
+ var anyGroup = childrenArray.some(function (child) {
113
+ return typeof child === 'object' && 'type' in child && child.type === Group;
114
+ });
115
+ var matches = useMediaQuery('(max-width: 1024px)').matches;
116
+ var addOption = useCallback(function (id) {
117
+ setOptions(function (old) { return __spreadArray(__spreadArray([], old, true), [{ id: id }], false); });
118
+ return function () {
119
+ setOptions(function (old) { return old.filter(function (x) { return x.id !== id; }); });
120
+ };
121
+ }, [setOptions]);
122
+ var setClickHandlerForOption = useCallback(function (id, handler) {
123
+ setOptions(function (old) {
124
+ return old.map(function (x) { return (x.id !== id ? x : __assign(__assign({}, x), { handler: handler })); });
125
+ });
126
+ }, [setOptions]);
127
+ var contentRef = useRef(null);
128
+ var handleKeyDown = useCallback(function (event) {
129
+ if (event.key === 'Escape') {
130
+ event.preventDefault();
131
+ event.stopPropagation();
132
+ closeMenu();
133
+ }
134
+ if (['ArrowDown', 'ArrowUp'].includes(event.key)) {
135
+ event.preventDefault();
136
+ event.stopPropagation();
137
+ if (!contentRef.current) {
138
+ return;
139
+ }
140
+ var delta = event.key === 'ArrowUp' ? -1 : 1;
141
+ var selectedOption_1 = contentRef.current.querySelector('.' + s['Dropdown__menu__option--is-selected']);
142
+ var nextOption = void 0;
143
+ if (!selectedOption_1) {
144
+ nextOption = contentRef.current.querySelector('.' + s['Dropdown__menu__option']);
145
+ }
146
+ else {
147
+ var elements = Array.from(contentRef.current.querySelectorAll('.' + s['Dropdown__menu__option']));
148
+ var index = elements.findIndex(function (el) { return el === selectedOption_1; });
149
+ var nextIndex = index + delta < 0
150
+ ? elements.length - 1
151
+ : (index + delta) % elements.length;
152
+ nextOption = elements[nextIndex];
153
+ selectedOption_1.classList.remove(s['Dropdown__menu__option--is-selected']);
154
+ }
155
+ if (nextOption) {
156
+ nextOption.classList.add(s['Dropdown__menu__option--is-selected']);
157
+ scrollIntoView(nextOption, {
158
+ scrollMode: 'if-needed',
159
+ behavior: 'auto',
160
+ });
161
+ }
162
+ }
163
+ if (event.key === 'Enter') {
164
+ event.preventDefault();
165
+ event.stopPropagation();
166
+ if (!contentRef.current) {
167
+ return;
168
+ }
169
+ var selectedOption = contentRef.current.querySelector('.' + s['Dropdown__menu__option--is-selected']);
170
+ if (selectedOption) {
171
+ var id_1 = selectedOption.dataset.optionId;
172
+ var option = options.find(function (x) { return x.id === id_1; });
173
+ if (option && option.handler) {
174
+ option.handler(event);
175
+ }
176
+ }
177
+ }
178
+ }, [options]);
179
+ var _f = useInView({
180
+ threshold: 0,
181
+ rootMargin: '0px 0px 0px 0px',
182
+ triggerOnce: false,
183
+ }), observerRef = _f[0], inView = _f[1], entry = _f[2];
184
+ var parentRef = createRef();
185
+ var menuRef = createRef();
186
+ var reposition = useCallback(function () {
187
+ if (menuRef.current && parentRef.current) {
188
+ setPosition(menuRef.current, parentRef.current, alignment);
189
+ }
190
+ }, [menuRef, parentRef, alignment]);
191
+ useEffect(function () {
192
+ reposition();
193
+ }, [inView, entry === null || entry === void 0 ? void 0 : entry.intersectionRatio]);
194
+ useEffect(function () {
195
+ if (menuRef.current && parentRef.current) {
196
+ var resizeObserver_1 = new ResizeObserver(reposition);
197
+ resizeObserver_1.observe(menuRef.current);
198
+ resizeObserver_1.observe(parentRef.current);
199
+ return function () {
200
+ resizeObserver_1.disconnect();
201
+ };
202
+ }
203
+ return undefined;
204
+ }, [menuRef, reposition]);
205
+ useEffect(function () {
206
+ window.addEventListener('resize', reposition);
207
+ return function () { return window.removeEventListener('resize', reposition); };
208
+ }, [reposition]);
209
+ var Wrapper = matches ? MenuMobileContainer : MenuDesktopContainer;
210
+ return (React.createElement(React.Fragment, null,
211
+ React.createElement("div", { ref: mergeRefs(observerRef, parentRef), className: s['Dropdown__spacer'] }),
212
+ React.createElement(Wrapper, { ref: menuRef },
213
+ React.createElement("div", { className: classNames(s['Dropdown__menu'], (_b = {},
214
+ _b[s['Dropdown__menu--fullscreen']] = matches,
215
+ _b)) },
216
+ options.length > 5 && (React.createElement("div", { className: s['Dropdown__menu__search'] },
217
+ React.createElement("input", { type: "text", value: searchTerm || '', onChange: handleChange, onKeyDown: handleKeyDown, placeholder: "Search...", autoFocus: true, className: s['Dropdown__menu__search__input'] }))),
218
+ React.createElement(MenuContext.Provider, { value: { searchTerm: searchTerm, addOption: addOption, setClickHandlerForOption: setClickHandlerForOption } },
219
+ React.createElement("div", { className: s['Dropdown__menu__inner'], ref: contentRef }, anyGroup ? (children) : (React.createElement("div", { className: s['Dropdown__menu__group__content'] }, children))))),
220
+ matches ? (React.createElement("div", null,
221
+ React.createElement("div", { className: s['Dropdown__menu__inner'] },
222
+ React.createElement(Option, { closeMenuOnClick: true }, "Close")))) : null)));
223
+ };
224
+ //# sourceMappingURL=Menu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Menu.js","sourceRoot":"","sources":["../../../src/Dropdown/Menu.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { SyntheticEvent } from 'react';
2
+ declare type Context = {
3
+ searchTerm: string;
4
+ addOption: (id: string) => void;
5
+ setClickHandlerForOption: (id: string, handler: (e: SyntheticEvent) => void) => void;
6
+ };
7
+ export declare const MenuContext: import("react").Context<Context>;
8
+ export {};
@@ -0,0 +1,9 @@
1
+ import { createContext } from 'react';
2
+ export var MenuContext = createContext({
3
+ searchTerm: '',
4
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
5
+ addOption: function () { },
6
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
7
+ setClickHandlerForOption: function () { },
8
+ });
9
+ //# sourceMappingURL=MenuContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MenuContext.js","sourceRoot":"","sources":["../../../src/Dropdown/MenuContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAkB,MAAM,OAAO,CAAC;AAWtD,MAAM,CAAC,IAAM,WAAW,GAAG,aAAa,CAAU;IAChD,UAAU,EAAE,EAAE;IACd,gEAAgE;IAChE,SAAS,EAAE,cAAO,CAAC;IACnB,gEAAgE;IAChE,wBAAwB,EAAE,cAAO,CAAC;CACnC,CAAC,CAAC"}
@@ -0,0 +1,13 @@
1
+ import React from 'react';
2
+ export declare type OptionProps = {
3
+ onClick?: (e: React.MouseEvent<HTMLButtonElement, MouseEvent>) => void;
4
+ to?: string;
5
+ active?: boolean;
6
+ red?: boolean;
7
+ valid?: boolean;
8
+ invalid?: boolean;
9
+ children: React.ReactNode;
10
+ disabled?: boolean;
11
+ closeMenuOnClick?: boolean;
12
+ };
13
+ export declare const Option: ({ onClick, to, active, red, valid, invalid, children, disabled, closeMenuOnClick, }: OptionProps) => JSX.Element | null;