@atlaskit/datetime-picker 17.7.0 → 17.8.1

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 (100) hide show
  1. package/CHANGELOG.md +107 -0
  2. package/date-picker/package.json +17 -0
  3. package/date-time-picker/package.json +17 -0
  4. package/dist/cjs/components/date-picker.js +31 -27
  5. package/dist/cjs/components/date-time-picker-class.js +9 -9
  6. package/dist/cjs/components/date-time-picker-fc.js +5 -8
  7. package/dist/cjs/components/time-picker.js +14 -9
  8. package/dist/cjs/entry-points/date-picker.js +13 -0
  9. package/dist/cjs/entry-points/date-time-picker.js +13 -0
  10. package/dist/cjs/entry-points/time-picker.js +13 -0
  11. package/dist/cjs/entry-points/types.js +1 -0
  12. package/dist/cjs/internal/default-date-format.js +7 -0
  13. package/dist/cjs/internal/default-times.js +7 -0
  14. package/dist/cjs/internal/empty-component.js +12 -0
  15. package/dist/cjs/internal/fixed-layer-menu-top-layer.js +113 -0
  16. package/dist/cjs/internal/format-date-time-zone-into-iso.js +15 -0
  17. package/dist/cjs/internal/format-date.js +2 -2
  18. package/dist/cjs/internal/get-parsed-iso.js +3 -3
  19. package/dist/cjs/internal/get-placeholder.js +2 -2
  20. package/dist/cjs/internal/menu-top-layer.js +116 -0
  21. package/dist/cjs/internal/pad-two.js +9 -0
  22. package/dist/cjs/internal/parse-date.js +2 -2
  23. package/dist/cjs/internal/placeholder-date-time.js +9 -0
  24. package/dist/es2019/components/date-picker.js +29 -25
  25. package/dist/es2019/components/date-time-picker-class.js +6 -6
  26. package/dist/es2019/components/date-time-picker-fc.js +2 -5
  27. package/dist/es2019/components/time-picker.js +8 -3
  28. package/dist/es2019/entry-points/date-picker.js +1 -0
  29. package/dist/es2019/entry-points/date-time-picker.js +1 -0
  30. package/dist/es2019/entry-points/time-picker.js +1 -0
  31. package/dist/es2019/entry-points/types.js +0 -0
  32. package/dist/es2019/internal/default-date-format.js +1 -0
  33. package/dist/es2019/internal/default-times.js +1 -0
  34. package/dist/es2019/internal/empty-component.js +4 -0
  35. package/dist/es2019/internal/fixed-layer-menu-top-layer.js +103 -0
  36. package/dist/es2019/internal/format-date-time-zone-into-iso.js +9 -0
  37. package/dist/es2019/internal/format-date.js +1 -1
  38. package/dist/es2019/internal/get-parsed-iso.js +1 -1
  39. package/dist/es2019/internal/get-placeholder.js +1 -1
  40. package/dist/es2019/internal/menu-top-layer.js +111 -0
  41. package/dist/es2019/internal/pad-two.js +3 -0
  42. package/dist/es2019/internal/parse-date.js +1 -1
  43. package/dist/es2019/internal/placeholder-date-time.js +3 -0
  44. package/dist/esm/components/date-picker.js +29 -25
  45. package/dist/esm/components/date-time-picker-class.js +6 -6
  46. package/dist/esm/components/date-time-picker-fc.js +2 -5
  47. package/dist/esm/components/time-picker.js +8 -3
  48. package/dist/esm/entry-points/date-picker.js +1 -0
  49. package/dist/esm/entry-points/date-time-picker.js +1 -0
  50. package/dist/esm/entry-points/time-picker.js +1 -0
  51. package/dist/esm/entry-points/types.js +0 -0
  52. package/dist/esm/internal/default-date-format.js +1 -0
  53. package/dist/esm/internal/default-times.js +1 -0
  54. package/dist/esm/internal/empty-component.js +6 -0
  55. package/dist/esm/internal/fixed-layer-menu-top-layer.js +105 -0
  56. package/dist/esm/internal/format-date-time-zone-into-iso.js +9 -0
  57. package/dist/esm/internal/format-date.js +1 -1
  58. package/dist/esm/internal/get-parsed-iso.js +1 -1
  59. package/dist/esm/internal/get-placeholder.js +1 -1
  60. package/dist/esm/internal/menu-top-layer.js +107 -0
  61. package/dist/esm/internal/pad-two.js +3 -0
  62. package/dist/esm/internal/parse-date.js +1 -1
  63. package/dist/esm/internal/placeholder-date-time.js +3 -0
  64. package/dist/types/components/date-time-picker-class.d.ts +0 -2
  65. package/dist/types/components/date-time-picker-fc.d.ts +0 -2
  66. package/dist/types/entry-points/date-picker.d.ts +2 -0
  67. package/dist/types/entry-points/date-time-picker.d.ts +1 -0
  68. package/dist/types/entry-points/time-picker.d.ts +1 -0
  69. package/dist/types/entry-points/types.d.ts +1 -0
  70. package/dist/types/internal/default-date-format.d.ts +1 -0
  71. package/dist/types/internal/default-times.d.ts +1 -0
  72. package/dist/types/internal/empty-component.d.ts +4 -0
  73. package/dist/types/internal/fixed-layer-menu-top-layer.d.ts +12 -0
  74. package/dist/types/internal/format-date-time-zone-into-iso.d.ts +4 -0
  75. package/dist/types/internal/menu-top-layer.d.ts +16 -0
  76. package/dist/types/internal/pad-two.d.ts +1 -0
  77. package/dist/types/internal/placeholder-date-time.d.ts +1 -0
  78. package/dist/types-ts4.5/components/date-time-picker-class.d.ts +0 -2
  79. package/dist/types-ts4.5/components/date-time-picker-fc.d.ts +0 -2
  80. package/dist/types-ts4.5/entry-points/date-picker.d.ts +2 -0
  81. package/dist/types-ts4.5/entry-points/date-time-picker.d.ts +1 -0
  82. package/dist/types-ts4.5/entry-points/time-picker.d.ts +1 -0
  83. package/dist/types-ts4.5/entry-points/types.d.ts +1 -0
  84. package/dist/types-ts4.5/internal/default-date-format.d.ts +1 -0
  85. package/dist/types-ts4.5/internal/default-times.d.ts +1 -0
  86. package/dist/types-ts4.5/internal/empty-component.d.ts +4 -0
  87. package/dist/types-ts4.5/internal/fixed-layer-menu-top-layer.d.ts +12 -0
  88. package/dist/types-ts4.5/internal/format-date-time-zone-into-iso.d.ts +4 -0
  89. package/dist/types-ts4.5/internal/menu-top-layer.d.ts +16 -0
  90. package/dist/types-ts4.5/internal/pad-two.d.ts +1 -0
  91. package/dist/types-ts4.5/internal/placeholder-date-time.d.ts +1 -0
  92. package/package.json +12 -8
  93. package/time-picker/package.json +17 -0
  94. package/types/package.json +5 -5
  95. package/dist/cjs/internal/index.js +0 -31
  96. package/dist/es2019/internal/index.js +0 -20
  97. package/dist/esm/internal/index.js +0 -22
  98. package/dist/types/internal/index.d.ts +0 -10
  99. package/dist/types-ts4.5/internal/index.d.ts +0 -10
  100. package/offerings.json +0 -98
package/CHANGELOG.md CHANGED
@@ -1,5 +1,112 @@
1
1
  # @atlaskit/datetime-picker
2
2
 
3
+ ## 17.8.1
4
+
5
+ ### Patch Changes
6
+
7
+ - [`2bed6255731de`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/2bed6255731de) -
8
+ Top-layer adoption work behind the `platform-dst-top-layer` feature flag. Public adopter APIs are
9
+ intentionally kept narrow while the top-layer API surface settles, with one exception called out
10
+ below.
11
+
12
+ Highlights:
13
+ - Pass the full `[along, away]` legacy popper offset through to the new top-layer
14
+ `placement.offset` API (via `fromLegacyPlacement`). Previously only the `away` axis was
15
+ forwarded, which dropped the `along` offset for consumers of `Popup`, `PopupSelect`,
16
+ `Spotlight`, and `Tooltip` when `platform-dst-top-layer` is enabled.
17
+ - Fix broken import of `dialogHeight` and `dialogWidth` from the removed utils module in
18
+ `@atlaskit/modal-dialog`.
19
+
20
+ Public API:
21
+ - **`@atlaskit/tooltip`** (`minor`): add an optional `testId?: string` field to `TriggerProps`.
22
+ This is additive (no existing prop changes shape). Required because `@atlaskit/button/new` (and
23
+ other `Pressable`-backed primitives) overwrite `data-testid` from spread, so the legacy
24
+ `(triggerProps as any)['data-testid']` workaround is silently absorbed by those consumers. A
25
+ typed `testId` field flows through their own `testId` destructure instead, restoring
26
+ `data-testid` propagation onto the rendered trigger element.
27
+ - **`@atlaskit/popup`**, **`@atlaskit/dropdown-menu`** (`patch`): no public type changes. Wider
28
+ `aria-haspopup` unions that the FF-on path produces are bridged at the package boundary into
29
+ `@atlaskit/top-layer` with localised `FUDGE(top-layer-api)` casts, documented in
30
+ `packages/design-system/top-layer/notes/decisions/migration-roadmap.md` ("Open API decisions
31
+ deferred to a follow-up PR"). They will be widened in a follow-up `minor` PR once the top-layer
32
+ API is committed.
33
+ - **`@atlaskit/modal-dialog`**, **`@atlaskit/select`**, **`@atlaskit/spotlight`**
34
+ (`patch`/`minor`): no public type changes; bug fixes only.
35
+
36
+ Merge-readiness fixes (FF-on test wiring + adopter behavior):
37
+ - **`@atlaskit/popup`** (`minor`): wire the compositional `PopupContent` to delegate to
38
+ `PopupContentTopLayer` when `platform-dst-top-layer` is enabled. Previously only the legacy
39
+ `Popup` component had the FF branch, leaving consumers of the compositional API on the legacy
40
+ popper path.
41
+ - **`@atlaskit/select`** (`minor`): add an `onClick` handler to the `PopupSelect` top-layer
42
+ trigger so clicks open/close the menu (mirrors the legacy global click handler in
43
+ `popup-select.tsx`). Add explicit Escape handling on the menu's `onKeyDown` so the menu closes
44
+ and focus returns to the trigger.
45
+ - **`@atlaskit/top-layer`** (`patch`): the `<dialog>` rendered by the Dialog primitive now sets
46
+ `aria-modal="true"` explicitly. Modern browsers infer modal semantics from `.showModal()` but
47
+ some assistive tech still keys off the explicit attribute.
48
+ - **`@atlaskit/top-layer`** (`patch`): guard `use-anchor-positioning` against environments where
49
+ `ResizeObserver` is not defined (e.g. jest's `node` environment, used by the post-office test
50
+ suite). The observer is used to wait for the popover's first valid layout before measuring;
51
+ consumers in non-DOM jest environments now get a no-op observer and the scroll/resize listeners
52
+ still apply if the host environment polyfills `showPopover`. Real browsers always have
53
+ `ResizeObserver`.
54
+ - **`@atlaskit/modal-dialog`** (`patch`): on the FF-on path, drop the `tabIndex={-1}` (and unused
55
+ `:focus-visible` outline) from the modal content wrapper. The native `<dialog>.showModal()`
56
+ focus-delegate algorithm picks the first focusable descendant (including `tabindex=-1`), and the
57
+ wrapper was hijacking initial focus from the close button. Also honor `shouldReturnFocus={ref}`
58
+ on the FF-on path (an unmount-cleanup focuses the ref after `dialog.close()` so it overrides the
59
+ browser's automatic return-to-trigger). Boolean `shouldReturnFocus={false}` is not yet honored
60
+ on the FF-on path — see `top-layer/notes/merge-blockers.md`.
61
+ - **`@atlaskit/datetime-picker`** (`patch`): on the FF-on path, set `mode="manual"` on the
62
+ `Popup.Content` rendered by both `internal/menu-top-layer.tsx` (date-picker calendar) and
63
+ `internal/fixed-layer-menu-top-layer.tsx` (time-picker menu). With the default `mode="auto"`,
64
+ the same click event that opens the menu (which targets the react-select combobox input —
65
+ outside the popover element) bubbles to the browser's native popover light-dismiss handler and
66
+ immediately closes the menu. react-select / DateTimePicker already own outside-click and Esc
67
+ dismissal via their own state, so opting out of the native auto-dismiss is the correct
68
+ integration. Also extend the existing Esc → trigger-focus restoration in
69
+ `components/date-picker.tsx` to the FF-on path (manual mode disables the browser's built-in
70
+ focus return, and the legacy code path was already handling this for itself behind an FF
71
+ negation).
72
+ - **`@atlaskit/popup`** (no public API change): no source changes — only FF-on Playwright
73
+ spec/example fixes drove the suite from 21/3/2 to 27/0/0. Notable: the two `test.fixme`'d
74
+ nested-popover cases were not browser limitations; `popover="auto"` chains correctly via DOM
75
+ ancestry (the original fixmes had the wrong testId selector). Added `testId` props to two
76
+ examples (`16-popup-with-a11y-props`, `18-should-fit-container`) so default-shape tests can
77
+ reach the trigger.
78
+ - Test alignment for FF-on Playwright suites across `popup`, `select`, `datetime-picker`,
79
+ `inline-dialog`, `inline-message`, and `modal-dialog`: selector updates to match the new
80
+ top-layer testId convention (`${testId}--content`, `[role="dialog"][aria-label="calendar"]`),
81
+ per-spec `skipAxeCheck()` for example-level color-contrast violations unrelated to the
82
+ migration, and focus assertions adjusted to match native `<dialog>` / `Popup.Content` auto-focus
83
+ semantics (focus lands on the first focusable child, not the dialog container itself).
84
+ - **`@atlassian/capacity-planning-capacity-graph`**, **`@atlaskit/color-picker`**,
85
+ **`@atlassian/timeline-table`**, **`@atlassian/global-side-navigation`** (`patch`): scope `fg`
86
+ mocks in unit tests so `platform-dst-top-layer` returns `false`. JSDOM does not implement the
87
+ native Popover API (`showPopover`/`hidePopover`/`toggle` events), so leaving the gate ON in unit
88
+ tests caused popover content to remain in the DOM after close and broke close-behaviour
89
+ assertions. Browser coverage for the FF-on path is provided by the Playwright suites listed
90
+ above.
91
+ - **`@atlaskit/dropdown-menu`** (no public API change): test/example-only fixes for the FF-on
92
+ Playwright suite. Added `role="menuitem"` to the nested-trigger `ButtonItem` in
93
+ `examples/93-testing-nested-keyboard-navigation-top-layer.tsx` to satisfy axe's
94
+ `aria-required-children` rule on the parent menu. Added a `test.beforeEach(skipAxeCheck)` to
95
+ `dropdown-menu.spec.tsx` (FF-on suite) for example-level `color-contrast` violations on the
96
+ pre-existing `color.text.selected`/`color.background.selected` token pair (3.91:1). Replaced a
97
+ deadlocking `await expect(moveItem).not.toBeFocused()` pre-open assertion (Playwright's
98
+ auto-wait blocks 5s on the absent element) with `await expect(moveItem).not.toBeVisible()`.
99
+ Suite result: 22/22 passing.
100
+
101
+ - Updated dependencies
102
+
103
+ ## 17.8.0
104
+
105
+ ### Minor Changes
106
+
107
+ - [`aef119573f01b`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/aef119573f01b) -
108
+ Autofix: add explicit package exports (barrel removal)
109
+
3
110
  ## 17.7.0
4
111
 
5
112
  ### Minor Changes
@@ -0,0 +1,17 @@
1
+ {
2
+ "name": "@atlaskit/datetime-picker/date-picker",
3
+ "main": "../dist/cjs/entry-points/date-picker.js",
4
+ "module": "../dist/esm/entry-points/date-picker.js",
5
+ "module:es2019": "../dist/es2019/entry-points/date-picker.js",
6
+ "sideEffects": [
7
+ "**/*.compiled.css"
8
+ ],
9
+ "types": "../dist/types/entry-points/date-picker.d.ts",
10
+ "typesVersions": {
11
+ ">=4.5 <5.9": {
12
+ "*": [
13
+ "../dist/types-ts4.5/entry-points/date-picker.d.ts"
14
+ ]
15
+ }
16
+ }
17
+ }
@@ -0,0 +1,17 @@
1
+ {
2
+ "name": "@atlaskit/datetime-picker/date-time-picker",
3
+ "main": "../dist/cjs/entry-points/date-time-picker.js",
4
+ "module": "../dist/esm/entry-points/date-time-picker.js",
5
+ "module:es2019": "../dist/es2019/entry-points/date-time-picker.js",
6
+ "sideEffects": [
7
+ "**/*.compiled.css"
8
+ ],
9
+ "types": "../dist/types/entry-points/date-time-picker.d.ts",
10
+ "typesVersions": {
11
+ ">=4.5 <5.9": {
12
+ "*": [
13
+ "../dist/types-ts4.5/entry-points/date-time-picker.d.ts"
14
+ ]
15
+ }
16
+ }
17
+ }
@@ -22,9 +22,10 @@ var _css = require("@atlaskit/css");
22
22
  var _useId = require("@atlaskit/ds-lib/use-id");
23
23
  var _calendar = _interopRequireDefault(require("@atlaskit/icon/core/calendar"));
24
24
  var _locale = require("@atlaskit/locale");
25
+ var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
25
26
  var _compiled = require("@atlaskit/primitives/compiled");
26
27
  var _select = _interopRequireWildcard(require("@atlaskit/select"));
27
- var _internal = require("../internal");
28
+ var _emptyComponent = require("../internal/empty-component");
28
29
  var _formatDate = require("../internal/format-date");
29
30
  var _getParsedIso = require("../internal/get-parsed-iso");
30
31
  var _getPlaceholder = require("../internal/get-placeholder");
@@ -33,6 +34,7 @@ var _getShortIsoString = require("../internal/get-short-iso-string");
33
34
  var _indicatorsContainer = require("../internal/indicators-container");
34
35
  var _isDateDisabled = require("../internal/is-date-disabled");
35
36
  var _menu = require("../internal/menu");
37
+ var _menuTopLayer = require("../internal/menu-top-layer");
36
38
  var _parseDate = require("../internal/parse-date");
37
39
  var _singleValue = require("../internal/single-value");
38
40
  var _excluded = ["appearance", "autoFocus", "clearControlLabel", "hideIcon", "openCalendarLabel", "defaultIsOpen", "defaultValue", "disabled", "disabledDateFilter", "icon", "id", "innerProps", "inputLabel", "inputLabelId", "isDisabled", "isInvalid", "isRequired", "label", "name", "onBlur", "onChange", "onFocus", "selectProps", "shouldShowCalendarButton", "spacing", "locale", "value", "isOpen", "maxDate", "minDate", "weekStartDay", "formatDisplayLabel", "testId", "aria-describedby", "placeholder", "nextMonthLabel", "previousMonthLabel"]; /// <reference types="node" />
@@ -42,7 +44,7 @@ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r
42
44
  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; }
43
45
  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; }
44
46
  var packageName = "@atlaskit/datetime-picker";
45
- var packageVersion = "0.0.0-development";
47
+ var packageVersion = "17.8.0";
46
48
  var styles = {
47
49
  pickerContainerStyle: "_kqswh2mm",
48
50
  dropdownIndicatorStyles: "_1ul91k8s _1tke1k8s _1e0c1txw _4cvr1h6o _1bah1h6o",
@@ -199,10 +201,14 @@ var DatePicker = /*#__PURE__*/(0, _react.forwardRef)(function (props, _forwarded
199
201
  return;
200
202
  }
201
203
  if (isOpen && wasOpenedFromCalendarButton) {
202
- var _calendarRef$current;
203
204
  setIsKeyDown(false);
204
- // Focus on the first button within the calendar
205
- calendarRef === null || calendarRef === void 0 || (_calendarRef$current = calendarRef.current) === null || _calendarRef$current === void 0 || (_calendarRef$current = _calendarRef$current.querySelector('button')) === null || _calendarRef$current === void 0 || _calendarRef$current.focus();
205
+ // When using top-layer, Popup.Content with role='dialog' automatically
206
+ // focuses the first focusable element no manual focus needed.
207
+ if (!(0, _platformFeatureFlags.fg)('platform-dst-top-layer')) {
208
+ var _calendarRef$current;
209
+ // Focus on the first button within the calendar
210
+ calendarRef === null || calendarRef === void 0 || (_calendarRef$current = calendarRef.current) === null || _calendarRef$current === void 0 || (_calendarRef$current = _calendarRef$current.querySelector('button')) === null || _calendarRef$current === void 0 || _calendarRef$current.focus();
211
+ }
206
212
  }
207
213
  }, [isKeyDown, calendarRef, isOpen, wasOpenedFromCalendarButton]);
208
214
  var getValue = function getValue() {
@@ -226,19 +232,17 @@ var DatePicker = /*#__PURE__*/(0, _react.forwardRef)(function (props, _forwarded
226
232
  setWasOpenedFromCalendarButton(false);
227
233
  onChangePropWithAnalytics(iso);
228
234
 
229
- // Yes, this is not ideal. The alternative is to be able to place a ref
230
- // on the inner input of Select itself, which would require a lot of
231
- // extra stuff in the Select component for only this one thing. While
232
- // this would be more "React-y", it doesn't seem to pose any other
233
- // benefits. Performance-wise, we are only searching within the
234
- // container, so it's quick.
235
- if (wasOpenedFromCalendarButton) {
236
- var _calendarButtonRef$cu;
237
- (_calendarButtonRef$cu = calendarButtonRef.current) === null || _calendarButtonRef$cu === void 0 || _calendarButtonRef$cu.focus();
238
- } else {
239
- var _containerRef$current;
240
- var innerCombobox = containerRef === null || containerRef === void 0 || (_containerRef$current = containerRef.current) === null || _containerRef$current === void 0 ? void 0 : _containerRef$current.querySelector('[role="combobox"]');
241
- innerCombobox === null || innerCombobox === void 0 || innerCombobox.focus();
235
+ // When using top-layer, PopupContent handles focus restoration automatically
236
+ // on close based on the role. Only manually restore focus for the legacy path.
237
+ if (!(0, _platformFeatureFlags.fg)('platform-dst-top-layer')) {
238
+ if (wasOpenedFromCalendarButton) {
239
+ var _calendarButtonRef$cu;
240
+ (_calendarButtonRef$cu = calendarButtonRef.current) === null || _calendarButtonRef$cu === void 0 || _calendarButtonRef$cu.focus();
241
+ } else {
242
+ var _containerRef$current;
243
+ var innerCombobox = containerRef === null || containerRef === void 0 || (_containerRef$current = containerRef.current) === null || _containerRef$current === void 0 ? void 0 : _containerRef$current.querySelector('[role="combobox"]');
244
+ innerCombobox === null || innerCombobox === void 0 || innerCombobox.focus();
245
+ }
242
246
  }
243
247
  setIsOpen(false);
244
248
  };
@@ -318,12 +322,12 @@ var DatePicker = /*#__PURE__*/(0, _react.forwardRef)(function (props, _forwarded
318
322
  }
319
323
  switch (keyPressed) {
320
324
  case 'escape':
321
- // Yes, this is not ideal. The alternative is to be able to place a ref
322
- // on the inner input of Select itself, which would require a lot of
323
- // extra stuff in the Select component for only this one thing. While
324
- // this would be more "React-y", it doesn't seem to pose any other
325
- // benefits. Performance-wise, we are only searching within the
326
- // container, so it's quick.
325
+ // Restore focus on close. Both code paths handle this here:
326
+ // the legacy path because it has no built-in restoration, and
327
+ // the top-layer path because the menu uses `mode="manual"` to
328
+ // avoid the auto-popover light-dismiss closing the menu on the
329
+ // same click that opens it (see internal/menu-top-layer.tsx).
330
+ // `manual` mode disables the browser's native focus return.
327
331
  if (wasOpenedFromCalendarButton) {
328
332
  var _calendarButtonRef$cu2;
329
333
  (_calendarButtonRef$cu2 = calendarButtonRef.current) === null || _calendarButtonRef$cu2 === void 0 || _calendarButtonRef$cu2.focus();
@@ -465,7 +469,7 @@ var DatePicker = /*#__PURE__*/(0, _react.forwardRef)(function (props, _forwarded
465
469
  lang: propLocale
466
470
  });
467
471
  var selectComponents = _objectSpread(_objectSpread(_objectSpread({}, selectProps.components), {}, {
468
- DropdownIndicator: shouldShowCalendarButton ? _internal.EmptyComponent : dropDownIcon
472
+ DropdownIndicator: shouldShowCalendarButton ? _emptyComponent.EmptyComponent : dropDownIcon
469
473
  }, shouldShowCalendarButton ? {
470
474
  IndicatorsContainer: function IndicatorsContainer(props) {
471
475
  return /*#__PURE__*/React.createElement(_indicatorsContainer.IndicatorsContainer, (0, _extends2.default)({}, props, {
@@ -473,10 +477,10 @@ var DatePicker = /*#__PURE__*/(0, _react.forwardRef)(function (props, _forwarded
473
477
  }));
474
478
  }
475
479
  } : {}), {}, {
476
- Menu: _menu.Menu,
480
+ Menu: (0, _platformFeatureFlags.fg)('platform-dst-top-layer') ? _menuTopLayer.MenuTopLayer : _menu.Menu,
477
481
  SingleValue: SingleValue
478
482
  }, !showClearIndicator && {
479
- ClearIndicator: _internal.EmptyComponent
483
+ ClearIndicator: _emptyComponent.EmptyComponent
480
484
  });
481
485
  var _selectProps$styles = selectProps.styles,
482
486
  selectStyles = _selectProps$styles === void 0 ? {} : _selectProps$styles;
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.timePickerDefaultAriaLabel = exports.default = exports.datePickerDefaultAriaLabel = exports.DateTimePickerWithoutAnalytics = void 0;
8
+ exports.default = exports.DateTimePickerWithoutAnalytics = void 0;
9
9
  require("./date-time-picker-class.compiled.css");
10
10
  var _runtime = require("@compiled/react/runtime");
11
11
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
@@ -19,8 +19,8 @@ var _dateFns = require("date-fns");
19
19
  var _analyticsNext = require("@atlaskit/analytics-next");
20
20
  var _crossCircle = _interopRequireDefault(require("@atlaskit/icon/core/cross-circle"));
21
21
  var _select = require("@atlaskit/select");
22
- var _internal = require("../internal");
23
22
  var _dateTimePickerContainer = require("../internal/date-time-picker-container");
23
+ var _formatDateTimeZoneIntoIso = require("../internal/format-date-time-zone-into-iso");
24
24
  var _parseTokens = require("../internal/parse-tokens");
25
25
  var _datePicker = _interopRequireDefault(require("./date-picker"));
26
26
  var _timePicker = _interopRequireDefault(require("./time-picker"));
@@ -30,7 +30,7 @@ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbol
30
30
  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; } /// <reference types="node" />
31
31
  // oxlint-disable-next-line @atlassian/no-restricted-imports
32
32
  var packageName = "@atlaskit/datetime-picker";
33
- var packageVersion = "0.0.0-development";
33
+ var packageVersion = "17.8.0";
34
34
  var compiledStyles = {
35
35
  datePickerContainerStyles: "_i0dl1ssb _16jlkb7n _1o9zidpf",
36
36
  timePickerContainerStyles: "_i0dl1ssb _16jlkb7n",
@@ -63,8 +63,6 @@ var dateTimePickerDefaultProps = {
63
63
  // Not including a default prop for value as it will
64
64
  // Make the component a controlled component
65
65
  };
66
- var datePickerDefaultAriaLabel = exports.datePickerDefaultAriaLabel = 'Date';
67
- var timePickerDefaultAriaLabel = exports.timePickerDefaultAriaLabel = 'Time';
68
66
 
69
67
  // eslint-disable-next-line @repo/internal/react/no-class-components
70
68
  var DateTimePickerComponent = exports.DateTimePickerWithoutAnalytics = /*#__PURE__*/function (_React$Component) {
@@ -215,10 +213,10 @@ var DateTimePickerComponent = exports.DateTimePickerWithoutAnalytics = /*#__PURE
215
213
  });
216
214
  if (dateValue && timeValue) {
217
215
  var _this$props$onChange, _this$props5;
218
- var value = (0, _internal.formatDateTimeZoneIntoIso)(dateValue, timeValue, zoneValue);
216
+ var value = (0, _formatDateTimeZoneIntoIso.formatDateTimeZoneIntoIso)(dateValue, timeValue, zoneValue);
219
217
  var _this$parseValue = this.parseValue(value, dateValue, timeValue, zoneValue),
220
218
  parsedZone = _this$parseValue.zoneValue;
221
- var valueWithValidZone = (0, _internal.formatDateTimeZoneIntoIso)(dateValue, timeValue, parsedZone);
219
+ var valueWithValidZone = (0, _formatDateTimeZoneIntoIso.formatDateTimeZoneIntoIso)(dateValue, timeValue, parsedZone);
222
220
  this.setState({
223
221
  value: valueWithValidZone
224
222
  });
@@ -271,13 +269,13 @@ var DateTimePickerComponent = exports.DateTimePickerWithoutAnalytics = /*#__PURE
271
269
  var timeValue = parsedValues === null || parsedValues === void 0 ? void 0 : parsedValues.timeValue;
272
270
  var datePickerSelectProps = datePickerProps === null || datePickerProps === void 0 ? void 0 : datePickerProps.selectProps;
273
271
  var datePickerAriaDescribedBy = datePickerProps['aria-describedby'] || ariaDescribedBy;
274
- var datePickerLabel = datePickerProps.label || datePickerDefaultAriaLabel;
272
+ var datePickerLabel = datePickerProps.label || 'Date';
275
273
  var mergedDatePickerSelectProps = _objectSpread(_objectSpread({}, datePickerSelectProps), {}, {
276
274
  styles: (0, _select.mergeStyles)(styles, datePickerSelectProps === null || datePickerSelectProps === void 0 ? void 0 : datePickerSelectProps.styles)
277
275
  });
278
276
  var timePickerSelectProps = timePickerProps === null || timePickerProps === void 0 ? void 0 : timePickerProps.selectProps;
279
277
  var timePickerAriaDescribedBy = timePickerProps['aria-describedby'] || ariaDescribedBy;
280
- var timePickerLabel = timePickerProps.label || timePickerDefaultAriaLabel;
278
+ var timePickerLabel = timePickerProps.label || 'Time';
281
279
  var mergedTimePickerSelectProps = _objectSpread(_objectSpread({}, timePickerSelectProps), {}, {
282
280
  styles: (0, _select.mergeStyles)(styles, timePickerSelectProps === null || timePickerSelectProps === void 0 ? void 0 : timePickerSelectProps.styles)
283
281
  });
@@ -405,4 +403,6 @@ var DateTimePicker = (0, _analyticsNext.withAnalyticsContext)({
405
403
  }
406
404
  })
407
405
  })(DateTimePickerComponent));
406
+
407
+ // eslint-disable-next-line @atlaskit/volt-strict-mode/no-multiple-exports
408
408
  var _default = exports.default = DateTimePicker;
@@ -6,7 +6,7 @@ var _typeof = require("@babel/runtime/helpers/typeof");
6
6
  Object.defineProperty(exports, "__esModule", {
7
7
  value: true
8
8
  });
9
- exports.timePickerDefaultAriaLabel = exports.default = exports.datePickerDefaultAriaLabel = void 0;
9
+ exports.default = void 0;
10
10
  require("./date-time-picker-fc.compiled.css");
11
11
  var _runtime = require("@compiled/react/runtime");
12
12
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
@@ -20,8 +20,8 @@ var _new = require("@atlaskit/button/new");
20
20
  var _crossCircle = _interopRequireDefault(require("@atlaskit/icon/core/cross-circle"));
21
21
  var _compiled = require("@atlaskit/primitives/compiled");
22
22
  var _select = require("@atlaskit/select");
23
- var _internal = require("../internal");
24
23
  var _dateTimePickerContainer = require("../internal/date-time-picker-container");
24
+ var _formatDateTimeZoneIntoIso = require("../internal/format-date-time-zone-into-iso");
25
25
  var _parseTokens = require("../internal/parse-tokens");
26
26
  var _datePicker = _interopRequireDefault(require("./date-picker"));
27
27
  var _timePicker = _interopRequireDefault(require("./time-picker"));
@@ -33,7 +33,7 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
33
33
  // for typing `process`
34
34
  // oxlint-disable-next-line @atlassian/no-restricted-imports
35
35
  var packageName = "@atlaskit/datetime-picker";
36
- var packageVersion = "0.0.0-development";
36
+ var packageVersion = "17.8.0";
37
37
  var analyticsAttributes = {
38
38
  componentName: 'dateTimePicker',
39
39
  packageName: packageName,
@@ -73,9 +73,6 @@ var styles = {
73
73
  * that the previous useState approach missed.
74
74
  */
75
75
 
76
- var datePickerDefaultAriaLabel = exports.datePickerDefaultAriaLabel = 'Date';
77
- var timePickerDefaultAriaLabel = exports.timePickerDefaultAriaLabel = 'Time';
78
-
79
76
  /**
80
77
  * __Date time picker__
81
78
  *
@@ -328,10 +325,10 @@ var DateTimePicker = /*#__PURE__*/(0, _react.forwardRef)(function (_ref2, _ref)
328
325
  providedTimeValue = _ref3.providedTimeValue,
329
326
  providedZoneValue = _ref3.providedZoneValue;
330
327
  if (providedDateValue && providedTimeValue) {
331
- var isoValue = (0, _internal.formatDateTimeZoneIntoIso)(providedDateValue, providedTimeValue, providedZoneValue);
328
+ var isoValue = (0, _formatDateTimeZoneIntoIso.formatDateTimeZoneIntoIso)(providedDateValue, providedTimeValue, providedZoneValue);
332
329
  var _parseValue = parseValue(isoValue, providedDateValue, providedTimeValue, providedZoneValue),
333
330
  parsedZone = _parseValue.zoneValue;
334
- var valueWithValidZone = (0, _internal.formatDateTimeZoneIntoIso)(providedDateValue, providedTimeValue, parsedZone);
331
+ var valueWithValidZone = (0, _formatDateTimeZoneIntoIso.formatDateTimeZoneIntoIso)(providedDateValue, providedTimeValue, parsedZone);
335
332
  dispatch({
336
333
  type: 'APPLY',
337
334
  payload: {
@@ -15,18 +15,23 @@ var _dateFns = require("date-fns");
15
15
  var _analyticsNext = require("@atlaskit/analytics-next");
16
16
  var _noop = _interopRequireDefault(require("@atlaskit/ds-lib/noop"));
17
17
  var _locale = require("@atlaskit/locale");
18
+ var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
18
19
  var _select = _interopRequireWildcard(require("@atlaskit/select"));
19
- var _internal = require("../internal");
20
+ var _defaultTimes = require("../internal/default-times");
21
+ var _emptyComponent = require("../internal/empty-component");
20
22
  var _fixedLayerMenu = require("../internal/fixed-layer-menu");
23
+ var _fixedLayerMenuTopLayer = require("../internal/fixed-layer-menu-top-layer");
21
24
  var _parseTime = _interopRequireDefault(require("../internal/parse-time"));
22
25
  var _parseTokens = require("../internal/parse-tokens");
26
+ var _placeholderDateTime = require("../internal/placeholder-date-time");
23
27
  var _singleValue = require("../internal/single-value");
24
28
  var _excluded = ["styles"];
25
29
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
26
30
  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; }
27
31
  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; } // oxlint-disable-next-line @atlassian/no-restricted-imports
28
32
  var packageName = "@atlaskit/datetime-picker";
29
- var packageVersion = "0.0.0-development";
33
+ var packageVersion = "17.8.0";
34
+ var defaultTimeFormat = 'h:mma';
30
35
  var menuStyles = {
31
36
  /* Need to remove default absolute positioning as that causes issues with position fixed */
32
37
  position: 'static',
@@ -102,7 +107,7 @@ var TimePicker = /*#__PURE__*/(0, _react.forwardRef)(function (_ref2, _ref) {
102
107
  _ref2$timeIsEditable = _ref2.timeIsEditable,
103
108
  timeIsEditable = _ref2$timeIsEditable === void 0 ? false : _ref2$timeIsEditable,
104
109
  _ref2$times = _ref2.times,
105
- times = _ref2$times === void 0 ? _internal.defaultTimes : _ref2$times,
110
+ times = _ref2$times === void 0 ? _defaultTimes.defaultTimes : _ref2$times,
106
111
  providedValue = _ref2.value;
107
112
  var _useState = (0, _react.useState)(null),
108
113
  _useState2 = (0, _slicedToArray2.default)(_useState, 2),
@@ -168,7 +173,7 @@ var TimePicker = /*#__PURE__*/(0, _react.forwardRef)(function (_ref2, _ref) {
168
173
  if (timeIsEditable) {
169
174
  var sanitizedInput;
170
175
  try {
171
- sanitizedInput = parseInputValue(inputValue, timeFormat || _internal.defaultTimeFormat);
176
+ sanitizedInput = parseInputValue(inputValue, timeFormat || defaultTimeFormat);
172
177
  } catch (_unused) {
173
178
  return; // do nothing, the main validation should happen in the form
174
179
  }
@@ -239,7 +244,7 @@ var TimePicker = /*#__PURE__*/(0, _react.forwardRef)(function (_ref2, _ref) {
239
244
  */
240
245
  var formatTime = function formatTime(time) {
241
246
  if (formatDisplayLabel) {
242
- return formatDisplayLabel(time, timeFormat || _internal.defaultTimeFormat);
247
+ return formatDisplayLabel(time, timeFormat || defaultTimeFormat);
243
248
  }
244
249
  var date = (0, _parseTime.default)(time);
245
250
  if (!(date instanceof Date)) {
@@ -277,11 +282,11 @@ var TimePicker = /*#__PURE__*/(0, _react.forwardRef)(function (_ref2, _ref) {
277
282
  lang: locale
278
283
  });
279
284
  var selectComponents = _objectSpread({
280
- DropdownIndicator: _internal.EmptyComponent,
281
- Menu: _fixedLayerMenu.FixedLayerMenu,
285
+ DropdownIndicator: _emptyComponent.EmptyComponent,
286
+ Menu: (0, _platformFeatureFlags.fg)('platform-dst-top-layer') ? _fixedLayerMenuTopLayer.FixedLayerMenuTopLayer : _fixedLayerMenu.FixedLayerMenu,
282
287
  SingleValue: SingleValue
283
288
  }, hideIcon && {
284
- ClearIndicator: _internal.EmptyComponent
289
+ ClearIndicator: _emptyComponent.EmptyComponent
285
290
  });
286
291
  var renderIconContainer = Boolean(!hideIcon && value);
287
292
 
@@ -338,7 +343,7 @@ var TimePicker = /*#__PURE__*/(0, _react.forwardRef)(function (_ref2, _ref) {
338
343
  onFocus: onFocus,
339
344
  onMenuOpen: onMenuOpen,
340
345
  onMenuClose: onMenuClose,
341
- placeholder: placeholder || l10n.formatTime(_internal.placeholderDatetime)
346
+ placeholder: placeholder || l10n.formatTime(_placeholderDateTime.placeholderDatetime)
342
347
  // @ts-ignore - Type mismatch with styles config - workaround for help-center local consumption
343
348
  ,
344
349
  styles: mergedStyles,
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ Object.defineProperty(exports, "default", {
8
+ enumerable: true,
9
+ get: function get() {
10
+ return _datePicker.default;
11
+ }
12
+ });
13
+ var _datePicker = _interopRequireDefault(require("../components/date-picker"));
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ Object.defineProperty(exports, "default", {
8
+ enumerable: true,
9
+ get: function get() {
10
+ return _dateTimePicker.default;
11
+ }
12
+ });
13
+ var _dateTimePicker = _interopRequireDefault(require("../components/date-time-picker"));
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ Object.defineProperty(exports, "default", {
8
+ enumerable: true,
9
+ get: function get() {
10
+ return _timePicker.default;
11
+ }
12
+ });
13
+ var _timePicker = _interopRequireDefault(require("../components/time-picker"));
@@ -0,0 +1 @@
1
+ "use strict";
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.defaultDateFormat = void 0;
7
+ var defaultDateFormat = exports.defaultDateFormat = 'YYYY/MM/DD';
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.defaultTimes = void 0;
7
+ var defaultTimes = exports.defaultTimes = ['09:00', '09:30', '10:00', '10:30', '11:00', '11:30', '12:00', '12:30', '13:00', '13:30', '14:00', '14:30', '15:00', '15:30', '16:00', '16:30', '17:00', '17:30', '18:00'];
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.EmptyComponent = void 0;
7
+ /**
8
+ * This component is used to hide portions of Select component.
9
+ */
10
+ var EmptyComponent = exports.EmptyComponent = function EmptyComponent() {
11
+ return null;
12
+ };