@transferwise/components 0.0.0-experimental-e05dfa3 → 0.0.0-experimental-7905c27
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/build/index.esm.js +102 -164
- package/build/index.esm.js.map +1 -1
- package/build/index.js +104 -166
- package/build/index.js.map +1 -1
- package/build/main.css +1 -1
- package/build/styles/dateLookup/DateLookup.css +1 -1
- package/build/styles/header/Header.css +1 -1
- package/build/styles/main.css +1 -1
- package/build/types/dateInput/DateInput.d.ts +2 -0
- package/build/types/dateInput/DateInput.d.ts.map +1 -1
- package/build/types/dateLookup/DateLookup.d.ts.map +1 -1
- package/build/types/dateLookup/monthCalendar/table/MonthCalendarTable.d.ts +1 -1
- package/build/types/dateLookup/monthCalendar/table/MonthCalendarTable.d.ts.map +1 -1
- package/build/types/dateLookup/tableLink/TableLink.d.ts +2 -16
- package/build/types/dateLookup/tableLink/TableLink.d.ts.map +1 -1
- package/build/types/dateLookup/tableLink/index.d.ts +1 -1
- package/build/types/dateLookup/tableLink/index.d.ts.map +1 -1
- package/build/types/dateLookup/yearCalendar/table/YearCalendarTable.d.ts.map +1 -1
- package/build/types/select/Select.d.ts.map +1 -1
- package/build/types/test-utils/window-mock.d.ts +1 -0
- package/build/types/test-utils/window-mock.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/dateInput/DateInput.js +13 -7
- package/src/dateInput/DateInput.spec.js +12 -136
- package/src/dateInput/DateInput.story.tsx +49 -2
- package/src/dateLookup/DateLookup.css +1 -1
- package/src/dateLookup/DateLookup.js +3 -16
- package/src/dateLookup/DateLookup.keyboardEvents.spec.js +0 -12
- package/src/dateLookup/DateLookup.less +49 -46
- package/src/dateLookup/DateLookup.story.js +7 -8
- package/src/dateLookup/dayCalendar/table/DayCalendarTable.js +1 -14
- package/src/dateLookup/dayCalendar/table/DayCalendarTable.spec.js +0 -25
- package/src/dateLookup/monthCalendar/table/MonthCalendarTable.js +20 -33
- package/src/dateLookup/monthCalendar/table/MonthCalendarTable.spec.js +0 -33
- package/src/dateLookup/tableLink/TableLink.js +70 -0
- package/src/dateLookup/yearCalendar/table/YearCalendarTable.js +11 -33
- package/src/dateLookup/yearCalendar/table/YearCalendarTable.spec.js +0 -26
- package/src/header/Header.css +1 -1
- package/src/header/Header.less +0 -5
- package/src/inputs/SelectInput.spec.tsx +3 -27
- package/src/main.css +1 -1
- package/src/phoneNumberInput/PhoneNumberInput.spec.js +4 -20
- package/src/select/Select.js +3 -0
- package/src/test-utils/window-mock.ts +11 -0
- package/build/types/dateLookup/getFocusableTime/getFocusableTime.d.ts +0 -2
- package/build/types/dateLookup/getFocusableTime/getFocusableTime.d.ts.map +0 -1
- package/src/dateLookup/getFocusableTime/getFocusable.spec.js +0 -38
- package/src/dateLookup/getFocusableTime/getFocusableTime.tsx +0 -28
- package/src/dateLookup/tableLink/TableLink.tsx +0 -80
- /package/src/dateLookup/tableLink/{index.ts → index.js} +0 -0
package/build/index.js
CHANGED
|
@@ -9,18 +9,18 @@ var PropTypes = require('prop-types');
|
|
|
9
9
|
var reactIntl = require('react-intl');
|
|
10
10
|
var componentsTheming = require('@wise/components-theming');
|
|
11
11
|
var formatting = require('@transferwise/formatting');
|
|
12
|
-
var throttle = require('lodash.throttle');
|
|
13
|
-
var reactTransitionGroup = require('react-transition-group');
|
|
14
|
-
var reactDom = require('react-dom');
|
|
15
|
-
var focus = require('@react-aria/focus');
|
|
16
|
-
var mergeRefs = require('react-merge-refs');
|
|
17
|
-
var shim = require('use-sync-external-store/shim');
|
|
18
|
-
var neptuneValidation = require('@transferwise/neptune-validation');
|
|
19
|
-
var reactPopper = require('react-popper');
|
|
20
12
|
var react$1 = require('@headlessui/react');
|
|
21
13
|
var mergeProps = require('merge-props');
|
|
14
|
+
var mergeRefs = require('react-merge-refs');
|
|
15
|
+
var shim = require('use-sync-external-store/shim');
|
|
22
16
|
var react = require('@floating-ui/react');
|
|
17
|
+
var focus = require('@react-aria/focus');
|
|
23
18
|
var overlays = require('@react-aria/overlays');
|
|
19
|
+
var reactTransitionGroup = require('react-transition-group');
|
|
20
|
+
var reactPopper = require('react-popper');
|
|
21
|
+
var throttle = require('lodash.throttle');
|
|
22
|
+
var reactDom = require('react-dom');
|
|
23
|
+
var neptuneValidation = require('@transferwise/neptune-validation');
|
|
24
24
|
var art = require('@wise/art');
|
|
25
25
|
var clamp$2 = require('lodash.clamp');
|
|
26
26
|
var debounce = require('lodash.debounce');
|
|
@@ -53,9 +53,9 @@ function _interopNamespace(e) {
|
|
|
53
53
|
var classNames__default = /*#__PURE__*/_interopDefault(classNames);
|
|
54
54
|
var React__namespace = /*#__PURE__*/_interopNamespace(React);
|
|
55
55
|
var PropTypes__default = /*#__PURE__*/_interopDefault(PropTypes);
|
|
56
|
-
var throttle__default = /*#__PURE__*/_interopDefault(throttle);
|
|
57
|
-
var mergeRefs__default = /*#__PURE__*/_interopDefault(mergeRefs);
|
|
58
56
|
var mergeProps__default = /*#__PURE__*/_interopDefault(mergeProps);
|
|
57
|
+
var mergeRefs__default = /*#__PURE__*/_interopDefault(mergeRefs);
|
|
58
|
+
var throttle__default = /*#__PURE__*/_interopDefault(throttle);
|
|
59
59
|
var clamp__default = /*#__PURE__*/_interopDefault(clamp$2);
|
|
60
60
|
var debounce__default = /*#__PURE__*/_interopDefault(debounce);
|
|
61
61
|
var requiredIf__default = /*#__PURE__*/_interopDefault(requiredIf);
|
|
@@ -2934,6 +2934,8 @@ const INITIAL_DEFAULT_STATE = {
|
|
|
2934
2934
|
day: null
|
|
2935
2935
|
};
|
|
2936
2936
|
const DateInput = ({
|
|
2937
|
+
'aria-labelledby': ariaLabelledBy,
|
|
2938
|
+
'aria-label': ariaLabel,
|
|
2937
2939
|
disabled,
|
|
2938
2940
|
size,
|
|
2939
2941
|
value,
|
|
@@ -2999,20 +3001,25 @@ const DateInput = ({
|
|
|
2999
3001
|
const getSelectElement = () => {
|
|
3000
3002
|
const months = getMonthNames(locale, monthFormat);
|
|
3001
3003
|
return /*#__PURE__*/jsxRuntime.jsxs("label", {
|
|
3004
|
+
className: "d-flex flex-column",
|
|
3002
3005
|
children: [/*#__PURE__*/jsxRuntime.jsx("span", {
|
|
3003
3006
|
className: "sr-only",
|
|
3004
3007
|
children: monthLabel
|
|
3005
|
-
}), /*#__PURE__*/jsxRuntime.jsx(
|
|
3006
|
-
id: id ? `${id}-select` : undefined,
|
|
3008
|
+
}), /*#__PURE__*/jsxRuntime.jsx(SelectInput, {
|
|
3007
3009
|
name: "month",
|
|
3008
3010
|
disabled: disabled,
|
|
3009
3011
|
placeholder: placeholders.month,
|
|
3010
|
-
|
|
3012
|
+
items: getMonthsOptions(),
|
|
3011
3013
|
size: size,
|
|
3012
|
-
|
|
3014
|
+
value: month === null ? null : {
|
|
3013
3015
|
value: month,
|
|
3014
3016
|
label: months[month]
|
|
3015
3017
|
},
|
|
3018
|
+
renderValue: ({
|
|
3019
|
+
label
|
|
3020
|
+
}) => /*#__PURE__*/jsxRuntime.jsx(SelectInputOptionContent, {
|
|
3021
|
+
title: label
|
|
3022
|
+
}),
|
|
3016
3023
|
onChange: selectedValue => handleMonthChange(selectedValue),
|
|
3017
3024
|
...selectProps
|
|
3018
3025
|
})]
|
|
@@ -3023,8 +3030,11 @@ const DateInput = ({
|
|
|
3023
3030
|
const months = getMonthNames(locale, monthFormat);
|
|
3024
3031
|
months.forEach((label, index) => {
|
|
3025
3032
|
options.push({
|
|
3026
|
-
|
|
3027
|
-
|
|
3033
|
+
type: 'option',
|
|
3034
|
+
value: {
|
|
3035
|
+
label,
|
|
3036
|
+
value: index
|
|
3037
|
+
}
|
|
3028
3038
|
});
|
|
3029
3039
|
});
|
|
3030
3040
|
return options;
|
|
@@ -3121,6 +3131,8 @@ const DateInput = ({
|
|
|
3121
3131
|
return /*#__PURE__*/jsxRuntime.jsx("div", {
|
|
3122
3132
|
className: "tw-date",
|
|
3123
3133
|
id: id,
|
|
3134
|
+
"aria-labelledby": ariaLabelledBy,
|
|
3135
|
+
"aria-label": ariaLabel,
|
|
3124
3136
|
onFocus: event => shouldPropagateOnFocus(event) ? onFocus && onFocus() : event.stopPropagation(),
|
|
3125
3137
|
onBlur: event => shouldPropagateOnBlur(event) ? onBlur && onBlur() : event.stopPropagation(),
|
|
3126
3138
|
children: /*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
@@ -3203,6 +3215,8 @@ function shouldPropagateOnBlur({
|
|
|
3203
3215
|
return blurElementParent !== focusElementParent;
|
|
3204
3216
|
}
|
|
3205
3217
|
DateInput.propTypes = {
|
|
3218
|
+
'aria-label': PropTypes__default.default.string,
|
|
3219
|
+
'aria-labelledby': PropTypes__default.default.string,
|
|
3206
3220
|
disabled: PropTypes__default.default.bool,
|
|
3207
3221
|
size: PropTypes__default.default.oneOf(['sm', 'md', 'lg']),
|
|
3208
3222
|
value: PropTypes__default.default.oneOfType([PropTypes__default.default.string, PropTypes__default.default.instanceOf(Date)]),
|
|
@@ -3598,28 +3612,6 @@ DateHeader.defaultProps = {
|
|
|
3598
3612
|
};
|
|
3599
3613
|
var DateHeader$1 = DateHeader;
|
|
3600
3614
|
|
|
3601
|
-
function getFocusableTime(isSelected, isNow, isDisabled, timeSpan) {
|
|
3602
|
-
let selected = null;
|
|
3603
|
-
let now = null;
|
|
3604
|
-
let disabled = null;
|
|
3605
|
-
for (const time of timeSpan) {
|
|
3606
|
-
if (isSelected(time)) {
|
|
3607
|
-
selected = time;
|
|
3608
|
-
break;
|
|
3609
|
-
}
|
|
3610
|
-
if (isNow(time)) {
|
|
3611
|
-
now = time;
|
|
3612
|
-
}
|
|
3613
|
-
if (!isDisabled(time) && disabled === null) {
|
|
3614
|
-
disabled = time;
|
|
3615
|
-
}
|
|
3616
|
-
if (selected) {
|
|
3617
|
-
break;
|
|
3618
|
-
}
|
|
3619
|
-
}
|
|
3620
|
-
return selected || now || disabled;
|
|
3621
|
-
}
|
|
3622
|
-
|
|
3623
3615
|
// NB! Using with UTC timestamp (YYYY-MM-DD) might lead to unexpected results, for example
|
|
3624
3616
|
// getStartOfDay(new Date('1995-01-01')) in Los Angeles returns 31 Dec 1994, but in
|
|
3625
3617
|
// in Singapore it is 1 Jan 1995.
|
|
@@ -3631,57 +3623,59 @@ function getStartOfDay(date) {
|
|
|
3631
3623
|
return new Date(date.getFullYear(), date.getMonth(), date.getDate());
|
|
3632
3624
|
}
|
|
3633
3625
|
|
|
3634
|
-
|
|
3635
|
-
|
|
3636
|
-
type,
|
|
3637
|
-
title,
|
|
3638
|
-
longTitle,
|
|
3639
|
-
active,
|
|
3640
|
-
disabled,
|
|
3641
|
-
today,
|
|
3642
|
-
autofocus,
|
|
3643
|
-
onClick,
|
|
3644
|
-
intl: {
|
|
3645
|
-
formatMessage
|
|
3646
|
-
}
|
|
3647
|
-
}) => {
|
|
3648
|
-
const buttonRef = React.useRef(null);
|
|
3649
|
-
React.useEffect(() => {
|
|
3650
|
-
if (autofocus) {
|
|
3651
|
-
setTimeout(() => {
|
|
3652
|
-
buttonRef.current?.focus();
|
|
3653
|
-
}, 0);
|
|
3654
|
-
}
|
|
3655
|
-
}, [autofocus]);
|
|
3656
|
-
const onCalendarClick = event => {
|
|
3626
|
+
class TableLink extends React.PureComponent {
|
|
3627
|
+
onClick = event => {
|
|
3657
3628
|
event.preventDefault();
|
|
3658
|
-
if (!disabled) {
|
|
3659
|
-
onClick(item);
|
|
3629
|
+
if (!this.props.disabled) {
|
|
3630
|
+
this.props.onClick(this.props.item);
|
|
3660
3631
|
}
|
|
3661
3632
|
};
|
|
3662
|
-
|
|
3633
|
+
calculateAriaLabel = (longTitle, title, active, type, formatMessage) => {
|
|
3663
3634
|
if (active) {
|
|
3664
|
-
return `${longTitle || title
|
|
3635
|
+
return `${longTitle || title}, ${formatMessage(messages$6.selected)} ${formatMessage(messages$6[type])}`;
|
|
3665
3636
|
}
|
|
3666
3637
|
return longTitle || title;
|
|
3667
3638
|
};
|
|
3668
|
-
|
|
3669
|
-
|
|
3670
|
-
|
|
3671
|
-
type
|
|
3672
|
-
|
|
3673
|
-
|
|
3674
|
-
|
|
3675
|
-
|
|
3676
|
-
|
|
3677
|
-
|
|
3678
|
-
|
|
3679
|
-
|
|
3680
|
-
|
|
3681
|
-
|
|
3682
|
-
children:
|
|
3683
|
-
|
|
3684
|
-
|
|
3639
|
+
render() {
|
|
3640
|
+
const {
|
|
3641
|
+
item,
|
|
3642
|
+
type,
|
|
3643
|
+
title,
|
|
3644
|
+
longTitle,
|
|
3645
|
+
active,
|
|
3646
|
+
disabled,
|
|
3647
|
+
today,
|
|
3648
|
+
intl: {
|
|
3649
|
+
formatMessage
|
|
3650
|
+
}
|
|
3651
|
+
} = this.props;
|
|
3652
|
+
return /*#__PURE__*/jsxRuntime.jsx(jsxRuntime.Fragment, {
|
|
3653
|
+
children: /*#__PURE__*/jsxRuntime.jsx("button", {
|
|
3654
|
+
type: "button",
|
|
3655
|
+
className: `tw-date-lookup-${type}-option ${active ? 'active' : ''} ${today ? 'today' : ''} np-text-body-default-bold`,
|
|
3656
|
+
disabled: disabled,
|
|
3657
|
+
"aria-label": this.calculateAriaLabel(longTitle, title, active, type, formatMessage),
|
|
3658
|
+
"aria-pressed": active,
|
|
3659
|
+
onClick: this.onClick,
|
|
3660
|
+
children: title || item
|
|
3661
|
+
})
|
|
3662
|
+
});
|
|
3663
|
+
}
|
|
3664
|
+
}
|
|
3665
|
+
TableLink.propTypes = {
|
|
3666
|
+
item: PropTypes__default.default.number.isRequired,
|
|
3667
|
+
// day (1-31), month (0-11) or year (2018 etc)
|
|
3668
|
+
type: PropTypes__default.default.oneOf(['day', 'month', 'year']).isRequired,
|
|
3669
|
+
title: PropTypes__default.default.string,
|
|
3670
|
+
longTitle: PropTypes__default.default.string,
|
|
3671
|
+
active: PropTypes__default.default.bool.isRequired,
|
|
3672
|
+
disabled: PropTypes__default.default.bool.isRequired,
|
|
3673
|
+
today: PropTypes__default.default.bool.isRequired,
|
|
3674
|
+
onClick: PropTypes__default.default.func.isRequired
|
|
3675
|
+
};
|
|
3676
|
+
TableLink.defaultProps = {
|
|
3677
|
+
title: null,
|
|
3678
|
+
longTitle: null
|
|
3685
3679
|
};
|
|
3686
3680
|
var TableLink$1 = reactIntl.injectIntl(TableLink);
|
|
3687
3681
|
|
|
@@ -3754,17 +3748,6 @@ class DayCalendarTable extends React.PureComponent {
|
|
|
3754
3748
|
} = this.props;
|
|
3755
3749
|
return !!(selectedDate && +new Date(viewYear, viewMonth, day) === +selectedDate);
|
|
3756
3750
|
};
|
|
3757
|
-
isToday = day => {
|
|
3758
|
-
const {
|
|
3759
|
-
viewMonth,
|
|
3760
|
-
viewYear
|
|
3761
|
-
} = this.props;
|
|
3762
|
-
return +getStartOfDay(new Date()) === +new Date(viewYear, viewMonth, day);
|
|
3763
|
-
};
|
|
3764
|
-
getAutofocusDay = weeks => {
|
|
3765
|
-
const days = weeks.flatMap(week => week);
|
|
3766
|
-
return getFocusableTime(this.isActive, this.isToday, this.isDisabled, days);
|
|
3767
|
-
};
|
|
3768
3751
|
render() {
|
|
3769
3752
|
const {
|
|
3770
3753
|
viewMonth,
|
|
@@ -3774,7 +3757,6 @@ class DayCalendarTable extends React.PureComponent {
|
|
|
3774
3757
|
}
|
|
3775
3758
|
} = this.props;
|
|
3776
3759
|
const weeks = this.getTableStructure();
|
|
3777
|
-
let autoFocusDay = this.getAutofocusDay(weeks, viewMonth, viewYear);
|
|
3778
3760
|
return /*#__PURE__*/jsxRuntime.jsxs("table", {
|
|
3779
3761
|
className: "table table-condensed table-bordered tw-date-lookup-calendar m-b-0",
|
|
3780
3762
|
children: [/*#__PURE__*/jsxRuntime.jsx("thead", {
|
|
@@ -3804,11 +3786,10 @@ class DayCalendarTable extends React.PureComponent {
|
|
|
3804
3786
|
item: day,
|
|
3805
3787
|
type: "day",
|
|
3806
3788
|
title: formatting.formatDate(new Date(viewYear, viewMonth, day), locale, SHORT_DAY_FORMAT),
|
|
3807
|
-
autofocus: day === autoFocusDay,
|
|
3808
3789
|
longTitle: formatting.formatDate(new Date(viewYear, viewMonth, day), locale),
|
|
3809
3790
|
active: this.isActive(day),
|
|
3810
3791
|
disabled: this.isDisabled(day),
|
|
3811
|
-
today:
|
|
3792
|
+
today: +getStartOfDay(new Date()) === +new Date(viewYear, viewMonth, day),
|
|
3812
3793
|
onClick: this.selectDay
|
|
3813
3794
|
})
|
|
3814
3795
|
}, dayIndex))
|
|
@@ -3909,11 +3890,11 @@ var DayCalendar$1 = reactIntl.injectIntl(DayCalendar);
|
|
|
3909
3890
|
|
|
3910
3891
|
const ROWS$1 = 3;
|
|
3911
3892
|
const COLS$1 = 4;
|
|
3912
|
-
const
|
|
3893
|
+
const MONTH_ONLY_FORMAY = {
|
|
3913
3894
|
month: 'short'
|
|
3914
3895
|
};
|
|
3915
3896
|
const MonthCalendarTable = ({
|
|
3916
|
-
selectedDate,
|
|
3897
|
+
selectedDate: selected,
|
|
3917
3898
|
min,
|
|
3918
3899
|
max,
|
|
3919
3900
|
viewYear,
|
|
@@ -3923,32 +3904,19 @@ const MonthCalendarTable = ({
|
|
|
3923
3904
|
const {
|
|
3924
3905
|
locale
|
|
3925
3906
|
} = reactIntl.useIntl();
|
|
3926
|
-
const getLink = month => {
|
|
3927
|
-
|
|
3928
|
-
|
|
3929
|
-
|
|
3930
|
-
|
|
3931
|
-
|
|
3932
|
-
|
|
3933
|
-
|
|
3934
|
-
|
|
3935
|
-
onClick: onSelect
|
|
3936
|
-
});
|
|
3937
|
-
};
|
|
3938
|
-
const isSelected = month => {
|
|
3939
|
-
return selectedDate && month === selectedDate.getMonth() && viewYear === selectedDate.getFullYear();
|
|
3940
|
-
};
|
|
3941
|
-
const isThisMonth = month => {
|
|
3942
|
-
return viewYear === new Date().getFullYear() && month === new Date().getMonth();
|
|
3943
|
-
};
|
|
3907
|
+
const getLink = month => /*#__PURE__*/jsxRuntime.jsx(TableLink$1, {
|
|
3908
|
+
item: month,
|
|
3909
|
+
type: "month",
|
|
3910
|
+
title: formatting.formatDate(new Date(viewYear, month), locale, MONTH_ONLY_FORMAY),
|
|
3911
|
+
active: !!(selected && month === selected.getMonth() && viewYear === selected.getFullYear()),
|
|
3912
|
+
disabled: isDisabled(month),
|
|
3913
|
+
today: viewYear === new Date().getFullYear() && month === new Date().getMonth(),
|
|
3914
|
+
onClick: onSelect
|
|
3915
|
+
});
|
|
3944
3916
|
const isDisabled = month => {
|
|
3945
3917
|
const date = new Date(viewYear, month);
|
|
3946
3918
|
return !!(min && date < new Date(min.getFullYear(), min.getMonth()) || max && date > new Date(max.getFullYear(), max.getMonth()));
|
|
3947
3919
|
};
|
|
3948
|
-
const autofocusMonth = (() => {
|
|
3949
|
-
const months = [...new Array(ROWS$1 * COLS$1)].map((_, index) => index);
|
|
3950
|
-
return getFocusableTime(isSelected, isThisMonth, isDisabled, months);
|
|
3951
|
-
})();
|
|
3952
3920
|
return /*#__PURE__*/jsxRuntime.jsxs("table", {
|
|
3953
3921
|
className: "table table-condensed table-bordered tw-date-lookup-calendar np-text-body-default-bold m-b-0",
|
|
3954
3922
|
children: [/*#__PURE__*/jsxRuntime.jsx("thead", {
|
|
@@ -4067,31 +4035,15 @@ const YearCalendarTable = ({
|
|
|
4067
4035
|
locale
|
|
4068
4036
|
} = reactIntl.useIntl();
|
|
4069
4037
|
const startYear = viewYear - viewYear % 20;
|
|
4070
|
-
const getLink = year => {
|
|
4071
|
-
|
|
4072
|
-
|
|
4073
|
-
|
|
4074
|
-
|
|
4075
|
-
|
|
4076
|
-
|
|
4077
|
-
|
|
4078
|
-
|
|
4079
|
-
onClick: onSelect
|
|
4080
|
-
});
|
|
4081
|
-
};
|
|
4082
|
-
const isSelected = year => {
|
|
4083
|
-
return selectedDate && year === selectedDate.getFullYear();
|
|
4084
|
-
};
|
|
4085
|
-
const isThisYear = year => {
|
|
4086
|
-
return year === new Date().getFullYear();
|
|
4087
|
-
};
|
|
4088
|
-
const isDisabled = year => {
|
|
4089
|
-
return !!(min && year < min.getFullYear() || max && year > max.getFullYear());
|
|
4090
|
-
};
|
|
4091
|
-
const autofocusYear = (() => {
|
|
4092
|
-
const years = [...new Array(ROWS * COLS)].map((_, index) => startYear + index);
|
|
4093
|
-
return getFocusableTime(isSelected, isThisYear, isDisabled, years);
|
|
4094
|
-
})();
|
|
4038
|
+
const getLink = year => /*#__PURE__*/jsxRuntime.jsx(TableLink$1, {
|
|
4039
|
+
item: year,
|
|
4040
|
+
type: "year",
|
|
4041
|
+
title: formatting.formatDate(new Date(year, 0), locale, YEAR_ONLY_FORMAT),
|
|
4042
|
+
active: !!(selectedDate && year === selectedDate.getFullYear()),
|
|
4043
|
+
disabled: !!(min && year < min.getFullYear() || max && year > max.getFullYear()),
|
|
4044
|
+
today: year === new Date().getFullYear(),
|
|
4045
|
+
onClick: onSelect
|
|
4046
|
+
});
|
|
4095
4047
|
return /*#__PURE__*/jsxRuntime.jsxs("table", {
|
|
4096
4048
|
className: "table table-condensed table-bordered tw-date-lookup-calendar m-b-0",
|
|
4097
4049
|
children: [/*#__PURE__*/jsxRuntime.jsx("thead", {
|
|
@@ -4198,7 +4150,6 @@ class DateLookup extends React.PureComponent {
|
|
|
4198
4150
|
super(props);
|
|
4199
4151
|
this.state = {
|
|
4200
4152
|
selectedDate: getStartOfDay(props.value),
|
|
4201
|
-
originalDate: null,
|
|
4202
4153
|
min: getStartOfDay(props.min),
|
|
4203
4154
|
max: getStartOfDay(props.max),
|
|
4204
4155
|
viewMonth: (props.value || new Date()).getMonth(),
|
|
@@ -4261,15 +4212,6 @@ class DateLookup extends React.PureComponent {
|
|
|
4261
4212
|
onFocus();
|
|
4262
4213
|
}
|
|
4263
4214
|
};
|
|
4264
|
-
discard = () => {
|
|
4265
|
-
const {
|
|
4266
|
-
originalDate
|
|
4267
|
-
} = this.state;
|
|
4268
|
-
if (originalDate !== null) {
|
|
4269
|
-
this.props.onChange(originalDate);
|
|
4270
|
-
}
|
|
4271
|
-
this.close();
|
|
4272
|
-
};
|
|
4273
4215
|
close = () => {
|
|
4274
4216
|
const {
|
|
4275
4217
|
onBlur
|
|
@@ -4283,8 +4225,7 @@ class DateLookup extends React.PureComponent {
|
|
|
4283
4225
|
};
|
|
4284
4226
|
handleKeyDown = event => {
|
|
4285
4227
|
const {
|
|
4286
|
-
open
|
|
4287
|
-
originalDate
|
|
4228
|
+
open
|
|
4288
4229
|
} = this.state;
|
|
4289
4230
|
switch (event.keyCode) {
|
|
4290
4231
|
case KeyCodes.LEFT:
|
|
@@ -4320,7 +4261,6 @@ class DateLookup extends React.PureComponent {
|
|
|
4320
4261
|
event.preventDefault();
|
|
4321
4262
|
break;
|
|
4322
4263
|
case KeyCodes.ESCAPE:
|
|
4323
|
-
originalDate && this.props.onChange(originalDate);
|
|
4324
4264
|
this.close();
|
|
4325
4265
|
event.preventDefault();
|
|
4326
4266
|
break;
|
|
@@ -4331,14 +4271,8 @@ class DateLookup extends React.PureComponent {
|
|
|
4331
4271
|
selectedDate,
|
|
4332
4272
|
min,
|
|
4333
4273
|
max,
|
|
4334
|
-
mode
|
|
4335
|
-
originalDate
|
|
4274
|
+
mode
|
|
4336
4275
|
} = this.state;
|
|
4337
|
-
if (originalDate === null) {
|
|
4338
|
-
this.setState({
|
|
4339
|
-
originalDate: selectedDate
|
|
4340
|
-
});
|
|
4341
|
-
}
|
|
4342
4276
|
let date;
|
|
4343
4277
|
if (selectedDate) {
|
|
4344
4278
|
date = new Date(mode === MODE.YEAR ? selectedDate.getFullYear() + yearsToAdd : selectedDate.getFullYear(), mode === MODE.MONTH ? selectedDate.getMonth() + monthsToAdd : selectedDate.getMonth(), mode === MODE.DAY ? selectedDate.getDate() + daysToAdd : selectedDate.getDate());
|
|
@@ -4471,7 +4405,7 @@ class DateLookup extends React.PureComponent {
|
|
|
4471
4405
|
open: open,
|
|
4472
4406
|
className: "tw-date-lookup-menu",
|
|
4473
4407
|
position: exports.Position.BOTTOM,
|
|
4474
|
-
onClose: this.
|
|
4408
|
+
onClose: this.close,
|
|
4475
4409
|
children: this.getCalendar()
|
|
4476
4410
|
})]
|
|
4477
4411
|
});
|
|
@@ -7946,6 +7880,10 @@ const getUniqueIdForOption = (parentId = '', option) => {
|
|
|
7946
7880
|
const uniqueOptionId = option.value || (option.label?.replace(/\s/g, '') ?? '');
|
|
7947
7881
|
return `option-${parentId}-${uniqueOptionId}`;
|
|
7948
7882
|
};
|
|
7883
|
+
|
|
7884
|
+
/**
|
|
7885
|
+
* @deprecated Use `SelectInput` instead (https://neptune.wise.design/blog/2023-11-28-adopting-our-new-selectinput)
|
|
7886
|
+
*/
|
|
7949
7887
|
function Select({
|
|
7950
7888
|
placeholder,
|
|
7951
7889
|
id,
|