@atlaskit/datetime-picker 13.0.0 → 13.0.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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,20 @@
1
1
  # @atlaskit/datetime-picker
2
2
 
3
+ ## 13.0.2
4
+
5
+ ### Patch Changes
6
+
7
+ - [#58458](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/58458) [`536478cdcf0b`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/536478cdcf0b) - Made some tiny tweaks to the weekday header so its height is now an integer.
8
+
9
+ ## 13.0.1
10
+
11
+ ### Patch Changes
12
+
13
+ - [#40391](https://bitbucket.org/atlassian/atlassian-frontend/pull-requests/40391) [`4300c9d6f18`](https://bitbucket.org/atlassian/atlassian-frontend/commits/4300c9d6f18) - Associate the label with the `Date` / `Time` picker and the clear button.
14
+ Add hidden span to the Label component.
15
+ This allows to associate a label with a clear button.
16
+ Unit tests update.
17
+
3
18
  ## 13.0.0
4
19
 
5
20
  ### Major Changes
@@ -29,6 +29,7 @@ var _select = _interopRequireWildcard(require("@atlaskit/select"));
29
29
  var _colors = require("@atlaskit/theme/colors");
30
30
  var _constants = require("@atlaskit/theme/constants");
31
31
  var _internal = require("../internal");
32
+ var _clearIndicator = _interopRequireDefault(require("../internal/clear-indicator"));
32
33
  var _fixedLayer = _interopRequireDefault(require("../internal/fixed-layer"));
33
34
  var _singleValue = require("../internal/single-value");
34
35
  var _utils = require("./utils");
@@ -37,9 +38,9 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
37
38
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
38
39
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
39
40
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
40
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } /** @jsx jsx */
41
+ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
41
42
  var packageName = "@atlaskit/datetime-picker";
42
- var packageVersion = "13.0.0";
43
+ var packageVersion = "13.0.2";
43
44
  function getValidDate(iso) {
44
45
  var date = (0, _dateFns.parseISO)(iso);
45
46
  return (0, _dateFns.isValid)(date) ? {
@@ -61,14 +62,14 @@ var menuStyles = (0, _react2.css)({
61
62
  var Menu = function Menu(_ref) {
62
63
  var selectProps = _ref.selectProps,
63
64
  innerProps = _ref.innerProps;
64
- return (0, _react2.jsx)(_layering.UNSAFE_LAYERING, {
65
+ return /*#__PURE__*/React.createElement(_layering.UNSAFE_LAYERING, {
65
66
  isDisabled: (0, _platformFeatureFlags.getBooleanFF)('platform.design-system-team.layering_qmiw3') ? false : true
66
- }, (0, _react2.jsx)(_fixedLayer.default, {
67
+ }, /*#__PURE__*/React.createElement(_fixedLayer.default, {
67
68
  inputValue: selectProps.inputValue,
68
69
  containerRef: selectProps.calendarContainerRef,
69
- content: (0, _react2.jsx)("div", (0, _extends2.default)({
70
+ content: /*#__PURE__*/React.createElement("div", (0, _extends2.default)({
70
71
  css: menuStyles
71
- }, innerProps), (0, _react2.jsx)(_calendar.default, (0, _extends2.default)({}, getValidDate(selectProps.calendarValue), getValidDate(selectProps.calendarView), {
72
+ }, innerProps), /*#__PURE__*/React.createElement(_calendar.default, (0, _extends2.default)({}, getValidDate(selectProps.calendarValue), getValidDate(selectProps.calendarView), {
72
73
  disabled: selectProps.calendarDisabled,
73
74
  disabledDateFilter: selectProps.calendarDisabledDateFilter,
74
75
  minDate: selectProps.calendarMinDate,
@@ -439,7 +440,9 @@ var DatePicker = exports.DatePickerWithoutAnalytics = /*#__PURE__*/function (_Co
439
440
  DropdownIndicator: dropDownIcon,
440
441
  Menu: Menu,
441
442
  SingleValue: SingleValue
442
- }, !showClearIndicator && {
443
+ }, showClearIndicator ? {
444
+ ClearIndicator: _clearIndicator.default
445
+ } : {
443
446
  ClearIndicator: _internal.EmptyComponent
444
447
  });
445
448
  var _selectProps$styles = selectProps.styles,
@@ -465,9 +468,10 @@ var DatePicker = exports.DatePickerWithoutAnalytics = /*#__PURE__*/function (_Co
465
468
  previousMonthLabel: previousMonthLabel
466
469
  };
467
470
  return (
471
+ /*#__PURE__*/
468
472
  // These event handlers must be on this element because the events come
469
473
  // from different child elements.
470
- (0, _react2.jsx)("div", (0, _extends2.default)({}, innerProps, {
474
+ React.createElement("div", (0, _extends2.default)({}, innerProps, {
471
475
  role: "presentation",
472
476
  onBlur: this.onContainerBlur,
473
477
  onClick: this.onInputClick,
@@ -475,18 +479,18 @@ var DatePicker = exports.DatePickerWithoutAnalytics = /*#__PURE__*/function (_Co
475
479
  onKeyDown: this.onInputKeyDown,
476
480
  ref: this.getContainerRef,
477
481
  "data-testid": testId && "".concat(testId, "--container")
478
- }), (0, _react2.jsx)("input", {
482
+ }), /*#__PURE__*/React.createElement("input", {
479
483
  name: name,
480
484
  type: "hidden",
481
485
  value: value,
482
486
  "data-testid": testId && "".concat(testId, "--input")
483
- }), (0, _react2.jsx)(_select.default, (0, _extends2.default)({
487
+ }), /*#__PURE__*/React.createElement(_select.default, (0, _extends2.default)({
484
488
  appearance: this.props.appearance,
485
489
  enableAnimation: false,
486
490
  menuIsOpen: menuIsOpen,
487
491
  closeMenuOnSelect: true,
488
492
  autoFocus: autoFocus,
489
- instanceId: id,
493
+ inputId: id,
490
494
  isDisabled: isDisabled,
491
495
  onBlur: this.onSelectBlur,
492
496
  onFocus: this.onSelectFocus,
@@ -18,20 +18,20 @@ var _react2 = require("@emotion/react");
18
18
  var _dateFns = require("date-fns");
19
19
  var _pick = _interopRequireDefault(require("lodash/pick"));
20
20
  var _analyticsNext = require("@atlaskit/analytics-next");
21
- var _selectClear = _interopRequireDefault(require("@atlaskit/icon/glyph/select-clear"));
22
21
  var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
23
22
  var _select = require("@atlaskit/select");
24
23
  var _colors = require("@atlaskit/theme/colors");
25
24
  var _internal = require("../internal");
25
+ var _clearButton = _interopRequireDefault(require("../internal/clear-button"));
26
26
  var _datePicker = _interopRequireDefault(require("./date-picker"));
27
27
  var _timePicker = _interopRequireDefault(require("./time-picker"));
28
28
  var _utils = require("./utils");
29
29
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
30
30
  function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
31
31
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
32
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } /** @jsx jsx */
32
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
33
33
  var packageName = "@atlaskit/datetime-picker";
34
- var packageVersion = "13.0.0";
34
+ var packageVersion = "13.0.2";
35
35
  var isInvalidBorderStyles = (0, _react2.css)({
36
36
  borderColor: "var(--ds-border-danger, ".concat(_colors.R400, ")")
37
37
  });
@@ -305,18 +305,20 @@ var DateTimePicker = exports.DateTimePickerWithoutAnalytics = /*#__PURE__*/funct
305
305
  // Don't use Date or TimePicker's because they can't be customised
306
306
  var isClearable = Boolean(dateValue || timeValue);
307
307
  var notFocusedOrIsDisabled = !(isFocused || isDisabled);
308
- return (0, _react2.jsx)("div", (0, _extends2.default)({
308
+ var ariaLabelledbyId = id && "label--".concat(id);
309
+ return /*#__PURE__*/_react.default.createElement("div", (0, _extends2.default)({
309
310
  css: [baseContainerStyles, isDisabled && isDisabledStyles, isFocused && isFocusedStyles, bothProps.appearance === 'subtle' && (isFocused ? subtleFocusedBgStyles : subtleBgStyles), isFocused && isFocusedBorderStyles, bothProps.isInvalid && isInvalidBorderStyles, notFocusedOrIsDisabled && (bothProps.isInvalid ? isInvalidHoverStyles : hoverStyles), bothProps.appearance === 'none' && noBgStyles]
310
311
  }, innerProps, {
312
+ "aria-labelledby": innerProps['aria-labelledby'] || ariaLabelledbyId,
311
313
  "data-testid": testId
312
- }), (0, _react2.jsx)("input", {
314
+ }), /*#__PURE__*/_react.default.createElement("input", {
313
315
  name: name,
314
316
  type: "hidden",
315
317
  value: value,
316
318
  "data-testid": testId && "".concat(testId, "--input")
317
- }), (0, _react2.jsx)("div", {
319
+ }), /*#__PURE__*/_react.default.createElement("div", {
318
320
  css: datePickerContainerStyles
319
- }, (0, _react2.jsx)(_datePicker.default, (0, _extends2.default)({}, bothProps, {
321
+ }, /*#__PURE__*/_react.default.createElement(_datePicker.default, (0, _extends2.default)({}, bothProps, {
320
322
  autoFocus: autoFocus,
321
323
  dateFormat: dateFormat,
322
324
  hideIcon: true,
@@ -326,9 +328,9 @@ var DateTimePicker = exports.DateTimePickerWithoutAnalytics = /*#__PURE__*/funct
326
328
  value: dateValue,
327
329
  locale: locale,
328
330
  testId: testId && "".concat(testId, "--datepicker")
329
- }, datePickerProps))), (0, _react2.jsx)("div", {
331
+ }, datePickerProps))), /*#__PURE__*/_react.default.createElement("div", {
330
332
  css: timePickerContainerStyles
331
- }, (0, _react2.jsx)(_timePicker.default, (0, _extends2.default)({}, bothProps, {
333
+ }, /*#__PURE__*/_react.default.createElement(_timePicker.default, (0, _extends2.default)({}, bothProps, {
332
334
  hideIcon: true,
333
335
  onChange: this.onTimeChange,
334
336
  selectProps: mergedTimePickerSelectProps,
@@ -338,17 +340,13 @@ var DateTimePicker = exports.DateTimePickerWithoutAnalytics = /*#__PURE__*/funct
338
340
  timeFormat: timeFormat,
339
341
  locale: locale,
340
342
  testId: testId && "".concat(testId, "--timepicker")
341
- }, timePickerProps))), isClearable && !isDisabled ? (0, _react2.jsx)("button", {
342
- css: iconContainerStyles,
343
+ }, timePickerProps))), isClearable && !isDisabled ? /*#__PURE__*/_react.default.createElement(_clearButton.default, {
344
+ inputId: id,
345
+ buttonStyles: iconContainerStyles,
343
346
  onClick: this.onClear,
344
347
  "data-testid": testId && "".concat(testId, "--icon--container"),
345
- tabIndex: -1,
346
- type: "button"
347
- }, (0, _react2.jsx)(_selectClear.default, {
348
- size: "small",
349
- primaryColor: "inherit",
350
- label: "clear"
351
- })) : null);
348
+ primaryColor: "inherit"
349
+ }) : null);
352
350
  }
353
351
  }]);
354
352
  return DateTimePicker;
@@ -23,6 +23,7 @@ var _locale = require("@atlaskit/locale");
23
23
  var _select = _interopRequireWildcard(require("@atlaskit/select"));
24
24
  var _constants = require("@atlaskit/theme/constants");
25
25
  var _internal = require("../internal");
26
+ var _clearIndicator = _interopRequireDefault(require("../internal/clear-indicator"));
26
27
  var _fixedLayer = _interopRequireDefault(require("../internal/fixed-layer"));
27
28
  var _parseTime = _interopRequireDefault(require("../internal/parse-time"));
28
29
  var _singleValue = require("../internal/single-value");
@@ -37,7 +38,7 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
37
38
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
38
39
  function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
39
40
  var packageName = "@atlaskit/datetime-picker";
40
- var packageVersion = "13.0.0";
41
+ var packageVersion = "13.0.2";
41
42
  var menuStyles = {
42
43
  /* Need to remove default absolute positioning as that causes issues with position fixed */
43
44
  position: 'static',
@@ -279,8 +280,10 @@ var TimePicker = exports.TimePickerWithoutAnalytics = /*#__PURE__*/function (_Re
279
280
  DropdownIndicator: _internal.EmptyComponent,
280
281
  Menu: FixedLayerMenu,
281
282
  SingleValue: SingleValue
282
- }, hideIcon && {
283
+ }, hideIcon ? {
283
284
  ClearIndicator: _internal.EmptyComponent
285
+ } : {
286
+ ClearIndicator: _clearIndicator.default
284
287
  });
285
288
  var renderIconContainer = Boolean(!hideIcon && value);
286
289
  var mergedStyles = (0, _select.mergeStyles)(selectStyles, {
@@ -314,7 +317,7 @@ var TimePicker = exports.TimePickerWithoutAnalytics = /*#__PURE__*/function (_Re
314
317
  appearance: appearance,
315
318
  autoFocus: autoFocus,
316
319
  components: selectComponents,
317
- instanceId: id,
320
+ inputId: id,
318
321
  isClearable: true,
319
322
  isDisabled: isDisabled,
320
323
  menuIsOpen: isOpen && !isDisabled,
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ var _selectClear = _interopRequireDefault(require("@atlaskit/icon/glyph/select-clear"));
9
+ /**
10
+ * __Clear button__
11
+ */
12
+ var ClearButton = function ClearButton(_ref) {
13
+ var inputId = _ref.inputId,
14
+ _ref$iconSize = _ref.iconSize,
15
+ iconSize = _ref$iconSize === void 0 ? 'small' : _ref$iconSize,
16
+ _ref$label = _ref.label,
17
+ label = _ref$label === void 0 ? 'Clear' : _ref$label,
18
+ primaryColor = _ref.primaryColor,
19
+ buttonStyles = _ref.buttonStyles,
20
+ dataTestId = _ref.dataTestId,
21
+ onClick = _ref.onClick;
22
+ var labelId = inputId && "label--".concat(inputId);
23
+ var clearButtonId = inputId && "clear-btn--".concat(inputId);
24
+ return /*#__PURE__*/React.createElement("button", {
25
+ "aria-labelledby": inputId ? "".concat(clearButtonId, " ").concat(labelId) : "".concat(clearButtonId),
26
+ css: buttonStyles,
27
+ type: "button",
28
+ tabIndex: -1,
29
+ "data-testid": "".concat(dataTestId, "--clear--btn"),
30
+ onClick: onClick
31
+ }, /*#__PURE__*/React.createElement("span", {
32
+ hidden: true,
33
+ id: clearButtonId
34
+ }, "Clear"), /*#__PURE__*/React.createElement("span", {
35
+ style: {
36
+ display: 'flex'
37
+ }
38
+ }, /*#__PURE__*/React.createElement(_selectClear.default, {
39
+ size: iconSize,
40
+ label: inputId ? '' : label,
41
+ primaryColor: primaryColor
42
+ })));
43
+ };
44
+ var _default = exports.default = ClearButton;
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
+ var _react = require("@emotion/react");
10
+ var _select = require("@atlaskit/select");
11
+ var _clearButton = _interopRequireDefault(require("./clear-button"));
12
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
13
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
14
+ var buttonStyles = (0, _react.css)({
15
+ display: 'flex',
16
+ alignItems: 'center',
17
+ all: 'unset',
18
+ outline: 'revert'
19
+ });
20
+
21
+ /**
22
+ * __Clear indicator__
23
+ * Overwrites the default `ClearIndicator` button with custom styles and attributes
24
+ *
25
+ */
26
+ var ClearIndicator = function ClearIndicator(props) {
27
+ return /*#__PURE__*/React.createElement(_select.components.ClearIndicator, _objectSpread(_objectSpread({}, props), {}, {
28
+ innerProps: _objectSpread(_objectSpread({}, props.innerProps), {}, {
29
+ 'aria-hidden': 'false'
30
+ })
31
+ }), /*#__PURE__*/React.createElement(_clearButton.default, {
32
+ buttonStyles: buttonStyles,
33
+ inputId: props.selectProps.inputId,
34
+ dataTestId: props.selectProps.testId
35
+ }));
36
+ };
37
+ var _default = exports.default = ClearIndicator;
@@ -1,8 +1,7 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
2
  import _extends from "@babel/runtime/helpers/extends";
3
- /** @jsx jsx */
4
3
  import { Component } from 'react';
5
- import { css, jsx } from '@emotion/react';
4
+ import { css } from '@emotion/react';
6
5
  import { format, isValid, lastDayOfMonth, parseISO } from 'date-fns';
7
6
  import pick from 'lodash/pick';
8
7
  import { createAndFireEvent, withAnalyticsContext, withAnalyticsEvents } from '@atlaskit/analytics-next';
@@ -15,11 +14,12 @@ import Select, { mergeStyles } from '@atlaskit/select';
15
14
  import { N0, N50A, N60A } from '@atlaskit/theme/colors';
16
15
  import { layers } from '@atlaskit/theme/constants';
17
16
  import { defaultDateFormat, EmptyComponent, padToTwo, placeholderDatetime } from '../internal';
17
+ import ClearIndicator from '../internal/clear-indicator';
18
18
  import FixedLayer from '../internal/fixed-layer';
19
19
  import { makeSingleValue } from '../internal/single-value';
20
20
  import { convertTokens } from './utils';
21
21
  const packageName = "@atlaskit/datetime-picker";
22
- const packageVersion = "13.0.0";
22
+ const packageVersion = "13.0.2";
23
23
  function getValidDate(iso) {
24
24
  const date = parseISO(iso);
25
25
  return isValid(date) ? {
@@ -41,14 +41,14 @@ const menuStyles = css({
41
41
  const Menu = ({
42
42
  selectProps,
43
43
  innerProps
44
- }) => jsx(UNSAFE_LAYERING, {
44
+ }) => /*#__PURE__*/React.createElement(UNSAFE_LAYERING, {
45
45
  isDisabled: getBooleanFF('platform.design-system-team.layering_qmiw3') ? false : true
46
- }, jsx(FixedLayer, {
46
+ }, /*#__PURE__*/React.createElement(FixedLayer, {
47
47
  inputValue: selectProps.inputValue,
48
48
  containerRef: selectProps.calendarContainerRef,
49
- content: jsx("div", _extends({
49
+ content: /*#__PURE__*/React.createElement("div", _extends({
50
50
  css: menuStyles
51
- }, innerProps), jsx(Calendar, _extends({}, getValidDate(selectProps.calendarValue), getValidDate(selectProps.calendarView), {
51
+ }, innerProps), /*#__PURE__*/React.createElement(Calendar, _extends({}, getValidDate(selectProps.calendarValue), getValidDate(selectProps.calendarView), {
52
52
  disabled: selectProps.calendarDisabled,
53
53
  disabledDateFilter: selectProps.calendarDisabledDateFilter,
54
54
  minDate: selectProps.calendarMinDate,
@@ -437,7 +437,9 @@ class DatePicker extends Component {
437
437
  DropdownIndicator: dropDownIcon,
438
438
  Menu,
439
439
  SingleValue,
440
- ...(!showClearIndicator && {
440
+ ...(showClearIndicator ? {
441
+ ClearIndicator: ClearIndicator
442
+ } : {
441
443
  ClearIndicator: EmptyComponent
442
444
  })
443
445
  };
@@ -465,9 +467,10 @@ class DatePicker extends Component {
465
467
  previousMonthLabel
466
468
  };
467
469
  return (
470
+ /*#__PURE__*/
468
471
  // These event handlers must be on this element because the events come
469
472
  // from different child elements.
470
- jsx("div", _extends({}, innerProps, {
473
+ React.createElement("div", _extends({}, innerProps, {
471
474
  role: "presentation",
472
475
  onBlur: this.onContainerBlur,
473
476
  onClick: this.onInputClick,
@@ -475,18 +478,18 @@ class DatePicker extends Component {
475
478
  onKeyDown: this.onInputKeyDown,
476
479
  ref: this.getContainerRef,
477
480
  "data-testid": testId && `${testId}--container`
478
- }), jsx("input", {
481
+ }), /*#__PURE__*/React.createElement("input", {
479
482
  name: name,
480
483
  type: "hidden",
481
484
  value: value,
482
485
  "data-testid": testId && `${testId}--input`
483
- }), jsx(Select, _extends({
486
+ }), /*#__PURE__*/React.createElement(Select, _extends({
484
487
  appearance: this.props.appearance,
485
488
  enableAnimation: false,
486
489
  menuIsOpen: menuIsOpen,
487
490
  closeMenuOnSelect: true,
488
491
  autoFocus: autoFocus,
489
- instanceId: id,
492
+ inputId: id,
490
493
  isDisabled: isDisabled,
491
494
  onBlur: this.onSelectBlur,
492
495
  onFocus: this.onSelectFocus,
@@ -1,21 +1,20 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
2
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
3
- /** @jsx jsx */
4
3
  import React from 'react';
5
- import { css, jsx } from '@emotion/react';
4
+ import { css } from '@emotion/react';
6
5
  import { format, isValid, parseISO } from 'date-fns';
7
6
  import pick from 'lodash/pick';
8
7
  import { createAndFireEvent, withAnalyticsContext, withAnalyticsEvents } from '@atlaskit/analytics-next';
9
- import SelectClearIcon from '@atlaskit/icon/glyph/select-clear';
10
8
  import { getBooleanFF } from '@atlaskit/platform-feature-flags';
11
9
  import { mergeStyles } from '@atlaskit/select';
12
10
  import { B100, N0, N100, N20, N30, N500, N70, R400 } from '@atlaskit/theme/colors';
13
11
  import { defaultTimes, formatDateTimeZoneIntoIso } from '../internal';
12
+ import ClearButton from '../internal/clear-button';
14
13
  import DatePicker from './date-picker';
15
14
  import TimePicker from './time-picker';
16
15
  import { convertTokens } from './utils';
17
16
  const packageName = "@atlaskit/datetime-picker";
18
- const packageVersion = "13.0.0";
17
+ const packageVersion = "13.0.2";
19
18
  const isInvalidBorderStyles = css({
20
19
  borderColor: `var(--ds-border-danger, ${R400})`
21
20
  });
@@ -291,18 +290,20 @@ class DateTimePicker extends React.Component {
291
290
  // Don't use Date or TimePicker's because they can't be customised
292
291
  const isClearable = Boolean(dateValue || timeValue);
293
292
  const notFocusedOrIsDisabled = !(isFocused || isDisabled);
294
- return jsx("div", _extends({
293
+ const ariaLabelledbyId = id && `label--${id}`;
294
+ return /*#__PURE__*/React.createElement("div", _extends({
295
295
  css: [baseContainerStyles, isDisabled && isDisabledStyles, isFocused && isFocusedStyles, bothProps.appearance === 'subtle' && (isFocused ? subtleFocusedBgStyles : subtleBgStyles), isFocused && isFocusedBorderStyles, bothProps.isInvalid && isInvalidBorderStyles, notFocusedOrIsDisabled && (bothProps.isInvalid ? isInvalidHoverStyles : hoverStyles), bothProps.appearance === 'none' && noBgStyles]
296
296
  }, innerProps, {
297
+ "aria-labelledby": innerProps['aria-labelledby'] || ariaLabelledbyId,
297
298
  "data-testid": testId
298
- }), jsx("input", {
299
+ }), /*#__PURE__*/React.createElement("input", {
299
300
  name: name,
300
301
  type: "hidden",
301
302
  value: value,
302
303
  "data-testid": testId && `${testId}--input`
303
- }), jsx("div", {
304
+ }), /*#__PURE__*/React.createElement("div", {
304
305
  css: datePickerContainerStyles
305
- }, jsx(DatePicker, _extends({}, bothProps, {
306
+ }, /*#__PURE__*/React.createElement(DatePicker, _extends({}, bothProps, {
306
307
  autoFocus: autoFocus,
307
308
  dateFormat: dateFormat,
308
309
  hideIcon: true,
@@ -312,9 +313,9 @@ class DateTimePicker extends React.Component {
312
313
  value: dateValue,
313
314
  locale: locale,
314
315
  testId: testId && `${testId}--datepicker`
315
- }, datePickerProps))), jsx("div", {
316
+ }, datePickerProps))), /*#__PURE__*/React.createElement("div", {
316
317
  css: timePickerContainerStyles
317
- }, jsx(TimePicker, _extends({}, bothProps, {
318
+ }, /*#__PURE__*/React.createElement(TimePicker, _extends({}, bothProps, {
318
319
  hideIcon: true,
319
320
  onChange: this.onTimeChange,
320
321
  selectProps: mergedTimePickerSelectProps,
@@ -324,17 +325,13 @@ class DateTimePicker extends React.Component {
324
325
  timeFormat: timeFormat,
325
326
  locale: locale,
326
327
  testId: testId && `${testId}--timepicker`
327
- }, timePickerProps))), isClearable && !isDisabled ? jsx("button", {
328
- css: iconContainerStyles,
328
+ }, timePickerProps))), isClearable && !isDisabled ? /*#__PURE__*/React.createElement(ClearButton, {
329
+ inputId: id,
330
+ buttonStyles: iconContainerStyles,
329
331
  onClick: this.onClear,
330
332
  "data-testid": testId && `${testId}--icon--container`,
331
- tabIndex: -1,
332
- type: "button"
333
- }, jsx(SelectClearIcon, {
334
- size: "small",
335
- primaryColor: "inherit",
336
- label: "clear"
337
- })) : null);
333
+ primaryColor: "inherit"
334
+ }) : null);
338
335
  }
339
336
  }
340
337
  _defineProperty(DateTimePicker, "defaultProps", dateTimePickerDefaultProps);
@@ -11,12 +11,13 @@ import Select, { components, CreatableSelect, mergeStyles } from '@atlaskit/sele
11
11
  // eslint-disable-next-line @atlaskit/design-system/no-deprecated-imports
12
12
  import { gridSize } from '@atlaskit/theme/constants';
13
13
  import { defaultTimeFormat, defaultTimes, EmptyComponent, placeholderDatetime } from '../internal';
14
+ import ClearIndicator from '../internal/clear-indicator';
14
15
  import FixedLayer from '../internal/fixed-layer';
15
16
  import parseTime from '../internal/parse-time';
16
17
  import { makeSingleValue } from '../internal/single-value';
17
18
  import { convertTokens } from './utils';
18
19
  const packageName = "@atlaskit/datetime-picker";
19
- const packageVersion = "13.0.0";
20
+ const packageVersion = "13.0.2";
20
21
  const menuStyles = {
21
22
  /* Need to remove default absolute positioning as that causes issues with position fixed */
22
23
  position: 'static',
@@ -254,8 +255,10 @@ class TimePicker extends React.Component {
254
255
  DropdownIndicator: EmptyComponent,
255
256
  Menu: FixedLayerMenu,
256
257
  SingleValue,
257
- ...(hideIcon && {
258
+ ...(hideIcon ? {
258
259
  ClearIndicator: EmptyComponent
260
+ } : {
261
+ ClearIndicator: ClearIndicator
259
262
  })
260
263
  };
261
264
  const renderIconContainer = Boolean(!hideIcon && value);
@@ -289,7 +292,7 @@ class TimePicker extends React.Component {
289
292
  appearance: appearance,
290
293
  autoFocus: autoFocus,
291
294
  components: selectComponents,
292
- instanceId: id,
295
+ inputId: id,
293
296
  isClearable: true,
294
297
  isDisabled: isDisabled,
295
298
  menuIsOpen: isOpen && !isDisabled,
@@ -0,0 +1,36 @@
1
+ import SelectClearIcon from '@atlaskit/icon/glyph/select-clear';
2
+ /**
3
+ * __Clear button__
4
+ */
5
+ const ClearButton = ({
6
+ inputId,
7
+ iconSize = 'small',
8
+ label = 'Clear',
9
+ primaryColor,
10
+ buttonStyles,
11
+ dataTestId,
12
+ onClick
13
+ }) => {
14
+ const labelId = inputId && `label--${inputId}`;
15
+ const clearButtonId = inputId && `clear-btn--${inputId}`;
16
+ return /*#__PURE__*/React.createElement("button", {
17
+ "aria-labelledby": inputId ? `${clearButtonId} ${labelId}` : `${clearButtonId}`,
18
+ css: buttonStyles,
19
+ type: "button",
20
+ tabIndex: -1,
21
+ "data-testid": `${dataTestId}--clear--btn`,
22
+ onClick: onClick
23
+ }, /*#__PURE__*/React.createElement("span", {
24
+ hidden: true,
25
+ id: clearButtonId
26
+ }, "Clear"), /*#__PURE__*/React.createElement("span", {
27
+ style: {
28
+ display: 'flex'
29
+ }
30
+ }, /*#__PURE__*/React.createElement(SelectClearIcon, {
31
+ size: iconSize,
32
+ label: inputId ? '' : label,
33
+ primaryColor: primaryColor
34
+ })));
35
+ };
36
+ export default ClearButton;
@@ -0,0 +1,29 @@
1
+ import _extends from "@babel/runtime/helpers/extends";
2
+ import { css } from '@emotion/react';
3
+ import { components } from '@atlaskit/select';
4
+ import ClearButton from './clear-button';
5
+ const buttonStyles = css({
6
+ display: 'flex',
7
+ alignItems: 'center',
8
+ all: 'unset',
9
+ outline: 'revert'
10
+ });
11
+
12
+ /**
13
+ * __Clear indicator__
14
+ * Overwrites the default `ClearIndicator` button with custom styles and attributes
15
+ *
16
+ */
17
+ const ClearIndicator = props => {
18
+ return /*#__PURE__*/React.createElement(components.ClearIndicator, _extends({}, props, {
19
+ innerProps: {
20
+ ...props.innerProps,
21
+ 'aria-hidden': 'false'
22
+ }
23
+ }), /*#__PURE__*/React.createElement(ClearButton, {
24
+ buttonStyles: buttonStyles,
25
+ inputId: props.selectProps.inputId,
26
+ dataTestId: props.selectProps.testId
27
+ }));
28
+ };
29
+ export default ClearIndicator;