@atlaskit/calendar 13.1.1 → 13.1.3

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 (45) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/cjs/calendar.js +6 -6
  3. package/dist/cjs/internal/components/week-day-grid.js +6 -3
  4. package/dist/cjs/internal/components/week-days.js +10 -5
  5. package/dist/cjs/internal/components/week-header.js +7 -3
  6. package/dist/cjs/internal/styles/date.js +1 -0
  7. package/dist/cjs/version.json +1 -1
  8. package/dist/es2019/calendar.js +6 -6
  9. package/dist/es2019/internal/components/week-day-grid.js +5 -3
  10. package/dist/es2019/internal/components/week-days.js +9 -4
  11. package/dist/es2019/internal/components/week-header.js +7 -3
  12. package/dist/es2019/internal/styles/date.js +1 -0
  13. package/dist/es2019/version.json +1 -1
  14. package/dist/esm/calendar.js +6 -6
  15. package/dist/esm/internal/components/week-day-grid.js +5 -3
  16. package/dist/esm/internal/components/week-days.js +10 -5
  17. package/dist/esm/internal/components/week-header.js +7 -3
  18. package/dist/esm/internal/styles/date.js +1 -0
  19. package/dist/esm/version.json +1 -1
  20. package/dist/types/internal/components/week-header.d.ts +1 -0
  21. package/dist/types-ts4.5/calendar.d.ts +13 -0
  22. package/dist/types-ts4.5/entry-points/types.d.ts +1 -0
  23. package/dist/types-ts4.5/index.d.ts +2 -0
  24. package/dist/types-ts4.5/internal/components/date.d.ts +19 -0
  25. package/dist/types-ts4.5/internal/components/header.d.ts +14 -0
  26. package/dist/types-ts4.5/internal/components/week-day-grid.d.ts +15 -0
  27. package/dist/types-ts4.5/internal/components/week-days.d.ts +11 -0
  28. package/dist/types-ts4.5/internal/components/week-header.d.ts +9 -0
  29. package/dist/types-ts4.5/internal/constants.d.ts +5 -0
  30. package/dist/types-ts4.5/internal/hooks/use-calendar-ref.d.ts +5 -0
  31. package/dist/types-ts4.5/internal/hooks/use-controlled-date-state.d.ts +37 -0
  32. package/dist/types-ts4.5/internal/hooks/use-focusing.d.ts +8 -0
  33. package/dist/types-ts4.5/internal/hooks/use-get-weeks.d.ts +15 -0
  34. package/dist/types-ts4.5/internal/hooks/use-handle-date-change.d.ts +21 -0
  35. package/dist/types-ts4.5/internal/hooks/use-handle-date-select.d.ts +30 -0
  36. package/dist/types-ts4.5/internal/hooks/use-locale.d.ts +8 -0
  37. package/dist/types-ts4.5/internal/hooks/use-unique-id.d.ts +1 -0
  38. package/dist/types-ts4.5/internal/styles/date.d.ts +3 -0
  39. package/dist/types-ts4.5/internal/types.d.ts +26 -0
  40. package/dist/types-ts4.5/internal/utils/date-to-string.d.ts +6 -0
  41. package/dist/types-ts4.5/internal/utils/get-base-calendar.d.ts +10 -0
  42. package/dist/types-ts4.5/internal/utils/get-days-in-month.d.ts +1 -0
  43. package/dist/types-ts4.5/internal/utils/pad.d.ts +1 -0
  44. package/dist/types-ts4.5/types.d.ts +159 -0
  45. package/package.json +5 -5
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @atlaskit/calendar
2
2
 
3
+ ## 13.1.3
4
+
5
+ ### Patch Changes
6
+
7
+ - [`74fec133d99`](https://bitbucket.org/atlassian/atlassian-frontend/commits/74fec133d99) - [ux] Add proper grid roles to calendar.
8
+
9
+ ## 13.1.2
10
+
11
+ ### Patch Changes
12
+
13
+ - [`9d00501a414`](https://bitbucket.org/atlassian/atlassian-frontend/commits/9d00501a414) - Ensure legacy types are published for TS 4.5-4.8
14
+
3
15
  ## 13.1.1
4
16
 
5
17
  ### Patch Changes
@@ -33,7 +33,7 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
33
33
  var analyticsAttributes = {
34
34
  componentName: 'calendar',
35
35
  packageName: "@atlaskit/calendar",
36
- packageVersion: "13.1.1"
36
+ packageVersion: "13.1.3"
37
37
  };
38
38
  var CalendarWithMode = /*#__PURE__*/(0, _react.forwardRef)(function Calendar(_ref, ref) {
39
39
  var day = _ref.day,
@@ -177,7 +177,6 @@ var CalendarWithMode = /*#__PURE__*/(0, _react.forwardRef)(function Calendar(_re
177
177
  onBlur: handleContainerBlur,
178
178
  onFocus: handleContainerFocus,
179
179
  onKeyDown: handleContainerKeyDown,
180
- role: "presentation",
181
180
  testId: testId && "".concat(testId, "--container"),
182
181
  ref: ref
183
182
  }, (0, _react2.jsx)(_visuallyHidden.default, null, (0, _react2.jsx)("span", {
@@ -192,8 +191,8 @@ var CalendarWithMode = /*#__PURE__*/(0, _react.forwardRef)(function Calendar(_re
192
191
  },
193
192
  "aria-describedby": announceId,
194
193
  "aria-label": "calendar",
195
- role: "grid",
196
- tabIndex: tabIndex
194
+ tabIndex: tabIndex,
195
+ testId: testId && "".concat(testId, "--calendar")
197
196
  }, (0, _react2.jsx)(_stack.default, {
198
197
  space: "space.150"
199
198
  }, (0, _react2.jsx)(_header.default
@@ -210,10 +209,11 @@ var CalendarWithMode = /*#__PURE__*/(0, _react.forwardRef)(function Calendar(_re
210
209
  testId: testId
211
210
  }), (0, _react2.jsx)(_box.default, {
212
211
  display: "block",
213
- role: "presentation"
212
+ role: "grid"
214
213
  }, (0, _react2.jsx)(_weekHeader.default, {
215
214
  daysShort: daysShort,
216
- mode: mode
215
+ mode: mode,
216
+ testId: testId
217
217
  }), (0, _react2.jsx)(_weekDays.default, {
218
218
  weeks: weeks,
219
219
  handleClickDay: handleClickDay,
@@ -1,10 +1,12 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
3
4
  Object.defineProperty(exports, "__esModule", {
4
5
  value: true
5
6
  });
6
7
  exports.default = void 0;
7
8
  var _react = require("@emotion/react");
9
+ var _box = _interopRequireDefault(require("@atlaskit/ds-explorations/box"));
8
10
  /** @jsx jsx */
9
11
 
10
12
  var gridStyles = (0, _react.css)({
@@ -20,9 +22,10 @@ var gridStyles = (0, _react.css)({
20
22
  var WeekDayGrid = function WeekDayGrid(_ref) {
21
23
  var testId = _ref.testId,
22
24
  children = _ref.children;
23
- return (0, _react.jsx)("div", {
24
- "data-testid": testId,
25
- css: gridStyles
25
+ return (0, _react.jsx)(_box.default, {
26
+ testId: testId,
27
+ css: gridStyles,
28
+ role: "row"
26
29
  }, children);
27
30
  };
28
31
  var _default = WeekDayGrid;
@@ -7,6 +7,7 @@ Object.defineProperty(exports, "__esModule", {
7
7
  exports.default = void 0;
8
8
  var _react = require("react");
9
9
  var _react2 = require("@emotion/react");
10
+ var _box = _interopRequireDefault(require("@atlaskit/ds-explorations/box"));
10
11
  var _date = _interopRequireDefault(require("./date"));
11
12
  var _weekDayGrid = _interopRequireDefault(require("./week-day-grid"));
12
13
  /** @jsx jsx */
@@ -16,11 +17,15 @@ var WeekDays = /*#__PURE__*/(0, _react.memo)(function WeekDays(_ref) {
16
17
  handleClickDay = _ref.handleClickDay,
17
18
  mode = _ref.mode,
18
19
  testId = _ref.testId;
19
- return (0, _react2.jsx)(_weekDayGrid.default, {
20
- role: "grid",
20
+ return (0, _react2.jsx)(_box.default, {
21
+ display: "block",
22
+ role: "rowgroup",
21
23
  testId: testId && "".concat(testId, "--month")
22
- }, weeks.map(function (week) {
23
- return week.values.map(function (weekDay) {
24
+ }, weeks.map(function (week, i) {
25
+ return (0, _react2.jsx)(_weekDayGrid.default, {
26
+ key: i,
27
+ testId: testId && "".concat(testId, "--week")
28
+ }, week.values.map(function (weekDay) {
24
29
  return (0, _react2.jsx)(_date.default, {
25
30
  key: "".concat(week.id, "-").concat(weekDay.id),
26
31
  isDisabled: weekDay.isDisabled,
@@ -35,7 +40,7 @@ var WeekDays = /*#__PURE__*/(0, _react.memo)(function WeekDays(_ref) {
35
40
  mode: mode,
36
41
  testId: testId
37
42
  }, weekDay.day);
38
- });
43
+ }));
39
44
  }));
40
45
  });
41
46
  WeekDays.displayName = 'WeekDays';
@@ -14,8 +14,11 @@ var _weekDayGrid = _interopRequireDefault(require("./week-day-grid"));
14
14
  /** @jsx jsx */
15
15
 
16
16
  var WeekHeader = /*#__PURE__*/(0, _react.memo)(function WeekHeader(_ref) {
17
- var daysShort = _ref.daysShort;
18
- return (0, _react2.jsx)(_weekDayGrid.default, null, daysShort.map(function (shortDay) {
17
+ var daysShort = _ref.daysShort,
18
+ testId = _ref.testId;
19
+ return (0, _react2.jsx)(_weekDayGrid.default, {
20
+ testId: testId && "".concat(testId, "--column-headers")
21
+ }, daysShort.map(function (shortDay) {
19
22
  return (0, _react2.jsx)(_box.default, {
20
23
  padding: "space.100",
21
24
  display: "block",
@@ -29,7 +32,8 @@ var WeekHeader = /*#__PURE__*/(0, _react.memo)(function WeekHeader(_ref) {
29
32
  color: "var(--ds-text-subtle, ".concat(_colors.N200, ")") // Apply correct fallback to shortDay text
30
33
  },
31
34
 
32
- key: shortDay
35
+ key: shortDay,
36
+ role: "columnheader"
33
37
  }, (0, _react2.jsx)(_text.default, {
34
38
  fontWeight: "bold",
35
39
  fontSize: "size.050",
@@ -42,6 +42,7 @@ var dateCellStyles = function dateCellStyles() {
42
42
  borderRadius: 3,
43
43
  color: textColor[mode],
44
44
  cursor: 'pointer',
45
+ flexGrow: 1,
45
46
  fontSize: "var(--ds-font-size-100, 14px)",
46
47
  textAlign: 'center',
47
48
  '&[data-sibling]': {
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/calendar",
3
- "version": "13.1.1",
3
+ "version": "13.1.3",
4
4
  "sideEffects": false
5
5
  }
@@ -23,7 +23,7 @@ import useUniqueId from './internal/hooks/use-unique-id';
23
23
  const analyticsAttributes = {
24
24
  componentName: 'calendar',
25
25
  packageName: "@atlaskit/calendar",
26
- packageVersion: "13.1.1"
26
+ packageVersion: "13.1.3"
27
27
  };
28
28
  const CalendarWithMode = /*#__PURE__*/forwardRef(function Calendar({
29
29
  day,
@@ -149,7 +149,6 @@ const CalendarWithMode = /*#__PURE__*/forwardRef(function Calendar({
149
149
  onBlur: handleContainerBlur,
150
150
  onFocus: handleContainerFocus,
151
151
  onKeyDown: handleContainerKeyDown,
152
- role: "presentation",
153
152
  testId: testId && `${testId}--container`,
154
153
  ref: ref
155
154
  }, jsx(VisuallyHidden, null, jsx("span", {
@@ -164,8 +163,8 @@ const CalendarWithMode = /*#__PURE__*/forwardRef(function Calendar({
164
163
  },
165
164
  "aria-describedby": announceId,
166
165
  "aria-label": "calendar",
167
- role: "grid",
168
- tabIndex: tabIndex
166
+ tabIndex: tabIndex,
167
+ testId: testId && `${testId}--calendar`
169
168
  }, jsx(Stack, {
170
169
  space: "space.150"
171
170
  }, jsx(Header
@@ -182,10 +181,11 @@ const CalendarWithMode = /*#__PURE__*/forwardRef(function Calendar({
182
181
  testId: testId
183
182
  }), jsx(Box, {
184
183
  display: "block",
185
- role: "presentation"
184
+ role: "grid"
186
185
  }, jsx(WeekHeaderComponent, {
187
186
  daysShort: daysShort,
188
- mode: mode
187
+ mode: mode,
188
+ testId: testId
189
189
  }), jsx(WeekDaysComponent, {
190
190
  weeks: weeks,
191
191
  handleClickDay: handleClickDay,
@@ -1,6 +1,7 @@
1
1
  /** @jsx jsx */
2
2
 
3
3
  import { css, jsx } from '@emotion/react';
4
+ import Box from '@atlaskit/ds-explorations/box';
4
5
  const gridStyles = css({
5
6
  display: 'grid',
6
7
  gridTemplateColumns: 'repeat(7, minmax(max-content, 1fr))'
@@ -14,8 +15,9 @@ const gridStyles = css({
14
15
  const WeekDayGrid = ({
15
16
  testId,
16
17
  children
17
- }) => jsx("div", {
18
- "data-testid": testId,
19
- css: gridStyles
18
+ }) => jsx(Box, {
19
+ testId: testId,
20
+ css: gridStyles,
21
+ role: "row"
20
22
  }, children);
21
23
  export default WeekDayGrid;
@@ -1,6 +1,7 @@
1
1
  /** @jsx jsx */
2
2
  import { memo } from 'react';
3
3
  import { jsx } from '@emotion/react';
4
+ import Box from '@atlaskit/ds-explorations/box';
4
5
  import DateComponent from './date';
5
6
  import WeekdayGrid from './week-day-grid';
6
7
  const WeekDays = /*#__PURE__*/memo(function WeekDays({
@@ -9,10 +10,14 @@ const WeekDays = /*#__PURE__*/memo(function WeekDays({
9
10
  mode,
10
11
  testId
11
12
  }) {
12
- return jsx(WeekdayGrid, {
13
- role: "grid",
13
+ return jsx(Box, {
14
+ display: "block",
15
+ role: "rowgroup",
14
16
  testId: testId && `${testId}--month`
15
- }, weeks.map(week => week.values.map(weekDay => jsx(DateComponent, {
17
+ }, weeks.map((week, i) => jsx(WeekdayGrid, {
18
+ key: i,
19
+ testId: testId && `${testId}--week`
20
+ }, week.values.map(weekDay => jsx(DateComponent, {
16
21
  key: `${week.id}-${weekDay.id}`,
17
22
  isDisabled: weekDay.isDisabled,
18
23
  isFocused: weekDay.isFocused,
@@ -25,7 +30,7 @@ const WeekDays = /*#__PURE__*/memo(function WeekDays({
25
30
  year: weekDay.year,
26
31
  mode: mode,
27
32
  testId: testId
28
- }, weekDay.day))));
33
+ }, weekDay.day)))));
29
34
  });
30
35
  WeekDays.displayName = 'WeekDays';
31
36
 
@@ -6,9 +6,12 @@ import Text from '@atlaskit/ds-explorations/text';
6
6
  import { N200 } from '@atlaskit/theme/colors';
7
7
  import WeekDayGrid from './week-day-grid';
8
8
  const WeekHeader = /*#__PURE__*/memo(function WeekHeader({
9
- daysShort
9
+ daysShort,
10
+ testId
10
11
  }) {
11
- return jsx(WeekDayGrid, null, daysShort.map(shortDay => jsx(Box, {
12
+ return jsx(WeekDayGrid, {
13
+ testId: testId && `${testId}--column-headers`
14
+ }, daysShort.map(shortDay => jsx(Box, {
12
15
  padding: "space.100",
13
16
  display: "block",
14
17
  UNSAFE_style: {
@@ -21,7 +24,8 @@ const WeekHeader = /*#__PURE__*/memo(function WeekHeader({
21
24
  color: `var(--ds-text-subtle, ${N200})` // Apply correct fallback to shortDay text
22
25
  },
23
26
 
24
- key: shortDay
27
+ key: shortDay,
28
+ role: "columnheader"
25
29
  }, jsx(Text, {
26
30
  fontWeight: "bold",
27
31
  fontSize: "size.050",
@@ -34,6 +34,7 @@ export const dateCellStyles = (mode = 'light') => ({
34
34
  borderRadius: 3,
35
35
  color: textColor[mode],
36
36
  cursor: 'pointer',
37
+ flexGrow: 1,
37
38
  fontSize: "var(--ds-font-size-100, 14px)",
38
39
  textAlign: 'center',
39
40
  '&[data-sibling]': {
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/calendar",
3
- "version": "13.1.1",
3
+ "version": "13.1.3",
4
4
  "sideEffects": false
5
5
  }
@@ -27,7 +27,7 @@ import useUniqueId from './internal/hooks/use-unique-id';
27
27
  var analyticsAttributes = {
28
28
  componentName: 'calendar',
29
29
  packageName: "@atlaskit/calendar",
30
- packageVersion: "13.1.1"
30
+ packageVersion: "13.1.3"
31
31
  };
32
32
  var CalendarWithMode = /*#__PURE__*/forwardRef(function Calendar(_ref, ref) {
33
33
  var day = _ref.day,
@@ -171,7 +171,6 @@ var CalendarWithMode = /*#__PURE__*/forwardRef(function Calendar(_ref, ref) {
171
171
  onBlur: handleContainerBlur,
172
172
  onFocus: handleContainerFocus,
173
173
  onKeyDown: handleContainerKeyDown,
174
- role: "presentation",
175
174
  testId: testId && "".concat(testId, "--container"),
176
175
  ref: ref
177
176
  }, jsx(VisuallyHidden, null, jsx("span", {
@@ -186,8 +185,8 @@ var CalendarWithMode = /*#__PURE__*/forwardRef(function Calendar(_ref, ref) {
186
185
  },
187
186
  "aria-describedby": announceId,
188
187
  "aria-label": "calendar",
189
- role: "grid",
190
- tabIndex: tabIndex
188
+ tabIndex: tabIndex,
189
+ testId: testId && "".concat(testId, "--calendar")
191
190
  }, jsx(Stack, {
192
191
  space: "space.150"
193
192
  }, jsx(Header
@@ -204,10 +203,11 @@ var CalendarWithMode = /*#__PURE__*/forwardRef(function Calendar(_ref, ref) {
204
203
  testId: testId
205
204
  }), jsx(Box, {
206
205
  display: "block",
207
- role: "presentation"
206
+ role: "grid"
208
207
  }, jsx(WeekHeaderComponent, {
209
208
  daysShort: daysShort,
210
- mode: mode
209
+ mode: mode,
210
+ testId: testId
211
211
  }), jsx(WeekDaysComponent, {
212
212
  weeks: weeks,
213
213
  handleClickDay: handleClickDay,
@@ -1,6 +1,7 @@
1
1
  /** @jsx jsx */
2
2
 
3
3
  import { css, jsx } from '@emotion/react';
4
+ import Box from '@atlaskit/ds-explorations/box';
4
5
  var gridStyles = css({
5
6
  display: 'grid',
6
7
  gridTemplateColumns: 'repeat(7, minmax(max-content, 1fr))'
@@ -14,9 +15,10 @@ var gridStyles = css({
14
15
  var WeekDayGrid = function WeekDayGrid(_ref) {
15
16
  var testId = _ref.testId,
16
17
  children = _ref.children;
17
- return jsx("div", {
18
- "data-testid": testId,
19
- css: gridStyles
18
+ return jsx(Box, {
19
+ testId: testId,
20
+ css: gridStyles,
21
+ role: "row"
20
22
  }, children);
21
23
  };
22
24
  export default WeekDayGrid;
@@ -1,6 +1,7 @@
1
1
  /** @jsx jsx */
2
2
  import { memo } from 'react';
3
3
  import { jsx } from '@emotion/react';
4
+ import Box from '@atlaskit/ds-explorations/box';
4
5
  import DateComponent from './date';
5
6
  import WeekdayGrid from './week-day-grid';
6
7
  var WeekDays = /*#__PURE__*/memo(function WeekDays(_ref) {
@@ -8,11 +9,15 @@ var WeekDays = /*#__PURE__*/memo(function WeekDays(_ref) {
8
9
  handleClickDay = _ref.handleClickDay,
9
10
  mode = _ref.mode,
10
11
  testId = _ref.testId;
11
- return jsx(WeekdayGrid, {
12
- role: "grid",
12
+ return jsx(Box, {
13
+ display: "block",
14
+ role: "rowgroup",
13
15
  testId: testId && "".concat(testId, "--month")
14
- }, weeks.map(function (week) {
15
- return week.values.map(function (weekDay) {
16
+ }, weeks.map(function (week, i) {
17
+ return jsx(WeekdayGrid, {
18
+ key: i,
19
+ testId: testId && "".concat(testId, "--week")
20
+ }, week.values.map(function (weekDay) {
16
21
  return jsx(DateComponent, {
17
22
  key: "".concat(week.id, "-").concat(weekDay.id),
18
23
  isDisabled: weekDay.isDisabled,
@@ -27,7 +32,7 @@ var WeekDays = /*#__PURE__*/memo(function WeekDays(_ref) {
27
32
  mode: mode,
28
33
  testId: testId
29
34
  }, weekDay.day);
30
- });
35
+ }));
31
36
  }));
32
37
  });
33
38
  WeekDays.displayName = 'WeekDays';
@@ -6,8 +6,11 @@ import Text from '@atlaskit/ds-explorations/text';
6
6
  import { N200 } from '@atlaskit/theme/colors';
7
7
  import WeekDayGrid from './week-day-grid';
8
8
  var WeekHeader = /*#__PURE__*/memo(function WeekHeader(_ref) {
9
- var daysShort = _ref.daysShort;
10
- return jsx(WeekDayGrid, null, daysShort.map(function (shortDay) {
9
+ var daysShort = _ref.daysShort,
10
+ testId = _ref.testId;
11
+ return jsx(WeekDayGrid, {
12
+ testId: testId && "".concat(testId, "--column-headers")
13
+ }, daysShort.map(function (shortDay) {
11
14
  return jsx(Box, {
12
15
  padding: "space.100",
13
16
  display: "block",
@@ -21,7 +24,8 @@ var WeekHeader = /*#__PURE__*/memo(function WeekHeader(_ref) {
21
24
  color: "var(--ds-text-subtle, ".concat(N200, ")") // Apply correct fallback to shortDay text
22
25
  },
23
26
 
24
- key: shortDay
27
+ key: shortDay,
28
+ role: "columnheader"
25
29
  }, jsx(Text, {
26
30
  fontWeight: "bold",
27
31
  fontSize: "size.050",
@@ -36,6 +36,7 @@ export var dateCellStyles = function dateCellStyles() {
36
36
  borderRadius: 3,
37
37
  color: textColor[mode],
38
38
  cursor: 'pointer',
39
+ flexGrow: 1,
39
40
  fontSize: "var(--ds-font-size-100, 14px)",
40
41
  textAlign: 'center',
41
42
  '&[data-sibling]': {
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/calendar",
3
- "version": "13.1.1",
3
+ "version": "13.1.3",
4
4
  "sideEffects": false
5
5
  }
@@ -3,6 +3,7 @@ import type { ThemeModes } from '@atlaskit/theme/types';
3
3
  interface WeekHeaderProps {
4
4
  daysShort: string[];
5
5
  mode?: ThemeModes;
6
+ testId?: string;
6
7
  }
7
8
  declare const WeekHeader: import("react").NamedExoticComponent<WeekHeaderProps>;
8
9
  export default WeekHeader;
@@ -0,0 +1,13 @@
1
+ /// <reference types="react" />
2
+ import type { CalendarProps } from './types';
3
+ /**
4
+ * __Calendar__
5
+ *
6
+ * A calendar is used for date selection.
7
+ *
8
+ * - [Examples](https://atlassian.design/components/calendar/examples)
9
+ * - [Code](https://atlassian.design/components/calendar/code)
10
+ * - [Usage](https://atlassian.design/components/calendar/usage)
11
+ */
12
+ declare const Calendar: import("react").MemoExoticComponent<import("react").ForwardRefExoticComponent<Pick<CalendarProps, "year" | "previousMonthLabel" | "nextMonthLabel" | "mode" | "testId" | "className" | "style" | "tabIndex" | "onFocus" | "onBlur" | "onChange" | "onSelect" | "disabled" | "selected" | "analyticsContext" | "day" | "defaultDay" | "defaultMonth" | "defaultPreviouslySelected" | "defaultSelected" | "defaultYear" | "disabledDateFilter" | "maxDate" | "minDate" | "month" | "previouslySelected" | "today" | "locale" | "weekStartDay" | "calendarRef" | "createAnalyticsEvent"> & import("react").RefAttributes<HTMLDivElement>>>;
13
+ export default Calendar;
@@ -0,0 +1 @@
1
+ export type { CalendarProps, ChangeEvent, SelectEvent, CalendarRef, WeekDay, } from '../types';
@@ -0,0 +1,2 @@
1
+ export { default } from './calendar';
2
+ export type { CalendarProps, ChangeEvent, SelectEvent, CalendarRef, } from './types';
@@ -0,0 +1,19 @@
1
+ /// <reference types="react" />
2
+ import { ThemeModes } from '@atlaskit/theme/types';
3
+ import type { DateObj } from '../types';
4
+ interface DateProps {
5
+ children: number;
6
+ isDisabled?: boolean;
7
+ isFocused?: boolean;
8
+ isToday?: boolean;
9
+ month: number;
10
+ onClick?: ({ day, month, year }: DateObj) => void;
11
+ isPreviouslySelected?: boolean;
12
+ isSelected?: boolean;
13
+ isSibling?: boolean;
14
+ year: number;
15
+ mode?: ThemeModes;
16
+ testId?: string;
17
+ }
18
+ declare const Date: import("react").MemoExoticComponent<import("react").ForwardRefExoticComponent<DateProps & import("react").RefAttributes<HTMLButtonElement>>>;
19
+ export default Date;
@@ -0,0 +1,14 @@
1
+ /// <reference types="react" />
2
+ import { ThemeModes } from '@atlaskit/theme/types';
3
+ interface HeaderProps {
4
+ monthLongTitle: string;
5
+ year: number;
6
+ previousMonthLabel?: string;
7
+ nextMonthLabel?: string;
8
+ handleClickNext?: () => void;
9
+ handleClickPrev?: () => void;
10
+ mode?: ThemeModes;
11
+ testId?: string;
12
+ }
13
+ declare const Header: import("react").NamedExoticComponent<HeaderProps>;
14
+ export default Header;
@@ -0,0 +1,15 @@
1
+ /** @jsx jsx */
2
+ import { ReactNode } from 'react';
3
+ import { jsx } from '@emotion/react';
4
+ interface WeekDayGridProps extends React.HTMLAttributes<HTMLElement> {
5
+ testId?: string;
6
+ children: ReactNode;
7
+ }
8
+ /**
9
+ * __Week day grid__
10
+ *
11
+ * A week day grid aligns elements in a 7 wide grid layout.
12
+ *
13
+ */
14
+ declare const WeekDayGrid: ({ testId, children }: WeekDayGridProps) => jsx.JSX.Element;
15
+ export default WeekDayGrid;
@@ -0,0 +1,11 @@
1
+ /// <reference types="react" />
2
+ import type { ThemeModes } from '@atlaskit/theme/types';
3
+ import { DateObj, Week } from '../types';
4
+ interface WeekDaysProps {
5
+ weeks: Week[];
6
+ handleClickDay: (date: DateObj) => void;
7
+ mode?: ThemeModes;
8
+ testId?: string;
9
+ }
10
+ declare const WeekDays: import("react").NamedExoticComponent<WeekDaysProps>;
11
+ export default WeekDays;
@@ -0,0 +1,9 @@
1
+ /// <reference types="react" />
2
+ import type { ThemeModes } from '@atlaskit/theme/types';
3
+ interface WeekHeaderProps {
4
+ daysShort: string[];
5
+ mode?: ThemeModes;
6
+ testId?: string;
7
+ }
8
+ declare const WeekHeader: import("react").NamedExoticComponent<WeekHeaderProps>;
9
+ export default WeekHeader;
@@ -0,0 +1,5 @@
1
+ import type { ArrowKeys } from './types';
2
+ export declare const arrowKeys: Record<string, ArrowKeys>;
3
+ export declare const daysPerWeek = 7;
4
+ export declare const monthsPerYear = 12;
5
+ export declare const blankStringArray: Array<string>;
@@ -0,0 +1,5 @@
1
+ import React from 'react';
2
+ import type { CalendarRef } from '../../types';
3
+ export default function useCalendarRef(calendarRef: React.Ref<CalendarRef> | undefined, { navigate, }: {
4
+ navigate: CalendarRef['navigate'];
5
+ }): void;
@@ -0,0 +1,37 @@
1
+ export default function useControlledDateState({ day, defaultDay, month, defaultMonth, year, defaultYear, today, selected, defaultSelected, previouslySelected, defaultPreviouslySelected, }: {
2
+ day?: number;
3
+ defaultDay: number;
4
+ month?: number;
5
+ defaultMonth: number;
6
+ year?: number;
7
+ defaultYear: number;
8
+ today?: string;
9
+ selected?: Array<string>;
10
+ defaultSelected: Array<string>;
11
+ previouslySelected?: Array<string>;
12
+ defaultPreviouslySelected: Array<string>;
13
+ }): {
14
+ readonly day: readonly [
15
+ number,
16
+ (newValue: number) => void
17
+ ];
18
+ readonly month: readonly [
19
+ number,
20
+ (newValue: number) => void
21
+ ];
22
+ readonly year: readonly [
23
+ number,
24
+ (newValue: number) => void
25
+ ];
26
+ readonly today: readonly [
27
+ string
28
+ ];
29
+ readonly selected: readonly [
30
+ string[],
31
+ (newValue: string[]) => void
32
+ ];
33
+ readonly previous: readonly [
34
+ string[],
35
+ (newValue: string[]) => void
36
+ ];
37
+ };
@@ -0,0 +1,8 @@
1
+ import React from 'react';
2
+ export default function useFocusing({ onBlur, onFocus, }: {
3
+ onBlur: React.FocusEventHandler;
4
+ onFocus: React.FocusEventHandler;
5
+ }): {
6
+ handleContainerBlur: (event: React.FocusEvent) => void;
7
+ handleContainerFocus: (event: React.FocusEvent) => void;
8
+ };
@@ -0,0 +1,15 @@
1
+ import type { WeekDay } from '../../types';
2
+ import type { Week } from '../types';
3
+ export default function useGetWeeks({ day, month, year, today, disabled, disabledDateFilter, minDate: minDateString, maxDate: maxDateString, selected, previouslySelected, weekStartDay, }: {
4
+ day: number;
5
+ month: number;
6
+ year: number;
7
+ today: string;
8
+ disabled?: string[];
9
+ disabledDateFilter?: (date: string) => boolean;
10
+ minDate?: string;
11
+ maxDate?: string;
12
+ selected: string[];
13
+ previouslySelected: string[];
14
+ weekStartDay: WeekDay;
15
+ }): Week[];
@@ -0,0 +1,21 @@
1
+ import type { ChangeEvent } from '../../types';
2
+ import type { ArrowKeys } from '../types';
3
+ export default function useHandleDateChange({ day: [dayValue, setDayValue], month: [monthValue, setMonthValue], year: [yearValue, setYearValue], onChange, }: {
4
+ day: readonly [
5
+ number,
6
+ (newValue: number) => void
7
+ ];
8
+ month: readonly [
9
+ number,
10
+ (newValue: number) => void
11
+ ];
12
+ year: readonly [
13
+ number,
14
+ (newValue: number) => void
15
+ ];
16
+ onChange: (event: ChangeEvent) => void;
17
+ }): {
18
+ navigate: (type: ArrowKeys) => void;
19
+ handleClickNext: () => void;
20
+ handleClickPrev: () => void;
21
+ };
@@ -0,0 +1,30 @@
1
+ import React from 'react';
2
+ import type { SelectEvent } from '../../types';
3
+ import type { ArrowKeys, DateObj } from '../types';
4
+ export default function useHandleDateSelect({ day: [dayValue], month: [monthValue], year: [yearValue], selected: [selectedValue, setSelectedValue], previous: [, setPreviouslySelectedValue], onSelect, navigate, }: {
5
+ day: readonly [
6
+ number,
7
+ (newValue: number) => void
8
+ ];
9
+ month: readonly [
10
+ number,
11
+ (newValue: number) => void
12
+ ];
13
+ year: readonly [
14
+ number,
15
+ (newValue: number) => void
16
+ ];
17
+ selected: [
18
+ string[],
19
+ (newValue: string[]) => void
20
+ ];
21
+ previous: [
22
+ unknown,
23
+ (newValue: string[]) => void
24
+ ];
25
+ onSelect: (event: SelectEvent) => void;
26
+ navigate: (type: ArrowKeys) => void;
27
+ }): {
28
+ handleClickDay: ({ year, month, day }: DateObj) => void;
29
+ handleContainerKeyDown: (e: React.KeyboardEvent<HTMLDivElement>) => void;
30
+ };
@@ -0,0 +1,8 @@
1
+ import type { WeekDay } from '../../types';
2
+ export default function useLocale({ locale, weekStartDay, }: {
3
+ locale: string;
4
+ weekStartDay: WeekDay;
5
+ }): {
6
+ monthsLong: string[];
7
+ daysShort: string[];
8
+ };
@@ -0,0 +1 @@
1
+ export default function useUniqueId(prefix: string): string;
@@ -0,0 +1,3 @@
1
+ import { CSSObject } from '@emotion/react';
2
+ import { ThemeModes } from '@atlaskit/theme/types';
3
+ export declare const dateCellStyles: (mode?: ThemeModes) => CSSObject;
@@ -0,0 +1,26 @@
1
+ import type { WeekDay } from '../types';
2
+ export type ArrowKeys = 'left' | 'up' | 'right' | 'down';
3
+ export type DateObj = {
4
+ day: number;
5
+ month: number;
6
+ year: number;
7
+ };
8
+ export interface WeekDayState {
9
+ isDisabled: boolean;
10
+ isFocused: boolean;
11
+ isToday: boolean;
12
+ isPreviouslySelected: boolean;
13
+ isSelected: boolean;
14
+ isSiblingMonth: boolean;
15
+ }
16
+ export interface Week {
17
+ id: string;
18
+ values: Array<{
19
+ id: string;
20
+ } & DateObj & WeekDayState>;
21
+ }
22
+ export interface CalendarDate extends DateObj {
23
+ weekDay?: WeekDay;
24
+ siblingMonth?: boolean;
25
+ }
26
+ export type ISODate = string;
@@ -0,0 +1,6 @@
1
+ import type { DateObj } from '../types';
2
+ interface DateToStringOptions {
3
+ fixMonth: boolean;
4
+ }
5
+ export default function dateToString(date: DateObj, options?: DateToStringOptions): string;
6
+ export {};
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Logic taken from https://github.com/WesSouza/calendar-base which is not maintained for quite sometime.
3
+ * This will help us fixing any issue we might get or any new functionality we might want to support.
4
+ * Not changing much code below. Just removed those parts which we don't need.
5
+ */
6
+ import type { WeekDay } from '../../types';
7
+ import type { CalendarDate } from '../types';
8
+ export default function getBaseCalendar(year: number, month: number, { weekStartDay, }?: {
9
+ weekStartDay?: WeekDay;
10
+ }): CalendarDate[];
@@ -0,0 +1 @@
1
+ export default function getDaysInMonth(year: number, month: number): number;
@@ -0,0 +1 @@
1
+ export default function pad(num: number): string;
@@ -0,0 +1,159 @@
1
+ import { CSSProperties } from 'react';
2
+ import { UIAnalyticsEvent, WithAnalyticsEventsProps } from '@atlaskit/analytics-next';
3
+ import { ThemeModes } from '@atlaskit/theme/types';
4
+ import type { ArrowKeys, DateObj, ISODate } from './internal/types';
5
+ export type WeekDay = 0 | 1 | 2 | 3 | 4 | 5 | 6;
6
+ export type ChangeEvent = {
7
+ iso: ISODate;
8
+ type: 'left' | 'up' | 'right' | 'down' | 'prev' | 'next';
9
+ } & DateObj;
10
+ export type SelectEvent = {
11
+ iso: ISODate;
12
+ } & DateObj;
13
+ export interface CalendarProps extends WithAnalyticsEventsProps {
14
+ /**
15
+ * The number of the day currently focused. Places border around the date. 0 highlights no date.
16
+ */
17
+ day?: number;
18
+ /**
19
+ * Default for `day`.
20
+ */
21
+ defaultDay?: number;
22
+ /**
23
+ * Default for `month`.
24
+ */
25
+ defaultMonth?: number;
26
+ /**
27
+ * Default for `previouslySelected`.
28
+ */
29
+ defaultPreviouslySelected?: Array<string>;
30
+ /**
31
+ * Default for `selected`.
32
+ */
33
+ defaultSelected?: Array<string>;
34
+ /**
35
+ * Default for `year`.
36
+ */
37
+ defaultYear?: number;
38
+ /**
39
+ * Takes an array of dates as string in the format 'YYYY-MM-DD'. All dates provided are greyed out.
40
+ * This does not prevent these dates being selected.
41
+ */
42
+ disabled?: Array<string>;
43
+ /**
44
+ * A filter function that takes a date string in the format 'YYYY-MM-DD' and returns true if that date should be disabled.
45
+ */
46
+ disabledDateFilter?: (date: string) => boolean;
47
+ /**
48
+ * The latest enabled date
49
+ */
50
+ maxDate?: string;
51
+ /**
52
+ * The earliest enabled date
53
+ */
54
+ minDate?: string;
55
+ /**
56
+ * The number of the month (from 1 to 12) which the calendar should be on.
57
+ */
58
+ month?: number;
59
+ /**
60
+ * The aria-label attribute associated with the next-month arrow.
61
+ */
62
+ nextMonthLabel?: string;
63
+ /**
64
+ * Function which is called when the calendar is no longer focused.
65
+ */
66
+ onBlur?: React.FocusEventHandler;
67
+ /**
68
+ * Called when the calendar is navigated. This can be triggered by the keyboard, or by clicking the navigational buttons.
69
+ * The 'interface' property indicates the the direction the calendar was navigated whereas the 'iso' property is a string of the format YYYY-MM-DD.
70
+ */
71
+ onChange?: (event: ChangeEvent, analyticsEvent: UIAnalyticsEvent) => void;
72
+ /**
73
+ * Called when the calendar receives focus. This could be from a mouse event on the container by tabbing into it.
74
+ */
75
+ onFocus?: React.FocusEventHandler;
76
+ /**
77
+ * Function called when a day is clicked on. Calls with an object that has
78
+ * a day, month and year property as numbers, representing the date just clicked.
79
+ * It also has an 'iso' property, which is a string of the selected date in the
80
+ * format YYYY-MM-DD.
81
+ */
82
+ onSelect?: (event: SelectEvent, analyticsEvent: UIAnalyticsEvent) => void;
83
+ /**
84
+ * Takes an array of dates as string in the format 'YYYY-MM-DD'. All dates
85
+ * provided are given a background color.
86
+ */
87
+ previouslySelected?: Array<string>;
88
+ /**
89
+ * The aria-label attribute associated with the previous-month arrow.
90
+ */
91
+ previousMonthLabel?: string;
92
+ /**
93
+ * Takes an array of dates as string in the format 'YYYY-MM-DD'. All dates
94
+ * provided are given a background color.
95
+ */
96
+ selected?: Array<string>;
97
+ /**
98
+ * Value of current day, as a string in the format 'YYYY-MM-DD'.
99
+ */
100
+ today?: string;
101
+ /**
102
+ * Year to display the calendar for.
103
+ */
104
+ year?: number;
105
+ /**
106
+ * BCP 47 language tag (e.g. ja-JP) that ensures dates are in the official format for the locale.
107
+ */
108
+ locale?: string;
109
+ /**
110
+ * Additional information to be included in the `context` of analytics events.
111
+ */
112
+ analyticsContext?: Record<string, any>;
113
+ /**
114
+ * Start day of the week for the calendar.
115
+ * - `0` sunday (default value)
116
+ * - `1` monday
117
+ * - `2` tuesday
118
+ * - `3` wednesday
119
+ * - `4` thursday
120
+ * - `5` friday
121
+ * - `6` saturday
122
+ */
123
+ weekStartDay?: WeekDay;
124
+ /**
125
+ * A `testId` prop is provided for specified elements, which is a unique string that appears as a data attribute `data-testid` in the rendered code, serving as a hook for automated tests
126
+ *
127
+ * testId--container - Outermost container containing everything inside calendar
128
+ * testId--month - Container containing all available days for the month
129
+ * testId--previous-month - Button to show next month
130
+ * testId--next-month - Button to show previous month
131
+ * testId--current-month-year - Text containing the current month and year
132
+ * testId--selected-day - The currently selected day (may be missing if a date isn’t selected)
133
+ */
134
+ testId?: string;
135
+ /**
136
+ * Class name to apply to the calendar
137
+ */
138
+ className?: string;
139
+ /**
140
+ * Style customization to apply to the calendar
141
+ */
142
+ style?: CSSProperties;
143
+ /**
144
+ * @internal An additional ref which exposes Calendar's internal api's. We kept this for
145
+ * backward compatibility. PLEASE DO NOT USE THIS.
146
+ */
147
+ calendarRef?: React.Ref<CalendarRef>;
148
+ /**
149
+ * @internal Legacy theme mode, can be either 'light' or 'dark'
150
+ */
151
+ mode?: ThemeModes;
152
+ /**
153
+ * Tab index indicates if the calendar can be focused by keyboard or only programmatically.
154
+ */
155
+ tabIndex?: number;
156
+ }
157
+ export interface CalendarRef {
158
+ navigate: (type: ArrowKeys) => void;
159
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/calendar",
3
- "version": "13.1.1",
3
+ "version": "13.1.3",
4
4
  "description": "An interactive calendar for date selection experiences.",
5
5
  "publishConfig": {
6
6
  "registry": "https://registry.npmjs.org/"
@@ -33,14 +33,14 @@
33
33
  "dependencies": {
34
34
  "@atlaskit/analytics-next": "^9.1.0",
35
35
  "@atlaskit/button": "^16.7.0",
36
- "@atlaskit/ds-explorations": "^2.1.0",
36
+ "@atlaskit/ds-explorations": "^2.2.0",
37
37
  "@atlaskit/ds-lib": "^2.2.0",
38
38
  "@atlaskit/heading": "^1.3.0",
39
39
  "@atlaskit/icon": "^21.12.0",
40
- "@atlaskit/locale": "^2.4.0",
40
+ "@atlaskit/locale": "^2.5.0",
41
41
  "@atlaskit/primitives": "^0.9.0",
42
42
  "@atlaskit/theme": "^12.5.0",
43
- "@atlaskit/tokens": "^1.4.0",
43
+ "@atlaskit/tokens": "^1.5.0",
44
44
  "@atlaskit/visually-hidden": "^1.2.0",
45
45
  "@babel/runtime": "^7.0.0",
46
46
  "@emotion/react": "^11.7.1",
@@ -52,7 +52,7 @@
52
52
  },
53
53
  "devDependencies": {
54
54
  "@atlaskit/docs": "*",
55
- "@atlaskit/select": "^16.2.0",
55
+ "@atlaskit/select": "^16.5.0",
56
56
  "@atlaskit/ssr": "*",
57
57
  "@atlaskit/visual-regression": "*",
58
58
  "@atlaskit/webdriver-runner": "*",