@primer/components 0.0.0-2021103235619 → 0.0.0-2021104151625

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 (192) hide show
  1. package/CHANGELOG.md +27 -1
  2. package/dist/browser.esm.js +509 -505
  3. package/dist/browser.esm.js.map +1 -1
  4. package/dist/browser.umd.js +112 -108
  5. package/dist/browser.umd.js.map +1 -1
  6. package/lib/ActionList/Header.js +1 -1
  7. package/lib/ActionList/Item.d.ts +6 -0
  8. package/lib/ActionList/Item.js +5 -1
  9. package/lib/ActionList2/Description.d.ts +12 -0
  10. package/lib/ActionList2/Description.js +53 -0
  11. package/lib/ActionList2/Divider.d.ts +5 -0
  12. package/lib/ActionList2/Divider.js +35 -0
  13. package/lib/ActionList2/Group.d.ts +11 -0
  14. package/lib/ActionList2/Group.js +57 -0
  15. package/lib/ActionList2/Header.d.ts +26 -0
  16. package/lib/ActionList2/Header.js +55 -0
  17. package/lib/ActionList2/Item.d.ts +67 -0
  18. package/lib/ActionList2/Item.js +221 -0
  19. package/lib/ActionList2/LinkItem.d.ts +17 -0
  20. package/lib/ActionList2/LinkItem.js +57 -0
  21. package/lib/ActionList2/List.d.ts +26 -0
  22. package/lib/ActionList2/List.js +51 -0
  23. package/lib/ActionList2/Selection.d.ts +5 -0
  24. package/lib/ActionList2/Selection.js +70 -0
  25. package/lib/ActionList2/Visuals.d.ts +11 -0
  26. package/lib/ActionList2/Visuals.js +90 -0
  27. package/lib/ActionList2/index.d.ts +40 -0
  28. package/lib/ActionList2/index.js +47 -0
  29. package/lib/AnchoredOverlay/AnchoredOverlay.d.ts +2 -4
  30. package/lib/Autocomplete/Autocomplete.d.ts +30 -32
  31. package/lib/Autocomplete/AutocompleteInput.d.ts +30 -32
  32. package/lib/Button/Button.d.ts +27 -27
  33. package/lib/Button/ButtonBase.d.ts +1 -1
  34. package/lib/Button/ButtonClose.d.ts +45 -45
  35. package/lib/Button/ButtonDanger.d.ts +27 -27
  36. package/lib/Button/ButtonInvisible.d.ts +27 -27
  37. package/lib/Button/ButtonOutline.d.ts +27 -27
  38. package/lib/Button/ButtonPrimary.d.ts +27 -27
  39. package/lib/CircleBadge.d.ts +2 -2
  40. package/lib/CircleOcticon.d.ts +43 -43
  41. package/lib/Dialog.d.ts +46 -46
  42. package/lib/Dropdown.d.ts +178 -178
  43. package/lib/DropdownMenu/DropdownButton.d.ts +47 -47
  44. package/lib/FilterList.d.ts +42 -42
  45. package/lib/Flash.d.ts +1 -1
  46. package/lib/Label.d.ts +1 -1
  47. package/lib/Position.d.ts +4 -4
  48. package/lib/ProgressBar.d.ts +1 -1
  49. package/lib/SelectMenu/SelectMenu.d.ts +246 -248
  50. package/lib/SelectMenu/SelectMenuItem.d.ts +1 -1
  51. package/lib/SelectMenu/SelectMenuModal.d.ts +1 -1
  52. package/lib/TextInputWithTokens.d.ts +34 -32
  53. package/lib/TextInputWithTokens.js +102 -29
  54. package/lib/Timeline.d.ts +44 -44
  55. package/lib/Token/AvatarToken.d.ts +1 -1
  56. package/lib/Token/IssueLabelToken.d.ts +1 -1
  57. package/lib/Token/Token.d.ts +1 -1
  58. package/lib/Token/Token.js +13 -2
  59. package/lib/Token/TokenBase.js +0 -4
  60. package/lib/Token/_RemoveTokenButton.js +15 -2
  61. package/lib/_TextInputWrapper.d.ts +1 -1
  62. package/lib/_TextInputWrapper.js +1 -1
  63. package/lib/experiments.d.ts +1 -0
  64. package/lib/experiments.js +18 -0
  65. package/lib/hooks/useResizeObserver.d.ts +1 -1
  66. package/lib/hooks/useResizeObserver.js +1 -1
  67. package/lib/sx.d.ts +10 -2
  68. package/lib/sx.js +8 -0
  69. package/lib/theme-preval.js +79 -0
  70. package/lib/theme.d.ts +78 -0
  71. package/lib/theme.js +3 -1
  72. package/lib/utils/create-slots.d.ts +17 -0
  73. package/lib/utils/create-slots.js +105 -0
  74. package/lib/utils/testing.d.ts +13 -0
  75. package/lib/utils/types/KeyPaths.d.ts +3 -0
  76. package/lib/utils/types/KeyPaths.js +1 -0
  77. package/lib/utils/use-force-update.d.ts +1 -0
  78. package/lib/utils/use-force-update.js +19 -0
  79. package/lib-esm/ActionList/Header.js +1 -1
  80. package/lib-esm/ActionList/Item.d.ts +6 -0
  81. package/lib-esm/ActionList/Item.js +5 -1
  82. package/lib-esm/ActionList2/Description.d.ts +12 -0
  83. package/lib-esm/ActionList2/Description.js +37 -0
  84. package/lib-esm/ActionList2/Divider.d.ts +5 -0
  85. package/lib-esm/ActionList2/Divider.js +23 -0
  86. package/lib-esm/ActionList2/Group.d.ts +11 -0
  87. package/lib-esm/ActionList2/Group.js +40 -0
  88. package/lib-esm/ActionList2/Header.d.ts +26 -0
  89. package/lib-esm/ActionList2/Header.js +44 -0
  90. package/lib-esm/ActionList2/Item.d.ts +67 -0
  91. package/lib-esm/ActionList2/Item.js +195 -0
  92. package/lib-esm/ActionList2/LinkItem.d.ts +17 -0
  93. package/lib-esm/ActionList2/LinkItem.js +43 -0
  94. package/lib-esm/ActionList2/List.d.ts +26 -0
  95. package/lib-esm/ActionList2/List.js +34 -0
  96. package/lib-esm/ActionList2/Selection.d.ts +5 -0
  97. package/lib-esm/ActionList2/Selection.js +52 -0
  98. package/lib-esm/ActionList2/Visuals.d.ts +11 -0
  99. package/lib-esm/ActionList2/Visuals.js +68 -0
  100. package/lib-esm/ActionList2/index.d.ts +40 -0
  101. package/lib-esm/ActionList2/index.js +33 -0
  102. package/lib-esm/AnchoredOverlay/AnchoredOverlay.d.ts +2 -4
  103. package/lib-esm/Autocomplete/Autocomplete.d.ts +30 -32
  104. package/lib-esm/Autocomplete/AutocompleteInput.d.ts +30 -32
  105. package/lib-esm/Button/Button.d.ts +27 -27
  106. package/lib-esm/Button/ButtonBase.d.ts +1 -1
  107. package/lib-esm/Button/ButtonClose.d.ts +45 -45
  108. package/lib-esm/Button/ButtonDanger.d.ts +27 -27
  109. package/lib-esm/Button/ButtonInvisible.d.ts +27 -27
  110. package/lib-esm/Button/ButtonOutline.d.ts +27 -27
  111. package/lib-esm/Button/ButtonPrimary.d.ts +27 -27
  112. package/lib-esm/CircleBadge.d.ts +2 -2
  113. package/lib-esm/CircleOcticon.d.ts +43 -43
  114. package/lib-esm/Dialog.d.ts +46 -46
  115. package/lib-esm/Dropdown.d.ts +178 -178
  116. package/lib-esm/DropdownMenu/DropdownButton.d.ts +47 -47
  117. package/lib-esm/FilterList.d.ts +42 -42
  118. package/lib-esm/Flash.d.ts +1 -1
  119. package/lib-esm/Label.d.ts +1 -1
  120. package/lib-esm/Position.d.ts +4 -4
  121. package/lib-esm/ProgressBar.d.ts +1 -1
  122. package/lib-esm/SelectMenu/SelectMenu.d.ts +246 -248
  123. package/lib-esm/SelectMenu/SelectMenuItem.d.ts +1 -1
  124. package/lib-esm/SelectMenu/SelectMenuModal.d.ts +1 -1
  125. package/lib-esm/TextInputWithTokens.d.ts +34 -32
  126. package/lib-esm/TextInputWithTokens.js +101 -30
  127. package/lib-esm/Timeline.d.ts +44 -44
  128. package/lib-esm/Token/AvatarToken.d.ts +1 -1
  129. package/lib-esm/Token/IssueLabelToken.d.ts +1 -1
  130. package/lib-esm/Token/Token.d.ts +1 -1
  131. package/lib-esm/Token/Token.js +13 -2
  132. package/lib-esm/Token/TokenBase.js +0 -4
  133. package/lib-esm/Token/_RemoveTokenButton.js +11 -2
  134. package/lib-esm/_TextInputWrapper.d.ts +1 -1
  135. package/lib-esm/_TextInputWrapper.js +1 -1
  136. package/lib-esm/experiments.d.ts +1 -0
  137. package/lib-esm/experiments.js +2 -0
  138. package/lib-esm/hooks/useResizeObserver.d.ts +1 -1
  139. package/lib-esm/hooks/useResizeObserver.js +1 -1
  140. package/lib-esm/sx.d.ts +10 -2
  141. package/lib-esm/sx.js +3 -1
  142. package/lib-esm/theme-preval.js +79 -0
  143. package/lib-esm/theme.d.ts +78 -0
  144. package/lib-esm/theme.js +2 -1
  145. package/lib-esm/utils/create-slots.d.ts +17 -0
  146. package/lib-esm/utils/create-slots.js +84 -0
  147. package/lib-esm/utils/testing.d.ts +13 -0
  148. package/lib-esm/utils/types/KeyPaths.d.ts +3 -0
  149. package/lib-esm/utils/types/KeyPaths.js +1 -0
  150. package/lib-esm/utils/use-force-update.d.ts +1 -0
  151. package/lib-esm/utils/use-force-update.js +6 -0
  152. package/package.json +12 -9
  153. package/lib/DatePicker/DatePicker.d.ts +0 -52
  154. package/lib/DatePicker/DatePicker.js +0 -109
  155. package/lib/DatePicker/DatePickerAnchor.d.ts +0 -5
  156. package/lib/DatePicker/DatePickerAnchor.js +0 -202
  157. package/lib/DatePicker/DatePickerOverlay.d.ts +0 -3
  158. package/lib/DatePicker/DatePickerOverlay.js +0 -55
  159. package/lib/DatePicker/DatePickerPanel.d.ts +0 -2
  160. package/lib/DatePicker/DatePickerPanel.js +0 -363
  161. package/lib/DatePicker/Day.d.ts +0 -15
  162. package/lib/DatePicker/Day.js +0 -206
  163. package/lib/DatePicker/Month.d.ts +0 -8
  164. package/lib/DatePicker/Month.js +0 -122
  165. package/lib/DatePicker/dateParser.d.ts +0 -12
  166. package/lib/DatePicker/dateParser.js +0 -192
  167. package/lib/DatePicker/index.d.ts +0 -2
  168. package/lib/DatePicker/index.js +0 -13
  169. package/lib/DatePicker/useDatePicker.d.ts +0 -107
  170. package/lib/DatePicker/useDatePicker.js +0 -558
  171. package/lib/hooks/useDebounce.d.ts +0 -2
  172. package/lib/hooks/useDebounce.js +0 -24
  173. package/lib-esm/DatePicker/DatePicker.d.ts +0 -52
  174. package/lib-esm/DatePicker/DatePicker.js +0 -92
  175. package/lib-esm/DatePicker/DatePickerAnchor.d.ts +0 -5
  176. package/lib-esm/DatePicker/DatePickerAnchor.js +0 -174
  177. package/lib-esm/DatePicker/DatePickerOverlay.d.ts +0 -3
  178. package/lib-esm/DatePicker/DatePickerOverlay.js +0 -40
  179. package/lib-esm/DatePicker/DatePickerPanel.d.ts +0 -2
  180. package/lib-esm/DatePicker/DatePickerPanel.js +0 -332
  181. package/lib-esm/DatePicker/Day.d.ts +0 -15
  182. package/lib-esm/DatePicker/Day.js +0 -182
  183. package/lib-esm/DatePicker/Month.d.ts +0 -8
  184. package/lib-esm/DatePicker/Month.js +0 -98
  185. package/lib-esm/DatePicker/dateParser.d.ts +0 -12
  186. package/lib-esm/DatePicker/dateParser.js +0 -178
  187. package/lib-esm/DatePicker/index.d.ts +0 -2
  188. package/lib-esm/DatePicker/index.js +0 -1
  189. package/lib-esm/DatePicker/useDatePicker.d.ts +0 -107
  190. package/lib-esm/DatePicker/useDatePicker.js +0 -523
  191. package/lib-esm/hooks/useDebounce.d.ts +0 -2
  192. package/lib-esm/hooks/useDebounce.js +0 -16
@@ -1,202 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.DatePickerAnchor = void 0;
7
-
8
- var _octiconsReact = require("@primer/octicons-react");
9
-
10
- var _styledComponents = _interopRequireDefault(require("styled-components"));
11
-
12
- var _react = _interopRequireWildcard(require("react"));
13
-
14
- var _Button = _interopRequireWildcard(require("../Button"));
15
-
16
- var _Text = _interopRequireDefault(require("../Text"));
17
-
18
- var _constants = require("../constants");
19
-
20
- var _StyledOcticon = _interopRequireDefault(require("../StyledOcticon"));
21
-
22
- var _useDatePicker = _interopRequireDefault(require("./useDatePicker"));
23
-
24
- var _TextInput = _interopRequireDefault(require("../TextInput"));
25
-
26
- var _Box = _interopRequireDefault(require("../Box"));
27
-
28
- var _dateParser = require("./dateParser");
29
-
30
- var _ = require("..");
31
-
32
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
33
-
34
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
35
-
36
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
37
-
38
- const DatePickerAnchorButton = (0, _styledComponents.default)(_Button.default).withConfig({
39
- displayName: "DatePickerAnchor__DatePickerAnchorButton",
40
- componentId: "sc-8gpb9d-0"
41
- })(["align-items:center;display:flex;flex-direction:row;justify-content:space-between;max-width:350px;overflow:hidden;& ", " ~ svg{margin-left:", ";}& svg ~ ", "{margin-left:", ";}"], _Text.default, (0, _constants.get)('space.2'), _Text.default, (0, _constants.get)('space.2'));
42
-
43
- const DatePickerAnchor = /*#__PURE__*/_react.default.forwardRef(({
44
- onAction
45
- }, ref) => {
46
- const {
47
- configuration: {
48
- anchorVariant,
49
- iconPlacement,
50
- placeholder,
51
- variant
52
- },
53
- disabled,
54
- formattedDate,
55
- inputDate,
56
- onDateInput
57
- } = (0, _useDatePicker.default)();
58
- const [inputValue, setInputValue] = (0, _react.useState)(formattedDate);
59
- const inputRef = (0, _react.useRef)(null);
60
- const [inputValid, setInputValid] = (0, _react.useState)(true);
61
- const [inputFocused, setInputFocused] = (0, _react.useState)(false);
62
- const keyPressHandler = (0, _react.useCallback)(event => {
63
- if (disabled) {
64
- return;
65
- }
66
-
67
- if ([' ', 'Enter'].includes(event.key)) {
68
- onAction === null || onAction === void 0 ? void 0 : onAction(event);
69
- }
70
- }, [disabled, onAction]);
71
- const clickHandler = (0, _react.useCallback)(event => {
72
- if (disabled) {
73
- return;
74
- }
75
-
76
- onAction === null || onAction === void 0 ? void 0 : onAction(event);
77
- }, [disabled, onAction]);
78
- (0, _react.useEffect)(() => {
79
- if (document.activeElement !== inputRef.current) {
80
- setInputValue(formattedDate);
81
- }
82
- }, [formattedDate]);
83
- const onInputChangeHandler = (0, _react.useCallback)(e => {
84
- const value = e.currentTarget.value;
85
- setInputValue(value);
86
-
87
- if (!value) {
88
- return;
89
- }
90
-
91
- const parsedDate = (0, _dateParser.parseDate)(value, variant);
92
- setInputValid(!!parsedDate);
93
-
94
- if (parsedDate) {
95
- onDateInput(parsedDate);
96
- }
97
- }, [onDateInput, variant]);
98
-
99
- const onFocusHandler = () => {
100
- setInputValue(inputDate);
101
- setInputFocused(true);
102
- };
103
-
104
- const onBlurHandler = () => {
105
- setInputValue(formattedDate);
106
- setInputValid(true);
107
- setInputFocused(false);
108
- };
109
-
110
- const inputSx = (0, _react.useMemo)(() => {
111
- let sxObject = {};
112
-
113
- if (iconPlacement === 'start') {
114
- sxObject = { ...sxObject,
115
- pl: 5,
116
- pr: 2
117
- };
118
- } else if (iconPlacement === 'end') {
119
- sxObject = { ...sxObject,
120
- pl: 2,
121
- pr: 5
122
- };
123
- }
124
-
125
- return sxObject;
126
- }, [iconPlacement]);
127
-
128
- if (anchorVariant === 'input') {
129
- const calendarButton = side => /*#__PURE__*/_react.default.createElement(_Button.ButtonInvisible, {
130
- onClick: clickHandler,
131
- sx: {
132
- width: '32px',
133
- px: '6px',
134
- position: 'absolute',
135
- [side]: '1px',
136
- top: '1px',
137
- bottom: '1px'
138
- }
139
- }, /*#__PURE__*/_react.default.createElement(_StyledOcticon.default, {
140
- icon: _octiconsReact.CalendarIcon
141
- }));
142
-
143
- const iconSx = () => ({
144
- position: 'absolute',
145
- top: 0,
146
- bottom: 0,
147
- right: iconPlacement === 'end' ? '36px' : '10px',
148
- display: 'flex',
149
- alignItems: 'center'
150
- });
151
-
152
- return /*#__PURE__*/_react.default.createElement(_Box.default, {
153
- ref: ref,
154
- sx: {
155
- position: 'relative',
156
- display: 'flex'
157
- }
158
- }, iconPlacement === 'start' && calendarButton('left'), /*#__PURE__*/_react.default.createElement(_TextInput.default, {
159
- ref: inputRef,
160
- placeholder: placeholder,
161
- value: inputValue,
162
- onChange: onInputChangeHandler,
163
- sx: inputSx,
164
- onBlur: onBlurHandler,
165
- onFocus: onFocusHandler
166
- }), /*#__PURE__*/_react.default.createElement(_Box.default, {
167
- sx: iconSx()
168
- }, inputValid && inputFocused && /*#__PURE__*/_react.default.createElement(_StyledOcticon.default, {
169
- icon: _octiconsReact.CheckIcon,
170
- color: "success.emphasis"
171
- }), !inputValid && /*#__PURE__*/_react.default.createElement(_.Tooltip, {
172
- direction: "s",
173
- text: "Invalid entry. Please make sure you use the 'MM/DD/YYYY' format."
174
- }, /*#__PURE__*/_react.default.createElement(_StyledOcticon.default, {
175
- icon: _octiconsReact.AlertIcon,
176
- color: "attention.emphasis"
177
- }))), iconPlacement === 'end' && calendarButton('right'));
178
- }
179
-
180
- const calendarIcon = () => /*#__PURE__*/_react.default.createElement(_StyledOcticon.default, {
181
- icon: _octiconsReact.CalendarIcon,
182
- color: "fg.muted",
183
- sx: {
184
- my: '2px'
185
- }
186
- });
187
-
188
- return /*#__PURE__*/_react.default.createElement(_Box.default, {
189
- ref: ref
190
- }, /*#__PURE__*/_react.default.createElement(DatePickerAnchorButton, {
191
- onClick: clickHandler,
192
- onKeyPress: keyPressHandler,
193
- "aria-label": formattedDate
194
- }, iconPlacement === 'start' && calendarIcon(), anchorVariant !== 'icon-only' && /*#__PURE__*/_react.default.createElement(_Text.default, {
195
- sx: {
196
- overflow: 'hidden',
197
- textOverflow: 'ellipsis'
198
- }
199
- }, formattedDate), iconPlacement === 'end' && calendarIcon()));
200
- });
201
-
202
- exports.DatePickerAnchor = DatePickerAnchor;
@@ -1,3 +0,0 @@
1
- import React from 'react';
2
- import { AnchoredOverlayProps } from '../AnchoredOverlay';
3
- export declare const DatePickerOverlay: React.FC<AnchoredOverlayProps>;
@@ -1,55 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.DatePickerOverlay = void 0;
7
-
8
- var _react = _interopRequireDefault(require("react"));
9
-
10
- var _useDatePicker = _interopRequireDefault(require("./useDatePicker"));
11
-
12
- var _AnchoredOverlay = require("../AnchoredOverlay");
13
-
14
- var _DatePickerPanel = require("./DatePickerPanel");
15
-
16
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
-
18
- function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
19
-
20
- const DatePickerOverlay = ({
21
- onClose,
22
- ...rest
23
- }) => {
24
- const {
25
- dialogOpen,
26
- onClose: onDatePickerClose,
27
- setDialogOpen,
28
- currentViewingDate
29
- } = (0, _useDatePicker.default)();
30
-
31
- const onOverlayClose = async gesture => {
32
- if (!dialogOpen) {
33
- setDialogOpen(true);
34
- await onDatePickerClose();
35
- setDialogOpen(false);
36
- onClose === null || onClose === void 0 ? void 0 : onClose(gesture);
37
- }
38
- };
39
-
40
- return /*#__PURE__*/_react.default.createElement(_AnchoredOverlay.AnchoredOverlay, _extends({}, rest, {
41
- onClose: onOverlayClose,
42
- focusTrapSettings: {
43
- restoreFocusOnCleanUp: true
44
- },
45
- focusZoneSettings: {
46
- disabled: true
47
- },
48
- "aria-modal": "true",
49
- "aria-labelledby": `${currentViewingDate.getMonth()} ${currentViewingDate.getFullYear()}`,
50
- "aria-live": "polite"
51
- }), /*#__PURE__*/_react.default.createElement(_DatePickerPanel.DatePickerPanel, null));
52
- };
53
-
54
- exports.DatePickerOverlay = DatePickerOverlay;
55
- DatePickerOverlay.displayName = "DatePickerOverlay";
@@ -1,2 +0,0 @@
1
- /// <reference types="react" />
2
- export declare const DatePickerPanel: () => JSX.Element;
@@ -1,363 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.DatePickerPanel = void 0;
7
-
8
- var _dateFns = require("date-fns");
9
-
10
- var _react = _interopRequireWildcard(require("react"));
11
-
12
- var _Box = _interopRequireDefault(require("../Box"));
13
-
14
- var _Month = require("./Month");
15
-
16
- var _styledComponents = _interopRequireDefault(require("styled-components"));
17
-
18
- var _constants = require("../constants");
19
-
20
- var _useDatePicker = _interopRequireWildcard(require("./useDatePicker"));
21
-
22
- var _octiconsReact = require("@primer/octicons-react");
23
-
24
- var _StyledOcticon = _interopRequireDefault(require("../StyledOcticon"));
25
-
26
- var _Button = _interopRequireWildcard(require("../Button"));
27
-
28
- var _sx = _interopRequireDefault(require("../sx"));
29
-
30
- var _useFocusZone = require("../hooks/useFocusZone");
31
-
32
- var _focusZone = require("../behaviors/focusZone");
33
-
34
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
35
-
36
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
37
-
38
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
39
-
40
- const DatePickerPanelContainer = (0, _styledComponents.default)(_Box.default).withConfig({
41
- displayName: "DatePickerPanel__DatePickerPanelContainer",
42
- componentId: "sc-19upxpo-0"
43
- })(["align-items:stretch;display:flex;flex-direction:column;position:relative;"]);
44
- const DatePickerTopNav = (0, _styledComponents.default)(_Box.default).withConfig({
45
- displayName: "DatePickerPanel__DatePickerTopNav",
46
- componentId: "sc-19upxpo-1"
47
- })(["display:flex;justify-content:space-between;position:absolute;top:0;left:0;right:0;padding:", ";z-index:10;"], (0, _constants.get)('space.3'));
48
- const DatePickerPanelMonths = (0, _styledComponents.default)(_Box.default).withConfig({
49
- displayName: "DatePickerPanel__DatePickerPanelMonths",
50
- componentId: "sc-19upxpo-2"
51
- })(["align-items:flex-start;display:flex;flex-direction:row;gap:", ";margin-top:", ";padding:", ";position:relative;"], (0, _constants.get)('space.6'), (0, _constants.get)('space.1'), (0, _constants.get)('space.3'));
52
- const DatePickerPanelFooter = (0, _styledComponents.default)(_Box.default).withConfig({
53
- displayName: "DatePickerPanel__DatePickerPanelFooter",
54
- componentId: "sc-19upxpo-3"
55
- })(["align-items:flex-start;border-top:1px solid;border-top-color:", ";display:flex;gap:", ";padding-top:12px;padding-bottom:12px;padding-left:", ";padding-right:", ";flex-direction:row;justify-content:space-between;position:relative;"], (0, _constants.get)('colors.border.default'), (0, _constants.get)('space.6'), (0, _constants.get)('space.3'), (0, _constants.get)('space.3'));
56
- const ArrowButton = (0, _styledComponents.default)(_Button.default).withConfig({
57
- displayName: "DatePickerPanel__ArrowButton",
58
- componentId: "sc-19upxpo-4"
59
- })(["width:40px;height:28px;"]);
60
-
61
- const Select = _styledComponents.default.select.withConfig({
62
- displayName: "DatePickerPanel__Select",
63
- componentId: "sc-19upxpo-5"
64
- })(["background:", ";border:0;color:", ";font-weight:600;", ";", ";", ";"], (0, _constants.get)('colors.canvas.default'), (0, _constants.get)('colors.fg.default'), _constants.TYPOGRAPHY, _constants.COMMON, _sx.default);
65
-
66
- const Option = _styledComponents.default.option.withConfig({
67
- displayName: "DatePickerPanel__Option",
68
- componentId: "sc-19upxpo-6"
69
- })(["background:", ";border:0;color:", ";font-weight:400;padding:", " ", ";", ";", ";", ";"], (0, _constants.get)('colors.canvas.default'), (0, _constants.get)('colors.fg.default'), (0, _constants.get)('space.2'), (0, _constants.get)('space.2'), _constants.TYPOGRAPHY, _constants.COMMON, _sx.default);
70
-
71
- const DatePickerPanel = () => {
72
- const {
73
- configuration,
74
- saveValue,
75
- revertValue,
76
- currentViewingDate,
77
- goToMonth,
78
- nextMonth,
79
- previousMonth,
80
- onDayFocus,
81
- setFocusDate,
82
- viewMode
83
- } = (0, _useDatePicker.default)();
84
- const panelRef = (0, _react.useRef)(null);
85
- const headerRef = (0, _react.useRef)(null);
86
- const datePanelRef = (0, _react.useRef)(null);
87
- const footerRef = (0, _react.useRef)(null);
88
- (0, _useFocusZone.useFocusZone)({
89
- containerRef: headerRef,
90
- bindKeys: _focusZone.FocusKeys.Tab,
91
- focusInStrategy: 'closest'
92
- });
93
- const getNextFocusable = (0, _react.useCallback)((direction, from, event) => {
94
- var _datePanelRef$current, _datePanelRef$current2;
95
-
96
- const key = event.key;
97
- const {
98
- disableWeekends,
99
- minDate,
100
- maxDate
101
- } = configuration;
102
- const fromDate = from === null || from === void 0 ? void 0 : from.getAttribute('data-date');
103
- const focusDate = fromDate ? new Date(fromDate) : new Date();
104
- let newDate = (0, _useDatePicker.normalizeDate)(focusDate);
105
-
106
- switch (key) {
107
- case 'ArrowRight':
108
- {
109
- // Increase selection by 1 day
110
- newDate = (0, _useDatePicker.normalizeDate)((0, _dateFns.addDays)(focusDate, 1));
111
- if (maxDate && (0, _dateFns.isAfter)(newDate, maxDate)) newDate = maxDate;
112
-
113
- if (disableWeekends && (0, _dateFns.isWeekend)(newDate)) {
114
- const monday = (0, _dateFns.nextMonday)(newDate);
115
- newDate = maxDate && (0, _dateFns.isAfter)(monday, maxDate) ? maxDate : monday;
116
- }
117
-
118
- setFocusDate(newDate);
119
- onDayFocus(newDate);
120
- break;
121
- }
122
-
123
- case 'ArrowLeft':
124
- {
125
- // Decrease selection by 1 day
126
- newDate = (0, _useDatePicker.normalizeDate)((0, _dateFns.subDays)(focusDate, 1));
127
- if (minDate && (0, _dateFns.isBefore)(newDate, minDate)) newDate = minDate;
128
-
129
- if (disableWeekends && (0, _dateFns.isWeekend)(newDate)) {
130
- const friday = (0, _dateFns.previousFriday)(newDate);
131
- newDate = minDate && (0, _dateFns.isBefore)(friday, minDate) ? minDate : friday;
132
- }
133
-
134
- setFocusDate(newDate);
135
- onDayFocus(newDate);
136
- break;
137
- }
138
-
139
- case 'ArrowUp':
140
- {
141
- // Decrease selection by 1 week
142
- newDate = (0, _useDatePicker.normalizeDate)((0, _dateFns.subWeeks)(focusDate, 1));
143
- if (minDate && (0, _dateFns.isBefore)(newDate, minDate)) newDate = minDate;
144
- setFocusDate(newDate);
145
- onDayFocus(newDate);
146
- break;
147
- }
148
-
149
- case 'ArrowDown':
150
- {
151
- // Increase selection by 1 week
152
- newDate = (0, _useDatePicker.normalizeDate)((0, _dateFns.addWeeks)(focusDate, 1));
153
- if (maxDate && (0, _dateFns.isAfter)(newDate, maxDate)) newDate = maxDate;
154
- setFocusDate(newDate);
155
- onDayFocus(newDate);
156
- break;
157
- }
158
-
159
- case 'Home':
160
- {
161
- newDate = focusDate;
162
-
163
- if (disableWeekends) {
164
- newDate = (0, _useDatePicker.normalizeDate)((0, _dateFns.isMonday)(focusDate) ? focusDate : (0, _dateFns.previousMonday)(focusDate));
165
- } else {
166
- newDate = (0, _useDatePicker.normalizeDate)((0, _dateFns.isSunday)(focusDate) ? focusDate : (0, _dateFns.previousSunday)(focusDate));
167
- }
168
-
169
- if (minDate && (0, _dateFns.isBefore)(newDate, minDate)) newDate = minDate;
170
- setFocusDate(newDate);
171
- onDayFocus(newDate);
172
- break;
173
- }
174
-
175
- case 'End':
176
- {
177
- newDate = focusDate;
178
-
179
- if (disableWeekends) {
180
- newDate = (0, _useDatePicker.normalizeDate)((0, _dateFns.isFriday)(focusDate) ? focusDate : (0, _dateFns.nextFriday)(focusDate));
181
- } else {
182
- newDate = (0, _useDatePicker.normalizeDate)((0, _dateFns.isSaturday)(focusDate) ? focusDate : (0, _dateFns.nextSaturday)(focusDate));
183
- }
184
-
185
- if (maxDate && (0, _dateFns.isAfter)(newDate, maxDate)) newDate = maxDate;
186
- setFocusDate(newDate);
187
- onDayFocus(newDate);
188
- break;
189
- }
190
-
191
- case 'PageUp':
192
- {
193
- newDate = (0, _useDatePicker.normalizeDate)(event.shiftKey ? (0, _dateFns.subYears)(focusDate, 1) : (0, _dateFns.subMonths)(focusDate, 1));
194
- if (minDate && (0, _dateFns.isBefore)(newDate, minDate)) newDate = minDate;
195
- setFocusDate(newDate);
196
- onDayFocus(newDate);
197
- break;
198
- }
199
-
200
- case 'PageDown':
201
- {
202
- newDate = (0, _useDatePicker.normalizeDate)(event.shiftKey ? (0, _dateFns.addYears)(focusDate, 1) : (0, _dateFns.addMonths)(focusDate, 1));
203
- if (maxDate && (0, _dateFns.isAfter)(newDate, maxDate)) newDate = maxDate;
204
- setFocusDate(newDate);
205
- onDayFocus(newDate);
206
- break;
207
- }
208
-
209
- default:
210
- {
211
- break;
212
- }
213
- }
214
-
215
- return (_datePanelRef$current = (_datePanelRef$current2 = datePanelRef.current) === null || _datePanelRef$current2 === void 0 ? void 0 : _datePanelRef$current2.querySelector(`[data-date="${(0, _dateFns.format)(newDate, 'MM/dd/yyyy')}"]`)) !== null && _datePanelRef$current !== void 0 ? _datePanelRef$current : undefined;
216
- }, [configuration, onDayFocus, setFocusDate]);
217
- (0, _useFocusZone.useFocusZone)({
218
- containerRef: datePanelRef,
219
- bindKeys: _focusZone.FocusKeys.ArrowAll | _focusZone.FocusKeys.HomeAndEnd | _focusZone.FocusKeys.PageUpDown,
220
- focusInStrategy: 'previous',
221
- getNextFocusable
222
- }, [getNextFocusable]);
223
- (0, _useFocusZone.useFocusZone)({
224
- containerRef: footerRef,
225
- bindKeys: _focusZone.FocusKeys.Tab,
226
- focusInStrategy: 'closest'
227
- });
228
- const previousDisabled = (0, _react.useMemo)(() => {
229
- const {
230
- minDate
231
- } = configuration;
232
- if (!minDate) return false;
233
- const previous = (0, _dateFns.subMonths)(currentViewingDate, 1);
234
-
235
- if (minDate.getFullYear() >= previous.getFullYear() && minDate.getMonth() > previous.getMonth()) {
236
- return true;
237
- }
238
-
239
- return false;
240
- }, [configuration, currentViewingDate]);
241
- const nextDisabled = (0, _react.useMemo)(() => {
242
- const {
243
- maxDate,
244
- view
245
- } = configuration;
246
- if (!maxDate) return false;
247
- const next = (0, _dateFns.addMonths)(currentViewingDate, view === '2-month' ? 2 : 1);
248
-
249
- if (maxDate.getFullYear() <= next.getFullYear() && maxDate.getMonth() < next.getMonth()) {
250
- return true;
251
- }
252
-
253
- return false;
254
- }, [configuration, currentViewingDate]);
255
- const currentMonth = (0, _react.useMemo)(() => currentViewingDate.getMonth(), [currentViewingDate]);
256
- const currentYear = (0, _react.useMemo)(() => currentViewingDate.getFullYear(), [currentViewingDate]);
257
- const headerSelectionHandler = (0, _react.useCallback)(e => {
258
- const selection = parseInt(e.currentTarget.value, 10);
259
-
260
- if (e.currentTarget.id === 'picker-header-year') {
261
- goToMonth(new Date(selection, currentMonth));
262
- } else {
263
- goToMonth(new Date(currentYear, selection));
264
- }
265
- }, [currentMonth, currentYear, goToMonth]);
266
- const getMonthPicker = (0, _react.useMemo)(() => {
267
- const months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
268
- const monthElements = [];
269
-
270
- for (let i = 0; i < months.length; i++) {
271
- monthElements.push( /*#__PURE__*/_react.default.createElement(Option, {
272
- key: i,
273
- value: i
274
- }, months[i]));
275
- }
276
-
277
- return /*#__PURE__*/_react.default.createElement(Select, {
278
- id: "picker-header-month",
279
- value: currentMonth,
280
- sx: {
281
- mr: '6px'
282
- },
283
- onChange: headerSelectionHandler
284
- }, monthElements);
285
- }, [currentMonth, headerSelectionHandler]);
286
- const getYearPicker = (0, _react.useMemo)(() => {
287
- const years = [];
288
- const minYear = currentYear - 200;
289
- const maxYear = currentYear + 200;
290
-
291
- for (let i = minYear; i <= maxYear; i++) {
292
- years.push( /*#__PURE__*/_react.default.createElement(Option, {
293
- key: i,
294
- value: i
295
- }, i));
296
- }
297
-
298
- return /*#__PURE__*/_react.default.createElement(Select, {
299
- id: "picker-header-year",
300
- value: currentYear,
301
- onChange: headerSelectionHandler
302
- }, years);
303
- }, [currentYear, headerSelectionHandler]);
304
- return /*#__PURE__*/_react.default.createElement(DatePickerPanelContainer, {
305
- ref: panelRef
306
- }, /*#__PURE__*/_react.default.createElement(DatePickerTopNav, {
307
- ref: headerRef
308
- }, configuration.compressedHeader && /*#__PURE__*/_react.default.createElement(_Box.default, {
309
- sx: {
310
- flex: 1
311
- }
312
- }, getMonthPicker, getYearPicker), /*#__PURE__*/_react.default.createElement(ArrowButton, {
313
- variant: "small",
314
- sx: {
315
- mr: 1
316
- },
317
- onClick: previousMonth,
318
- disabled: previousDisabled,
319
- "aria-label": "Previous Month",
320
- "aria-live": "polite"
321
- }, /*#__PURE__*/_react.default.createElement(_StyledOcticon.default, {
322
- icon: _octiconsReact.ChevronLeftIcon,
323
- color: "fg.muted"
324
- })), /*#__PURE__*/_react.default.createElement(ArrowButton, {
325
- variant: "small",
326
- onClick: nextMonth,
327
- disabled: nextDisabled,
328
- "aria-label": "Next Month",
329
- "aria-live": "polite"
330
- }, /*#__PURE__*/_react.default.createElement(_StyledOcticon.default, {
331
- icon: _octiconsReact.ChevronRightIcon,
332
- color: "fg.muted"
333
- }))), /*#__PURE__*/_react.default.createElement(DatePickerPanelMonths, {
334
- ref: datePanelRef
335
- }, /*#__PURE__*/_react.default.createElement(_Month.Month, {
336
- date: currentViewingDate
337
- }), viewMode === '2-month' && /*#__PURE__*/_react.default.createElement(_Month.Month, {
338
- date: (0, _dateFns.addMonths)(currentViewingDate, 1)
339
- })), /*#__PURE__*/_react.default.createElement(DatePickerPanelFooter, {
340
- ref: footerRef
341
- }, /*#__PURE__*/_react.default.createElement(_Box.default, null, /*#__PURE__*/_react.default.createElement(_Button.default, {
342
- variant: "small",
343
- sx: {
344
- mr: 1
345
- },
346
- onClick: () => revertValue(),
347
- "aria-label": "Reset Selection",
348
- "aria-live": "polite"
349
- }, "Reset"), /*#__PURE__*/_react.default.createElement(_Button.default, {
350
- variant: "small",
351
- onClick: () => goToMonth(new Date()),
352
- "aria-label": "Go to Today",
353
- "aria-live": "polite"
354
- }, "Today")), configuration.confirmation && /*#__PURE__*/_react.default.createElement(_Button.ButtonPrimary, {
355
- variant: "small",
356
- onClick: () => saveValue(),
357
- "aria-label": "Apply Selection",
358
- "aria-live": "polite"
359
- }, "Apply")));
360
- };
361
-
362
- exports.DatePickerPanel = DatePickerPanel;
363
- DatePickerPanel.displayName = "DatePickerPanel";
@@ -1,15 +0,0 @@
1
- import React from 'react';
2
- import { FontSizeProps } from 'styled-system';
3
- import { SystemCommonProps, SystemLayoutProps } from '../constants';
4
- import { SxProp } from '../sx';
5
- import { DaySelection } from './useDatePicker';
6
- export declare type DayProps = {
7
- blocked?: boolean;
8
- disabled?: boolean;
9
- focused?: boolean;
10
- onAction?: (date: Date, event?: React.MouseEvent<HTMLDivElement> | React.KeyboardEvent<HTMLDivElement>) => void;
11
- selected?: DaySelection;
12
- date: Date;
13
- } & FontSizeProps & SystemCommonProps & SxProp & SystemLayoutProps;
14
- export declare const Day: React.FC<DayProps>;
15
- export declare const BlankDay: import("styled-components").StyledComponent<"div", any, import("styled-system").SpaceProps<Required<import("styled-system").Theme<import("styled-system").TLengthStyledSystem>>, string | number | symbol> & import("styled-system").ColorProps<Required<import("styled-system").Theme<import("styled-system").TLengthStyledSystem>>, string | number | symbol> & import("styled-system").TypographyProps<Required<import("styled-system").Theme<import("styled-system").TLengthStyledSystem>>> & import("styled-system").LayoutProps<Required<import("styled-system").Theme<import("styled-system").TLengthStyledSystem>>> & import("styled-system").FlexboxProps<Required<import("styled-system").Theme<import("styled-system").TLengthStyledSystem>>> & import("styled-system").GridProps<Required<import("styled-system").Theme<import("styled-system").TLengthStyledSystem>>> & import("styled-system").BackgroundProps<Required<import("styled-system").Theme<import("styled-system").TLengthStyledSystem>>, import("csstype").Property.Background<import("styled-system").TLengthStyledSystem>> & import("styled-system").BorderProps<Required<import("styled-system").Theme<import("styled-system").TLengthStyledSystem>>, import("csstype").Property.Border<import("styled-system").TLengthStyledSystem>> & import("styled-system").PositionProps<Required<import("styled-system").Theme<import("styled-system").TLengthStyledSystem>>> & import("styled-system").ShadowProps<Required<import("styled-system").Theme<import("styled-system").TLengthStyledSystem>>> & SxProp, never>;