@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.
Files changed (352) hide show
  1. package/README.md +4 -0
  2. package/es/Accordion/Accordion.js +7 -3
  3. package/es/Accordion/AccordionItem.js +4 -2
  4. package/es/Animation/Animation.js +3 -3
  5. package/es/AppContainer/AppContainer.js +13 -5
  6. package/es/Avatar/Avatar.js +23 -11
  7. package/es/AvatarTeam/AvatarTeam.js +3 -3
  8. package/es/Button/Button.js +4 -3
  9. package/es/Buttongroup/Buttongroup.js +3 -3
  10. package/es/Card/Card.js +21 -10
  11. package/es/CheckBox/CheckBox.js +5 -3
  12. package/es/DateTime/CalendarView.js +32 -20
  13. package/es/DateTime/DateTime.js +75 -10
  14. package/es/DateTime/DateTimePopupFooter.js +4 -2
  15. package/es/DateTime/DateTimePopupHeader.js +8 -2
  16. package/es/DateTime/DateWidget.js +98 -35
  17. package/es/DateTime/DaysRow.js +4 -2
  18. package/es/DateTime/Time.js +10 -2
  19. package/es/DateTime/YearView.js +28 -4
  20. package/es/DateTime/__tests__/CalendarView.spec.js +1 -0
  21. package/es/DateTime/__tests__/DateTime.spec.js +1 -0
  22. package/es/DateTime/__tests__/DateWidget.spec.js +2 -3
  23. package/es/DateTime/common.js +3 -0
  24. package/es/DateTime/constants.js +1 -0
  25. package/es/DateTime/dateFormatUtils/dateFormat.js +63 -30
  26. package/es/DateTime/dateFormatUtils/dateFormats.js +0 -1
  27. package/es/DateTime/dateFormatUtils/dayChange.js +13 -4
  28. package/es/DateTime/dateFormatUtils/index.js +32 -2
  29. package/es/DateTime/dateFormatUtils/monthChange.js +8 -0
  30. package/es/DateTime/dateFormatUtils/timeChange.js +22 -6
  31. package/es/DateTime/dateFormatUtils/yearChange.js +11 -2
  32. package/es/DateTime/objectUtils.js +14 -20
  33. package/es/DateTime/props/defaultProps.js +2 -1
  34. package/es/DateTime/typeChecker.js +3 -0
  35. package/es/DateTime/validator.js +58 -6
  36. package/es/DropBox/DropBox.js +6 -2
  37. package/es/DropBox/DropBoxElement/DropBoxElement.js +7 -0
  38. package/es/DropBox/DropBoxElement/css/cssJSLogic.js +5 -3
  39. package/es/DropBox/DropBoxElement/useDropboxPosCalc.js +3 -0
  40. package/es/DropBox/props/defaultProps.js +1 -2
  41. package/es/DropBox/props/propTypes.js +1 -2
  42. package/es/DropDown/DropDown.js +8 -4
  43. package/es/DropDown/DropDownHeading.js +4 -5
  44. package/es/DropDown/DropDownItem.js +6 -0
  45. package/es/DropDown/DropDownSearch.js +4 -0
  46. package/es/DropDown/DropDownSeparator.js +1 -0
  47. package/es/DropDown/__tests__/DropDown.spec.js +1 -2
  48. package/es/Heading/Heading.js +2 -3
  49. package/es/Label/Label.js +2 -3
  50. package/es/Layout/Box.js +13 -0
  51. package/es/Layout/Container.js +12 -1
  52. package/es/Layout/index.js +1 -2
  53. package/es/ListItem/ListContainer.js +8 -3
  54. package/es/ListItem/ListItem.js +9 -3
  55. package/es/ListItem/ListItemWithAvatar.js +9 -3
  56. package/es/ListItem/ListItemWithCheckBox.js +7 -2
  57. package/es/ListItem/ListItemWithIcon.js +8 -3
  58. package/es/ListItem/ListItemWithRadio.js +7 -3
  59. package/es/Modal/Modal.js +28 -11
  60. package/es/MultiSelect/AdvancedGroupMultiSelect.js +89 -13
  61. package/es/MultiSelect/AdvancedMultiSelect.js +32 -9
  62. package/es/MultiSelect/EmptyState.js +2 -0
  63. package/es/MultiSelect/MultiSelect.js +99 -32
  64. package/es/MultiSelect/MultiSelectHeader.js +3 -0
  65. package/es/MultiSelect/MultiSelectWithAvatar.js +12 -6
  66. package/es/MultiSelect/SelectedOptions.js +6 -3
  67. package/es/MultiSelect/Suggestions.js +7 -3
  68. package/es/MultiSelect/__tests__/MultiSelect.spec.js +4 -6
  69. package/es/MultiSelect/props/propTypes.js +2 -0
  70. package/es/PopOver/PopOver.js +18 -2
  71. package/es/PopOver/__tests__/PopOver.spec.js +2 -1
  72. package/es/Popup/Popup.js +77 -24
  73. package/es/Popup/__tests__/Popup.spec.js +17 -5
  74. package/es/Popup/viewPort.js +16 -4
  75. package/es/Provider/IdProvider.js +10 -5
  76. package/es/Provider/LibraryContext.js +6 -4
  77. package/es/Provider/NumberGenerator/NumberGenerator.js +21 -7
  78. package/es/Provider/ZindexProvider.js +9 -2
  79. package/es/Radio/Radio.js +4 -2
  80. package/es/Responsive/CustomResponsive.js +30 -18
  81. package/es/Responsive/RefWrapper.js +6 -7
  82. package/es/Responsive/ResizeComponent.js +35 -25
  83. package/es/Responsive/ResizeObserver.js +26 -6
  84. package/es/Responsive/Responsive.js +34 -20
  85. package/es/Responsive/index.js +1 -3
  86. package/es/Responsive/sizeObservers.js +28 -7
  87. package/es/Responsive/utils/index.js +7 -5
  88. package/es/Responsive/utils/shallowCompare.js +7 -2
  89. package/es/Responsive/windowResizeObserver.js +7 -0
  90. package/es/ResponsiveDropBox/ResponsiveDropBox.js +4 -0
  91. package/es/Ribbon/Ribbon.js +3 -2
  92. package/es/RippleEffect/RippleEffect.js +1 -3
  93. package/es/Select/GroupSelect.js +58 -14
  94. package/es/Select/Select.js +79 -33
  95. package/es/Select/SelectWithAvatar.js +17 -4
  96. package/es/Select/SelectWithIcon.js +46 -5
  97. package/es/Select/__tests__/Select.spec.js +6 -8
  98. package/es/Select/props/propTypes.js +1 -0
  99. package/es/Stencils/Stencils.js +3 -3
  100. package/es/Switch/Switch.js +5 -3
  101. package/es/Tab/Tab.js +4 -4
  102. package/es/Tab/TabContent.js +1 -0
  103. package/es/Tab/TabContentWrapper.js +2 -0
  104. package/es/Tab/TabWrapper.js +5 -2
  105. package/es/Tab/Tabs.js +54 -7
  106. package/es/Tab/__tests__/Tab.spec.js +1 -3
  107. package/es/Tab/__tests__/TabWrapper.spec.js +1 -0
  108. package/es/Tag/Tag.js +6 -3
  109. package/es/TextBox/TextBox.js +15 -3
  110. package/es/TextBox/__tests__/TextBox.spec.js +1 -4
  111. package/es/TextBoxIcon/TextBoxIcon.js +9 -2
  112. package/es/TextBoxIcon/__tests__/TextBoxIcon.spec.js +2 -7
  113. package/es/Textarea/Textarea.js +12 -3
  114. package/es/Textarea/__tests__/Textarea.spec.js +2 -2
  115. package/es/Tooltip/Tooltip.js +58 -14
  116. package/es/Tooltip/__tests__/Tooltip.spec.js +5 -0
  117. package/es/VelocityAnimation/VelocityAnimation/VelocityAnimation.js +3 -2
  118. package/es/VelocityAnimation/VelocityAnimationGroup/VelocityAnimationGroup.js +7 -5
  119. package/es/deprecated/PortalLayer/PortalLayer.js +25 -20
  120. package/es/semantic/Button/Button.js +3 -2
  121. package/es/utils/Common.js +54 -9
  122. package/es/utils/ContextOptimizer.js +4 -5
  123. package/es/utils/__tests__/debounce.spec.js +2 -2
  124. package/es/utils/constructFullName.js +2 -0
  125. package/es/utils/css/compileClassNames.js +5 -0
  126. package/es/utils/css/mergeStyle.js +7 -6
  127. package/es/utils/css/utils.js +1 -0
  128. package/es/utils/datetime/GMTZones.js +48 -0
  129. package/es/utils/datetime/common.js +31 -7
  130. package/es/utils/debounce.js +5 -1
  131. package/es/utils/dropDownUtils.js +68 -11
  132. package/es/utils/getInitial.js +4 -0
  133. package/es/utils/shallowEqual.js +6 -0
  134. package/lib/Accordion/Accordion.js +42 -18
  135. package/lib/Accordion/AccordionItem.js +40 -18
  136. package/lib/Accordion/__tests__/Accordion.spec.js +3 -0
  137. package/lib/Accordion/index.js +3 -0
  138. package/lib/Accordion/props/propTypes.js +3 -0
  139. package/lib/Animation/Animation.js +38 -18
  140. package/lib/Animation/__tests__/Animation.spec.js +11 -7
  141. package/lib/Animation/props/propTypes.js +3 -0
  142. package/lib/AppContainer/AppContainer.js +56 -21
  143. package/lib/AppContainer/props/propTypes.js +3 -0
  144. package/lib/Avatar/Avatar.js +78 -38
  145. package/lib/Avatar/__tests__/Avatar.spec.js +44 -0
  146. package/lib/Avatar/props/propTypes.js +3 -0
  147. package/lib/AvatarTeam/AvatarTeam.js +52 -30
  148. package/lib/AvatarTeam/__tests__/AvatarTeam.spec.js +13 -0
  149. package/lib/AvatarTeam/props/propTypes.js +3 -0
  150. package/lib/Button/Button.js +31 -20
  151. package/lib/Button/css/cssJSLogic.js +18 -17
  152. package/lib/Button/index.js +3 -0
  153. package/lib/Button/props/defaultProps.js +2 -0
  154. package/lib/Button/props/propTypes.js +3 -0
  155. package/lib/Buttongroup/Buttongroup.js +32 -12
  156. package/lib/Buttongroup/__test__/Buttongroup.spec.js +10 -0
  157. package/lib/Buttongroup/props/propTypes.js +3 -0
  158. package/lib/Card/Card.js +102 -46
  159. package/lib/Card/__tests__/Card.spec.js +10 -1
  160. package/lib/Card/index.js +4 -0
  161. package/lib/Card/props/propTypes.js +3 -0
  162. package/lib/CheckBox/CheckBox.js +71 -47
  163. package/lib/CheckBox/__tests__/CheckBox.spec.js +3 -0
  164. package/lib/CheckBox/props/propTypes.js +3 -0
  165. package/lib/DateTime/CalendarView.js +82 -42
  166. package/lib/DateTime/DateTime.js +246 -158
  167. package/lib/DateTime/DateTimePopupFooter.js +31 -8
  168. package/lib/DateTime/DateTimePopupHeader.js +48 -17
  169. package/lib/DateTime/DateWidget.js +352 -250
  170. package/lib/DateTime/DaysRow.js +27 -5
  171. package/lib/DateTime/Time.js +73 -32
  172. package/lib/DateTime/YearView.js +77 -28
  173. package/lib/DateTime/__tests__/CalendarView.spec.js +13 -5
  174. package/lib/DateTime/__tests__/DateTime.spec.js +51 -37
  175. package/lib/DateTime/__tests__/DateWidget.spec.js +10 -8
  176. package/lib/DateTime/common.js +6 -0
  177. package/lib/DateTime/constants.js +1 -0
  178. package/lib/DateTime/dateFormatUtils/dateFormat.js +184 -122
  179. package/lib/DateTime/dateFormatUtils/dateFormats.js +0 -1
  180. package/lib/DateTime/dateFormatUtils/dayChange.js +14 -7
  181. package/lib/DateTime/dateFormatUtils/index.js +74 -16
  182. package/lib/DateTime/dateFormatUtils/monthChange.js +19 -9
  183. package/lib/DateTime/dateFormatUtils/timeChange.js +54 -22
  184. package/lib/DateTime/dateFormatUtils/yearChange.js +22 -11
  185. package/lib/DateTime/index.js +2 -0
  186. package/lib/DateTime/objectUtils.js +24 -20
  187. package/lib/DateTime/props/defaultProps.js +2 -1
  188. package/lib/DateTime/props/propTypes.js +11 -1
  189. package/lib/DateTime/typeChecker.js +4 -0
  190. package/lib/DateTime/validator.js +73 -10
  191. package/lib/DropBox/DropBox.js +34 -10
  192. package/lib/DropBox/DropBoxElement/DropBoxElement.js +59 -38
  193. package/lib/DropBox/DropBoxElement/css/cssJSLogic.js +42 -34
  194. package/lib/DropBox/DropBoxElement/props/propTypes.js +3 -0
  195. package/lib/DropBox/DropBoxElement/useDropboxPosCalc.js +14 -9
  196. package/lib/DropBox/__tests__/DropBox.spec.js +6 -2
  197. package/lib/DropBox/css/cssJSLogic.js +3 -1
  198. package/lib/DropBox/props/defaultProps.js +8 -4
  199. package/lib/DropBox/props/propTypes.js +10 -4
  200. package/lib/DropDown/DropDown.js +52 -8
  201. package/lib/DropDown/DropDownHeading.js +39 -20
  202. package/lib/DropDown/DropDownItem.js +42 -20
  203. package/lib/DropDown/DropDownSearch.js +40 -17
  204. package/lib/DropDown/DropDownSeparator.js +24 -4
  205. package/lib/DropDown/__tests__/DropDown.spec.js +15 -9
  206. package/lib/DropDown/__tests__/DropDownItem.spec.js +9 -4
  207. package/lib/DropDown/__tests__/DropDownSearch.spec.js +3 -0
  208. package/lib/DropDown/index.js +9 -0
  209. package/lib/DropDown/props/propTypes.js +6 -4
  210. package/lib/Heading/Heading.js +37 -15
  211. package/lib/Heading/props/propTypes.js +3 -0
  212. package/lib/Label/Label.js +39 -19
  213. package/lib/Label/__tests__/Label.spec.js +14 -1
  214. package/lib/Label/props/propTypes.js +3 -0
  215. package/lib/Layout/Box.js +31 -11
  216. package/lib/Layout/Container.js +29 -10
  217. package/lib/Layout/__tests__/Box.spec.js +65 -49
  218. package/lib/Layout/__tests__/Container.spec.js +67 -50
  219. package/lib/Layout/index.js +3 -0
  220. package/lib/Layout/props/propTypes.js +3 -0
  221. package/lib/Layout/utils.js +10 -0
  222. package/lib/ListItem/ListContainer.js +48 -27
  223. package/lib/ListItem/ListItem.js +69 -45
  224. package/lib/ListItem/ListItemWithAvatar.js +75 -48
  225. package/lib/ListItem/ListItemWithCheckBox.js +64 -39
  226. package/lib/ListItem/ListItemWithIcon.js +68 -44
  227. package/lib/ListItem/ListItemWithRadio.js +65 -41
  228. package/lib/ListItem/index.js +7 -0
  229. package/lib/ListItem/props/propTypes.js +6 -4
  230. package/lib/Modal/Modal.js +45 -10
  231. package/lib/Modal/props/propTypes.js +3 -0
  232. package/lib/MultiSelect/AdvancedGroupMultiSelect.js +294 -166
  233. package/lib/MultiSelect/AdvancedMultiSelect.js +202 -125
  234. package/lib/MultiSelect/EmptyState.js +45 -24
  235. package/lib/MultiSelect/MultiSelect.js +323 -206
  236. package/lib/MultiSelect/MultiSelectHeader.js +30 -8
  237. package/lib/MultiSelect/MultiSelectWithAvatar.js +105 -63
  238. package/lib/MultiSelect/SelectedOptions.js +43 -17
  239. package/lib/MultiSelect/Suggestions.js +64 -32
  240. package/lib/MultiSelect/__tests__/MultiSelect.spec.js +86 -75
  241. package/lib/MultiSelect/index.js +5 -0
  242. package/lib/MultiSelect/props/defaultProps.js +2 -0
  243. package/lib/MultiSelect/props/propTypes.js +5 -0
  244. package/lib/PopOver/PopOver.js +95 -49
  245. package/lib/PopOver/__tests__/PopOver.spec.js +4 -1
  246. package/lib/PopOver/index.js +4 -0
  247. package/lib/PopOver/props/propTypes.js +3 -0
  248. package/lib/Popup/Popup.js +158 -81
  249. package/lib/Popup/__tests__/Popup.spec.js +43 -8
  250. package/lib/Popup/viewPort.js +28 -14
  251. package/lib/Provider/AvatarSize.js +4 -0
  252. package/lib/Provider/Config.js +2 -0
  253. package/lib/Provider/CssProvider.js +4 -0
  254. package/lib/Provider/IdProvider.js +17 -6
  255. package/lib/Provider/LibraryContext.js +35 -15
  256. package/lib/Provider/LibraryContextInit.js +4 -0
  257. package/lib/Provider/NumberGenerator/NumberGenerator.js +44 -15
  258. package/lib/Provider/ZindexProvider.js +15 -3
  259. package/lib/Provider/index.js +5 -0
  260. package/lib/Radio/Radio.js +61 -38
  261. package/lib/Radio/__tests__/Radiospec.js +9 -5
  262. package/lib/Radio/props/propTypes.js +3 -0
  263. package/lib/Responsive/CustomResponsive.js +73 -29
  264. package/lib/Responsive/RefWrapper.js +17 -11
  265. package/lib/Responsive/ResizeComponent.js +62 -36
  266. package/lib/Responsive/ResizeObserver.js +24 -10
  267. package/lib/Responsive/Responsive.js +80 -30
  268. package/lib/Responsive/index.js +4 -0
  269. package/lib/Responsive/props/propTypes.js +3 -0
  270. package/lib/Responsive/sizeObservers.js +53 -17
  271. package/lib/Responsive/utils/index.js +11 -3
  272. package/lib/Responsive/utils/shallowCompare.js +11 -2
  273. package/lib/Responsive/windowResizeObserver.js +8 -0
  274. package/lib/ResponsiveDropBox/ResponsiveDropBox.js +45 -17
  275. package/lib/ResponsiveDropBox/props/propTypes.js +3 -0
  276. package/lib/Ribbon/Ribbon.js +33 -13
  277. package/lib/Ribbon/__tests__/Ribbon.spec.js +22 -0
  278. package/lib/Ribbon/props/propTypes.js +3 -0
  279. package/lib/RippleEffect/RippleEffect.js +18 -10
  280. package/lib/RippleEffect/props/propTypes.js +3 -0
  281. package/lib/Select/GroupSelect.js +229 -130
  282. package/lib/Select/Select.js +290 -209
  283. package/lib/Select/SelectWithAvatar.js +102 -56
  284. package/lib/Select/SelectWithIcon.js +132 -76
  285. package/lib/Select/__tests__/Select.spec.js +133 -91
  286. package/lib/Select/index.js +5 -0
  287. package/lib/Select/props/defaultProps.js +5 -4
  288. package/lib/Select/props/propTypes.js +4 -0
  289. package/lib/Stencils/Stencils.js +29 -10
  290. package/lib/Stencils/__tests__/Stencils.spec.js +12 -0
  291. package/lib/Stencils/props/propTypes.js +3 -0
  292. package/lib/Switch/Switch.js +57 -34
  293. package/lib/Switch/props/propTypes.js +3 -0
  294. package/lib/Tab/Tab.js +40 -27
  295. package/lib/Tab/TabContent.js +12 -5
  296. package/lib/Tab/TabContentWrapper.js +13 -6
  297. package/lib/Tab/TabWrapper.js +37 -19
  298. package/lib/Tab/Tabs.js +171 -91
  299. package/lib/Tab/__tests__/Tab.spec.js +67 -58
  300. package/lib/Tab/__tests__/TabContent.spec.js +10 -6
  301. package/lib/Tab/__tests__/TabContentWrapper.spec.js +28 -20
  302. package/lib/Tab/__tests__/TabWrapper.spec.js +12 -0
  303. package/lib/Tab/__tests__/Tabs.spec.js +53 -39
  304. package/lib/Tab/index.js +6 -0
  305. package/lib/Tab/props/propTypes.js +3 -0
  306. package/lib/Tag/Tag.js +72 -43
  307. package/lib/Tag/__tests__/Tag.spec.js +14 -8
  308. package/lib/Tag/props/propTypes.js +3 -0
  309. package/lib/TextBox/TextBox.js +85 -59
  310. package/lib/TextBox/__tests__/TextBox.spec.js +14 -4
  311. package/lib/TextBox/props/propTypes.js +6 -4
  312. package/lib/TextBoxIcon/TextBoxIcon.js +79 -52
  313. package/lib/TextBoxIcon/__tests__/TextBoxIcon.spec.js +14 -5
  314. package/lib/TextBoxIcon/props/propTypes.js +3 -0
  315. package/lib/Textarea/Textarea.js +54 -29
  316. package/lib/Textarea/__tests__/Textarea.spec.js +14 -2
  317. package/lib/Textarea/props/propTypes.js +3 -0
  318. package/lib/Tooltip/Tooltip.js +94 -31
  319. package/lib/Tooltip/__tests__/Tooltip.spec.js +24 -3
  320. package/lib/Tooltip/props/propTypes.js +3 -0
  321. package/lib/VelocityAnimation/VelocityAnimation/VelocityAnimation.js +40 -16
  322. package/lib/VelocityAnimation/VelocityAnimation/props/propTypes.js +3 -0
  323. package/lib/VelocityAnimation/VelocityAnimationGroup/VelocityAnimationGroup.js +53 -25
  324. package/lib/VelocityAnimation/VelocityAnimationGroup/props/propTypes.js +3 -0
  325. package/lib/VelocityAnimation/index.js +3 -0
  326. package/lib/css.js +40 -0
  327. package/lib/deprecated/PortalLayer/PortalLayer.js +46 -23
  328. package/lib/deprecated/PortalLayer/props/propTypes.js +3 -0
  329. package/lib/index.js +57 -0
  330. package/lib/semantic/Button/Button.js +42 -22
  331. package/lib/semantic/Button/props/propTypes.js +3 -0
  332. package/lib/semantic/index.js +2 -0
  333. package/lib/utils/Common.js +110 -18
  334. package/lib/utils/ContextOptimizer.js +16 -10
  335. package/lib/utils/__tests__/constructFullName.spec.js +1 -0
  336. package/lib/utils/__tests__/debounce.spec.js +3 -2
  337. package/lib/utils/__tests__/getInitial.spec.js +1 -0
  338. package/lib/utils/constructFullName.js +13 -4
  339. package/lib/utils/css/compileClassNames.js +6 -0
  340. package/lib/utils/css/mergeStyle.js +10 -7
  341. package/lib/utils/css/utils.js +8 -0
  342. package/lib/utils/datetime/GMTZones.js +55 -0
  343. package/lib/utils/datetime/common.js +52 -7
  344. package/lib/utils/debounce.js +6 -1
  345. package/lib/utils/dropDownUtils.js +175 -59
  346. package/lib/utils/dummyFunction.js +2 -0
  347. package/lib/utils/getHTMLFontSize.js +1 -0
  348. package/lib/utils/getInitial.js +6 -0
  349. package/lib/utils/index.js +4 -0
  350. package/lib/utils/scrollTo.js +2 -0
  351. package/lib/utils/shallowEqual.js +8 -0
  352. package/package.json +1 -1
@@ -20,9 +20,7 @@ export const stopAllEventPropagation = e => {
20
20
  export function cancelBubblingEffect(e) {
21
21
  e && e.stopPropagation && e.stopPropagation();
22
22
  e && e.nativeEvent && e.nativeEvent.stopImmediatePropagation && e.nativeEvent.stopImmediatePropagation();
23
- }
24
-
25
- // export function getCommentsDetails(
23
+ } // export function getCommentsDetails(
26
24
  // commentIds = [],
27
25
  // comments = {},
28
26
  // agents = {}
@@ -45,6 +43,7 @@ export function encodeForHtml(str) {
45
43
  str = str.replace(/\\/g, '\');
46
44
  str = str.replace(/'/g, ''');
47
45
  }
46
+
48
47
  return str;
49
48
  }
50
49
  export function getListOfDetails() {
@@ -56,6 +55,7 @@ export function getListOfDetails() {
56
55
  export function capitalize() {
57
56
  let value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
58
57
  let newValue = '';
58
+
59
59
  for (let i = 0; i < value.length; i++) {
60
60
  if (i == 0) {
61
61
  newValue += value[i].toUpperCase();
@@ -63,12 +63,14 @@ export function capitalize() {
63
63
  newValue += value[i].toLowerCase();
64
64
  }
65
65
  }
66
+
66
67
  return newValue;
67
68
  }
68
69
  export function bind() {
69
70
  for (var _len = arguments.length, handlers = new Array(_len), _key = 0; _key < _len; _key++) {
70
71
  handlers[_key] = arguments[_key];
71
72
  }
73
+
72
74
  handlers.forEach(handler => {
73
75
  this[handler] = this[handler].bind(this);
74
76
  });
@@ -77,12 +79,15 @@ export function getFullName() {
77
79
  let firstName = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
78
80
  let lastName = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
79
81
  let fullName = '';
82
+
80
83
  if (firstName !== null && firstName !== '') {
81
84
  fullName = firstName;
82
85
  }
86
+
83
87
  if (lastName !== null && lastName !== '') {
84
88
  fullName = `${fullName}${lastName}`;
85
89
  }
90
+
86
91
  return fullName;
87
92
  }
88
93
  export function getStringifiedOutputForJson() {
@@ -90,6 +95,7 @@ export function getStringifiedOutputForJson() {
90
95
  const keys = Object.keys(input);
91
96
  const modifiedInput = keys.reduce((curr, next) => {
92
97
  const values = input[next] || [];
98
+
93
99
  if (values.length) {
94
100
  const valueList = values.reduce((curr, next) => {
95
101
  curr.push(next.id);
@@ -98,6 +104,7 @@ export function getStringifiedOutputForJson() {
98
104
  curr[next] = valueList;
99
105
  return curr;
100
106
  }
107
+
101
108
  return curr;
102
109
  }, {});
103
110
  return JSON.stringify(modifiedInput);
@@ -113,6 +120,7 @@ export function filterValue(obj, val) {
113
120
  const ids = obj ? Object.keys(obj) : [];
114
121
  ids.forEach(key => {
115
122
  const value = obj[key] || {};
123
+
116
124
  if (value.name === val && !value.isCustomField) {
117
125
  result = value.id;
118
126
  }
@@ -134,34 +142,42 @@ export function formatValue() {
134
142
  let textField = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'name';
135
143
  return values && values.map(value => {
136
144
  let formattedValue = value;
145
+
137
146
  if (typeof value === 'string' || typeof value === 'number') {
138
147
  formattedValue = {};
139
148
  formattedValue[valueField] = value;
140
149
  formattedValue[textField] = value;
141
150
  }
151
+
142
152
  return formattedValue;
143
153
  }) || [];
144
154
  }
145
155
  export function bytesToSize(bytes) {
146
156
  bytes = parseInt(bytes, 10);
147
157
  const sizes = ['B', 'KB', 'MB', 'GB', 'TB'];
158
+
148
159
  if (bytes === 0) {
149
160
  return '0 Byte';
150
161
  }
162
+
151
163
  const i = parseInt(Math.floor(Math.log(bytes) / Math.log(1024)), 10);
152
164
  return `${Math.round(bytes / Math.pow(1024, i), 2)} ${sizes[i]}`;
153
165
  }
154
166
  export function getMemSize(bytes) {
155
167
  let size = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : !0;
156
168
  const thresh = size ? 1000 : 1024;
169
+
157
170
  if (Math.abs(bytes) < thresh) {
158
171
  return `${bytes} B`;
159
172
  }
173
+
160
174
  let units = size ? ['kB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'] : ['KiB', 'MiB', 'GiB', 'TiB', 'PiB', 'EiB', 'ZiB', 'YiB'],
161
- i = -1;
175
+ i = -1;
176
+
162
177
  do {
163
178
  bytes /= thresh, ++i;
164
179
  } while (Math.abs(bytes) >= thresh && i < units.length - 1);
180
+
165
181
  {
166
182
  return `${bytes.toFixed(1)} ${units[i]}`;
167
183
  }
@@ -170,18 +186,24 @@ export function checkIsImageFile(fileName) {
170
186
  fileName = fileName || '';
171
187
  return /jpeg|jpg|png|gif|bmp|tiff|tif|ico/gi.test(fileName.substr(fileName.lastIndexOf('.') + 1));
172
188
  }
189
+
173
190
  function getI18NValue(key, values) {
174
191
  if (typeof i18n === 'undefined' || key === '' || typeof key === 'undefined') {
175
192
  return key;
176
193
  }
194
+
177
195
  let i18nStr = i18n[key];
196
+
178
197
  if (i18nStr === undefined) {
179
198
  return key;
180
199
  }
200
+
181
201
  i18nStr = replaceI18NValuesWithRegex(i18nStr, values);
182
202
  return unescapeUnicode(i18nStr);
183
203
  }
204
+
184
205
  global.getI18NValue = getI18NValue;
206
+
185
207
  function replaceI18NValuesWithRegex(i18nStr, values) {
186
208
  if (typeof values !== 'undefined') {
187
209
  if (Array.isArray(values)) {
@@ -192,22 +214,27 @@ function replaceI18NValuesWithRegex(i18nStr, values) {
192
214
  i18nStr = i18nStr.replace(new RegExp('\\{0\\}', 'g'), values);
193
215
  }
194
216
  }
217
+
195
218
  return i18nStr;
196
219
  }
220
+
197
221
  function unescapeUnicode(str) {
198
222
  return str.replace(/\\u([a-fA-F0-9]{4})/g, (g, m1) => String.fromCharCode(parseInt(m1, 16)));
199
223
  }
224
+
200
225
  export function getPortalName(portalList, portalId) {
201
226
  return portalList && portalList.reduce((res, portal) => {
202
227
  if (portal.orgId === portalId) {
203
228
  return portal.orgName;
204
229
  }
230
+
205
231
  return res;
206
232
  }, null);
207
233
  }
208
234
  export function getFullDateString(fullDateObj) {
209
235
  let dateStr = '';
210
236
  const monthArr = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
237
+
211
238
  if (fullDateObj.toDateString() == new Date().toDateString()) {
212
239
  dateStr = format12Hour(fullDateObj);
213
240
  } else {
@@ -217,6 +244,7 @@ export function getFullDateString(fullDateObj) {
217
244
  const time = format12Hour(fullDateObj);
218
245
  dateStr = `${month} ${date} ${year} ${time}`;
219
246
  }
247
+
220
248
  return dateStr;
221
249
  }
222
250
  export function format12Hour(date) {
@@ -225,6 +253,7 @@ export function format12Hour(date) {
225
253
  const ampm = hours >= 12 ? 'pm' : 'am';
226
254
  hours %= 12;
227
255
  hours = hours ? hours : 12; // the hour '0' should be '12'
256
+
228
257
  minutes = minutes < 10 ? `0${minutes}` : minutes;
229
258
  const strTime = `${hours}:${minutes} ${ampm}`;
230
259
  return strTime;
@@ -232,6 +261,7 @@ export function format12Hour(date) {
232
261
  export function getDateOnly(fullDateObj) {
233
262
  let dateStr = '';
234
263
  const monthArr = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
264
+
235
265
  if (fullDateObj.toDateString() == new Date().toDateString()) {
236
266
  dateStr = 'Today';
237
267
  } else {
@@ -240,6 +270,7 @@ export function getDateOnly(fullDateObj) {
240
270
  const date = fullDateObj.getDate();
241
271
  dateStr = `${month} ${date} ${year}`;
242
272
  }
273
+
243
274
  return dateStr;
244
275
  }
245
276
  export function doAfterScrollEnd(element, callback) {
@@ -253,6 +284,7 @@ export function doAfterScrollEnd(element, callback) {
253
284
  scrollHeight
254
285
  } = element;
255
286
  const scrollPercent = scrollTop / (scrollHeight - clientHeight) * 100;
287
+
256
288
  if (scrollPercent > 80) {
257
289
  callback && callback();
258
290
  }
@@ -269,9 +301,11 @@ export const throttle = function (func, wait) {
269
301
  for (var _len2 = arguments.length, args = new Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {
270
302
  args[_key2 - 2] = arguments[_key2];
271
303
  }
304
+
272
305
  if (timerId) {
273
306
  return;
274
307
  }
308
+
275
309
  timerId = setTimeout(() => {
276
310
  try {
277
311
  func(...args);
@@ -284,6 +318,7 @@ export const scrollTo = function (suggestionContainer, selSuggestion) {
284
318
  if (!suggestionContainer || !selSuggestion) {
285
319
  return;
286
320
  }
321
+
287
322
  const {
288
323
  rectGap
289
324
  } = frameRelativeRects(selSuggestion, suggestionContainer) || {};
@@ -291,9 +326,11 @@ export const scrollTo = function (suggestionContainer, selSuggestion) {
291
326
  top = 0,
292
327
  bottom = 0
293
328
  } = rectGap || {};
329
+
294
330
  if (top < 0 && bottom < 0) {
295
331
  return;
296
332
  }
333
+
297
334
  const isElementInViewPort = top < 0 || bottom < 0 ? false : true;
298
335
  const suggestionContainerScrollTop = suggestionContainer.scrollTop;
299
336
  suggestionContainer.scrollTop = !isElementInViewPort ? bottom < 0 ? suggestionContainer.scrollTop + Math.abs(bottom) : top < 0 ? suggestionContainer.scrollTop - Math.abs(top) : suggestionContainerScrollTop : suggestionContainerScrollTop;
@@ -305,17 +342,21 @@ export function remConvert(val) {
305
342
  }
306
343
  export function isDescendant(parent, child) {
307
344
  let node = child.parentNode;
345
+
308
346
  while (node !== null) {
309
347
  if (node === parent) {
310
348
  return true;
311
349
  }
350
+
312
351
  node = node.parentNode;
313
352
  }
353
+
314
354
  return false;
315
355
  }
316
356
  export function getElementSpace(elementRef) {
317
357
  let neededSpace = 0,
318
- availableInsideSpace = 0;
358
+ availableInsideSpace = 0;
359
+
319
360
  if (elementRef) {
320
361
  let getStyle = window.getComputedStyle(elementRef);
321
362
  let margin = parseFloat(getStyle.marginLeft) + parseFloat(getStyle.marginRight);
@@ -324,6 +365,7 @@ export function getElementSpace(elementRef) {
324
365
  neededSpace = width + margin;
325
366
  availableInsideSpace = width - padding;
326
367
  }
368
+
327
369
  return {
328
370
  neededSpace: neededSpace,
329
371
  availableInsideSpace: availableInsideSpace
@@ -333,7 +375,6 @@ export function getSearchString() {
333
375
  let charachers = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
334
376
  return (charachers || '').toString().toLowerCase(); //.replace(/\s+/g, '');
335
377
  }
336
-
337
378
  export function findScrollEnd(element) {
338
379
  let {
339
380
  scrollHeight,
@@ -342,26 +383,30 @@ export function findScrollEnd(element) {
342
383
  clientHeight
343
384
  } = element || {};
344
385
  let isElementScrollable = scrollHeight > clientHeight;
386
+
345
387
  if (isElementScrollable) {
346
388
  if (scrollHeight <= Math.ceil(scrollTop + offsetHeight)) {
347
389
  return true;
348
390
  }
349
- }
350
- // else {
351
-
391
+ } // else {
352
392
  // throw 'Is scroll not present in this element';
353
393
  // }
394
+
395
+
354
396
  return false;
355
397
  }
356
398
  export function isTextSelected() {
357
399
  let selectedText = '';
400
+
358
401
  if (window.getSelection) {
359
402
  selectedText = window.getSelection().toString();
360
403
  } else if (document.getSelection) {
361
404
  selectedText = document.getSelection().toString();
362
405
  }
406
+
363
407
  if (selectedText !== '') {
364
408
  return true;
365
409
  }
410
+
366
411
  return false;
367
412
  }
@@ -1,15 +1,12 @@
1
1
  /** ** Libraries *** */
2
2
  import { useContext, useRef } from 'react';
3
3
  import PropTypes from 'prop-types';
4
- import shallowEqual from './shallowEqual';
5
-
6
- // Please use this component with children as inline function for force this components rerender when parent rerender regardless of reason
4
+ import shallowEqual from './shallowEqual'; // Please use this component with children as inline function for force this components rerender when parent rerender regardless of reason
7
5
  // Because below componends only rerender when children or calculation are changed, unless no changes will update below
8
-
9
6
  // this component logic based on return same children reference to stop rerender.
10
7
  // Think before change logic
11
-
12
8
  // eslint-disable-next-line import/prefer-default-export
9
+
13
10
  export function ContextOptimizer(props) {
14
11
  const {
15
12
  Context,
@@ -25,11 +22,13 @@ export function ContextOptimizer(props) {
25
22
  data: null,
26
23
  renderF: null
27
24
  });
25
+
28
26
  if (!shallowEqual(data, local.data) || local.renderF !== renderF) {
29
27
  local.children = renderF(data);
30
28
  local.data = data;
31
29
  local.renderF = renderF;
32
30
  }
31
+
33
32
  return local.children;
34
33
  }
35
34
  ContextOptimizer.propTypes = {
@@ -6,8 +6,8 @@ describe('debounce specification', () => {
6
6
  it('should call immediate', () => {
7
7
  const mockfn = jest.fn();
8
8
  const dMockfn = debounce(mockfn, 1000, true);
9
- dMockfn();
10
- //expect(setTimeout).toHaveBeenCalledTimes(1);
9
+ dMockfn(); //expect(setTimeout).toHaveBeenCalledTimes(1);
10
+
11
11
  expect(mockfn.mock.calls.length).toBe(1);
12
12
  });
13
13
  it('should call two times but it invoke multiple times', () => {
@@ -1,8 +1,10 @@
1
1
  function constructFullName(firstName, lastName) {
2
2
  return `${firstName ? `${firstName}${lastName ? ' ' : ''}` : ''}${lastName ? lastName : ''}`;
3
3
  }
4
+
4
5
  export function constructFullNameByPattern(firstName, lastName, namePattern) {
5
6
  let [name0, name1] = namePattern;
7
+
6
8
  if (name0 === 'FIRST_NAME' && name1 === 'LAST_NAME') {
7
9
  return constructFullName(firstName, lastName);
8
10
  } else if (name0 === 'LAST_NAME' && name1 === 'FIRST_NAME') {
@@ -1,7 +1,9 @@
1
1
  import { dataTypes, isDataTypeOf } from './utils';
2
+
2
3
  const collectClassNames = function (processedClassNameList) {
3
4
  for (let index = 0; index < (arguments.length <= 1 ? 0 : arguments.length - 1); index++) {
4
5
  let classInfo = index + 1 < 1 || arguments.length <= index + 1 ? undefined : arguments[index + 1];
6
+
5
7
  if (!classInfo) {
6
8
  continue;
7
9
  } else if (isDataTypeOf(classInfo, dataTypes.object)) {
@@ -13,11 +15,14 @@ const collectClassNames = function (processedClassNameList) {
13
15
  }
14
16
  }
15
17
  };
18
+
16
19
  export default function compileClassNames() {
17
20
  let resultClassNameList = [];
21
+
18
22
  for (var _len = arguments.length, classinfoList = new Array(_len), _key = 0; _key < _len; _key++) {
19
23
  classinfoList[_key] = arguments[_key];
20
24
  }
25
+
21
26
  collectClassNames(resultClassNameList, ...classinfoList);
22
27
  return resultClassNameList.filter(a => a !== '').join(' ');
23
28
  }
@@ -1,6 +1,4 @@
1
- const REPLACER_SYMBOL = '$';
2
-
3
- // $ startWith is used for replace the existing style.
1
+ const REPLACER_SYMBOL = '$'; // $ startWith is used for replace the existing style.
4
2
  // all other will be append
5
3
 
6
4
  export default function mergeStyle(defaultStyle) {
@@ -9,15 +7,16 @@ export default function mergeStyle(defaultStyle) {
9
7
  // if(!Object.keys(defaultStyle).includes('base')) {
10
8
  // throw new Error(`STYLE CUSTOMIZATION RULE - Your style sheet should have "base" class name for customization`);
11
9
  // }
12
-
13
10
  return Object.keys(customStyle).reduce((res, next) => {
14
11
  if (next.startsWith(REPLACER_SYMBOL)) {
15
12
  let styleValue = customStyle[next];
16
13
  let styleName = next.replace(REPLACER_SYMBOL, '');
14
+
17
15
  if (!defaultStyle[styleName] && !additionalStyle.includes(styleName)) {
18
16
  // return res;
19
17
  throw new Error(`UNKNOWN CLASSNAME DETECTED - Given customStyle's key "${styleName}" is not available in that component style`);
20
18
  }
19
+
21
20
  if (additionalStyle.includes(styleName)) {
22
21
  res[styleName] = styleValue;
23
22
  } else {
@@ -26,6 +25,7 @@ export default function mergeStyle(defaultStyle) {
26
25
  let styleKey = res[keyName];
27
26
  let styleClasses = styleKey.split(' ');
28
27
  let ind = styleClasses.indexOf(val);
28
+
29
29
  if (ind !== -1) {
30
30
  styleClasses[ind] = styleValue;
31
31
  res[keyName] = styleClasses.join(' ');
@@ -38,6 +38,7 @@ export default function mergeStyle(defaultStyle) {
38
38
  let styleKey = res[keyName];
39
39
  let styleClasses = styleKey.split(' ');
40
40
  let ind = styleClasses.indexOf(val);
41
+
41
42
  if (ind !== -1) {
42
43
  styleClasses[ind] = styleClasses[ind] + ' ' + customStyle[next];
43
44
  res[keyName] = styleClasses.join(' ');
@@ -49,8 +50,8 @@ export default function mergeStyle(defaultStyle) {
49
50
  // res[next] = customStyle[next];
50
51
  throw new Error(`UNKNOWN CLASSNAME DETECTED - Given customStyle's key "${next}" is not available in that component style`);
51
52
  }
53
+
52
54
  return res;
53
- }, {
54
- ...defaultStyle
55
+ }, { ...defaultStyle
55
56
  });
56
57
  }
@@ -12,6 +12,7 @@ export const dataTypes = {
12
12
  export const getDataType = data => {
13
13
  let typeofData = typeof data;
14
14
  let isArrayDataType = Array.isArray(data);
15
+
15
16
  if (isArrayDataType) {
16
17
  return dataTypes.array;
17
18
  } else {
@@ -0,0 +1,48 @@
1
+ export const offsetMap = {
2
+ 0: 'GMT+00:00 Africa/Abidjan',
3
+ 44: 'GMT+00:00 Africa/Monrovia',
4
+ 60: 'GMT+01:00 Africa/Bangui',
5
+ 120: 'GMT+02:00 Africa/Blantyre',
6
+ 180: 'GMT+03:00 Africa/Addis_Ababa',
7
+ 210: 'GMT+04:30 Asia/Tehran',
8
+ 240: 'GMT+03:00 Asia/Bahrain',
9
+ 270: 'GMT+04:30 Asia/Kabul',
10
+ 300: 'GMT+05:00 Asia/Aqtau',
11
+ '-330': 'GMT+05:30 Asia/Kolkata',
12
+ 360: 'GMT+06:00 Asia/Dacca',
13
+ 390: 'GMT+06:30 Indian/Cocos',
14
+ 420: 'GMT+07:00 Asia/Bangkok',
15
+ 450: 'GMT+08:00 Asia/Singapore',
16
+ 480: 'GMT+08:00 Asia/Hong_Kong',
17
+ 510: 'GMT+08:00 Asia/Harbin',
18
+ 525: 'GMT+08:45 Australia/Eucla',
19
+ 540: 'GMT+09:00 Asia/Chita',
20
+ 570: 'GMT+09:30 Australia/Adelaide',
21
+ 600: 'GMT+10:00 Antarctica/DumontDUrville',
22
+ 660: 'GMT+11:00 Asia/Magadan',
23
+ 690: 'GMT+11:00 Pacific/Norfolk',
24
+ 720: 'GMT+12:00 Asia/Kamchatka',
25
+ 765: 'GMT+12:45 Pacific/Chatham',
26
+ 780: 'GMT+12:00 Asia/Anadyr',
27
+ 840: 'GMT+14:00 Etc/GMT-14',
28
+ '-60': 'GMT-01:00 Etc/GMT+1',
29
+ '-660': 'GMT-11:00 US/Samoa',
30
+ '-600': 'GMT-04:00 America/Anguilla',
31
+ '-240': 'GMT-04:00 America/Antigua',
32
+ '-180': 'GMT-03:00 America/Araguaina',
33
+ '-300': 'GMT-05:00 America/Atikokan',
34
+ '-480': 'GMT-05:00 America/Bahia_Banderas',
35
+ '-360': 'GMT-06:00 America/Belize',
36
+ '-420': 'GMT-06:00 America/Boise',
37
+ '-540': 'GMT-07:00 America/Dawson',
38
+ '-135': 'GMT-04:00 America/Guyana',
39
+ '-120': 'GMT-02:00 Etc/GMT+2',
40
+ '-150': 'GMT-03:00 America/Paramaribo',
41
+ '-210': 'GMT-04:00 America/Santo_Domingo',
42
+ '-720': 'GMT+12:00 Pacific/Kwajalein',
43
+ '-560': 'GMT+14:00 Pacific/Kiritimati',
44
+ '-510': 'GMT-09:30 Pacific/Marquesas',
45
+ '-630': 'GMT-11:00 Pacific/Niue',
46
+ '-450': 'GMT-08:00 Pacific/Pitcairn',
47
+ '-570': 'GMT-10:00 Pacific/Rarotonga'
48
+ };
@@ -1,3 +1,4 @@
1
+ import { offsetMap } from './GMTZones.js';
1
2
  let dateFormat = {
2
3
  dayNames: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],
3
4
  monthNames: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec', 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
@@ -10,8 +11,15 @@ export function pad(n) {
10
11
  n = `${n}`;
11
12
  return n.length >= width ? n : new Array(width - n.length + 1).join(z) + n;
12
13
  }
14
+ export function getTimeOffset() {
15
+ const GMT = new Date();
16
+ const matchingOffset = Object.keys(offsetMap).find(offset => GMT.getTimezoneOffset() === Number(offset));
17
+ return matchingOffset ? offsetMap[matchingOffset].toString().split(' ') : ['', ''];
18
+ }
13
19
  export function formatDate(dateMill, mask) {
14
20
  let date = new Date(dateMill);
21
+ let O = getTimeOffset()[0];
22
+ let Z = getTimeOffset()[1];
15
23
  let d = date.getDate();
16
24
  let D = date.getDay();
17
25
  let m = date.getMonth();
@@ -22,6 +30,7 @@ export function formatDate(dateMill, mask) {
22
30
  let L = date.getMilliseconds();
23
31
  let flags = {
24
32
  d: d,
33
+ O: O,
25
34
  dd: pad(d, 2),
26
35
  ddd: dateFormat.dayNames[D],
27
36
  dddd: dateFormat.dayNames[D + 7],
@@ -49,13 +58,18 @@ export function formatDate(dateMill, mask) {
49
58
  L: pad(Math.round(L / 10)),
50
59
  t: H < 12 ? dateFormat.timeNames[0] : dateFormat.timeNames[1],
51
60
  A: H < 12 ? dateFormat.timeNames[6] : dateFormat.timeNames[7],
52
- T: H < 12 ? dateFormat.timeNames[4] : dateFormat.timeNames[5]
61
+ a: H < 12 ? dateFormat.timeNames[6] : dateFormat.timeNames[7],
62
+ T: H < 12 ? dateFormat.timeNames[4] : dateFormat.timeNames[5],
63
+ Z: Z,
64
+ VV: Z,
65
+ SSS: pad(L, 3)
53
66
  };
54
- let token = /D{1,4}|d{1,4}|M{1,4}|YYYY|yyyy|YY|yy?|([HhmsA])\1?|[LloSZWN]|\[[^\]]*\]|'[^']*'/g;
67
+ let token = /D{1,4}|d{1,4}|M{1,4}|YYYY|yyyy|YY|O|Z|VV|SSS|yy?|([HhmsAa])\1?|[LloSZWN]|\[[^\]]*\]|'[^']*'/g;
55
68
  let dat = mask.replace(token, match => {
56
69
  if (match in flags) {
57
70
  return flags[match];
58
71
  }
72
+
59
73
  return match.slice(1, match.length - 1);
60
74
  });
61
75
  return dat;
@@ -70,6 +84,7 @@ export function replaceI18NValuesWithRegex(i18nStr, values) {
70
84
  i18nStr = i18nStr.replace(new RegExp('\\{0\\}', 'g'), values);
71
85
  }
72
86
  }
87
+
73
88
  return i18nStr;
74
89
  }
75
90
  export function unescapeUnicode(str) {
@@ -84,25 +99,28 @@ export function getI18NValue(i18n) {
84
99
  if (typeof i18n === 'undefined') {
85
100
  return key => key;
86
101
  }
102
+
87
103
  return (key, values) => {
88
104
  let i18nStr = i18n[key];
105
+
89
106
  if (i18nStr === undefined) {
90
107
  return key;
91
108
  }
109
+
92
110
  i18nStr = replaceI18NValuesWithRegex(i18nStr, values);
93
111
  return unescapeUnicode(i18nStr);
94
112
  };
95
- }
96
-
97
- // function getValues(params = [], diff) {
113
+ } // function getValues(params = [], diff) {
98
114
  // return params.map(param => {
99
115
  // return diff[param];
100
116
  // });
101
117
  // }
118
+
102
119
  export function getI18NInfo(toDateObj, props, diffObj) {
103
120
  let key = null,
104
- values,
105
- text = null;
121
+ values,
122
+ text = null;
123
+
106
124
  if (typeof props === 'function') {
107
125
  let value = props(diffObj1);
108
126
  key = value.key;
@@ -113,6 +131,7 @@ export function getI18NInfo(toDateObj, props, diffObj) {
113
131
  } else if (typeof props === 'string') {
114
132
  text = toDateObj.format(props);
115
133
  }
134
+
116
135
  return {
117
136
  key,
118
137
  values,
@@ -141,12 +160,15 @@ let oneYearInMillis = 31536000000;
141
160
  let oneDayInMillis = 86400000;
142
161
  let oneHourInMillis = 3600000;
143
162
  let oneMinuteInMillis = 60000;
163
+
144
164
  function convertAsNonExponential(number) {
145
165
  if (number.toString().toLowerCase().indexOf('e') !== -1) {
146
166
  return number.toFixed(20);
147
167
  }
168
+
148
169
  return number;
149
170
  }
171
+
150
172
  export function getDiffObj(diff) {
151
173
  diff = Math.abs(diff);
152
174
  let diffYears = diff / oneYearInMillis;
@@ -173,8 +195,10 @@ export function getDiffObj(diff) {
173
195
  export function getMonthEnd(month, year) {
174
196
  let monthend = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
175
197
  let isLeapYear = year % 400 === 0 || year % 4 === 0 && year % 100 !== 0;
198
+
176
199
  if (month === 1 && isLeapYear) {
177
200
  return 29;
178
201
  }
202
+
179
203
  return monthend[month];
180
204
  }
@@ -2,16 +2,20 @@ export function debounce(func, wait, immediate) {
2
2
  let timeout;
3
3
  return function () {
4
4
  let context = this,
5
- args = arguments;
5
+ args = arguments;
6
+
6
7
  let later = function () {
7
8
  timeout = null;
9
+
8
10
  if (!immediate) {
9
11
  func.apply(context, args);
10
12
  }
11
13
  };
14
+
12
15
  let callNow = immediate && !timeout;
13
16
  clearTimeout(timeout);
14
17
  timeout = setTimeout(later, wait);
18
+
15
19
  if (callNow) {
16
20
  func.apply(context, args);
17
21
  }