baseui 10.6.0 → 10.7.0
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/app-nav-bar/user-menu.js +1 -0
- package/app-nav-bar/user-menu.js.flow +1 -0
- package/card/styled-components.js +0 -1
- package/card/styled-components.js.flow +0 -1
- package/combobox/combobox.js +5 -1
- package/combobox/combobox.js.flow +4 -0
- package/combobox/index.d.ts +6 -3
- package/data-table/column-datetime.js +2 -0
- package/data-table/column-datetime.js.flow +2 -0
- package/datepicker/calendar-header.js +29 -15
- package/datepicker/calendar-header.js.flow +13 -7
- package/datepicker/calendar.js +6 -1
- package/datepicker/calendar.js.flow +5 -1
- package/datepicker/constants.js +7 -2
- package/datepicker/constants.js.flow +5 -0
- package/datepicker/datepicker.js +135 -73
- package/datepicker/datepicker.js.flow +161 -62
- package/datepicker/day.js +1 -0
- package/datepicker/day.js.flow +1 -0
- package/datepicker/index.d.ts +7 -0
- package/datepicker/month.js +4 -0
- package/datepicker/month.js.flow +3 -0
- package/datepicker/styled-components.js +116 -56
- package/datepicker/styled-components.js.flow +101 -36
- package/datepicker/types.js.flow +17 -1
- package/datepicker/utils/date-helpers.js +1 -1
- package/datepicker/utils/date-helpers.js.flow +1 -1
- package/datepicker/week.js +1 -0
- package/datepicker/week.js.flow +1 -0
- package/dnd-list/list.js +1 -2
- package/dnd-list/list.js.flow +1 -1
- package/dnd-list/styled-components.js +1 -1
- package/dnd-list/styled-components.js.flow +1 -0
- package/es/app-nav-bar/user-menu.js +1 -0
- package/es/card/styled-components.js +0 -1
- package/es/combobox/combobox.js +5 -1
- package/es/data-table/column-datetime.js +2 -0
- package/es/datepicker/calendar-header.js +21 -10
- package/es/datepicker/calendar.js +7 -2
- package/es/datepicker/constants.js +5 -1
- package/es/datepicker/datepicker.js +70 -42
- package/es/datepicker/day.js +1 -0
- package/es/datepicker/month.js +3 -0
- package/es/datepicker/styled-components.js +98 -37
- package/es/datepicker/types.js +1 -1
- package/es/datepicker/utils/date-helpers.js +1 -1
- package/es/datepicker/week.js +1 -0
- package/es/dnd-list/list.js +1 -2
- package/es/dnd-list/styled-components.js +1 -0
- package/es/helper/helper.js +1 -0
- package/es/layer/layer.js +8 -0
- package/es/menu/maybe-child-menu.js +1 -0
- package/es/popover/popover.js +6 -5
- package/es/popover/stateful-container.js +4 -2
- package/es/select/select-component.js +1 -0
- package/es/themes/shared/lighting.js +5 -1
- package/es/timepicker/timepicker.js +16 -11
- package/es/tooltip/tooltip.js +1 -0
- package/esm/app-nav-bar/user-menu.js +1 -0
- package/esm/card/styled-components.js +0 -1
- package/esm/combobox/combobox.js +5 -1
- package/esm/data-table/column-datetime.js +2 -0
- package/esm/datepicker/calendar-header.js +30 -16
- package/esm/datepicker/calendar.js +7 -2
- package/esm/datepicker/constants.js +5 -1
- package/esm/datepicker/datepicker.js +136 -74
- package/esm/datepicker/day.js +1 -0
- package/esm/datepicker/month.js +3 -0
- package/esm/datepicker/styled-components.js +112 -55
- package/esm/datepicker/types.js +1 -1
- package/esm/datepicker/utils/date-helpers.js +1 -1
- package/esm/datepicker/week.js +1 -0
- package/esm/dnd-list/list.js +1 -2
- package/esm/dnd-list/styled-components.js +1 -1
- package/esm/helper/helper.js +1 -0
- package/esm/layer/layer.js +8 -0
- package/esm/menu/maybe-child-menu.js +1 -0
- package/esm/popover/popover.js +6 -5
- package/esm/popover/stateful-container.js +4 -2
- package/esm/select/select-component.js +1 -0
- package/esm/themes/shared/lighting.js +5 -1
- package/esm/timepicker/timepicker.js +17 -11
- package/esm/tooltip/tooltip.js +1 -0
- package/helper/helper.js +1 -0
- package/helper/helper.js.flow +1 -0
- package/layer/layer.js +8 -0
- package/layer/layer.js.flow +9 -0
- package/map-marker/index.d.ts +6 -5
- package/menu/maybe-child-menu.js +1 -0
- package/menu/maybe-child-menu.js.flow +1 -0
- package/modal/index.d.ts +1 -1
- package/modal/types.js.flow +4 -1
- package/package.json +3 -2
- package/popover/index.d.ts +2 -1
- package/popover/popover.js +6 -5
- package/popover/popover.js.flow +11 -4
- package/popover/stateful-container.js +4 -2
- package/popover/stateful-container.js.flow +2 -0
- package/popover/types.js.flow +6 -1
- package/select/select-component.js +1 -0
- package/select/select-component.js.flow +1 -0
- package/snackbar/index.d.ts +21 -16
- package/themes/shared/lighting.js +5 -1
- package/themes/shared/lighting.js.flow +4 -0
- package/themes/types.js.flow +4 -0
- package/timepicker/index.d.ts +1 -0
- package/timepicker/timepicker.js +17 -11
- package/timepicker/timepicker.js.flow +31 -12
- package/timepicker/types.js.flow +10 -0
- package/tooltip/tooltip.js +1 -0
- package/tooltip/tooltip.js.flow +6 -1
package/modal/types.js.flow
CHANGED
|
@@ -48,7 +48,10 @@ export type ModalPropsT = {
|
|
|
48
48
|
* Optionally, can pass focus options instead of `true` to control the focus
|
|
49
49
|
* more precisely (ie. `{ preventScroll: true }`)
|
|
50
50
|
*/
|
|
51
|
-
returnFocus?:
|
|
51
|
+
returnFocus?:
|
|
52
|
+
| boolean
|
|
53
|
+
| FocusOptions
|
|
54
|
+
| ((returnTo: Element) => boolean | FocusOptions),
|
|
52
55
|
/** Modal content. The children-as-function API may be preferable
|
|
53
56
|
* for performance reasons (wont render until opened) */
|
|
54
57
|
children?: React.Node | (() => React.Node),
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "baseui",
|
|
3
|
-
"version": "10.
|
|
3
|
+
"version": "10.7.0",
|
|
4
4
|
"description": "A React Component library implementing the Base design language",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"react",
|
|
@@ -197,10 +197,11 @@
|
|
|
197
197
|
"glob": "^7.1.6",
|
|
198
198
|
"just-extend": "^4.0.2",
|
|
199
199
|
"memoize-one": "^5.1.1",
|
|
200
|
+
"mockdate": "^3.0.5",
|
|
200
201
|
"polished": "^3.2.0",
|
|
201
202
|
"popper.js": "^1.16.0",
|
|
202
203
|
"react-dropzone": "^9.0.0",
|
|
203
|
-
"react-focus-lock": "^2.
|
|
204
|
+
"react-focus-lock": "^2.7.1",
|
|
204
205
|
"react-input-mask": "^2.0.4",
|
|
205
206
|
"react-is": "^16.8.6",
|
|
206
207
|
"react-movable": "^2.5.4",
|
package/popover/index.d.ts
CHANGED
|
@@ -96,7 +96,8 @@ export interface BasePopoverProps {
|
|
|
96
96
|
accessibilityType?: ACCESSIBILITY_TYPE[keyof ACCESSIBILITY_TYPE];
|
|
97
97
|
focusLock?: boolean;
|
|
98
98
|
autoFocus?: boolean;
|
|
99
|
-
|
|
99
|
+
focusOptions?: FocusOptions;
|
|
100
|
+
returnFocus?: boolean | FocusOptions | ((returnTo: Element) => (boolean | FocusOptions));
|
|
100
101
|
'data-baseweb'?: string;
|
|
101
102
|
id?: string;
|
|
102
103
|
ignoreBoundary?: boolean;
|
package/popover/popover.js
CHANGED
|
@@ -7,7 +7,7 @@ exports.default = void 0;
|
|
|
7
7
|
|
|
8
8
|
var React = _interopRequireWildcard(require("react"));
|
|
9
9
|
|
|
10
|
-
var _reactFocusLock =
|
|
10
|
+
var _reactFocusLock = _interopRequireWildcard(require("react-focus-lock"));
|
|
11
11
|
|
|
12
12
|
var _overrides = require("../helpers/overrides.js");
|
|
13
13
|
|
|
@@ -213,7 +213,7 @@ var PopoverInner = /*#__PURE__*/function (_React$Component) {
|
|
|
213
213
|
value: function componentDidUpdate(prevProps, prevState) {
|
|
214
214
|
this.init(prevProps, prevState);
|
|
215
215
|
|
|
216
|
-
if (this.props.autoFocus &&
|
|
216
|
+
if (this.props.autoFocus && !this.state.autoFocusAfterPositioning && this.popperRef.current !== null && this.popperRef.current.getBoundingClientRect().top > 0) {
|
|
217
217
|
this.setState({
|
|
218
218
|
autoFocusAfterPositioning: true
|
|
219
219
|
});
|
|
@@ -529,9 +529,10 @@ var PopoverInner = /*#__PURE__*/function (_React$Component) {
|
|
|
529
529
|
disabled: !this.props.focusLock,
|
|
530
530
|
noFocusGuards: false // see popover-focus-loop.scenario.js for why hover cannot return focus
|
|
531
531
|
,
|
|
532
|
-
returnFocus: this.
|
|
533
|
-
autoFocus: this.state.autoFocusAfterPositioning
|
|
534
|
-
|
|
532
|
+
returnFocus: !this.isHoverTrigger() && this.props.returnFocus,
|
|
533
|
+
autoFocus: this.state.autoFocusAfterPositioning,
|
|
534
|
+
focusOptions: this.props.focusOptions
|
|
535
|
+
}, !this.props.focusLock && this.state.autoFocusAfterPositioning ? /*#__PURE__*/React.createElement(_reactFocusLock.MoveFocusInside, null, this.renderPopover(renderedContent)) : this.renderPopover(renderedContent)))));
|
|
535
536
|
} else {
|
|
536
537
|
rendered.push( /*#__PURE__*/React.createElement(_styledComponents.Hidden, {
|
|
537
538
|
key: "hidden-layer"
|
package/popover/popover.js.flow
CHANGED
|
@@ -8,7 +8,7 @@ LICENSE file in the root directory of this source tree.
|
|
|
8
8
|
/* eslint-disable react/no-find-dom-node */
|
|
9
9
|
/* eslint-disable cup/no-undef */
|
|
10
10
|
import * as React from 'react';
|
|
11
|
-
import FocusLock from 'react-focus-lock';
|
|
11
|
+
import FocusLock, {MoveFocusInside} from 'react-focus-lock';
|
|
12
12
|
|
|
13
13
|
import {getOverride, getOverrideProps} from '../helpers/overrides.js';
|
|
14
14
|
import {
|
|
@@ -73,7 +73,6 @@ class PopoverInner extends React.Component<
|
|
|
73
73
|
this.init(prevProps, prevState);
|
|
74
74
|
if (
|
|
75
75
|
this.props.autoFocus &&
|
|
76
|
-
this.props.focusLock &&
|
|
77
76
|
!this.state.autoFocusAfterPositioning &&
|
|
78
77
|
this.popperRef.current !== null &&
|
|
79
78
|
this.popperRef.current.getBoundingClientRect().top > 0
|
|
@@ -475,10 +474,18 @@ class PopoverInner extends React.Component<
|
|
|
475
474
|
disabled={!this.props.focusLock}
|
|
476
475
|
noFocusGuards={false}
|
|
477
476
|
// see popover-focus-loop.scenario.js for why hover cannot return focus
|
|
478
|
-
returnFocus={this.
|
|
477
|
+
returnFocus={!this.isHoverTrigger() && this.props.returnFocus}
|
|
479
478
|
autoFocus={this.state.autoFocusAfterPositioning}
|
|
479
|
+
focusOptions={this.props.focusOptions}
|
|
480
480
|
>
|
|
481
|
-
{this.
|
|
481
|
+
{!this.props.focusLock &&
|
|
482
|
+
this.state.autoFocusAfterPositioning ? (
|
|
483
|
+
<MoveFocusInside>
|
|
484
|
+
{this.renderPopover(renderedContent)}
|
|
485
|
+
</MoveFocusInside>
|
|
486
|
+
) : (
|
|
487
|
+
this.renderPopover(renderedContent)
|
|
488
|
+
)}
|
|
482
489
|
</FocusLock>
|
|
483
490
|
</TetherBehavior>
|
|
484
491
|
</Layer>,
|
|
@@ -212,7 +212,8 @@ var StatefulContainer = /*#__PURE__*/function (_React$Component) {
|
|
|
212
212
|
returnFocus = _this$props.returnFocus,
|
|
213
213
|
showArrow = _this$props.showArrow,
|
|
214
214
|
triggerType = _this$props.triggerType,
|
|
215
|
-
popoverMargin = _this$props.popoverMargin
|
|
215
|
+
popoverMargin = _this$props.popoverMargin,
|
|
216
|
+
focusOptions = _this$props.focusOptions;
|
|
216
217
|
var popoverProps = {
|
|
217
218
|
accessibilityType: accessibilityType,
|
|
218
219
|
autoFocus: autoFocus,
|
|
@@ -235,7 +236,8 @@ var StatefulContainer = /*#__PURE__*/function (_React$Component) {
|
|
|
235
236
|
returnFocus: returnFocus,
|
|
236
237
|
showArrow: showArrow,
|
|
237
238
|
triggerType: triggerType,
|
|
238
|
-
popoverMargin: popoverMargin
|
|
239
|
+
popoverMargin: popoverMargin,
|
|
240
|
+
focusOptions: focusOptions
|
|
239
241
|
};
|
|
240
242
|
|
|
241
243
|
if (dismissOnClickOutside) {
|
|
@@ -171,6 +171,7 @@ class StatefulContainer extends React.Component<
|
|
|
171
171
|
showArrow,
|
|
172
172
|
triggerType,
|
|
173
173
|
popoverMargin,
|
|
174
|
+
focusOptions,
|
|
174
175
|
} = this.props;
|
|
175
176
|
|
|
176
177
|
const popoverProps: PopoverPropsWithoutChildrenT = {
|
|
@@ -196,6 +197,7 @@ class StatefulContainer extends React.Component<
|
|
|
196
197
|
showArrow,
|
|
197
198
|
triggerType,
|
|
198
199
|
popoverMargin,
|
|
200
|
+
focusOptions,
|
|
199
201
|
};
|
|
200
202
|
|
|
201
203
|
if (dismissOnClickOutside) {
|
package/popover/types.js.flow
CHANGED
|
@@ -83,6 +83,8 @@ export type BasePopoverPropsT = {
|
|
|
83
83
|
onClick?: (e: Event) => mixed,
|
|
84
84
|
/** Handler for 'Esc' keypress events */
|
|
85
85
|
onFocus?: (e: Event) => mixed,
|
|
86
|
+
/** Pass FocusOptions for focusing (used as `HtmlElement.focus(focusOptions)`) */
|
|
87
|
+
focusOptions?: FocusOptions,
|
|
86
88
|
/** Handler for mouseenter events on trigger element. */
|
|
87
89
|
onMouseEnter?: (e: Event) => mixed,
|
|
88
90
|
/** Number of milliseconds to wait before showing the popover after mouse enters the trigger element (for triggerType `hover`). */
|
|
@@ -104,7 +106,10 @@ export type BasePopoverPropsT = {
|
|
|
104
106
|
/** If true, focus will shift back to the original element that triggered the popover
|
|
105
107
|
* Be careful with elements that open the popover on focus (e.g. input) this will cause the popover to reopen on close!
|
|
106
108
|
*/
|
|
107
|
-
returnFocus?:
|
|
109
|
+
returnFocus?:
|
|
110
|
+
| boolean
|
|
111
|
+
| FocusOptions
|
|
112
|
+
| ((returnTo: Element) => boolean | FocusOptions),
|
|
108
113
|
/** Whether or not to show the arrow pointing from the popover to the trigger. */
|
|
109
114
|
showArrow?: boolean,
|
|
110
115
|
/** Whether to toggle the popover when trigger is clicked or hovered. */
|
package/snackbar/index.d.ts
CHANGED
|
@@ -1,22 +1,27 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
|
|
3
3
|
import {Override} from '../overrides';
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
4
|
+
|
|
5
|
+
declare const DURATION: {
|
|
6
|
+
infinite: number;
|
|
7
|
+
short: number;
|
|
8
|
+
medium: number;
|
|
9
|
+
long: number;
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
declare const PLACEMENT: {
|
|
13
|
+
topLeft: 'topLeft';
|
|
14
|
+
top: 'top';
|
|
15
|
+
topRight: 'topRight';
|
|
16
|
+
bottomRight: 'bottomRight';
|
|
17
|
+
bottom: 'bottom';
|
|
18
|
+
bottomLeft: 'bottomLeft';
|
|
19
|
+
};
|
|
20
|
+
export {DURATION, PLACEMENT};
|
|
21
|
+
|
|
22
|
+
export type DurationT = (typeof DURATION)[keyof typeof DURATION];
|
|
23
|
+
|
|
24
|
+
export type PlacementT = (typeof PLACEMENT)[keyof typeof PLACEMENT];
|
|
20
25
|
|
|
21
26
|
export type SnackbarElementOverridesT = {
|
|
22
27
|
Root?: Override<any>;
|
|
@@ -22,7 +22,11 @@ var lighting = {
|
|
|
22
22
|
overlay300: 'inset 0 0 0 1000px hsla(0, 0%, 0%, 0.12)',
|
|
23
23
|
overlay400: 'inset 0 0 0 1000px hsla(0, 0%, 0%, 0.16)',
|
|
24
24
|
overlay500: 'inset 0 0 0 1000px hsla(0, 0%, 0%, 0.2)',
|
|
25
|
-
overlay600: 'inset 0 0 0 1000px hsla(0, 0%, 0%, 0.24)'
|
|
25
|
+
overlay600: 'inset 0 0 0 1000px hsla(0, 0%, 0%, 0.24)',
|
|
26
|
+
shallowAbove: '0px -4px 16px rgba(0, 0, 0, 0.12)',
|
|
27
|
+
shallowBelow: '0px 4px 16px rgba(0, 0, 0, 0.12)',
|
|
28
|
+
deepAbove: '0px -16px 48px rgba(0, 0, 0, 0.22)',
|
|
29
|
+
deepBelow: '0px 16px 48px rgba(0, 0, 0, 0.22)'
|
|
26
30
|
};
|
|
27
31
|
var _default = lighting;
|
|
28
32
|
exports.default = _default;
|
|
@@ -19,6 +19,10 @@ const lighting: LightingT = {
|
|
|
19
19
|
overlay400: 'inset 0 0 0 1000px hsla(0, 0%, 0%, 0.16)',
|
|
20
20
|
overlay500: 'inset 0 0 0 1000px hsla(0, 0%, 0%, 0.2)',
|
|
21
21
|
overlay600: 'inset 0 0 0 1000px hsla(0, 0%, 0%, 0.24)',
|
|
22
|
+
shallowAbove: '0px -4px 16px rgba(0, 0, 0, 0.12)',
|
|
23
|
+
shallowBelow: '0px 4px 16px rgba(0, 0, 0, 0.12)',
|
|
24
|
+
deepAbove: '0px -16px 48px rgba(0, 0, 0, 0.22)',
|
|
25
|
+
deepBelow: '0px 16px 48px rgba(0, 0, 0, 0.22)',
|
|
22
26
|
};
|
|
23
27
|
|
|
24
28
|
export default lighting;
|
package/themes/types.js.flow
CHANGED
package/timepicker/index.d.ts
CHANGED
package/timepicker/timepicker.js
CHANGED
|
@@ -219,26 +219,31 @@ var TimePicker = /*#__PURE__*/function (_React$Component) {
|
|
|
219
219
|
_defineProperty(_assertThisInitialized(_this), "getTimeWindowInSeconds", function (step) {
|
|
220
220
|
var _this$props = _this.props,
|
|
221
221
|
min = _this$props.minTime,
|
|
222
|
-
max = _this$props.maxTime
|
|
222
|
+
max = _this$props.maxTime,
|
|
223
|
+
ignoreMinMaxDateComponent = _this$props.ignoreMinMaxDateComponent;
|
|
223
224
|
|
|
224
|
-
var
|
|
225
|
+
var dayStart = _this.setTime(_this.props.value, 0, 0, 0);
|
|
225
226
|
|
|
226
|
-
|
|
227
|
-
|
|
227
|
+
var dayEnd = _this.setTime(_this.props.value, 24, 0, 0);
|
|
228
|
+
|
|
229
|
+
if (!min || _this.props.adapter.isBefore(min, dayStart) && !ignoreMinMaxDateComponent) {
|
|
230
|
+
min = dayStart;
|
|
231
|
+
} else {
|
|
232
|
+
min = _this.setTime(_this.props.value, _this.props.adapter.getHours(min), _this.props.adapter.getMinutes(min), _this.props.adapter.getSeconds(min));
|
|
228
233
|
}
|
|
229
234
|
|
|
230
|
-
if (!max) {
|
|
231
|
-
max =
|
|
235
|
+
if (!max || _this.props.adapter.isAfter(max, dayEnd) && !ignoreMinMaxDateComponent) {
|
|
236
|
+
max = dayEnd;
|
|
232
237
|
} else {
|
|
233
|
-
// maxTime (if provided) should be inclusive, so add an extra
|
|
234
|
-
|
|
238
|
+
max = _this.setTime(_this.props.value, _this.props.adapter.getHours(max), _this.props.adapter.getMinutes(max), // maxTime (if provided) should be inclusive, so add an extra second here
|
|
239
|
+
_this.props.adapter.getSeconds(max) + 1);
|
|
235
240
|
}
|
|
236
241
|
|
|
237
242
|
var minDate = _this.props.adapter.toJsDate(min);
|
|
238
243
|
|
|
239
244
|
var maxDate = _this.props.adapter.toJsDate(max);
|
|
240
245
|
|
|
241
|
-
var midnightDate = _this.props.adapter.toJsDate(
|
|
246
|
+
var midnightDate = _this.props.adapter.toJsDate(dayStart);
|
|
242
247
|
|
|
243
248
|
return {
|
|
244
249
|
start: (minDate - midnightDate) / 1000,
|
|
@@ -325,7 +330,7 @@ var TimePicker = /*#__PURE__*/function (_React$Component) {
|
|
|
325
330
|
steps: steps,
|
|
326
331
|
value: this.props.nullable ? undefined : {
|
|
327
332
|
id: closestStep,
|
|
328
|
-
label: this.secondsToLabel(closestStep,
|
|
333
|
+
label: this.secondsToLabel(closestStep, this.props.format)
|
|
329
334
|
}
|
|
330
335
|
});
|
|
331
336
|
|
|
@@ -427,7 +432,8 @@ _defineProperty(TimePicker, "defaultProps", {
|
|
|
427
432
|
format: '12',
|
|
428
433
|
step: 900,
|
|
429
434
|
creatable: false,
|
|
430
|
-
adapter: _dateFnsAdapter.default
|
|
435
|
+
adapter: _dateFnsAdapter.default,
|
|
436
|
+
ignoreMinMaxDateComponent: false
|
|
431
437
|
});
|
|
432
438
|
|
|
433
439
|
var _default = TimePicker;
|
|
@@ -34,6 +34,7 @@ class TimePicker<T = Date> extends React.Component<
|
|
|
34
34
|
step: 900,
|
|
35
35
|
creatable: false,
|
|
36
36
|
adapter: dateFnsAdapter,
|
|
37
|
+
ignoreMinMaxDateComponent: false,
|
|
37
38
|
};
|
|
38
39
|
dateHelpers: DateHelpers<T>;
|
|
39
40
|
|
|
@@ -66,7 +67,7 @@ class TimePicker<T = Date> extends React.Component<
|
|
|
66
67
|
? undefined
|
|
67
68
|
: {
|
|
68
69
|
id: closestStep,
|
|
69
|
-
label: this.secondsToLabel(closestStep,
|
|
70
|
+
label: this.secondsToLabel(closestStep, this.props.format),
|
|
70
71
|
},
|
|
71
72
|
});
|
|
72
73
|
if (this.props.value || (!this.props.nullable && !this.props.value)) {
|
|
@@ -200,24 +201,42 @@ class TimePicker<T = Date> extends React.Component<
|
|
|
200
201
|
};
|
|
201
202
|
|
|
202
203
|
getTimeWindowInSeconds = (step: number): {start: number, end: number} => {
|
|
203
|
-
let {minTime: min, maxTime: max} = this.props;
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
204
|
+
let {minTime: min, maxTime: max, ignoreMinMaxDateComponent} = this.props;
|
|
205
|
+
const dayStart = this.setTime(this.props.value, 0, 0, 0);
|
|
206
|
+
const dayEnd = this.setTime(this.props.value, 24, 0, 0);
|
|
207
|
+
|
|
208
|
+
if (
|
|
209
|
+
!min ||
|
|
210
|
+
(this.props.adapter.isBefore(min, dayStart) && !ignoreMinMaxDateComponent)
|
|
211
|
+
) {
|
|
212
|
+
min = dayStart;
|
|
213
|
+
} else {
|
|
214
|
+
min = this.setTime(
|
|
215
|
+
this.props.value,
|
|
216
|
+
this.props.adapter.getHours(min),
|
|
217
|
+
this.props.adapter.getMinutes(min),
|
|
218
|
+
this.props.adapter.getSeconds(min),
|
|
219
|
+
);
|
|
207
220
|
}
|
|
208
|
-
|
|
209
|
-
|
|
221
|
+
|
|
222
|
+
if (
|
|
223
|
+
!max ||
|
|
224
|
+
(this.props.adapter.isAfter(max, dayEnd) && !ignoreMinMaxDateComponent)
|
|
225
|
+
) {
|
|
226
|
+
max = dayEnd;
|
|
210
227
|
} else {
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
this.props.adapter.
|
|
214
|
-
this.props.adapter.
|
|
228
|
+
max = this.setTime(
|
|
229
|
+
this.props.value,
|
|
230
|
+
this.props.adapter.getHours(max),
|
|
231
|
+
this.props.adapter.getMinutes(max),
|
|
232
|
+
// maxTime (if provided) should be inclusive, so add an extra second here
|
|
233
|
+
this.props.adapter.getSeconds(max) + 1,
|
|
215
234
|
);
|
|
216
235
|
}
|
|
217
236
|
|
|
218
237
|
const minDate = this.props.adapter.toJsDate(min);
|
|
219
238
|
const maxDate = this.props.adapter.toJsDate(max);
|
|
220
|
-
const midnightDate = this.props.adapter.toJsDate(
|
|
239
|
+
const midnightDate = this.props.adapter.toJsDate(dayStart);
|
|
221
240
|
return {
|
|
222
241
|
start: (minDate - midnightDate) / 1000,
|
|
223
242
|
end: (maxDate - midnightDate) / 1000,
|
package/timepicker/types.js.flow
CHANGED
|
@@ -37,6 +37,15 @@ export type TimePickerPropsT<T = Date> = {
|
|
|
37
37
|
size?: SizeT,
|
|
38
38
|
minTime?: T,
|
|
39
39
|
maxTime?: T,
|
|
40
|
+
/**
|
|
41
|
+
* There are two strategies available for setting min/max times. If the min/max datetimes are
|
|
42
|
+
* beyond the start/end times of the current value's date, Timepicker could either clamp the
|
|
43
|
+
* min/max time of the start/end of the day or it can ignore the min/max date components and
|
|
44
|
+
* only apply the time components. Each strategy has the potential to save developer time in
|
|
45
|
+
* avoiding the need to perform conversion before providing min/max datetimes to the component.
|
|
46
|
+
* By default the component will clamp the time window and setting this flag will ignore dates.
|
|
47
|
+
*/
|
|
48
|
+
ignoreMinMaxDateComponent?: boolean,
|
|
40
49
|
};
|
|
41
50
|
export type TimePickerStateT = {
|
|
42
51
|
/** List of times (in seconds) displayed in the dropdown menu. */
|
|
@@ -50,6 +59,7 @@ export type TimePickerDefaultPropsT = {
|
|
|
50
59
|
step: 900,
|
|
51
60
|
creatable: false,
|
|
52
61
|
adapter: DateIOAdapter<Date>,
|
|
62
|
+
ignoreMinMaxDateComponent: false,
|
|
53
63
|
};
|
|
54
64
|
|
|
55
65
|
declare var __DEV__: boolean;
|
package/tooltip/tooltip.js
CHANGED
|
@@ -71,6 +71,7 @@ var Tooltip = /*#__PURE__*/function (_React$Component) {
|
|
|
71
71
|
Inner: _styledComponents.Inner
|
|
72
72
|
}, this.props.overrides);
|
|
73
73
|
return /*#__PURE__*/React.createElement(_index.Popover, _extends({
|
|
74
|
+
autoFocus: false,
|
|
74
75
|
"data-baseweb": "tooltip"
|
|
75
76
|
}, this.props, {
|
|
76
77
|
overrides: overrides
|
package/tooltip/tooltip.js.flow
CHANGED
|
@@ -32,7 +32,12 @@ class Tooltip extends React.Component<TooltipPropsT> {
|
|
|
32
32
|
this.props.overrides,
|
|
33
33
|
);
|
|
34
34
|
return (
|
|
35
|
-
<Popover
|
|
35
|
+
<Popover
|
|
36
|
+
autoFocus={false}
|
|
37
|
+
data-baseweb="tooltip"
|
|
38
|
+
{...this.props}
|
|
39
|
+
overrides={overrides}
|
|
40
|
+
/>
|
|
36
41
|
);
|
|
37
42
|
}
|
|
38
43
|
}
|