@zohodesk/components 1.0.0-alpha-271 → 1.0.0-alpha-272
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/README.md +4 -0
- package/es/Accordion/Accordion.js +7 -3
- package/es/Accordion/AccordionItem.js +4 -2
- package/es/Animation/Animation.js +3 -3
- package/es/AppContainer/AppContainer.js +13 -5
- package/es/Avatar/Avatar.js +23 -11
- package/es/AvatarTeam/AvatarTeam.js +3 -3
- package/es/Button/Button.js +4 -3
- package/es/Buttongroup/Buttongroup.js +3 -3
- package/es/Card/Card.js +21 -10
- package/es/CheckBox/CheckBox.js +5 -3
- package/es/DateTime/CalendarView.js +32 -20
- package/es/DateTime/DateTime.js +75 -10
- package/es/DateTime/DateTimePopupFooter.js +4 -2
- package/es/DateTime/DateTimePopupHeader.js +8 -2
- package/es/DateTime/DateWidget.js +98 -35
- package/es/DateTime/DaysRow.js +4 -2
- package/es/DateTime/Time.js +10 -2
- package/es/DateTime/YearView.js +28 -4
- package/es/DateTime/__tests__/CalendarView.spec.js +1 -0
- package/es/DateTime/__tests__/DateTime.spec.js +1 -0
- package/es/DateTime/__tests__/DateWidget.spec.js +2 -3
- package/es/DateTime/common.js +3 -0
- package/es/DateTime/constants.js +1 -0
- package/es/DateTime/dateFormatUtils/dateFormat.js +63 -30
- package/es/DateTime/dateFormatUtils/dateFormats.js +0 -1
- package/es/DateTime/dateFormatUtils/dayChange.js +13 -4
- package/es/DateTime/dateFormatUtils/index.js +32 -2
- package/es/DateTime/dateFormatUtils/monthChange.js +8 -0
- package/es/DateTime/dateFormatUtils/timeChange.js +22 -6
- package/es/DateTime/dateFormatUtils/yearChange.js +11 -2
- package/es/DateTime/objectUtils.js +14 -20
- package/es/DateTime/props/defaultProps.js +2 -1
- package/es/DateTime/typeChecker.js +3 -0
- package/es/DateTime/validator.js +58 -6
- package/es/DropBox/DropBox.js +6 -2
- package/es/DropBox/DropBoxElement/DropBoxElement.js +7 -0
- package/es/DropBox/DropBoxElement/css/cssJSLogic.js +5 -3
- package/es/DropBox/DropBoxElement/useDropboxPosCalc.js +3 -0
- package/es/DropBox/props/defaultProps.js +1 -2
- package/es/DropBox/props/propTypes.js +1 -2
- package/es/DropDown/DropDown.js +8 -4
- package/es/DropDown/DropDownHeading.js +4 -5
- package/es/DropDown/DropDownItem.js +6 -0
- package/es/DropDown/DropDownSearch.js +4 -0
- package/es/DropDown/DropDownSeparator.js +1 -0
- package/es/DropDown/__tests__/DropDown.spec.js +1 -2
- package/es/Heading/Heading.js +2 -3
- package/es/Label/Label.js +2 -3
- package/es/Layout/Box.js +13 -0
- package/es/Layout/Container.js +12 -1
- package/es/Layout/index.js +1 -2
- package/es/ListItem/ListContainer.js +8 -3
- package/es/ListItem/ListItem.js +9 -3
- package/es/ListItem/ListItemWithAvatar.js +9 -3
- package/es/ListItem/ListItemWithCheckBox.js +7 -2
- package/es/ListItem/ListItemWithIcon.js +8 -3
- package/es/ListItem/ListItemWithRadio.js +7 -3
- package/es/Modal/Modal.js +28 -11
- package/es/MultiSelect/AdvancedGroupMultiSelect.js +89 -13
- package/es/MultiSelect/AdvancedMultiSelect.js +32 -9
- package/es/MultiSelect/EmptyState.js +2 -0
- package/es/MultiSelect/MultiSelect.js +99 -32
- package/es/MultiSelect/MultiSelectHeader.js +3 -0
- package/es/MultiSelect/MultiSelectWithAvatar.js +12 -6
- package/es/MultiSelect/SelectedOptions.js +6 -3
- package/es/MultiSelect/Suggestions.js +7 -3
- package/es/MultiSelect/__tests__/MultiSelect.spec.js +4 -6
- package/es/MultiSelect/props/propTypes.js +2 -0
- package/es/PopOver/PopOver.js +18 -2
- package/es/PopOver/__tests__/PopOver.spec.js +2 -1
- package/es/Popup/Popup.js +77 -24
- package/es/Popup/__tests__/Popup.spec.js +17 -5
- package/es/Popup/viewPort.js +16 -4
- package/es/Provider/IdProvider.js +10 -5
- package/es/Provider/LibraryContext.js +6 -4
- package/es/Provider/NumberGenerator/NumberGenerator.js +21 -7
- package/es/Provider/ZindexProvider.js +9 -2
- package/es/Radio/Radio.js +4 -2
- package/es/Responsive/CustomResponsive.js +30 -18
- package/es/Responsive/RefWrapper.js +6 -7
- package/es/Responsive/ResizeComponent.js +35 -25
- package/es/Responsive/ResizeObserver.js +26 -6
- package/es/Responsive/Responsive.js +34 -20
- package/es/Responsive/index.js +1 -3
- package/es/Responsive/sizeObservers.js +28 -7
- package/es/Responsive/utils/index.js +7 -5
- package/es/Responsive/utils/shallowCompare.js +7 -2
- package/es/Responsive/windowResizeObserver.js +7 -0
- package/es/ResponsiveDropBox/ResponsiveDropBox.js +4 -0
- package/es/Ribbon/Ribbon.js +3 -2
- package/es/RippleEffect/RippleEffect.js +1 -3
- package/es/Select/GroupSelect.js +58 -14
- package/es/Select/Select.js +79 -33
- package/es/Select/SelectWithAvatar.js +17 -4
- package/es/Select/SelectWithIcon.js +46 -5
- package/es/Select/__tests__/Select.spec.js +6 -8
- package/es/Select/props/propTypes.js +1 -0
- package/es/Stencils/Stencils.js +3 -3
- package/es/Switch/Switch.js +5 -3
- package/es/Tab/Tab.js +4 -4
- package/es/Tab/TabContent.js +1 -0
- package/es/Tab/TabContentWrapper.js +2 -0
- package/es/Tab/TabWrapper.js +5 -2
- package/es/Tab/Tabs.js +54 -7
- package/es/Tab/__tests__/Tab.spec.js +1 -3
- package/es/Tab/__tests__/TabWrapper.spec.js +1 -0
- package/es/Tag/Tag.js +6 -3
- package/es/TextBox/TextBox.js +15 -3
- package/es/TextBox/__tests__/TextBox.spec.js +1 -4
- package/es/TextBoxIcon/TextBoxIcon.js +9 -2
- package/es/TextBoxIcon/__tests__/TextBoxIcon.spec.js +2 -7
- package/es/Textarea/Textarea.js +12 -3
- package/es/Textarea/__tests__/Textarea.spec.js +2 -2
- package/es/Tooltip/Tooltip.js +58 -14
- package/es/Tooltip/__tests__/Tooltip.spec.js +5 -0
- package/es/VelocityAnimation/VelocityAnimation/VelocityAnimation.js +3 -2
- package/es/VelocityAnimation/VelocityAnimationGroup/VelocityAnimationGroup.js +7 -5
- package/es/deprecated/PortalLayer/PortalLayer.js +25 -20
- package/es/semantic/Button/Button.js +3 -2
- package/es/utils/Common.js +54 -9
- package/es/utils/ContextOptimizer.js +4 -5
- package/es/utils/__tests__/debounce.spec.js +2 -2
- package/es/utils/constructFullName.js +2 -0
- package/es/utils/css/compileClassNames.js +5 -0
- package/es/utils/css/mergeStyle.js +7 -6
- package/es/utils/css/utils.js +1 -0
- package/es/utils/datetime/GMTZones.js +48 -0
- package/es/utils/datetime/common.js +31 -7
- package/es/utils/debounce.js +5 -1
- package/es/utils/dropDownUtils.js +68 -11
- package/es/utils/getInitial.js +4 -0
- package/es/utils/shallowEqual.js +6 -0
- package/lib/Accordion/Accordion.js +42 -18
- package/lib/Accordion/AccordionItem.js +40 -18
- package/lib/Accordion/__tests__/Accordion.spec.js +3 -0
- package/lib/Accordion/index.js +3 -0
- package/lib/Accordion/props/propTypes.js +3 -0
- package/lib/Animation/Animation.js +38 -18
- package/lib/Animation/__tests__/Animation.spec.js +11 -7
- package/lib/Animation/props/propTypes.js +3 -0
- package/lib/AppContainer/AppContainer.js +56 -21
- package/lib/AppContainer/props/propTypes.js +3 -0
- package/lib/Avatar/Avatar.js +78 -38
- package/lib/Avatar/__tests__/Avatar.spec.js +44 -0
- package/lib/Avatar/props/propTypes.js +3 -0
- package/lib/AvatarTeam/AvatarTeam.js +52 -30
- package/lib/AvatarTeam/__tests__/AvatarTeam.spec.js +13 -0
- package/lib/AvatarTeam/props/propTypes.js +3 -0
- package/lib/Button/Button.js +31 -20
- package/lib/Button/css/cssJSLogic.js +18 -17
- package/lib/Button/index.js +3 -0
- package/lib/Button/props/defaultProps.js +2 -0
- package/lib/Button/props/propTypes.js +3 -0
- package/lib/Buttongroup/Buttongroup.js +32 -12
- package/lib/Buttongroup/__test__/Buttongroup.spec.js +10 -0
- package/lib/Buttongroup/props/propTypes.js +3 -0
- package/lib/Card/Card.js +102 -46
- package/lib/Card/__tests__/Card.spec.js +10 -1
- package/lib/Card/index.js +4 -0
- package/lib/Card/props/propTypes.js +3 -0
- package/lib/CheckBox/CheckBox.js +71 -47
- package/lib/CheckBox/__tests__/CheckBox.spec.js +3 -0
- package/lib/CheckBox/props/propTypes.js +3 -0
- package/lib/DateTime/CalendarView.js +82 -42
- package/lib/DateTime/DateTime.js +246 -158
- package/lib/DateTime/DateTimePopupFooter.js +31 -8
- package/lib/DateTime/DateTimePopupHeader.js +48 -17
- package/lib/DateTime/DateWidget.js +352 -250
- package/lib/DateTime/DaysRow.js +27 -5
- package/lib/DateTime/Time.js +73 -32
- package/lib/DateTime/YearView.js +77 -28
- package/lib/DateTime/__tests__/CalendarView.spec.js +13 -5
- package/lib/DateTime/__tests__/DateTime.spec.js +51 -37
- package/lib/DateTime/__tests__/DateWidget.spec.js +10 -8
- package/lib/DateTime/common.js +6 -0
- package/lib/DateTime/constants.js +1 -0
- package/lib/DateTime/dateFormatUtils/dateFormat.js +184 -122
- package/lib/DateTime/dateFormatUtils/dateFormats.js +0 -1
- package/lib/DateTime/dateFormatUtils/dayChange.js +14 -7
- package/lib/DateTime/dateFormatUtils/index.js +74 -16
- package/lib/DateTime/dateFormatUtils/monthChange.js +19 -9
- package/lib/DateTime/dateFormatUtils/timeChange.js +54 -22
- package/lib/DateTime/dateFormatUtils/yearChange.js +22 -11
- package/lib/DateTime/index.js +2 -0
- package/lib/DateTime/objectUtils.js +24 -20
- package/lib/DateTime/props/defaultProps.js +2 -1
- package/lib/DateTime/props/propTypes.js +11 -1
- package/lib/DateTime/typeChecker.js +4 -0
- package/lib/DateTime/validator.js +73 -10
- package/lib/DropBox/DropBox.js +34 -10
- package/lib/DropBox/DropBoxElement/DropBoxElement.js +59 -38
- package/lib/DropBox/DropBoxElement/css/cssJSLogic.js +42 -34
- package/lib/DropBox/DropBoxElement/props/propTypes.js +3 -0
- package/lib/DropBox/DropBoxElement/useDropboxPosCalc.js +14 -9
- package/lib/DropBox/__tests__/DropBox.spec.js +6 -2
- package/lib/DropBox/css/cssJSLogic.js +3 -1
- package/lib/DropBox/props/defaultProps.js +8 -4
- package/lib/DropBox/props/propTypes.js +10 -4
- package/lib/DropDown/DropDown.js +52 -8
- package/lib/DropDown/DropDownHeading.js +39 -20
- package/lib/DropDown/DropDownItem.js +42 -20
- package/lib/DropDown/DropDownSearch.js +40 -17
- package/lib/DropDown/DropDownSeparator.js +24 -4
- package/lib/DropDown/__tests__/DropDown.spec.js +15 -9
- package/lib/DropDown/__tests__/DropDownItem.spec.js +9 -4
- package/lib/DropDown/__tests__/DropDownSearch.spec.js +3 -0
- package/lib/DropDown/index.js +9 -0
- package/lib/DropDown/props/propTypes.js +6 -4
- package/lib/Heading/Heading.js +37 -15
- package/lib/Heading/props/propTypes.js +3 -0
- package/lib/Label/Label.js +39 -19
- package/lib/Label/__tests__/Label.spec.js +14 -1
- package/lib/Label/props/propTypes.js +3 -0
- package/lib/Layout/Box.js +31 -11
- package/lib/Layout/Container.js +29 -10
- package/lib/Layout/__tests__/Box.spec.js +65 -49
- package/lib/Layout/__tests__/Container.spec.js +67 -50
- package/lib/Layout/index.js +3 -0
- package/lib/Layout/props/propTypes.js +3 -0
- package/lib/Layout/utils.js +10 -0
- package/lib/ListItem/ListContainer.js +48 -27
- package/lib/ListItem/ListItem.js +69 -45
- package/lib/ListItem/ListItemWithAvatar.js +75 -48
- package/lib/ListItem/ListItemWithCheckBox.js +64 -39
- package/lib/ListItem/ListItemWithIcon.js +68 -44
- package/lib/ListItem/ListItemWithRadio.js +65 -41
- package/lib/ListItem/index.js +7 -0
- package/lib/ListItem/props/propTypes.js +6 -4
- package/lib/Modal/Modal.js +45 -10
- package/lib/Modal/props/propTypes.js +3 -0
- package/lib/MultiSelect/AdvancedGroupMultiSelect.js +294 -166
- package/lib/MultiSelect/AdvancedMultiSelect.js +202 -125
- package/lib/MultiSelect/EmptyState.js +45 -24
- package/lib/MultiSelect/MultiSelect.js +323 -206
- package/lib/MultiSelect/MultiSelectHeader.js +30 -8
- package/lib/MultiSelect/MultiSelectWithAvatar.js +105 -63
- package/lib/MultiSelect/SelectedOptions.js +43 -17
- package/lib/MultiSelect/Suggestions.js +64 -32
- package/lib/MultiSelect/__tests__/MultiSelect.spec.js +86 -75
- package/lib/MultiSelect/index.js +5 -0
- package/lib/MultiSelect/props/defaultProps.js +2 -0
- package/lib/MultiSelect/props/propTypes.js +5 -0
- package/lib/PopOver/PopOver.js +95 -49
- package/lib/PopOver/__tests__/PopOver.spec.js +4 -1
- package/lib/PopOver/index.js +4 -0
- package/lib/PopOver/props/propTypes.js +3 -0
- package/lib/Popup/Popup.js +158 -81
- package/lib/Popup/__tests__/Popup.spec.js +43 -8
- package/lib/Popup/viewPort.js +28 -14
- package/lib/Provider/AvatarSize.js +4 -0
- package/lib/Provider/Config.js +2 -0
- package/lib/Provider/CssProvider.js +4 -0
- package/lib/Provider/IdProvider.js +17 -6
- package/lib/Provider/LibraryContext.js +35 -15
- package/lib/Provider/LibraryContextInit.js +4 -0
- package/lib/Provider/NumberGenerator/NumberGenerator.js +44 -15
- package/lib/Provider/ZindexProvider.js +15 -3
- package/lib/Provider/index.js +5 -0
- package/lib/Radio/Radio.js +61 -38
- package/lib/Radio/__tests__/Radiospec.js +9 -5
- package/lib/Radio/props/propTypes.js +3 -0
- package/lib/Responsive/CustomResponsive.js +73 -29
- package/lib/Responsive/RefWrapper.js +17 -11
- package/lib/Responsive/ResizeComponent.js +62 -36
- package/lib/Responsive/ResizeObserver.js +24 -10
- package/lib/Responsive/Responsive.js +80 -30
- package/lib/Responsive/index.js +4 -0
- package/lib/Responsive/props/propTypes.js +3 -0
- package/lib/Responsive/sizeObservers.js +53 -17
- package/lib/Responsive/utils/index.js +11 -3
- package/lib/Responsive/utils/shallowCompare.js +11 -2
- package/lib/Responsive/windowResizeObserver.js +8 -0
- package/lib/ResponsiveDropBox/ResponsiveDropBox.js +45 -17
- package/lib/ResponsiveDropBox/props/propTypes.js +3 -0
- package/lib/Ribbon/Ribbon.js +33 -13
- package/lib/Ribbon/__tests__/Ribbon.spec.js +22 -0
- package/lib/Ribbon/props/propTypes.js +3 -0
- package/lib/RippleEffect/RippleEffect.js +18 -10
- package/lib/RippleEffect/props/propTypes.js +3 -0
- package/lib/Select/GroupSelect.js +229 -130
- package/lib/Select/Select.js +290 -209
- package/lib/Select/SelectWithAvatar.js +102 -56
- package/lib/Select/SelectWithIcon.js +132 -76
- package/lib/Select/__tests__/Select.spec.js +133 -91
- package/lib/Select/index.js +5 -0
- package/lib/Select/props/defaultProps.js +5 -4
- package/lib/Select/props/propTypes.js +4 -0
- package/lib/Stencils/Stencils.js +29 -10
- package/lib/Stencils/__tests__/Stencils.spec.js +12 -0
- package/lib/Stencils/props/propTypes.js +3 -0
- package/lib/Switch/Switch.js +57 -34
- package/lib/Switch/props/propTypes.js +3 -0
- package/lib/Tab/Tab.js +40 -27
- package/lib/Tab/TabContent.js +12 -5
- package/lib/Tab/TabContentWrapper.js +13 -6
- package/lib/Tab/TabWrapper.js +37 -19
- package/lib/Tab/Tabs.js +171 -91
- package/lib/Tab/__tests__/Tab.spec.js +67 -58
- package/lib/Tab/__tests__/TabContent.spec.js +10 -6
- package/lib/Tab/__tests__/TabContentWrapper.spec.js +28 -20
- package/lib/Tab/__tests__/TabWrapper.spec.js +12 -0
- package/lib/Tab/__tests__/Tabs.spec.js +53 -39
- package/lib/Tab/index.js +6 -0
- package/lib/Tab/props/propTypes.js +3 -0
- package/lib/Tag/Tag.js +72 -43
- package/lib/Tag/__tests__/Tag.spec.js +14 -8
- package/lib/Tag/props/propTypes.js +3 -0
- package/lib/TextBox/TextBox.js +85 -59
- package/lib/TextBox/__tests__/TextBox.spec.js +14 -4
- package/lib/TextBox/props/propTypes.js +6 -4
- package/lib/TextBoxIcon/TextBoxIcon.js +79 -52
- package/lib/TextBoxIcon/__tests__/TextBoxIcon.spec.js +14 -5
- package/lib/TextBoxIcon/props/propTypes.js +3 -0
- package/lib/Textarea/Textarea.js +54 -29
- package/lib/Textarea/__tests__/Textarea.spec.js +14 -2
- package/lib/Textarea/props/propTypes.js +3 -0
- package/lib/Tooltip/Tooltip.js +94 -31
- package/lib/Tooltip/__tests__/Tooltip.spec.js +24 -3
- package/lib/Tooltip/props/propTypes.js +3 -0
- package/lib/VelocityAnimation/VelocityAnimation/VelocityAnimation.js +40 -16
- package/lib/VelocityAnimation/VelocityAnimation/props/propTypes.js +3 -0
- package/lib/VelocityAnimation/VelocityAnimationGroup/VelocityAnimationGroup.js +53 -25
- package/lib/VelocityAnimation/VelocityAnimationGroup/props/propTypes.js +3 -0
- package/lib/VelocityAnimation/index.js +3 -0
- package/lib/css.js +40 -0
- package/lib/deprecated/PortalLayer/PortalLayer.js +46 -23
- package/lib/deprecated/PortalLayer/props/propTypes.js +3 -0
- package/lib/index.js +57 -0
- package/lib/semantic/Button/Button.js +42 -22
- package/lib/semantic/Button/props/propTypes.js +3 -0
- package/lib/semantic/index.js +2 -0
- package/lib/utils/Common.js +110 -18
- package/lib/utils/ContextOptimizer.js +16 -10
- package/lib/utils/__tests__/constructFullName.spec.js +1 -0
- package/lib/utils/__tests__/debounce.spec.js +3 -2
- package/lib/utils/__tests__/getInitial.spec.js +1 -0
- package/lib/utils/constructFullName.js +13 -4
- package/lib/utils/css/compileClassNames.js +6 -0
- package/lib/utils/css/mergeStyle.js +10 -7
- package/lib/utils/css/utils.js +8 -0
- package/lib/utils/datetime/GMTZones.js +55 -0
- package/lib/utils/datetime/common.js +52 -7
- package/lib/utils/debounce.js +6 -1
- package/lib/utils/dropDownUtils.js +175 -59
- package/lib/utils/dummyFunction.js +2 -0
- package/lib/utils/getHTMLFontSize.js +1 -0
- package/lib/utils/getInitial.js +6 -0
- package/lib/utils/index.js +4 -0
- package/lib/utils/scrollTo.js +2 -0
- package/lib/utils/shallowEqual.js +8 -0
- package/package.json +1 -1
|
@@ -6,11 +6,12 @@ export function getChangedDay(values, event, focusOrders, keyActions) {
|
|
|
6
6
|
which
|
|
7
7
|
} = event;
|
|
8
8
|
const {
|
|
9
|
-
day = ''
|
|
9
|
+
day = ''
|
|
10
|
+
/*month = '', year = ''*/
|
|
11
|
+
|
|
10
12
|
} = values;
|
|
11
13
|
let isChanged = false;
|
|
12
|
-
let newDay = Number.parseInt(day) || 0;
|
|
13
|
-
// const newMonth = Number.parseInt(month) || 0;
|
|
14
|
+
let newDay = Number.parseInt(day) || 0; // const newMonth = Number.parseInt(month) || 0;
|
|
14
15
|
// const newYear = Number.parseInt(year) || 0;
|
|
15
16
|
|
|
16
17
|
const {
|
|
@@ -20,8 +21,11 @@ export function getChangedDay(values, event, focusOrders, keyActions) {
|
|
|
20
21
|
const isNewType = getIsNewValueType(focusOrders, keyActions);
|
|
21
22
|
const {
|
|
22
23
|
startPoint,
|
|
23
|
-
endPoint
|
|
24
|
+
endPoint
|
|
25
|
+
/*getDayEnd(newMonth, newYear);*/
|
|
26
|
+
|
|
24
27
|
} = getDayDetails();
|
|
28
|
+
|
|
25
29
|
if (keyCode === 38) {
|
|
26
30
|
//up arrow
|
|
27
31
|
if (newDay === endPoint || !newDay) {
|
|
@@ -44,15 +48,19 @@ export function getChangedDay(values, event, focusOrders, keyActions) {
|
|
|
44
48
|
const keyString = String.fromCharCode(which);
|
|
45
49
|
let newValue = isNewType ? keyString : day.toString() + keyString;
|
|
46
50
|
newValue = Number.parseInt(newValue);
|
|
51
|
+
|
|
47
52
|
if (isNewType) {
|
|
48
53
|
isChanged = true;
|
|
54
|
+
|
|
49
55
|
if (newValue * 10 > endPoint) {
|
|
50
56
|
newFocusOrder += 1;
|
|
51
57
|
}
|
|
58
|
+
|
|
52
59
|
newDay = newValue;
|
|
53
60
|
} else {
|
|
54
61
|
isChanged = true;
|
|
55
62
|
newFocusOrder += 1;
|
|
63
|
+
|
|
56
64
|
if (newValue > endPoint) {
|
|
57
65
|
newDay = endPoint;
|
|
58
66
|
} else if (!newValue) {
|
|
@@ -65,6 +73,7 @@ export function getChangedDay(values, event, focusOrders, keyActions) {
|
|
|
65
73
|
isChanged = true;
|
|
66
74
|
newDay = '';
|
|
67
75
|
}
|
|
76
|
+
|
|
68
77
|
return {
|
|
69
78
|
day: newDay,
|
|
70
79
|
isChanged,
|
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
/** * Libraries ** */
|
|
4
4
|
import datetime from '@zohodesk/datetimejs';
|
|
5
|
-
|
|
6
5
|
/** * Methods ** */
|
|
7
|
-
import { getMonthEnd } from '../../utils/datetime/common';
|
|
8
6
|
|
|
7
|
+
import { getMonthEnd } from '../../utils/datetime/common';
|
|
9
8
|
/** * Constants ** */
|
|
9
|
+
|
|
10
10
|
import { flags, INVALID_DATE } from '../constants';
|
|
11
11
|
export function convertYearToTwoDigit(year) {
|
|
12
12
|
return parseInt(year.toString().slice(-2));
|
|
@@ -15,6 +15,7 @@ export function addZero() {
|
|
|
15
15
|
let value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
|
|
16
16
|
let length = arguments.length > 1 ? arguments[1] : undefined;
|
|
17
17
|
let newValue = value.toString();
|
|
18
|
+
|
|
18
19
|
for (let i = 0; i < length; i++) {
|
|
19
20
|
if (newValue.length < length) {
|
|
20
21
|
newValue = `0${newValue}`;
|
|
@@ -22,16 +23,19 @@ export function addZero() {
|
|
|
22
23
|
break;
|
|
23
24
|
}
|
|
24
25
|
}
|
|
26
|
+
|
|
25
27
|
return newValue;
|
|
26
28
|
}
|
|
27
29
|
export function getDayEnd(month, year) {
|
|
28
30
|
month -= 1;
|
|
29
31
|
const monthend = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
|
|
32
|
+
|
|
30
33
|
if (month && year) {
|
|
31
34
|
return getMonthEnd(month, year);
|
|
32
35
|
} else if (month) {
|
|
33
36
|
return monthend[month];
|
|
34
37
|
}
|
|
38
|
+
|
|
35
39
|
return 31;
|
|
36
40
|
}
|
|
37
41
|
export function getIsNumberTyped(event) {
|
|
@@ -41,15 +45,18 @@ export function getIsNumberTyped(event) {
|
|
|
41
45
|
metaKey,
|
|
42
46
|
shiftKey
|
|
43
47
|
} = event;
|
|
48
|
+
|
|
44
49
|
if (keyCode >= 48 && keyCode <= 57 && !ctrlKey && !metaKey && !shiftKey) {
|
|
45
50
|
return true;
|
|
46
51
|
}
|
|
52
|
+
|
|
47
53
|
return false;
|
|
48
54
|
}
|
|
49
55
|
export function getIsDeleteTyped(keyCode) {
|
|
50
56
|
if (keyCode === 8) {
|
|
51
57
|
return true;
|
|
52
58
|
}
|
|
59
|
+
|
|
53
60
|
return false;
|
|
54
61
|
}
|
|
55
62
|
export function getIsNewValueType(focusOrders, keyActions) {
|
|
@@ -78,6 +85,7 @@ export function getMonthDetails() {
|
|
|
78
85
|
export function getYearDetails(yearLength) {
|
|
79
86
|
const dateObj = new Date();
|
|
80
87
|
const year = dateObj.getFullYear();
|
|
88
|
+
|
|
81
89
|
if (yearLength === 2) {
|
|
82
90
|
return {
|
|
83
91
|
startPoint: 0,
|
|
@@ -85,6 +93,7 @@ export function getYearDetails(yearLength) {
|
|
|
85
93
|
currentYear: year
|
|
86
94
|
};
|
|
87
95
|
}
|
|
96
|
+
|
|
88
97
|
return {
|
|
89
98
|
startPoint: 1850,
|
|
90
99
|
endPoint: 9999,
|
|
@@ -98,9 +107,11 @@ export function convertTwoDigitToYear() {
|
|
|
98
107
|
let year = dateObj.getFullYear();
|
|
99
108
|
const digitValueStr = addZero(digitValue.toString(), 2);
|
|
100
109
|
year = selectedYear ? selectedYear : year;
|
|
110
|
+
|
|
101
111
|
if (digitValueStr && digitValueStr.length <= 2) {
|
|
102
112
|
return parseInt(year.toString().slice(0, 2) + digitValueStr);
|
|
103
113
|
}
|
|
114
|
+
|
|
104
115
|
return digitValue;
|
|
105
116
|
}
|
|
106
117
|
export function getHourDetails(is24Hour) {
|
|
@@ -115,10 +126,12 @@ export function getHourSuggestions(is24Hour) {
|
|
|
115
126
|
endPoint
|
|
116
127
|
} = getHourDetails(is24Hour);
|
|
117
128
|
const hourArr = [];
|
|
129
|
+
|
|
118
130
|
for (let hour = startPoint; hour <= endPoint; hour++) {
|
|
119
131
|
const htxt = addZeroIfNeeded(hour);
|
|
120
132
|
hourArr.push(htxt);
|
|
121
133
|
}
|
|
134
|
+
|
|
122
135
|
return hourArr;
|
|
123
136
|
}
|
|
124
137
|
export function getMinuteDetails() {
|
|
@@ -133,10 +146,12 @@ export function getMinuteSuggestions() {
|
|
|
133
146
|
endPoint
|
|
134
147
|
} = getMinuteDetails();
|
|
135
148
|
const minArr = [];
|
|
149
|
+
|
|
136
150
|
for (let minute = startPoint; minute <= endPoint; minute++) {
|
|
137
151
|
const mtxt = addZeroIfNeeded(minute);
|
|
138
152
|
minArr.push(mtxt);
|
|
139
153
|
}
|
|
154
|
+
|
|
140
155
|
return minArr;
|
|
141
156
|
}
|
|
142
157
|
export function addZeroIfNeeded(value) {
|
|
@@ -146,12 +161,14 @@ export function getIsNoonValueTyped(event) {
|
|
|
146
161
|
const {
|
|
147
162
|
keyCode
|
|
148
163
|
} = event;
|
|
164
|
+
|
|
149
165
|
if (keyCode === 65 || keyCode === 77 || keyCode === 80) {
|
|
150
166
|
//A -65
|
|
151
167
|
//M -77
|
|
152
168
|
//P -80
|
|
153
169
|
return true;
|
|
154
170
|
}
|
|
171
|
+
|
|
155
172
|
return false;
|
|
156
173
|
}
|
|
157
174
|
export function getNoonDetails() {
|
|
@@ -159,32 +176,42 @@ export function getNoonDetails() {
|
|
|
159
176
|
allowedValues: ['AM', 'PM']
|
|
160
177
|
};
|
|
161
178
|
}
|
|
179
|
+
|
|
162
180
|
function getIsArrowTyped(keyCode) {
|
|
163
181
|
const arrowKeycodes = [37, 38, 39, 40];
|
|
182
|
+
|
|
164
183
|
if (arrowKeycodes.indexOf(keyCode) >= 0) {
|
|
165
184
|
return true;
|
|
166
185
|
}
|
|
186
|
+
|
|
167
187
|
return false;
|
|
168
188
|
}
|
|
189
|
+
|
|
169
190
|
export function getIsSupportedKey(event) {
|
|
170
191
|
const {
|
|
171
192
|
keyCode
|
|
172
193
|
} = event;
|
|
194
|
+
|
|
173
195
|
if (getIsArrowTyped(keyCode) || getIsDeleteTyped(keyCode) || getIsNumberTyped(event) || getIsNoonValueTyped(event)) {
|
|
174
196
|
return true;
|
|
175
197
|
}
|
|
198
|
+
|
|
176
199
|
return false;
|
|
177
200
|
}
|
|
178
201
|
export function arrayIsNotEqual(a, b) {
|
|
179
202
|
return a.some((val, index) => val !== b[index]);
|
|
180
203
|
}
|
|
204
|
+
|
|
181
205
|
function getIsEmptyValue(value, startPoint, endPoint) {
|
|
182
206
|
const newValue = parseInt(value) || 0;
|
|
207
|
+
|
|
183
208
|
if (newValue >= startPoint && newValue <= endPoint) {
|
|
184
209
|
return false;
|
|
185
210
|
}
|
|
211
|
+
|
|
186
212
|
return true;
|
|
187
213
|
}
|
|
214
|
+
|
|
188
215
|
export function getIsEmptyHour(value, is24Hour) {
|
|
189
216
|
const {
|
|
190
217
|
startPoint,
|
|
@@ -206,6 +233,7 @@ export function getIsCurrentYear(_ref) {
|
|
|
206
233
|
timeZone
|
|
207
234
|
} = _ref;
|
|
208
235
|
let isCurrentYear = false;
|
|
236
|
+
|
|
209
237
|
if (value && value !== INVALID_DATE) {
|
|
210
238
|
const dateObj = isDateTime ? datetime.toDate(datetime.tz.utcToTz(value, timeZone)) : datetime.toDate(value);
|
|
211
239
|
const currentDateObj = new Date();
|
|
@@ -213,6 +241,7 @@ export function getIsCurrentYear(_ref) {
|
|
|
213
241
|
const selectedYear = dateObj.getFullYear();
|
|
214
242
|
isCurrentYear = currentYear === selectedYear;
|
|
215
243
|
}
|
|
244
|
+
|
|
216
245
|
return {
|
|
217
246
|
isCurrentYear
|
|
218
247
|
};
|
|
@@ -225,6 +254,7 @@ export function removeYearPattern(dateFormatArr, patternArr) {
|
|
|
225
254
|
const {
|
|
226
255
|
type
|
|
227
256
|
} = flags[val];
|
|
257
|
+
|
|
228
258
|
if (type === 'year') {
|
|
229
259
|
yearIndex = index;
|
|
230
260
|
} else {
|
|
@@ -23,6 +23,7 @@ export function getChangedMonth(values, event, focusOrders, keyActions) {
|
|
|
23
23
|
startPoint,
|
|
24
24
|
endPoint
|
|
25
25
|
} = getMonthDetails();
|
|
26
|
+
|
|
26
27
|
if (keyCode === 38) {
|
|
27
28
|
//up arrow
|
|
28
29
|
if (newMonth === endPoint || !newMonth) {
|
|
@@ -45,15 +46,19 @@ export function getChangedMonth(values, event, focusOrders, keyActions) {
|
|
|
45
46
|
const keyString = String.fromCharCode(which);
|
|
46
47
|
let newValue = isNewType ? keyString : month.toString() + keyString;
|
|
47
48
|
newValue = Number.parseInt(newValue);
|
|
49
|
+
|
|
48
50
|
if (isNewType) {
|
|
49
51
|
isChanged = true;
|
|
52
|
+
|
|
50
53
|
if (newValue * 10 > endPoint) {
|
|
51
54
|
newFocusOrder += 1;
|
|
52
55
|
}
|
|
56
|
+
|
|
53
57
|
newMonth = newValue;
|
|
54
58
|
} else {
|
|
55
59
|
isChanged = true;
|
|
56
60
|
newFocusOrder += 1;
|
|
61
|
+
|
|
57
62
|
if (newValue > endPoint) {
|
|
58
63
|
newMonth = endPoint;
|
|
59
64
|
} else if (!newValue) {
|
|
@@ -66,12 +71,15 @@ export function getChangedMonth(values, event, focusOrders, keyActions) {
|
|
|
66
71
|
isChanged = true;
|
|
67
72
|
newMonth = '';
|
|
68
73
|
}
|
|
74
|
+
|
|
69
75
|
const dayEnd = getDayEnd(newMonth, newYear);
|
|
70
76
|
let dayChanged = false;
|
|
77
|
+
|
|
71
78
|
if (newDay && newDay > dayEnd) {
|
|
72
79
|
dayChanged = true;
|
|
73
80
|
newDay = dayEnd;
|
|
74
81
|
}
|
|
82
|
+
|
|
75
83
|
return {
|
|
76
84
|
day: dayChanged ? newDay : day,
|
|
77
85
|
month: newMonth,
|
|
@@ -23,6 +23,7 @@ export function getChangedHour(values, event, focusOrders, keyActions) {
|
|
|
23
23
|
startPoint,
|
|
24
24
|
endPoint
|
|
25
25
|
} = getHourDetails(is24Hour);
|
|
26
|
+
|
|
26
27
|
if (keyCode === 38) {
|
|
27
28
|
//up arrow
|
|
28
29
|
if (newHour === endPoint || getIsEmptyHour(newHour, is24Hour)) {
|
|
@@ -45,15 +46,19 @@ export function getChangedHour(values, event, focusOrders, keyActions) {
|
|
|
45
46
|
const keyString = String.fromCharCode(which);
|
|
46
47
|
let newValue = isNewType ? keyString : hour.toString() + keyString;
|
|
47
48
|
newValue = Number.parseInt(newValue);
|
|
49
|
+
|
|
48
50
|
if (isNewType) {
|
|
49
51
|
isChanged = true;
|
|
52
|
+
|
|
50
53
|
if (newValue * 10 > endPoint) {
|
|
51
54
|
newFocusOrder += 1;
|
|
52
55
|
}
|
|
56
|
+
|
|
53
57
|
newHour = newValue;
|
|
54
58
|
} else {
|
|
55
59
|
isChanged = true;
|
|
56
60
|
newFocusOrder += 1;
|
|
61
|
+
|
|
57
62
|
if (newValue > endPoint) {
|
|
58
63
|
newHour = endPoint;
|
|
59
64
|
} else if (!newValue) {
|
|
@@ -66,6 +71,7 @@ export function getChangedHour(values, event, focusOrders, keyActions) {
|
|
|
66
71
|
isChanged = true;
|
|
67
72
|
newHour = '';
|
|
68
73
|
}
|
|
74
|
+
|
|
69
75
|
return {
|
|
70
76
|
hour: newHour,
|
|
71
77
|
isChanged,
|
|
@@ -92,6 +98,7 @@ export function getChangedMinute(values, event, focusOrders, keyActions) {
|
|
|
92
98
|
startPoint,
|
|
93
99
|
endPoint
|
|
94
100
|
} = getMinuteDetails();
|
|
101
|
+
|
|
95
102
|
if (keyCode === 38) {
|
|
96
103
|
//up arrow
|
|
97
104
|
if (newMinute === endPoint || isEmptyMinute) {
|
|
@@ -114,15 +121,19 @@ export function getChangedMinute(values, event, focusOrders, keyActions) {
|
|
|
114
121
|
const keyString = String.fromCharCode(which);
|
|
115
122
|
let newValue = isNewType ? keyString : minute.toString() + keyString;
|
|
116
123
|
newValue = Number.parseInt(newValue);
|
|
124
|
+
|
|
117
125
|
if (isNewType) {
|
|
118
126
|
isChanged = true;
|
|
127
|
+
|
|
119
128
|
if (newValue * 10 > endPoint) {
|
|
120
129
|
newFocusOrder += 1;
|
|
121
130
|
}
|
|
131
|
+
|
|
122
132
|
newMinute = newValue;
|
|
123
133
|
} else {
|
|
124
134
|
isChanged = true;
|
|
125
135
|
newFocusOrder += 1;
|
|
136
|
+
|
|
126
137
|
if (newValue > endPoint) {
|
|
127
138
|
newMinute = endPoint;
|
|
128
139
|
} else {
|
|
@@ -133,13 +144,16 @@ export function getChangedMinute(values, event, focusOrders, keyActions) {
|
|
|
133
144
|
isChanged = true;
|
|
134
145
|
newMinute = '';
|
|
135
146
|
}
|
|
147
|
+
|
|
136
148
|
return {
|
|
137
149
|
minute: newMinute,
|
|
138
150
|
isChanged,
|
|
139
151
|
focusOrder: newFocusOrder
|
|
140
152
|
};
|
|
141
153
|
}
|
|
142
|
-
export function getChangedNoon(values, event, focusOrders
|
|
154
|
+
export function getChangedNoon(values, event, focusOrders
|
|
155
|
+
/*keyActions*/
|
|
156
|
+
) {
|
|
143
157
|
const {
|
|
144
158
|
keyCode,
|
|
145
159
|
which
|
|
@@ -152,9 +166,7 @@ export function getChangedNoon(values, event, focusOrders /*keyActions*/) {
|
|
|
152
166
|
const {
|
|
153
167
|
focusOrder
|
|
154
168
|
} = focusOrders;
|
|
155
|
-
const newFocusOrder = focusOrder;
|
|
156
|
-
|
|
157
|
-
// const isNewType = getIsNewValueType(focusOrders, keyActions);
|
|
169
|
+
const newFocusOrder = focusOrder; // const isNewType = getIsNewValueType(focusOrders, keyActions);
|
|
158
170
|
|
|
159
171
|
const {
|
|
160
172
|
allowedValues
|
|
@@ -162,6 +174,7 @@ export function getChangedNoon(values, event, focusOrders /*keyActions*/) {
|
|
|
162
174
|
const [startPoint] = allowedValues;
|
|
163
175
|
const endPoint = allowedValues[allowedValues.length - 1];
|
|
164
176
|
const currentNoonIndex = allowedValues.indexOf(newNoon);
|
|
177
|
+
|
|
165
178
|
if (keyCode === 38) {
|
|
166
179
|
//up arrow
|
|
167
180
|
if (newNoon === endPoint || !newNoon) {
|
|
@@ -181,11 +194,11 @@ export function getChangedNoon(values, event, focusOrders /*keyActions*/) {
|
|
|
181
194
|
newNoon = allowedValues[currentNoonIndex - 1];
|
|
182
195
|
}
|
|
183
196
|
} else if (getIsNoonValueTyped(event)) {
|
|
184
|
-
const keyString = String.fromCharCode(which);
|
|
197
|
+
const keyString = String.fromCharCode(which); // let newValue = isNewType ? keyString : noon.toString() + keyString;
|
|
185
198
|
|
|
186
|
-
// let newValue = isNewType ? keyString : noon.toString() + keyString;
|
|
187
199
|
const newValue = keyString;
|
|
188
200
|
const needChangeNoon = newNoon.indexOf(newValue) === -1 ? true : false;
|
|
201
|
+
|
|
189
202
|
if (needChangeNoon) {
|
|
190
203
|
let newValueIndex = currentNoonIndex;
|
|
191
204
|
allowedValues.some((val, index) => {
|
|
@@ -193,8 +206,10 @@ export function getChangedNoon(values, event, focusOrders /*keyActions*/) {
|
|
|
193
206
|
newValueIndex = index;
|
|
194
207
|
return true;
|
|
195
208
|
}
|
|
209
|
+
|
|
196
210
|
return false;
|
|
197
211
|
});
|
|
212
|
+
|
|
198
213
|
if (currentNoonIndex !== newValueIndex) {
|
|
199
214
|
isChanged = true;
|
|
200
215
|
newNoon = allowedValues[newValueIndex];
|
|
@@ -204,6 +219,7 @@ export function getChangedNoon(values, event, focusOrders /*keyActions*/) {
|
|
|
204
219
|
isChanged = true;
|
|
205
220
|
newNoon = '';
|
|
206
221
|
}
|
|
222
|
+
|
|
207
223
|
return {
|
|
208
224
|
noon: newNoon,
|
|
209
225
|
isChanged,
|
|
@@ -15,16 +15,17 @@ export function getChangedYear(values, event, focusOrders, keyActions, _ref) {
|
|
|
15
15
|
day = '',
|
|
16
16
|
month = ''
|
|
17
17
|
} = values;
|
|
18
|
-
let isChanged = false;
|
|
18
|
+
let isChanged = false; //Year Two Digit case
|
|
19
19
|
|
|
20
|
-
//Year Two Digit case
|
|
21
20
|
const {
|
|
22
21
|
length: yearLength
|
|
23
22
|
} = yearInfo;
|
|
24
23
|
const oldYear = year; // For get Centuries
|
|
24
|
+
|
|
25
25
|
if (yearLength === 2) {
|
|
26
26
|
year = convertYearToTwoDigit(year).toString();
|
|
27
27
|
}
|
|
28
|
+
|
|
28
29
|
let newDay = Number.parseInt(day) || 0;
|
|
29
30
|
const newMonth = Number.parseInt(month) || 0;
|
|
30
31
|
let newYear = Number.parseInt(year) || 0;
|
|
@@ -38,6 +39,7 @@ export function getChangedYear(values, event, focusOrders, keyActions, _ref) {
|
|
|
38
39
|
endPoint,
|
|
39
40
|
currentYear
|
|
40
41
|
} = getYearDetails(yearLength);
|
|
42
|
+
|
|
41
43
|
if (keyCode === 38) {
|
|
42
44
|
//up arrow
|
|
43
45
|
if (newYear === endPoint) {
|
|
@@ -67,14 +69,17 @@ export function getChangedYear(values, event, focusOrders, keyActions, _ref) {
|
|
|
67
69
|
let newValue = isNewType ? keyString : year.toString() + keyString;
|
|
68
70
|
const newValueString = newValue || '';
|
|
69
71
|
newValue = Number.parseInt(newValue);
|
|
72
|
+
|
|
70
73
|
if (isNewType) {
|
|
71
74
|
isChanged = true;
|
|
72
75
|
newYear = newValue;
|
|
73
76
|
} else {
|
|
74
77
|
isChanged = true;
|
|
78
|
+
|
|
75
79
|
if (newValue * 10 > endPoint) {
|
|
76
80
|
newFocusOrder += 1;
|
|
77
81
|
}
|
|
82
|
+
|
|
78
83
|
if (newValue > endPoint) {
|
|
79
84
|
// newYear = endPoint;
|
|
80
85
|
newYear = currentYear;
|
|
@@ -93,15 +98,19 @@ export function getChangedYear(values, event, focusOrders, keyActions, _ref) {
|
|
|
93
98
|
isChanged = true;
|
|
94
99
|
newYear = '';
|
|
95
100
|
}
|
|
101
|
+
|
|
96
102
|
if (yearLength === 2) {
|
|
97
103
|
newYear = convertTwoDigitToYear(newYear, oldYear);
|
|
98
104
|
}
|
|
105
|
+
|
|
99
106
|
const dayEnd = getDayEnd(newMonth, newYear);
|
|
100
107
|
let dayChanged = false;
|
|
108
|
+
|
|
101
109
|
if (newDay && newDay > dayEnd) {
|
|
102
110
|
dayChanged = true;
|
|
103
111
|
newDay = dayEnd;
|
|
104
112
|
}
|
|
113
|
+
|
|
105
114
|
return {
|
|
106
115
|
day: dayChanged ? newDay : day,
|
|
107
116
|
year: newYear,
|
|
@@ -4,56 +4,50 @@ export const clone = (a, b, c, d, e, f) => {
|
|
|
4
4
|
};
|
|
5
5
|
export const extract = (obj, keys, target) => {
|
|
6
6
|
target = target || {};
|
|
7
|
+
|
|
7
8
|
for (var i in obj) {
|
|
8
9
|
if (keys.indexOf(i) < 0) continue;
|
|
9
10
|
if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;
|
|
10
11
|
target[i] = obj[i];
|
|
11
12
|
}
|
|
13
|
+
|
|
12
14
|
return target;
|
|
13
15
|
};
|
|
14
16
|
export const omit = (obj, keys, target) => {
|
|
15
17
|
target = target || {};
|
|
18
|
+
|
|
16
19
|
for (var i in obj) {
|
|
17
20
|
if (keys.indexOf(i) >= 0) continue;
|
|
18
21
|
if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;
|
|
19
22
|
target[i] = obj[i];
|
|
20
23
|
}
|
|
24
|
+
|
|
21
25
|
return target;
|
|
22
26
|
};
|
|
23
27
|
export const equals = (x, y) => {
|
|
24
|
-
if (x === y) return true;
|
|
25
|
-
// if both x and y are null or undefined and exactly the same
|
|
28
|
+
if (x === y) return true; // if both x and y are null or undefined and exactly the same
|
|
26
29
|
|
|
27
|
-
if (x == null && y != null || x != null && y == null) return false;
|
|
28
|
-
//break if not same null or undefined
|
|
30
|
+
if (x == null && y != null || x != null && y == null) return false; //break if not same null or undefined
|
|
29
31
|
|
|
30
|
-
if (!(x instanceof Object) || !(y instanceof Object)) return false;
|
|
31
|
-
// if they are not strictly equal, they both need to be Objects
|
|
32
|
+
if (!(x instanceof Object) || !(y instanceof Object)) return false; // if they are not strictly equal, they both need to be Objects
|
|
32
33
|
|
|
33
|
-
if (x.constructor !== y.constructor) return false;
|
|
34
|
-
// they must have the exact same prototype chain, the closest we can do is
|
|
34
|
+
if (x.constructor !== y.constructor) return false; // they must have the exact same prototype chain, the closest we can do is
|
|
35
35
|
// test there constructor.
|
|
36
36
|
|
|
37
37
|
for (var p in x) {
|
|
38
|
-
if (!x.hasOwnProperty(p)) continue;
|
|
39
|
-
// other properties were tested using x.constructor === y.constructor
|
|
38
|
+
if (!x.hasOwnProperty(p)) continue; // other properties were tested using x.constructor === y.constructor
|
|
40
39
|
|
|
41
|
-
if (!y.hasOwnProperty(p)) return false;
|
|
42
|
-
// allows to compare x[ p ] and y[ p ] when set to undefined
|
|
40
|
+
if (!y.hasOwnProperty(p)) return false; // allows to compare x[ p ] and y[ p ] when set to undefined
|
|
43
41
|
|
|
44
|
-
if (x[p] === y[p]) continue;
|
|
45
|
-
// if they have the same strict value or identity then they are equal
|
|
42
|
+
if (x[p] === y[p]) continue; // if they have the same strict value or identity then they are equal
|
|
46
43
|
|
|
47
|
-
if (typeof x[p] !== 'object') return false;
|
|
48
|
-
// Numbers, Strings, Functions, Booleans must be strictly equal
|
|
44
|
+
if (typeof x[p] !== 'object') return false; // Numbers, Strings, Functions, Booleans must be strictly equal
|
|
49
45
|
|
|
50
|
-
if (!equals(x[p], y[p])) return false;
|
|
51
|
-
// Objects and Arrays must be tested recursively
|
|
46
|
+
if (!equals(x[p], y[p])) return false; // Objects and Arrays must be tested recursively
|
|
52
47
|
}
|
|
53
48
|
|
|
54
49
|
for (p in y) {
|
|
55
|
-
if (y.hasOwnProperty(p) && !x.hasOwnProperty(p)) return false;
|
|
56
|
-
// allows x[ p ] to be set to undefined
|
|
50
|
+
if (y.hasOwnProperty(p) && !x.hasOwnProperty(p)) return false; // allows x[ p ] to be set to undefined
|
|
57
51
|
}
|
|
58
52
|
|
|
59
53
|
return true;
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
const exports = {};
|
|
2
2
|
let types = 'Array Object String Date RegExp Function Boolean Number Null Undefined'.split(' ');
|
|
3
|
+
|
|
3
4
|
let type = function () {
|
|
4
5
|
return Object.prototype.toString.call(this).slice(8, -1);
|
|
5
6
|
};
|
|
7
|
+
|
|
6
8
|
for (let i = types.length; i--;) {
|
|
7
9
|
/*eslint-disable */
|
|
8
10
|
exports['is' + types[i]] = function (self) {
|
|
@@ -13,4 +15,5 @@ for (let i = types.length; i--;) {
|
|
|
13
15
|
}
|
|
14
16
|
/*eslint-enable */
|
|
15
17
|
|
|
18
|
+
|
|
16
19
|
export default exports;
|