@jobber/components 2.86.0 → 2.86.2

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 (269) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/Autocomplete/Autocomplete.d.ts +47 -47
  3. package/dist/Autocomplete/Menu.d.ts +9 -9
  4. package/dist/Autocomplete/Option.d.ts +15 -15
  5. package/dist/Autocomplete/index.d.ts +2 -2
  6. package/dist/Autocomplete/index.js +215 -211
  7. package/dist/Avatar/Avatar.d.ts +37 -37
  8. package/dist/Avatar/index.d.ts +1 -1
  9. package/dist/Avatar/index.js +7 -74
  10. package/dist/Avatar/utilities.d.ts +1 -1
  11. package/dist/Avatar-cfd04e86.js +82 -0
  12. package/dist/Banner/Banner.d.ts +19 -19
  13. package/dist/Banner/index.d.ts +1 -1
  14. package/dist/Banner/index.js +67 -65
  15. package/dist/Button/Button.d.ts +64 -64
  16. package/dist/Button/index.d.ts +1 -1
  17. package/dist/Button/index.js +9 -53
  18. package/dist/Button-5b2f1636.js +60 -0
  19. package/dist/ButtonDismiss/ButtonDismiss.d.ts +7 -7
  20. package/dist/ButtonDismiss/index.d.ts +1 -1
  21. package/dist/ButtonDismiss/index.js +10 -15
  22. package/dist/ButtonDismiss-4cde8f7c.js +15 -0
  23. package/dist/Card/Card.d.ts +31 -31
  24. package/dist/Card/CardClickable.d.ts +12 -12
  25. package/dist/Card/index.d.ts +1 -1
  26. package/dist/Card/index.js +7 -61
  27. package/dist/Card-368e01a3.js +68 -0
  28. package/dist/Checkbox/Checkbox.d.ts +52 -52
  29. package/dist/Checkbox/index.d.ts +1 -1
  30. package/dist/Checkbox/index.js +34 -32
  31. package/dist/Chips/Chip.d.ts +8 -8
  32. package/dist/Chips/ChipDismissible.d.ts +7 -7
  33. package/dist/Chips/ChipTypes.d.ts +59 -59
  34. package/dist/Chips/Chips.d.ts +2 -2
  35. package/dist/Chips/ChipsTypes.d.ts +82 -82
  36. package/dist/Chips/InternalChip.d.ts +2 -2
  37. package/dist/Chips/InternalChipAffix.d.ts +10 -10
  38. package/dist/Chips/InternalChipButton.d.ts +10 -10
  39. package/dist/Chips/InternalChipDismissible/InternalChipDismissible.d.ts +2 -2
  40. package/dist/Chips/InternalChipDismissible/InternalChipDismissibleInput.d.ts +2 -2
  41. package/dist/Chips/InternalChipDismissible/InternalChipDismissibleTypes.d.ts +13 -13
  42. package/dist/Chips/InternalChipDismissible/hooks/index.d.ts +5 -5
  43. package/dist/Chips/InternalChipDismissible/hooks/useInView.d.ts +5 -5
  44. package/dist/Chips/InternalChipDismissible/hooks/useInternalChipDismissible.d.ts +15 -15
  45. package/dist/Chips/InternalChipDismissible/hooks/useInternalChipDismissibleInput.d.ts +28 -28
  46. package/dist/Chips/InternalChipDismissible/hooks/useRepositionMenu.d.ts +16 -16
  47. package/dist/Chips/InternalChipDismissible/hooks/useScrollToActive.d.ts +2 -2
  48. package/dist/Chips/InternalChipDismissible/index.d.ts +1 -1
  49. package/dist/Chips/InternalChipMultiSelect.d.ts +4 -4
  50. package/dist/Chips/InternalChipSingleSelect.d.ts +4 -4
  51. package/dist/Chips/index.d.ts +3 -3
  52. package/dist/Chips/index.js +493 -491
  53. package/dist/Chips/utils/mdxUtils.d.ts +9 -9
  54. package/dist/ConfirmationModal/ConfirmationModal.d.ts +62 -62
  55. package/dist/ConfirmationModal/index.d.ts +1 -1
  56. package/dist/ConfirmationModal/index.js +20 -109
  57. package/dist/ConfirmationModal-b7ef110f.js +103 -0
  58. package/dist/Content/Content.d.ts +13 -13
  59. package/dist/Content/index.d.ts +1 -1
  60. package/dist/Content/index.js +5 -19
  61. package/dist/Content-18de5fbb.js +26 -0
  62. package/dist/Countdown/Countdown.d.ts +31 -31
  63. package/dist/Countdown/computeTimeUnit.d.ts +3 -3
  64. package/dist/Countdown/index.d.ts +1 -1
  65. package/dist/Countdown/index.js +63 -61
  66. package/dist/DataDump/DataDump.d.ts +20 -20
  67. package/dist/DataDump/index.d.ts +1 -1
  68. package/dist/DataDump/index.js +18 -17
  69. package/dist/DatePicker/DatePicker.d.ts +50 -50
  70. package/dist/DatePicker/DatePickerActivator.d.ts +12 -12
  71. package/dist/DatePicker/DatePickerCustomHeader.d.ts +2 -2
  72. package/dist/DatePicker/index.d.ts +1 -1
  73. package/dist/DatePicker/index.js +13 -97
  74. package/dist/DatePicker/useFocusOnSelectedDate.d.ts +5 -5
  75. package/dist/DatePicker-ad6f8630.js +103 -0
  76. package/dist/DescriptionList/DescriptionList.d.ts +10 -10
  77. package/dist/DescriptionList/index.d.ts +1 -1
  78. package/dist/DescriptionList/index.js +16 -15
  79. package/dist/Disclosure/Disclosure.d.ts +20 -20
  80. package/dist/Disclosure/index.d.ts +1 -1
  81. package/dist/Disclosure/index.js +32 -31
  82. package/dist/Divider/Divider.d.ts +16 -16
  83. package/dist/Divider/index.d.ts +1 -1
  84. package/dist/Divider/index.js +19 -17
  85. package/dist/Drawer/Drawer.d.ts +13 -13
  86. package/dist/Drawer/DrawerGrid.d.ts +6 -6
  87. package/dist/Drawer/index.d.ts +2 -2
  88. package/dist/Drawer/index.js +39 -37
  89. package/dist/Emphasis/Emphasis.d.ts +11 -11
  90. package/dist/Emphasis/index.d.ts +1 -1
  91. package/dist/Emphasis/index.js +7 -17
  92. package/dist/Emphasis-fd845639.js +21 -0
  93. package/dist/FeatureSwitch/FeatureSwitch.d.ts +51 -51
  94. package/dist/FeatureSwitch/index.d.ts +1 -1
  95. package/dist/FeatureSwitch/index.js +57 -55
  96. package/dist/Form/Form.d.ts +18 -18
  97. package/dist/Form/index.d.ts +1 -1
  98. package/dist/Form/index.js +58 -57
  99. package/dist/FormField/FormField.d.ts +2 -2
  100. package/dist/FormField/FormFieldAffix.d.ts +13 -13
  101. package/dist/FormField/FormFieldDescription.d.ts +6 -6
  102. package/dist/FormField/FormFieldPostFix.d.ts +5 -5
  103. package/dist/FormField/FormFieldTypes.d.ts +160 -160
  104. package/dist/FormField/FormFieldWrapper.d.ts +9 -9
  105. package/dist/FormField/index.d.ts +2 -2
  106. package/dist/FormField/index.js +15 -208
  107. package/dist/FormField-a92c7bac.js +213 -0
  108. package/dist/FormatDate/FormatDate.d.ts +12 -12
  109. package/dist/FormatDate/index.d.ts +1 -1
  110. package/dist/FormatDate/index.js +24 -23
  111. package/dist/FormatEmail/FormatEmail.d.ts +8 -8
  112. package/dist/FormatEmail/index.d.ts +1 -1
  113. package/dist/FormatEmail/index.js +12 -10
  114. package/dist/FormatFile/FormatFile.d.ts +30 -30
  115. package/dist/FormatFile/FormatFileDeleteButton.d.ts +6 -6
  116. package/dist/FormatFile/InternalThumbnail.d.ts +9 -9
  117. package/dist/FormatFile/index.d.ts +1 -1
  118. package/dist/FormatFile/index.js +21 -112
  119. package/dist/FormatFile-5391d4cf.js +112 -0
  120. package/dist/FormatRelativeDateTime/FormatRelativeDateTime.d.ts +11 -11
  121. package/dist/FormatRelativeDateTime/index.d.ts +1 -1
  122. package/dist/FormatRelativeDateTime/index.js +64 -63
  123. package/dist/FormatTime/FormatTime.d.ts +15 -15
  124. package/dist/FormatTime/index.d.ts +1 -1
  125. package/dist/FormatTime/index.js +28 -27
  126. package/dist/Gallery/Gallery.d.ts +2 -2
  127. package/dist/Gallery/GalleryTypes.d.ts +31 -31
  128. package/dist/Gallery/index.d.ts +1 -1
  129. package/dist/Gallery/index.js +82 -80
  130. package/dist/Heading/Heading.d.ts +14 -14
  131. package/dist/Heading/index.d.ts +1 -1
  132. package/dist/Heading/index.js +7 -53
  133. package/dist/Heading-56750113.js +57 -0
  134. package/dist/Icon/Icon.d.ts +22 -22
  135. package/dist/Icon/index.d.ts +1 -1
  136. package/dist/Icon/index.js +4 -35
  137. package/dist/Icon-d5ad1a6d.js +41 -0
  138. package/dist/InlineLabel/InlineLabel.d.ts +17 -17
  139. package/dist/InlineLabel/index.d.ts +1 -1
  140. package/dist/InlineLabel/index.js +20 -18
  141. package/dist/InputAvatar/InputAvatar.d.ts +22 -22
  142. package/dist/InputAvatar/index.d.ts +1 -1
  143. package/dist/InputAvatar/index.js +57 -56
  144. package/dist/InputDate/InputDate.d.ts +19 -19
  145. package/dist/InputDate/index.d.ts +1 -1
  146. package/dist/InputDate/index.js +34 -33
  147. package/dist/InputEmail/InputEmail.d.ts +5 -5
  148. package/dist/InputEmail/index.d.ts +1 -1
  149. package/dist/InputEmail/index.js +29 -28
  150. package/dist/InputFile/InputFile.d.ts +121 -121
  151. package/dist/InputFile/index.d.ts +1 -1
  152. package/dist/InputFile/index.js +15 -168
  153. package/dist/InputFile-b5cf90c3.js +174 -0
  154. package/dist/InputGroup/InputGroup.d.ts +11 -11
  155. package/dist/InputGroup/index.d.ts +1 -1
  156. package/dist/InputGroup/index.js +24 -22
  157. package/dist/InputNumber/InputNumber.d.ts +11 -11
  158. package/dist/InputNumber/index.d.ts +1 -1
  159. package/dist/InputNumber/index.js +52 -51
  160. package/dist/InputPassword/InputPassword.d.ts +12 -12
  161. package/dist/InputPassword/index.d.ts +1 -1
  162. package/dist/InputPassword/index.js +28 -27
  163. package/dist/InputText/InputText.d.ts +29 -29
  164. package/dist/InputText/index.d.ts +1 -1
  165. package/dist/InputText/index.js +15 -95
  166. package/dist/InputText-cb3be15c.js +91 -0
  167. package/dist/InputTime/InputTime.d.ts +2 -2
  168. package/dist/InputTime/InputTimeProps.d.ts +18 -18
  169. package/dist/InputTime/InputTimeSafari.d.ts +2 -2
  170. package/dist/InputTime/civilTimeConversions.d.ts +3 -3
  171. package/dist/InputTime/index.d.ts +1 -1
  172. package/dist/InputTime/index.js +402 -257
  173. package/dist/InputValidation/InputValidation.d.ts +8 -8
  174. package/dist/InputValidation/index.d.ts +1 -1
  175. package/dist/InputValidation/index.js +8 -24
  176. package/dist/InputValidation-24d3621a.js +28 -0
  177. package/dist/LightBox/LightBox.d.ts +37 -37
  178. package/dist/LightBox/index.d.ts +1 -1
  179. package/dist/LightBox/index.js +6 -34
  180. package/dist/LightBox-b893b656.js +42 -0
  181. package/dist/List/List.d.ts +11 -11
  182. package/dist/List/ListItem.d.ts +54 -54
  183. package/dist/List/index.d.ts +1 -1
  184. package/dist/List/index.js +76 -74
  185. package/dist/Markdown/Markdown.d.ts +17 -17
  186. package/dist/Markdown/index.d.ts +1 -1
  187. package/dist/Markdown/index.js +12 -64
  188. package/dist/Markdown-69986c49.js +68 -0
  189. package/dist/Menu/Menu.d.ts +46 -46
  190. package/dist/Menu/index.d.ts +1 -1
  191. package/dist/Menu/index.js +13 -128
  192. package/dist/Menu-6a392af6.js +134 -0
  193. package/dist/Modal/Modal.d.ts +22 -22
  194. package/dist/Modal/index.d.ts +1 -1
  195. package/dist/Modal/index.js +14 -127
  196. package/dist/Modal/useFocusTrap.d.ts +10 -10
  197. package/dist/Modal-aaaaf2df.js +132 -0
  198. package/dist/Page/Page.d.ts +59 -59
  199. package/dist/Page/index.d.ts +1 -1
  200. package/dist/Page/index.js +63 -61
  201. package/dist/Popover/Popover.d.ts +26 -26
  202. package/dist/Popover/index.d.ts +1 -1
  203. package/dist/Popover/index.js +49 -48
  204. package/dist/ProgressBar/ProgressBar.d.ts +18 -18
  205. package/dist/ProgressBar/index.d.ts +1 -1
  206. package/dist/ProgressBar/index.js +5 -22
  207. package/dist/ProgressBar-e9a49129.js +29 -0
  208. package/dist/RadioGroup/RadioGroup.d.ts +27 -27
  209. package/dist/RadioGroup/RadioOption.d.ts +34 -34
  210. package/dist/RadioGroup/index.d.ts +2 -2
  211. package/dist/RadioGroup/index.js +38 -37
  212. package/dist/RecurringSelect/CurrentRecurrenceComponent.d.ts +8 -8
  213. package/dist/RecurringSelect/RecurringSelect.d.ts +8 -8
  214. package/dist/RecurringSelect/components/DayOfMonthSelect.d.ts +8 -8
  215. package/dist/RecurringSelect/components/MonthlyDayOfWeekSelect.d.ts +8 -8
  216. package/dist/RecurringSelect/components/MonthlySelect.d.ts +8 -8
  217. package/dist/RecurringSelect/components/WeeklySelect.d.ts +8 -8
  218. package/dist/RecurringSelect/components/index.d.ts +4 -4
  219. package/dist/RecurringSelect/index.d.ts +2 -2
  220. package/dist/RecurringSelect/types.d.ts +65 -65
  221. package/dist/Select/Option.d.ts +17 -17
  222. package/dist/Select/Select.d.ts +10 -10
  223. package/dist/Select/index.d.ts +2 -2
  224. package/dist/Select/index.js +20 -19
  225. package/dist/Spinner/Spinner.d.ts +15 -15
  226. package/dist/Spinner/index.d.ts +1 -1
  227. package/dist/Spinner/index.js +5 -19
  228. package/dist/Spinner-18d3dee6.js +26 -0
  229. package/dist/StatusLabel/StatusLabel.d.ts +25 -25
  230. package/dist/StatusLabel/index.d.ts +1 -1
  231. package/dist/StatusLabel/index.js +21 -19
  232. package/dist/Switch/Switch.d.ts +14 -14
  233. package/dist/Switch/index.d.ts +1 -1
  234. package/dist/Switch/index.js +7 -53
  235. package/dist/Switch-d2bec677.js +60 -0
  236. package/dist/Table/Body.d.ts +6 -6
  237. package/dist/Table/Cells/Cell.d.ts +7 -7
  238. package/dist/Table/Cells/CellCurrency.d.ts +8 -8
  239. package/dist/Table/Cells/CellNumeric.d.ts +4 -4
  240. package/dist/Table/Footer.d.ts +6 -6
  241. package/dist/Table/Header.d.ts +6 -6
  242. package/dist/Table/Row.d.ts +6 -6
  243. package/dist/Table/Table.d.ts +6 -6
  244. package/dist/Table/index.d.ts +8 -8
  245. package/dist/Table/index.js +41 -39
  246. package/dist/Tabs/Tabs.d.ts +19 -19
  247. package/dist/Tabs/index.d.ts +1 -1
  248. package/dist/Tabs/index.js +69 -67
  249. package/dist/Text/Text.d.ts +9 -9
  250. package/dist/Text/index.d.ts +1 -1
  251. package/dist/Text/index.js +7 -29
  252. package/dist/Text-9bc093e9.js +32 -0
  253. package/dist/Toast/Toast.d.ts +17 -17
  254. package/dist/Toast/index.d.ts +1 -1
  255. package/dist/Toast/index.js +93 -93
  256. package/dist/Toast/showToast.d.ts +2 -2
  257. package/dist/Tooltip/Tooltip.d.ts +10 -10
  258. package/dist/Tooltip/index.d.ts +1 -1
  259. package/dist/Tooltip/index.js +11 -110
  260. package/dist/Tooltip/useTooltipPositioning.d.ts +18 -18
  261. package/dist/Tooltip-4396164d.js +116 -0
  262. package/dist/Typography/Typography.d.ts +38 -38
  263. package/dist/Typography/index.d.ts +1 -1
  264. package/dist/Typography/index.js +6 -57
  265. package/dist/Typography-7e542a72.js +64 -0
  266. package/dist/{chunk-17e02351.js → style-inject.es-dcee06b6.js} +0 -0
  267. package/dist/{chunk-b67af3cb.js → tslib.es6-5b50eb8e.js} +0 -0
  268. package/package.json +6 -8
  269. package/rollup.config.js +28 -3
@@ -2,70 +2,18 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
6
-
7
- var __chunk_1 = require('../chunk-b67af3cb.js');
8
- var React = require('react');
9
- var React__default = _interopDefault(React);
10
- require('../chunk-17e02351.js');
5
+ var Markdown = require('../Markdown-69986c49.js');
6
+ require('../tslib.es6-5b50eb8e.js');
7
+ require('react');
8
+ require('react-markdown');
9
+ require('../Text-9bc093e9.js');
10
+ require('../Typography-7e542a72.js');
11
11
  require('classnames');
12
- require('../Typography/index.js');
13
- var index$1 = require('../Text/index.js');
14
- var index$3 = require('../Heading/index.js');
15
- var index$2 = require('../Content/index.js');
16
- var ReactMarkdown = _interopDefault(require('react-markdown'));
17
- var index$4 = require('../Emphasis/index.js');
12
+ require('../style-inject.es-dcee06b6.js');
13
+ require('../Emphasis-fd845639.js');
14
+ require('../Heading-56750113.js');
15
+ require('../Content-18de5fbb.js');
16
+
18
17
 
19
- function Markdown(_a) {
20
- var content = _a.content, externalLink = _a.externalLink, basicUsage = _a.basicUsage;
21
- var props = __chunk_1.__assign({}, (basicUsage && {
22
- disallowedElements: [
23
- "p",
24
- "h1",
25
- "h2",
26
- "h3",
27
- "h4",
28
- "h5",
29
- "h6",
30
- "table",
31
- "ul",
32
- "li",
33
- "code",
34
- "image",
35
- ],
36
- unwrapDisallowed: true,
37
- }));
38
- var Tag = basicUsage ? React__default.Fragment : index$2.Content;
39
- return (React__default.createElement(Tag, null,
40
- React__default.createElement(ReactMarkdown, __chunk_1.__assign({}, props, { linkTarget: externalLink ? "_blank" : undefined, components: {
41
- p: renderParagraph,
42
- strong: renderStrong,
43
- em: renderEmphasis,
44
- h1: renderHeading(1),
45
- h2: renderHeading(2),
46
- h3: renderHeading(3),
47
- h4: renderHeading(4),
48
- h5: renderHeading(5),
49
- } }), content)));
50
- }
51
- function renderParagraph(_a) {
52
- var children = _a.children;
53
- return React__default.createElement(index$1.Text, null, children);
54
- }
55
- function renderStrong(_a) {
56
- var children = _a.children;
57
- return React__default.createElement(index$4.Emphasis, { variation: "bold" }, children);
58
- }
59
- function renderEmphasis(_a) {
60
- var children = _a.children;
61
- return React__default.createElement(index$4.Emphasis, { variation: "italic" }, children);
62
- }
63
- function renderHeading(level) {
64
- function buildHeading(_a) {
65
- var children = _a.children;
66
- return React__default.createElement(index$3.Heading, { level: level }, children);
67
- }
68
- return buildHeading;
69
- }
70
18
 
71
- exports.Markdown = Markdown;
19
+ exports.Markdown = Markdown.Markdown;
@@ -0,0 +1,68 @@
1
+ 'use strict';
2
+
3
+ var tslib_es6 = require('./tslib.es6-5b50eb8e.js');
4
+ var React = require('react');
5
+ var ReactMarkdown = require('react-markdown');
6
+ var Text = require('./Text-9bc093e9.js');
7
+ var Emphasis = require('./Emphasis-fd845639.js');
8
+ var Heading = require('./Heading-56750113.js');
9
+ var Content = require('./Content-18de5fbb.js');
10
+
11
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
12
+
13
+ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
14
+ var ReactMarkdown__default = /*#__PURE__*/_interopDefaultLegacy(ReactMarkdown);
15
+
16
+ function Markdown(_a) {
17
+ var content = _a.content, externalLink = _a.externalLink, basicUsage = _a.basicUsage;
18
+ var props = tslib_es6.__assign({}, (basicUsage && {
19
+ disallowedElements: [
20
+ "p",
21
+ "h1",
22
+ "h2",
23
+ "h3",
24
+ "h4",
25
+ "h5",
26
+ "h6",
27
+ "table",
28
+ "ul",
29
+ "li",
30
+ "code",
31
+ "image",
32
+ ],
33
+ unwrapDisallowed: true,
34
+ }));
35
+ var Tag = basicUsage ? React__default["default"].Fragment : Content.Content;
36
+ return (React__default["default"].createElement(Tag, null,
37
+ React__default["default"].createElement(ReactMarkdown__default["default"], tslib_es6.__assign({}, props, { linkTarget: externalLink ? "_blank" : undefined, components: {
38
+ p: renderParagraph,
39
+ strong: renderStrong,
40
+ em: renderEmphasis,
41
+ h1: renderHeading(1),
42
+ h2: renderHeading(2),
43
+ h3: renderHeading(3),
44
+ h4: renderHeading(4),
45
+ h5: renderHeading(5),
46
+ } }), content)));
47
+ }
48
+ function renderParagraph(_a) {
49
+ var children = _a.children;
50
+ return React__default["default"].createElement(Text.Text, null, children);
51
+ }
52
+ function renderStrong(_a) {
53
+ var children = _a.children;
54
+ return React__default["default"].createElement(Emphasis.Emphasis, { variation: "bold" }, children);
55
+ }
56
+ function renderEmphasis(_a) {
57
+ var children = _a.children;
58
+ return React__default["default"].createElement(Emphasis.Emphasis, { variation: "italic" }, children);
59
+ }
60
+ function renderHeading(level) {
61
+ function buildHeading(_a) {
62
+ var children = _a.children;
63
+ return React__default["default"].createElement(Heading.Heading, { level: level }, children);
64
+ }
65
+ return buildHeading;
66
+ }
67
+
68
+ exports.Markdown = Markdown;
@@ -1,46 +1,46 @@
1
- import React, { ReactElement } from "react";
2
- import { IconNames } from "@jobber/design";
3
- interface MenuProps {
4
- /**
5
- * Custom menu activator. If this is not provided a default [… More] will be used.
6
- */
7
- readonly activator?: ReactElement;
8
- /**
9
- * Collection of action items.
10
- */
11
- readonly items: SectionProps[];
12
- }
13
- export interface SectionProps {
14
- /**
15
- * Defines the section header to further explain the group of actions.
16
- */
17
- header?: string;
18
- /**
19
- * List of actions.
20
- */
21
- actions: Omit<ActionProps, "shouldFocus">[];
22
- }
23
- export declare function Menu({ activator, items }: MenuProps): JSX.Element;
24
- export interface ActionProps {
25
- /**
26
- * Action label
27
- */
28
- label: string;
29
- /**
30
- * Parent Section Label
31
- */
32
- sectionLabel?: string;
33
- /**
34
- * Visual cue for the action label
35
- */
36
- icon?: IconNames;
37
- /**
38
- * Callback when an action gets clicked
39
- */
40
- onClick?(event: React.MouseEvent<HTMLButtonElement>): void;
41
- /**
42
- * Focus on the action when rendered
43
- */
44
- shouldFocus?: boolean;
45
- }
46
- export {};
1
+ import React, { ReactElement } from "react";
2
+ import { IconNames } from "@jobber/design";
3
+ interface MenuProps {
4
+ /**
5
+ * Custom menu activator. If this is not provided a default [… More] will be used.
6
+ */
7
+ readonly activator?: ReactElement;
8
+ /**
9
+ * Collection of action items.
10
+ */
11
+ readonly items: SectionProps[];
12
+ }
13
+ export interface SectionProps {
14
+ /**
15
+ * Defines the section header to further explain the group of actions.
16
+ */
17
+ header?: string;
18
+ /**
19
+ * List of actions.
20
+ */
21
+ actions: Omit<ActionProps, "shouldFocus">[];
22
+ }
23
+ export declare function Menu({ activator, items }: MenuProps): JSX.Element;
24
+ export interface ActionProps {
25
+ /**
26
+ * Action label
27
+ */
28
+ label: string;
29
+ /**
30
+ * Parent Section Label
31
+ */
32
+ sectionLabel?: string;
33
+ /**
34
+ * Visual cue for the action label
35
+ */
36
+ icon?: IconNames;
37
+ /**
38
+ * Callback when an action gets clicked
39
+ */
40
+ onClick?(event: React.MouseEvent<HTMLButtonElement>): void;
41
+ /**
42
+ * Focus on the action when rendered
43
+ */
44
+ shouldFocus?: boolean;
45
+ }
46
+ export {};
@@ -1 +1 @@
1
- export { Menu, SectionProps, ActionProps } from "./Menu";
1
+ export { Menu, SectionProps, ActionProps } from "./Menu";
@@ -2,135 +2,20 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
6
-
7
- var __chunk_1 = require('../chunk-b67af3cb.js');
8
- var React = require('react');
9
- var React__default = _interopDefault(React);
10
- var __chunk_2 = require('../chunk-17e02351.js');
11
- var classnames = _interopDefault(require('classnames'));
12
- var index = require('../Typography/index.js');
13
- require('@jobber/design');
14
- var index$2 = require('../Icon/index.js');
15
- var uuid = require('uuid');
5
+ var Menu = require('../Menu-6a392af6.js');
6
+ require('../tslib.es6-5b50eb8e.js');
7
+ require('react');
8
+ require('uuid');
9
+ require('classnames');
10
+ require('framer-motion');
11
+ require('@jobber/hooks');
12
+ require('../style-inject.es-dcee06b6.js');
13
+ require('../Button-5b2f1636.js');
16
14
  require('react-router-dom');
17
- var index$5 = require('../Button/index.js');
18
- var framerMotion = require('framer-motion');
19
- var hooks = require('@jobber/hooks');
15
+ require('../Icon-d5ad1a6d.js');
16
+ require('@jobber/design');
17
+ require('../Typography-7e542a72.js');
20
18
 
21
- var css = "._3dsZe-fIMb0ftQQAJf53tI * {\n box-sizing: border-box;\n}\n\n._3dsZe-fIMb0ftQQAJf53tI {\n display: inline-block;\n position: relative;\n}\n\n._15jh7FtEcALDetgrjoV8HG {\n position: fixed;\n bottom: 0;\n left: 0;\n z-index: var(--elevation-menu);\n width: 100%;\n max-height: 72vh;\n padding: var(--space-small);\n padding-bottom: calc(env(safe-area-inset-bottom) + var(--space-small));\n border-radius: var(--radius-base) var(--radius-base) 0 0;\n -webkit-overflow-scrolling: touch;\n overflow-y: scroll;\n background-color: var(--color-surface)\n}\n\n@media (min-width: 640px) {\n\n._15jh7FtEcALDetgrjoV8HG {\n position: absolute;\n left: auto;\n width: calc(var(--base-unit) * 12.5);\n box-shadow: var(--shadow-base);\n padding: var(--space-small);\n border: var(--border-base) solid var(--color-border);\n border-radius: var(--radius-base);\n overflow: auto\n}\n }\n\n@media (min-width: 640px) {\n\n._15jh7FtEcALDetgrjoV8HG {\n position: absolute;\n left: auto;\n width: calc(var(--base-unit) * 12.5);\n box-shadow: var(--shadow-base);\n padding: var(--space-small);\n border: var(--border-base) solid var(--color-border);\n border-radius: var(--radius-base);\n overflow: auto\n}\n }\n\n@media (--medium-screens) {\n\n._15jh7FtEcALDetgrjoV8HG {\n position: absolute;\n left: auto;\n width: calc(var(--base-unit) * 12.5);\n box-shadow: var(--shadow-base);\n padding: var(--space-small);\n border: var(--border-base) solid var(--color-border);\n border-radius: var(--radius-base);\n overflow: auto\n}\n }\n\n@media (min-width: 640px) {\n\n._2S3J3IQ4JcMgnYjzx3A9AA {\n bottom: 100%;\n margin-bottom: var(--space-smallest)\n}\n }\n\n@media (min-width: 640px) {\n\n._2S3J3IQ4JcMgnYjzx3A9AA {\n bottom: 100%;\n margin-bottom: var(--space-smallest)\n}\n }\n\n@media (--medium-screens) {\n\n._2S3J3IQ4JcMgnYjzx3A9AA {\n bottom: 100%;\n margin-bottom: var(--space-smallest)\n}\n }\n\n@media (min-width: 640px) {\n\n.qgoF1WJ8Cu39FVc3p_c8w {\n top: 100%;\n bottom: auto;\n margin-top: var(--space-smallest)\n}\n }\n\n@media (min-width: 640px) {\n\n.qgoF1WJ8Cu39FVc3p_c8w {\n top: 100%;\n bottom: auto;\n margin-top: var(--space-smallest)\n}\n }\n\n@media (--medium-screens) {\n\n.qgoF1WJ8Cu39FVc3p_c8w {\n top: 100%;\n bottom: auto;\n margin-top: var(--space-smallest)\n}\n }\n\n@media (min-width: 640px) {\n\n._2QwnAwwIXZuZReq2cUwEoX {\n right: 0;\n left: auto\n}\n }\n\n@media (min-width: 640px) {\n\n._2QwnAwwIXZuZReq2cUwEoX {\n right: 0;\n left: auto\n}\n }\n\n@media (--medium-screens) {\n\n._2QwnAwwIXZuZReq2cUwEoX {\n right: 0;\n left: auto\n}\n }\n\n@media (min-width: 640px) {\n\n._2Bdz7gjSU8id-Og42er82U {\n right: auto;\n left: 0\n}\n }\n\n@media (min-width: 640px) {\n\n._2Bdz7gjSU8id-Og42er82U {\n right: auto;\n left: 0\n}\n }\n\n@media (--medium-screens) {\n\n._2Bdz7gjSU8id-Og42er82U {\n right: auto;\n left: 0\n}\n }\n\n._1j-ztPLXQgH-5XOlXybf0- {\n padding: var(--space-small) 0;\n border-bottom: var(--border-base) dotted var(--color-border);\n}\n\n._1j-ztPLXQgH-5XOlXybf0-:first-of-type {\n padding-top: 0;\n}\n\n._1j-ztPLXQgH-5XOlXybf0-:last-of-type {\n padding-bottom: 0;\n border-bottom: none;\n}\n\n.ecEGgRDm96wrHymIDR1FM {\n padding: var(--space-small);\n}\n\n._1lmtkHVgn76IrVsqnqlOYh {\n display: -ms-flexbox;\n display: flex;\n width: 100%;\n padding: var(--space-small);\n border: none;\n border-radius: var(--radius-base);\n background-color: transparent;\n cursor: pointer;\n -ms-flex-align: center;\n align-items: center;\n}\n\n._1lmtkHVgn76IrVsqnqlOYh:hover,\n._1lmtkHVgn76IrVsqnqlOYh:focus {\n background-color: var(--color-surface--hover);\n outline-color: var(--color-focus);\n}\n\n.QMbGAf7Vb6_SM8qOIvLMc {\n margin-right: var(--space-base);\n}\n\n._1DIimpm0iJewCr_4Ee8NTa {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: var(--elevation-menu);\n background-color: var(--color-overlay)\n}\n\n@media (min-width: 640px) {\n\n._1DIimpm0iJewCr_4Ee8NTa {\n background-color: transparent\n}\n }\n\n@media (min-width: 640px) {\n\n._1DIimpm0iJewCr_4Ee8NTa {\n background-color: transparent\n}\n }\n\n@media (--medium-screens) {\n\n._1DIimpm0iJewCr_4Ee8NTa {\n background-color: transparent\n}\n }\n\n.qVvYE_6U6kPoQ4ms_2slA {\n width: 100%;\n}\n\n._3Pk5uJMOz91YR7eDwLASEh {\n position: absolute;\n width: 1px;\n height: 1px;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n}\n";
22
- var styles = {"wrapper":"_3dsZe-fIMb0ftQQAJf53tI","menu":"_15jh7FtEcALDetgrjoV8HG","above":"_2S3J3IQ4JcMgnYjzx3A9AA","below":"qgoF1WJ8Cu39FVc3p_c8w","left":"_2QwnAwwIXZuZReq2cUwEoX","right":"_2Bdz7gjSU8id-Og42er82U","section":"_1j-ztPLXQgH-5XOlXybf0-","sectionHeader":"ecEGgRDm96wrHymIDR1FM","action":"_1lmtkHVgn76IrVsqnqlOYh","icon":"QMbGAf7Vb6_SM8qOIvLMc","overlay":"_1DIimpm0iJewCr_4Ee8NTa","fullWidth":"qVvYE_6U6kPoQ4ms_2slA","screenReaderOnly":"_3Pk5uJMOz91YR7eDwLASEh"};
23
- __chunk_2.styleInject(css);
24
19
 
25
- var variation = {
26
- overlayStartStop: { opacity: 0 },
27
- startOrStop: function (position) {
28
- var y = 10;
29
- if (position === "below")
30
- y *= -1;
31
- if (window.innerWidth < 640)
32
- y = 150;
33
- return { opacity: 0, y: y };
34
- },
35
- done: { opacity: 1, y: 0 },
36
- };
37
- // eslint-disable-next-line max-statements
38
- function Menu(_a) {
39
- var _b;
40
- var activator = _a.activator, items = _a.items;
41
- var _c;
42
- var _d = __chunk_1.__read(React.useState(false), 2), visible = _d[0], setVisible = _d[1];
43
- var fullWidth = ((_c = activator === null || activator === void 0 ? void 0 : activator.props) === null || _c === void 0 ? void 0 : _c.fullWidth) || false;
44
- var _e = __chunk_1.__read(React.useState({
45
- vertical: "below",
46
- horizontal: "right",
47
- }), 2), position = _e[0], setPosition = _e[1];
48
- var wrapperRef = React.createRef();
49
- var buttonID = uuid.v1();
50
- var menuID = uuid.v1();
51
- hooks.useOnKeyDown(handleKeyboardShortcut, ["Escape"]);
52
- React.useLayoutEffect(function () {
53
- if (wrapperRef.current) {
54
- var bounds = wrapperRef.current.getBoundingClientRect();
55
- var newPosition = __chunk_1.__assign({}, position);
56
- if (bounds.top <= window.innerHeight / 2) {
57
- newPosition.vertical = "below";
58
- }
59
- else {
60
- newPosition.vertical = "above";
61
- }
62
- if (bounds.left <= window.innerWidth / 2) {
63
- newPosition.horizontal = "right";
64
- }
65
- else {
66
- newPosition.horizontal = "left";
67
- }
68
- setPosition(newPosition);
69
- }
70
- }, [visible, fullWidth]);
71
- if (!activator) {
72
- activator = (React__default.createElement(index$5.Button, { fullWidth: true, label: "More Actions", icon: "more", type: "secondary" }));
73
- }
74
- var menuClasses = classnames(styles.menu, position.vertical === "above" && styles.above, position.vertical === "below" && styles.below, position.horizontal === "left" && styles.left, position.horizontal === "right" && styles.right);
75
- var wrapperClasses = classnames(styles.wrapper, (_b = {},
76
- _b[styles.fullWidth] = fullWidth,
77
- _b));
78
- return (React__default.createElement("div", { className: wrapperClasses, ref: wrapperRef },
79
- React__default.cloneElement(activator, {
80
- onClick: toggle(activator.props.onClick),
81
- id: buttonID,
82
- ariaControls: menuID,
83
- ariaExpanded: visible,
84
- ariaHaspopup: true,
85
- }),
86
- React__default.createElement(framerMotion.AnimatePresence, null, visible && (React__default.createElement(React__default.Fragment, null,
87
- React__default.createElement(framerMotion.motion.div, { className: styles.overlay, onClick: toggle(), variants: variation, initial: "overlayStartStop", animate: "done", exit: "overlayStartStop", transition: {
88
- type: "tween",
89
- duration: 0.15,
90
- } }),
91
- React__default.createElement(framerMotion.motion.div, { className: menuClasses, role: "menu", "aria-labelledby": buttonID, id: menuID, onClick: hide, variants: variation, initial: "startOrStop", animate: "done", exit: "startOrStop", custom: position, transition: {
92
- type: "tween",
93
- duration: 0.25,
94
- } }, items.map(function (item, key) { return (React__default.createElement("div", { key: key, className: styles.section },
95
- item.header && React__default.createElement(SectionHeader, { text: item.header }),
96
- item.actions.map(function (action, index) { return (React__default.createElement(Action, __chunk_1.__assign({ sectionLabel: item.header, key: action.label, shouldFocus: key === 0 && index === 0 }, action))); }))); })))))));
97
- function toggle(callbackPassthrough) {
98
- return function (event) {
99
- setVisible(!visible);
100
- callbackPassthrough && callbackPassthrough(event);
101
- };
102
- }
103
- function hide() {
104
- setVisible(false);
105
- }
106
- function handleKeyboardShortcut(event) {
107
- var key = event.key;
108
- if (!visible)
109
- return;
110
- event.preventDefault();
111
- event.stopPropagation();
112
- key === "Escape" && hide();
113
- }
114
- }
115
- function SectionHeader(_a) {
116
- var text = _a.text;
117
- return (React__default.createElement("div", { className: styles.sectionHeader, "aria-hidden": true },
118
- React__default.createElement(index.Typography, { element: "h6", size: "small", textCase: "uppercase", textColor: "greyBlue", fontWeight: "bold" }, text)));
119
- }
120
- function Action(_a) {
121
- var label = _a.label, sectionLabel = _a.sectionLabel, icon = _a.icon, onClick = _a.onClick, _b = _a.shouldFocus, shouldFocus = _b === void 0 ? false : _b;
122
- var actionButtonRef = React.useRef();
123
- React.useEffect(function () {
124
- if (actionButtonRef.current && shouldFocus) {
125
- actionButtonRef.current.focus();
126
- }
127
- }, [shouldFocus]);
128
- return (React__default.createElement("button", { role: "menuitem", type: "button", className: styles.action, key: label, onClick: onClick, ref: actionButtonRef },
129
- icon && (React__default.createElement("span", { className: styles.icon },
130
- React__default.createElement(index$2.Icon, { name: icon }))),
131
- React__default.createElement(index.Typography, { element: "span", size: "base", textColor: "greyBlueDark" },
132
- sectionLabel && (React__default.createElement("span", { className: styles.screenReaderOnly }, sectionLabel)),
133
- label)));
134
- }
135
20
 
136
- exports.Menu = Menu;
21
+ exports.Menu = Menu.Menu;
@@ -0,0 +1,134 @@
1
+ 'use strict';
2
+
3
+ var tslib_es6 = require('./tslib.es6-5b50eb8e.js');
4
+ var React = require('react');
5
+ var uuid = require('uuid');
6
+ var classnames = require('classnames');
7
+ var framerMotion = require('framer-motion');
8
+ var hooks = require('@jobber/hooks');
9
+ var styleInject_es = require('./style-inject.es-dcee06b6.js');
10
+ var Button = require('./Button-5b2f1636.js');
11
+ var Typography = require('./Typography-7e542a72.js');
12
+ var Icon = require('./Icon-d5ad1a6d.js');
13
+
14
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
15
+
16
+ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
17
+ var classnames__default = /*#__PURE__*/_interopDefaultLegacy(classnames);
18
+
19
+ var css = "._3dsZe-fIMb0ftQQAJf53tI * {\n box-sizing: border-box;\n}\n\n._3dsZe-fIMb0ftQQAJf53tI {\n display: inline-block;\n position: relative;\n}\n\n._15jh7FtEcALDetgrjoV8HG {\n position: fixed;\n bottom: 0;\n left: 0;\n z-index: var(--elevation-menu);\n width: 100%;\n max-height: 72vh;\n padding: var(--space-small);\n padding-bottom: calc(env(safe-area-inset-bottom) + var(--space-small));\n border-radius: var(--radius-base) var(--radius-base) 0 0;\n -webkit-overflow-scrolling: touch;\n overflow-y: scroll;\n background-color: var(--color-surface)\n}\n\n@media (min-width: 640px) {\n\n._15jh7FtEcALDetgrjoV8HG {\n position: absolute;\n left: auto;\n width: calc(var(--base-unit) * 12.5);\n box-shadow: var(--shadow-base);\n padding: var(--space-small);\n border: var(--border-base) solid var(--color-border);\n border-radius: var(--radius-base);\n overflow: auto\n}\n }\n\n@media (min-width: 640px) {\n\n._15jh7FtEcALDetgrjoV8HG {\n position: absolute;\n left: auto;\n width: calc(var(--base-unit) * 12.5);\n box-shadow: var(--shadow-base);\n padding: var(--space-small);\n border: var(--border-base) solid var(--color-border);\n border-radius: var(--radius-base);\n overflow: auto\n}\n }\n\n@media (--medium-screens) {\n\n._15jh7FtEcALDetgrjoV8HG {\n position: absolute;\n left: auto;\n width: calc(var(--base-unit) * 12.5);\n box-shadow: var(--shadow-base);\n padding: var(--space-small);\n border: var(--border-base) solid var(--color-border);\n border-radius: var(--radius-base);\n overflow: auto\n}\n }\n\n@media (min-width: 640px) {\n\n._2S3J3IQ4JcMgnYjzx3A9AA {\n bottom: 100%;\n margin-bottom: var(--space-smallest)\n}\n }\n\n@media (min-width: 640px) {\n\n._2S3J3IQ4JcMgnYjzx3A9AA {\n bottom: 100%;\n margin-bottom: var(--space-smallest)\n}\n }\n\n@media (--medium-screens) {\n\n._2S3J3IQ4JcMgnYjzx3A9AA {\n bottom: 100%;\n margin-bottom: var(--space-smallest)\n}\n }\n\n@media (min-width: 640px) {\n\n.qgoF1WJ8Cu39FVc3p_c8w {\n top: 100%;\n bottom: auto;\n margin-top: var(--space-smallest)\n}\n }\n\n@media (min-width: 640px) {\n\n.qgoF1WJ8Cu39FVc3p_c8w {\n top: 100%;\n bottom: auto;\n margin-top: var(--space-smallest)\n}\n }\n\n@media (--medium-screens) {\n\n.qgoF1WJ8Cu39FVc3p_c8w {\n top: 100%;\n bottom: auto;\n margin-top: var(--space-smallest)\n}\n }\n\n@media (min-width: 640px) {\n\n._2QwnAwwIXZuZReq2cUwEoX {\n right: 0;\n left: auto\n}\n }\n\n@media (min-width: 640px) {\n\n._2QwnAwwIXZuZReq2cUwEoX {\n right: 0;\n left: auto\n}\n }\n\n@media (--medium-screens) {\n\n._2QwnAwwIXZuZReq2cUwEoX {\n right: 0;\n left: auto\n}\n }\n\n@media (min-width: 640px) {\n\n._2Bdz7gjSU8id-Og42er82U {\n right: auto;\n left: 0\n}\n }\n\n@media (min-width: 640px) {\n\n._2Bdz7gjSU8id-Og42er82U {\n right: auto;\n left: 0\n}\n }\n\n@media (--medium-screens) {\n\n._2Bdz7gjSU8id-Og42er82U {\n right: auto;\n left: 0\n}\n }\n\n._1j-ztPLXQgH-5XOlXybf0- {\n padding: var(--space-small) 0;\n border-bottom: var(--border-base) dotted var(--color-border);\n}\n\n._1j-ztPLXQgH-5XOlXybf0-:first-of-type {\n padding-top: 0;\n}\n\n._1j-ztPLXQgH-5XOlXybf0-:last-of-type {\n padding-bottom: 0;\n border-bottom: none;\n}\n\n.ecEGgRDm96wrHymIDR1FM {\n padding: var(--space-small);\n}\n\n._1lmtkHVgn76IrVsqnqlOYh {\n display: -ms-flexbox;\n display: flex;\n width: 100%;\n padding: var(--space-small);\n border: none;\n border-radius: var(--radius-base);\n background-color: transparent;\n cursor: pointer;\n -ms-flex-align: center;\n align-items: center;\n}\n\n._1lmtkHVgn76IrVsqnqlOYh:hover,\n._1lmtkHVgn76IrVsqnqlOYh:focus {\n background-color: var(--color-surface--hover);\n outline-color: var(--color-focus);\n}\n\n.QMbGAf7Vb6_SM8qOIvLMc {\n margin-right: var(--space-base);\n}\n\n._1DIimpm0iJewCr_4Ee8NTa {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: var(--elevation-menu);\n background-color: var(--color-overlay)\n}\n\n@media (min-width: 640px) {\n\n._1DIimpm0iJewCr_4Ee8NTa {\n background-color: transparent\n}\n }\n\n@media (min-width: 640px) {\n\n._1DIimpm0iJewCr_4Ee8NTa {\n background-color: transparent\n}\n }\n\n@media (--medium-screens) {\n\n._1DIimpm0iJewCr_4Ee8NTa {\n background-color: transparent\n}\n }\n\n.qVvYE_6U6kPoQ4ms_2slA {\n width: 100%;\n}\n\n._3Pk5uJMOz91YR7eDwLASEh {\n position: absolute;\n width: 1px;\n height: 1px;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n}\n";
20
+ var styles = {"wrapper":"_3dsZe-fIMb0ftQQAJf53tI","menu":"_15jh7FtEcALDetgrjoV8HG","above":"_2S3J3IQ4JcMgnYjzx3A9AA","below":"qgoF1WJ8Cu39FVc3p_c8w","left":"_2QwnAwwIXZuZReq2cUwEoX","right":"_2Bdz7gjSU8id-Og42er82U","section":"_1j-ztPLXQgH-5XOlXybf0-","sectionHeader":"ecEGgRDm96wrHymIDR1FM","action":"_1lmtkHVgn76IrVsqnqlOYh","icon":"QMbGAf7Vb6_SM8qOIvLMc","overlay":"_1DIimpm0iJewCr_4Ee8NTa","fullWidth":"qVvYE_6U6kPoQ4ms_2slA","screenReaderOnly":"_3Pk5uJMOz91YR7eDwLASEh"};
21
+ styleInject_es.styleInject(css);
22
+
23
+ var variation = {
24
+ overlayStartStop: { opacity: 0 },
25
+ startOrStop: function (position) {
26
+ var y = 10;
27
+ if (position === "below")
28
+ y *= -1;
29
+ if (window.innerWidth < 640)
30
+ y = 150;
31
+ return { opacity: 0, y: y };
32
+ },
33
+ done: { opacity: 1, y: 0 },
34
+ };
35
+ // eslint-disable-next-line max-statements
36
+ function Menu(_a) {
37
+ var _b;
38
+ var activator = _a.activator, items = _a.items;
39
+ var _c;
40
+ var _d = tslib_es6.__read(React.useState(false), 2), visible = _d[0], setVisible = _d[1];
41
+ var fullWidth = ((_c = activator === null || activator === void 0 ? void 0 : activator.props) === null || _c === void 0 ? void 0 : _c.fullWidth) || false;
42
+ var _e = tslib_es6.__read(React.useState({
43
+ vertical: "below",
44
+ horizontal: "right",
45
+ }), 2), position = _e[0], setPosition = _e[1];
46
+ var wrapperRef = React.createRef();
47
+ var buttonID = uuid.v1();
48
+ var menuID = uuid.v1();
49
+ hooks.useOnKeyDown(handleKeyboardShortcut, ["Escape"]);
50
+ React.useLayoutEffect(function () {
51
+ if (wrapperRef.current) {
52
+ var bounds = wrapperRef.current.getBoundingClientRect();
53
+ var newPosition = tslib_es6.__assign({}, position);
54
+ if (bounds.top <= window.innerHeight / 2) {
55
+ newPosition.vertical = "below";
56
+ }
57
+ else {
58
+ newPosition.vertical = "above";
59
+ }
60
+ if (bounds.left <= window.innerWidth / 2) {
61
+ newPosition.horizontal = "right";
62
+ }
63
+ else {
64
+ newPosition.horizontal = "left";
65
+ }
66
+ setPosition(newPosition);
67
+ }
68
+ }, [visible, fullWidth]);
69
+ if (!activator) {
70
+ activator = (React__default["default"].createElement(Button.Button, { fullWidth: true, label: "More Actions", icon: "more", type: "secondary" }));
71
+ }
72
+ var menuClasses = classnames__default["default"](styles.menu, position.vertical === "above" && styles.above, position.vertical === "below" && styles.below, position.horizontal === "left" && styles.left, position.horizontal === "right" && styles.right);
73
+ var wrapperClasses = classnames__default["default"](styles.wrapper, (_b = {},
74
+ _b[styles.fullWidth] = fullWidth,
75
+ _b));
76
+ return (React__default["default"].createElement("div", { className: wrapperClasses, ref: wrapperRef },
77
+ React__default["default"].cloneElement(activator, {
78
+ onClick: toggle(activator.props.onClick),
79
+ id: buttonID,
80
+ ariaControls: menuID,
81
+ ariaExpanded: visible,
82
+ ariaHaspopup: true,
83
+ }),
84
+ React__default["default"].createElement(framerMotion.AnimatePresence, null, visible && (React__default["default"].createElement(React__default["default"].Fragment, null,
85
+ React__default["default"].createElement(framerMotion.motion.div, { className: styles.overlay, onClick: toggle(), variants: variation, initial: "overlayStartStop", animate: "done", exit: "overlayStartStop", transition: {
86
+ type: "tween",
87
+ duration: 0.15,
88
+ } }),
89
+ React__default["default"].createElement(framerMotion.motion.div, { className: menuClasses, role: "menu", "aria-labelledby": buttonID, id: menuID, onClick: hide, variants: variation, initial: "startOrStop", animate: "done", exit: "startOrStop", custom: position, transition: {
90
+ type: "tween",
91
+ duration: 0.25,
92
+ } }, items.map(function (item, key) { return (React__default["default"].createElement("div", { key: key, className: styles.section },
93
+ item.header && React__default["default"].createElement(SectionHeader, { text: item.header }),
94
+ item.actions.map(function (action, index) { return (React__default["default"].createElement(Action, tslib_es6.__assign({ sectionLabel: item.header, key: action.label, shouldFocus: key === 0 && index === 0 }, action))); }))); })))))));
95
+ function toggle(callbackPassthrough) {
96
+ return function (event) {
97
+ setVisible(!visible);
98
+ callbackPassthrough && callbackPassthrough(event);
99
+ };
100
+ }
101
+ function hide() {
102
+ setVisible(false);
103
+ }
104
+ function handleKeyboardShortcut(event) {
105
+ var key = event.key;
106
+ if (!visible)
107
+ return;
108
+ event.preventDefault();
109
+ event.stopPropagation();
110
+ key === "Escape" && hide();
111
+ }
112
+ }
113
+ function SectionHeader(_a) {
114
+ var text = _a.text;
115
+ return (React__default["default"].createElement("div", { className: styles.sectionHeader, "aria-hidden": true },
116
+ React__default["default"].createElement(Typography.Typography, { element: "h6", size: "small", textCase: "uppercase", textColor: "greyBlue", fontWeight: "bold" }, text)));
117
+ }
118
+ function Action(_a) {
119
+ var label = _a.label, sectionLabel = _a.sectionLabel, icon = _a.icon, onClick = _a.onClick, _b = _a.shouldFocus, shouldFocus = _b === void 0 ? false : _b;
120
+ var actionButtonRef = React.useRef();
121
+ React.useEffect(function () {
122
+ if (actionButtonRef.current && shouldFocus) {
123
+ actionButtonRef.current.focus();
124
+ }
125
+ }, [shouldFocus]);
126
+ return (React__default["default"].createElement("button", { role: "menuitem", type: "button", className: styles.action, key: label, onClick: onClick, ref: actionButtonRef },
127
+ icon && (React__default["default"].createElement("span", { className: styles.icon },
128
+ React__default["default"].createElement(Icon.Icon, { name: icon }))),
129
+ React__default["default"].createElement(Typography.Typography, { element: "span", size: "base", textColor: "greyBlueDark" },
130
+ sectionLabel && (React__default["default"].createElement("span", { className: styles.screenReaderOnly }, sectionLabel)),
131
+ label)));
132
+ }
133
+
134
+ exports.Menu = Menu;
@@ -1,22 +1,22 @@
1
- import React, { ReactNode } from "react";
2
- import sizes from "./Sizes.css";
3
- import { ButtonProps } from "../Button";
4
- interface ModalProps {
5
- /**
6
- * @default false
7
- */
8
- readonly title?: string;
9
- readonly open?: boolean;
10
- readonly size?: keyof typeof sizes;
11
- /**
12
- * @default true
13
- */
14
- readonly dismissible?: boolean;
15
- readonly children: ReactNode;
16
- readonly primaryAction?: ButtonProps;
17
- readonly secondaryAction?: ButtonProps;
18
- readonly tertiaryAction?: ButtonProps;
19
- onRequestClose?(): void;
20
- }
21
- export declare function Modal({ open, title, size, dismissible, children, primaryAction, secondaryAction, tertiaryAction, onRequestClose, }: ModalProps): React.ReactPortal;
22
- export {};
1
+ import React, { ReactNode } from "react";
2
+ import sizes from "./Sizes.css";
3
+ import { ButtonProps } from "../Button";
4
+ interface ModalProps {
5
+ /**
6
+ * @default false
7
+ */
8
+ readonly title?: string;
9
+ readonly open?: boolean;
10
+ readonly size?: keyof typeof sizes;
11
+ /**
12
+ * @default true
13
+ */
14
+ readonly dismissible?: boolean;
15
+ readonly children: ReactNode;
16
+ readonly primaryAction?: ButtonProps;
17
+ readonly secondaryAction?: ButtonProps;
18
+ readonly tertiaryAction?: ButtonProps;
19
+ onRequestClose?(): void;
20
+ }
21
+ export declare function Modal({ open, title, size, dismissible, children, primaryAction, secondaryAction, tertiaryAction, onRequestClose, }: ModalProps): React.ReactPortal;
22
+ export {};
@@ -1 +1 @@
1
- export { Modal } from "./Modal";
1
+ export { Modal } from "./Modal";