@zohodesk/dot 1.0.0-temp-49 → 1.0.0-temp-53

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 (749) hide show
  1. package/README.md +1006 -963
  2. package/__testUtils__/globals.js +0 -0
  3. package/dubFinder.js +96 -96
  4. package/es/ActionButton/ActionButton.module.css +136 -136
  5. package/es/AlphabeticList/AlphabeticList.module.css +57 -57
  6. package/es/Appearance/dark/mode/dotDarkMode.module.css +538 -534
  7. package/es/Appearance/dark/themes/blue/blueDarkDotTheme.module.css +9 -9
  8. package/es/Appearance/dark/themes/green/greenDarkDotTheme.module.css +9 -9
  9. package/es/Appearance/dark/themes/orange/orangeDarkDotTheme.module.css +9 -9
  10. package/es/Appearance/dark/themes/red/redDarkDotTheme.module.css +9 -9
  11. package/es/Appearance/dark/themes/yellow/yellowDarkDotTheme.module.css +9 -9
  12. package/es/Appearance/default/mode/dotDefaultMode.module.css +538 -534
  13. package/es/Appearance/default/themes/blue/blueDefaultDotTheme.module.css +9 -9
  14. package/es/Appearance/default/themes/green/greenDefaultDotTheme.module.css +9 -9
  15. package/es/Appearance/default/themes/orange/orangeDefaultDotTheme.module.css +9 -9
  16. package/es/Appearance/default/themes/red/redDefaultDotTheme.module.css +9 -9
  17. package/es/Appearance/default/themes/yellow/yellowDefaultDotTheme.module.css +9 -9
  18. package/es/Attachment/Attachment.module.css +132 -132
  19. package/es/ChannelIcon/ChannelIcon.module.css +217 -217
  20. package/es/Drawer/Drawer.js +0 -0
  21. package/es/Drawer/Drawer.module.css +151 -151
  22. package/es/ExternalLink/ExternalLink.js +0 -0
  23. package/es/ExternalLink/ExternalLink.module.css +3 -3
  24. package/es/ExternalLink/__tests__/ExternalLink.spec.js +1 -0
  25. package/es/ExternalLink/docs/ExternalLink__default.docs.js +0 -0
  26. package/es/FlipCard/FlipCard.module.css +44 -44
  27. package/es/FormAction/FormAction.module.css +82 -82
  28. package/es/FreezeLayer/FreezeLayer.module.css +42 -42
  29. package/es/IconButton/IconButton.module.css +22 -22
  30. package/es/Image/Image.module.css +10 -10
  31. package/es/ImportantNotes/ImportantNotes.module.css +20 -20
  32. package/es/Link/Link.js +1 -1
  33. package/es/Link/Link.module.css +3 -3
  34. package/es/Link/docs/Link__default.docs.js +0 -0
  35. package/es/Loader/Loader.module.css +46 -46
  36. package/es/Message/Message.module.css +102 -102
  37. package/es/MessageBanner/MessageBanner.js +10 -5
  38. package/es/MessageBanner/MessageBanner.module.css +46 -45
  39. package/es/NewStar/NewStar.module.css +110 -110
  40. package/es/NewStar/docs/NewStar__default.docs.js +0 -0
  41. package/es/PlusIcon/PlusIcon.js +0 -0
  42. package/es/PlusIcon/PlusIcon.module.css +16 -16
  43. package/es/PlusIcon/docs/PlusIcon__default.docs.js +0 -0
  44. package/es/Provider.js +7 -1
  45. package/es/ToastMessage/ToastMessage.js +0 -0
  46. package/es/ToastMessage/ToastMessage.module.css +328 -328
  47. package/es/ToastMessage/docs/ToastMessage__information.docs.js +0 -0
  48. package/es/ToastMessage/docs/ToastMessage__primary.docs.js +0 -0
  49. package/es/ToastMessage/docs/ToastMessage__secondary.docs.js +0 -0
  50. package/es/ToastMessage/docs/ToastMessage__success.docs.js +0 -0
  51. package/es/Upload/Upload.module.css +125 -125
  52. package/es/alert/AlertHeader/AlertHeader.module.css +80 -80
  53. package/es/alert/AlertLookup/AlertLookup.module.css +26 -26
  54. package/es/avatar/AvatarClose/AvatarClose.module.css +37 -37
  55. package/es/avatar/AvatarCollision/AvatarCollision.module.css +69 -69
  56. package/es/avatar/AvatarIcon/AvatarIcon.module.css +58 -58
  57. package/es/avatar/AvatarStatus/AvatarStatus.js +0 -0
  58. package/es/avatar/AvatarStatus/AvatarStatus.module.css +146 -146
  59. package/es/avatar/AvatarStatus/docs/AvatarStatus__size.docs.js +0 -0
  60. package/es/avatar/AvatarStatus/docs/AvatarStatus__state.docs.js +21 -22
  61. package/es/avatar/AvatarThread/AvatarThread.js +7 -5
  62. package/es/avatar/AvatarThread/AvatarThread.module.css +163 -163
  63. package/es/avatar/AvatarUser/AvatarUser.js +0 -0
  64. package/es/avatar/AvatarUser/AvatarUser.module.css +171 -171
  65. package/es/avatar/AvatarWithTeam/AvatarWithTeam.module.css +23 -23
  66. package/es/deprecated/SelectDropdown/SelectDropdown.module.css +55 -55
  67. package/es/docs/setupDocs.js +1 -3
  68. package/es/dropdown/ToggleDropDown/ToggleDropDown.module.css +97 -97
  69. package/es/emptystate/CommonEmptyState/CommonEmptyState.js +0 -0
  70. package/es/emptystate/CommonEmptyState/CommonEmptyState.module.css +85 -85
  71. package/es/emptystate/EditionPage/EditionPage.css +43 -43
  72. package/es/errorstate/EmptyStates.module.css +87 -87
  73. package/es/errorstate/Inconvenience/Inconvenience.module.css +7 -7
  74. package/es/errorstate/LinkText/LinkText.module.css +6 -6
  75. package/es/errorstate/NoRequestFound/NoRequestFound.module.css +3 -3
  76. package/es/errorstate/PermissionPlay/PermissionPlay.module.css +34 -34
  77. package/es/errorstate/RequestUrlNotFound/RequestUrlNotFound.module.css +3 -3
  78. package/es/errorstate/UnableToProcess/UnableToProcess.module.css +3 -3
  79. package/es/errorstate/UnauthorizedLogin/UnauthorizedLogin.module.css +3 -3
  80. package/es/errorstate/WillBack/WillBack.module.css +34 -34
  81. package/es/form/fields/CheckBoxField/CheckBoxField.js +0 -0
  82. package/es/form/fields/Fields.module.css +181 -181
  83. package/es/form/fields/TagsMultiSelect/TagsMultiSelect.module.css +107 -107
  84. package/es/form/fields/TagsMultiSelectField/TagsMultiSelectField.js +2 -0
  85. package/es/form/fields/TagsMultiSelectField/TagsMultiSelectField.module.css +9 -9
  86. package/es/form/fields/TextEditor/TextEditor.js +1 -1
  87. package/es/form/fields/TextEditor/TextEditor.module.css +654 -654
  88. package/es/form/fields/TextEditorWrapper/TextEditorWrapper.module.css +36 -36
  89. package/es/form/fields/ValidationMessage/ValidationMessage.module.css +27 -27
  90. package/es/form/layout/Field/Field.js +0 -0
  91. package/es/form/layout/Field/Field.module.css +22 -22
  92. package/es/form/layout/Field/docs/Field__default.docs.js +0 -0
  93. package/es/form/layout/Section/ModuleFormSection.module.css +3 -3
  94. package/es/form/layout/Section/Section.js +7 -3
  95. package/es/form/layout/Section/docs/Section__default.docs.js +0 -0
  96. package/es/layout/SetupDetailLayout/SetupDetailLayout.module.css +152 -152
  97. package/es/layout/SubtabLayout/SubtabLayout.module.css +146 -146
  98. package/es/list/AvatarFlip/AvatarFlip.module.css +3 -3
  99. package/es/list/BluePrintStatus/BluePrintStatus.module.css +17 -17
  100. package/es/list/Comment/Comment.module.css +29 -29
  101. package/es/list/DepartmentDropDown/DepartmentDropDown.module.css +9 -9
  102. package/es/list/Dot/Dot.module.css +15 -15
  103. package/es/list/DotNew/DotNew.module.css +22 -22
  104. package/es/list/GridStencils/GridStencils.module.css +156 -156
  105. package/es/list/Icons/Icons.module.css +15 -15
  106. package/es/list/ListLayout/ListLayout.js +10 -4
  107. package/es/list/ListLayout/ListLayout.module.css +58 -33
  108. package/es/list/ListStencils/ListStencils.module.css +67 -67
  109. package/es/list/SecondaryText/SecondaryText.module.css +136 -136
  110. package/es/list/SecondaryText/Website.js +0 -0
  111. package/es/list/SecondryPanel/SecondryPanel.js +0 -0
  112. package/es/list/SecondryPanel/SecondryPanel.module.css +5 -5
  113. package/es/list/SecondryPanel/docs/SecondryPanelDocs.module.css +37 -37
  114. package/es/list/SentimentStatus/SentimentStatus.module.css +12 -12
  115. package/es/list/Subject/Subject.module.css +27 -27
  116. package/es/list/TagNew/TagNew.module.css +115 -115
  117. package/es/list/Thread/Thread.module.css +42 -42
  118. package/es/list/UserTime/UserTime.module.css +58 -58
  119. package/es/list/listCommon.module.css +60 -60
  120. package/es/list/status/StatusDropdown/StatusDropdown.module.css +89 -89
  121. package/es/list/status/StatusListItem/StatusListItem.js +2 -0
  122. package/es/list/status/StatusListItem/StatusListItem.module.css +104 -104
  123. package/es/lookup/EmptyPage/EmptyPage.js +0 -0
  124. package/es/lookup/EmptyPage/LookupEmptyPage.module.css +12 -12
  125. package/es/lookup/Lookup/Lookup.js +0 -0
  126. package/es/lookup/Lookup/Lookup.module.css +26 -26
  127. package/es/lookup/Lookup/docs/Lookup__contact.docs.js +14 -14
  128. package/es/lookup/Section/LookupSection.module.css +8 -8
  129. package/es/lookup/header/Close/LookupClose.module.css +15 -15
  130. package/es/lookup/header/ModuleHeader/ModuleHeader.js +8 -3
  131. package/es/lookup/header/ModuleHeader/docs/ModuleHeader__default.docs.js +13 -3
  132. package/es/lookup/header/Search/LookupSearch.module.css +57 -57
  133. package/es/lookup/header/TicketHeader/TicketHeader.js +7 -4
  134. package/es/lookup/header/TicketHeader/TicketHeader.module.css +22 -22
  135. package/es/lookup/header/Title/LookupTitle.module.css +20 -20
  136. package/es/lookup/header/ViewDropDown/ViewDropDown.module.css +51 -51
  137. package/es/lookup/header/lookupHeaderCommon.module.css +41 -35
  138. package/es/lookup/header/lookupHeaderCommonResponsive.module.css +24 -24
  139. package/es/setup/header/Button/HeaderButton.module.css +5 -5
  140. package/es/setup/header/Link/HeaderLink.module.css +21 -21
  141. package/es/setup/header/Search/Search.module.css +68 -68
  142. package/es/setup/header/Views/Views.module.css +37 -37
  143. package/es/setup/helptips/Description/HelpTipsDescription.module.css +6 -6
  144. package/es/setup/helptips/Description/docs/Description__default.docs.js +0 -0
  145. package/es/setup/helptips/Link/HelpTipsLink.module.css +7 -7
  146. package/es/setup/helptips/Link/Link.js +0 -0
  147. package/es/setup/helptips/Link/docs/Link__default.docs.js +0 -0
  148. package/es/setup/helptips/ListGroup/ListGroup.module.css +22 -22
  149. package/es/setup/helptips/Title/HelpTipsTitle.module.css +5 -5
  150. package/es/setup/helptips/Title/Title.js +0 -0
  151. package/es/setup/helptips/Title/docs/Title__default.docs.js +0 -0
  152. package/es/setup/table/TableData/SetupTableData.module.css +44 -44
  153. package/es/setup/table/TableData/Tablehover.module.css +6 -6
  154. package/es/setup/table/TableHead/SetupTableHead.module.css +12 -12
  155. package/es/setup/table/TableRow/SetupTableRow.module.css +14 -14
  156. package/es/setup/table/Text/TableText.module.css +37 -37
  157. package/es/setup/table/Text/Text.js +0 -0
  158. package/es/setup/table/Text/docs/Text__default.docs.js +0 -0
  159. package/es/svg/PlusIcon.js +1 -1
  160. package/es/svg/SnippetIcon.js +2 -2
  161. package/es/utils/General.js +1 -0
  162. package/es/utils/KeyboardApi.js +25 -25
  163. package/es/utils/editorUtils.js +1 -0
  164. package/es/version2/AlertClose/AlertClose.module.css +42 -42
  165. package/es/version2/GlobalNotification/GlobalNotification.module.css +124 -124
  166. package/es/version2/alertIcons/AlertIcons.module.css +67 -67
  167. package/es/version2/errorstate/V2_ErrorStates.module.css +46 -46
  168. package/es/version2/lookup/AlertHeader/AlertHeaderNew.module.css +86 -86
  169. package/es/version2/lookup/AlertLookup/AlertLookupNew.module.css +43 -43
  170. package/es/version2/lookup/alertLookupCommonNew.module.css +32 -32
  171. package/es/version2/notification/DesktopNotification/DesktopNotification.module.css +106 -106
  172. package/es/version2/notification/DesktopNotificationHeader/DesktopNotificationHeader.module.css +136 -136
  173. package/lib/ActionButton/ActionButton.module.css +136 -136
  174. package/lib/AlphabeticList/AlphabeticList.module.css +57 -57
  175. package/lib/Appearance/dark/mode/dotDarkMode.module.css +538 -534
  176. package/lib/Appearance/dark/themes/blue/blueDarkDotTheme.module.css +9 -9
  177. package/lib/Appearance/dark/themes/green/greenDarkDotTheme.module.css +9 -9
  178. package/lib/Appearance/dark/themes/orange/orangeDarkDotTheme.module.css +9 -9
  179. package/lib/Appearance/dark/themes/red/redDarkDotTheme.module.css +9 -9
  180. package/lib/Appearance/dark/themes/yellow/yellowDarkDotTheme.module.css +9 -9
  181. package/lib/Appearance/default/mode/dotDefaultMode.module.css +538 -534
  182. package/lib/Appearance/default/themes/blue/blueDefaultDotTheme.module.css +9 -9
  183. package/lib/Appearance/default/themes/green/greenDefaultDotTheme.module.css +9 -9
  184. package/lib/Appearance/default/themes/orange/orangeDefaultDotTheme.module.css +9 -9
  185. package/lib/Appearance/default/themes/red/redDefaultDotTheme.module.css +9 -9
  186. package/lib/Appearance/default/themes/yellow/yellowDefaultDotTheme.module.css +9 -9
  187. package/lib/Attachment/Attachment.module.css +132 -132
  188. package/lib/ChannelIcon/ChannelIcon.module.css +217 -217
  189. package/lib/Drawer/Drawer.js +0 -0
  190. package/lib/Drawer/Drawer.module.css +151 -151
  191. package/lib/ExternalLink/ExternalLink.js +0 -0
  192. package/lib/ExternalLink/ExternalLink.module.css +3 -3
  193. package/lib/ExternalLink/__tests__/ExternalLink.spec.js +0 -0
  194. package/lib/ExternalLink/docs/ExternalLink__default.docs.js +0 -0
  195. package/lib/FlipCard/FlipCard.module.css +44 -44
  196. package/lib/FormAction/FormAction.module.css +82 -82
  197. package/lib/FreezeLayer/FreezeLayer.module.css +42 -42
  198. package/lib/IconButton/IconButton.module.css +22 -22
  199. package/lib/Image/Image.module.css +10 -10
  200. package/lib/ImportantNotes/ImportantNotes.module.css +20 -20
  201. package/lib/Link/Link.js +1 -1
  202. package/lib/Link/Link.module.css +3 -3
  203. package/lib/Link/docs/Link__default.docs.js +0 -0
  204. package/lib/Loader/Loader.module.css +46 -46
  205. package/lib/Message/Message.module.css +102 -102
  206. package/lib/MessageBanner/MessageBanner.js +10 -5
  207. package/lib/MessageBanner/MessageBanner.module.css +46 -45
  208. package/lib/NewStar/NewStar.module.css +110 -110
  209. package/lib/NewStar/docs/NewStar__default.docs.js +0 -0
  210. package/lib/PlusIcon/PlusIcon.js +0 -0
  211. package/lib/PlusIcon/PlusIcon.module.css +16 -16
  212. package/lib/PlusIcon/docs/PlusIcon__default.docs.js +0 -0
  213. package/lib/Provider.js +8 -1
  214. package/lib/ToastMessage/ToastMessage.js +0 -0
  215. package/lib/ToastMessage/ToastMessage.module.css +328 -328
  216. package/lib/ToastMessage/docs/ToastMessage__information.docs.js +0 -0
  217. package/lib/ToastMessage/docs/ToastMessage__primary.docs.js +0 -0
  218. package/lib/ToastMessage/docs/ToastMessage__secondary.docs.js +0 -0
  219. package/lib/ToastMessage/docs/ToastMessage__success.docs.js +0 -0
  220. package/lib/Upload/Upload.module.css +125 -125
  221. package/lib/alert/AlertHeader/AlertHeader.module.css +80 -80
  222. package/lib/alert/AlertLookup/AlertLookup.module.css +26 -26
  223. package/lib/avatar/AvatarClose/AvatarClose.module.css +37 -37
  224. package/lib/avatar/AvatarCollision/AvatarCollision.module.css +69 -69
  225. package/lib/avatar/AvatarIcon/AvatarIcon.module.css +58 -58
  226. package/lib/avatar/AvatarStatus/AvatarStatus.js +0 -0
  227. package/lib/avatar/AvatarStatus/AvatarStatus.module.css +146 -146
  228. package/lib/avatar/AvatarStatus/docs/AvatarStatus__size.docs.js +0 -0
  229. package/lib/avatar/AvatarStatus/docs/AvatarStatus__state.docs.js +21 -22
  230. package/lib/avatar/AvatarThread/AvatarThread.js +7 -5
  231. package/lib/avatar/AvatarThread/AvatarThread.module.css +163 -163
  232. package/lib/avatar/AvatarUser/AvatarUser.js +0 -0
  233. package/lib/avatar/AvatarUser/AvatarUser.module.css +171 -171
  234. package/lib/avatar/AvatarWithTeam/AvatarWithTeam.module.css +23 -23
  235. package/lib/deprecated/SelectDropdown/SelectDropdown.module.css +55 -55
  236. package/lib/dropdown/ToggleDropDown/ToggleDropDown.module.css +97 -97
  237. package/lib/emptystate/CommonEmptyState/CommonEmptyState.js +0 -0
  238. package/lib/emptystate/CommonEmptyState/CommonEmptyState.module.css +85 -85
  239. package/lib/emptystate/EditionPage/EditionPage.css +43 -43
  240. package/lib/errorstate/EmptyStates.module.css +87 -87
  241. package/lib/errorstate/Inconvenience/Inconvenience.module.css +7 -7
  242. package/lib/errorstate/LinkText/LinkText.module.css +6 -6
  243. package/lib/errorstate/NoRequestFound/NoRequestFound.module.css +3 -3
  244. package/lib/errorstate/PermissionPlay/PermissionPlay.module.css +34 -34
  245. package/lib/errorstate/RequestUrlNotFound/RequestUrlNotFound.module.css +3 -3
  246. package/lib/errorstate/UnableToProcess/UnableToProcess.module.css +3 -3
  247. package/lib/errorstate/UnauthorizedLogin/UnauthorizedLogin.module.css +3 -3
  248. package/lib/errorstate/WillBack/WillBack.module.css +34 -34
  249. package/lib/form/fields/CheckBoxField/CheckBoxField.js +0 -0
  250. package/lib/form/fields/Fields.module.css +181 -181
  251. package/lib/form/fields/TagsMultiSelect/TagsMultiSelect.module.css +107 -107
  252. package/lib/form/fields/TagsMultiSelectField/TagsMultiSelectField.module.css +9 -9
  253. package/lib/form/fields/TextEditor/TextEditor.js +1 -1
  254. package/lib/form/fields/TextEditor/TextEditor.module.css +654 -654
  255. package/lib/form/fields/TextEditorWrapper/TextEditorWrapper.module.css +36 -36
  256. package/lib/form/fields/ValidationMessage/ValidationMessage.module.css +27 -27
  257. package/lib/form/layout/Field/Field.js +0 -0
  258. package/lib/form/layout/Field/Field.module.css +22 -22
  259. package/lib/form/layout/Field/docs/Field__default.docs.js +0 -0
  260. package/lib/form/layout/Section/ModuleFormSection.module.css +3 -3
  261. package/lib/form/layout/Section/Section.js +7 -3
  262. package/lib/form/layout/Section/docs/Section__default.docs.js +0 -0
  263. package/lib/layout/SetupDetailLayout/SetupDetailLayout.module.css +152 -152
  264. package/lib/layout/SubtabLayout/SubtabLayout.module.css +146 -146
  265. package/lib/list/AvatarFlip/AvatarFlip.module.css +3 -3
  266. package/lib/list/BluePrintStatus/BluePrintStatus.module.css +17 -17
  267. package/lib/list/Comment/Comment.module.css +29 -29
  268. package/lib/list/DepartmentDropDown/DepartmentDropDown.module.css +9 -9
  269. package/lib/list/Dot/Dot.module.css +15 -15
  270. package/lib/list/DotNew/DotNew.module.css +22 -22
  271. package/lib/list/GridStencils/GridStencils.module.css +156 -156
  272. package/lib/list/Icons/Icons.module.css +15 -15
  273. package/lib/list/ListLayout/ListLayout.js +11 -5
  274. package/lib/list/ListLayout/ListLayout.module.css +58 -33
  275. package/lib/list/ListStencils/ListStencils.module.css +67 -67
  276. package/lib/list/SecondaryText/SecondaryText.module.css +136 -136
  277. package/lib/list/SecondaryText/Website.js +0 -0
  278. package/lib/list/SecondryPanel/SecondryPanel.js +0 -0
  279. package/lib/list/SecondryPanel/SecondryPanel.module.css +5 -5
  280. package/lib/list/SecondryPanel/docs/SecondryPanelDocs.module.css +37 -37
  281. package/lib/list/SentimentStatus/SentimentStatus.module.css +12 -12
  282. package/lib/list/Subject/Subject.module.css +27 -27
  283. package/lib/list/TagNew/TagNew.module.css +115 -115
  284. package/lib/list/Thread/Thread.module.css +42 -42
  285. package/lib/list/UserTime/UserTime.module.css +58 -58
  286. package/lib/list/listCommon.module.css +60 -60
  287. package/lib/list/status/StatusDropdown/StatusDropdown.module.css +89 -89
  288. package/lib/list/status/StatusListItem/StatusListItem.js +0 -0
  289. package/lib/list/status/StatusListItem/StatusListItem.module.css +104 -104
  290. package/lib/lookup/EmptyPage/EmptyPage.js +0 -0
  291. package/lib/lookup/EmptyPage/LookupEmptyPage.module.css +12 -12
  292. package/lib/lookup/Lookup/Lookup.js +0 -0
  293. package/lib/lookup/Lookup/Lookup.module.css +26 -26
  294. package/lib/lookup/Lookup/docs/Lookup__contact.docs.js +14 -14
  295. package/lib/lookup/Section/LookupSection.module.css +8 -8
  296. package/lib/lookup/header/Close/LookupClose.module.css +15 -15
  297. package/lib/lookup/header/ModuleHeader/ModuleHeader.js +8 -3
  298. package/lib/lookup/header/ModuleHeader/docs/ModuleHeader__default.docs.js +13 -3
  299. package/lib/lookup/header/Search/LookupSearch.module.css +57 -57
  300. package/lib/lookup/header/TicketHeader/TicketHeader.js +7 -4
  301. package/lib/lookup/header/TicketHeader/TicketHeader.module.css +22 -22
  302. package/lib/lookup/header/Title/LookupTitle.module.css +20 -20
  303. package/lib/lookup/header/ViewDropDown/ViewDropDown.module.css +51 -51
  304. package/lib/lookup/header/lookupHeaderCommon.module.css +41 -35
  305. package/lib/lookup/header/lookupHeaderCommonResponsive.module.css +24 -24
  306. package/lib/setup/header/Button/HeaderButton.module.css +5 -5
  307. package/lib/setup/header/Link/HeaderLink.module.css +21 -21
  308. package/lib/setup/header/Search/Search.module.css +68 -68
  309. package/lib/setup/header/Views/Views.module.css +37 -37
  310. package/lib/setup/helptips/Description/HelpTipsDescription.module.css +6 -6
  311. package/lib/setup/helptips/Description/docs/Description__default.docs.js +0 -0
  312. package/lib/setup/helptips/Link/HelpTipsLink.module.css +7 -7
  313. package/lib/setup/helptips/Link/Link.js +0 -0
  314. package/lib/setup/helptips/Link/docs/Link__default.docs.js +0 -0
  315. package/lib/setup/helptips/ListGroup/ListGroup.module.css +22 -22
  316. package/lib/setup/helptips/Title/HelpTipsTitle.module.css +5 -5
  317. package/lib/setup/helptips/Title/Title.js +0 -0
  318. package/lib/setup/helptips/Title/docs/Title__default.docs.js +0 -0
  319. package/lib/setup/table/TableData/SetupTableData.module.css +44 -44
  320. package/lib/setup/table/TableData/Tablehover.module.css +6 -6
  321. package/lib/setup/table/TableHead/SetupTableHead.module.css +12 -12
  322. package/lib/setup/table/TableRow/SetupTableRow.module.css +14 -14
  323. package/lib/setup/table/Text/TableText.module.css +37 -37
  324. package/lib/setup/table/Text/Text.js +0 -0
  325. package/lib/setup/table/Text/docs/Text__default.docs.js +0 -0
  326. package/lib/svg/PlusIcon.js +1 -1
  327. package/lib/svg/SnippetIcon.js +2 -2
  328. package/lib/utils/KeyboardApi.js +25 -25
  329. package/lib/version2/AlertClose/AlertClose.module.css +42 -42
  330. package/lib/version2/GlobalNotification/GlobalNotification.module.css +124 -124
  331. package/lib/version2/alertIcons/AlertIcons.module.css +67 -67
  332. package/lib/version2/errorstate/V2_ErrorStates.module.css +46 -46
  333. package/lib/version2/lookup/AlertHeader/AlertHeaderNew.module.css +86 -86
  334. package/lib/version2/lookup/AlertLookup/AlertLookupNew.module.css +43 -43
  335. package/lib/version2/lookup/alertLookupCommonNew.module.css +32 -32
  336. package/lib/version2/notification/DesktopNotification/DesktopNotification.module.css +106 -106
  337. package/lib/version2/notification/DesktopNotificationHeader/DesktopNotificationHeader.module.css +136 -136
  338. package/package.json +75 -75
  339. package/src/ActionButton/ActionButton.js +197 -197
  340. package/src/ActionButton/ActionButton.module.css +120 -120
  341. package/src/ActionButton/docs/ActionButton__default.docs.js +110 -110
  342. package/src/AlphabeticList/AlphabeticList.js +176 -176
  343. package/src/AlphabeticList/AlphabeticList.module.css +54 -54
  344. package/src/AlphabeticList/docs/AlphabeticList__default.docs.js +36 -36
  345. package/src/AlphabeticList/docs/AlphabeticList__horizontal.docs.js +44 -44
  346. package/src/Appearance/dark/mode/dotDarkMode.module.css +538 -534
  347. package/src/Appearance/dark/themes/blue/blueDarkDotTheme.module.css +9 -9
  348. package/src/Appearance/dark/themes/green/greenDarkDotTheme.module.css +9 -9
  349. package/src/Appearance/dark/themes/orange/orangeDarkDotTheme.module.css +9 -9
  350. package/src/Appearance/dark/themes/red/redDarkDotTheme.module.css +9 -9
  351. package/src/Appearance/dark/themes/yellow/yellowDarkDotTheme.module.css +9 -9
  352. package/src/Appearance/default/mode/dotDefaultMode.module.css +538 -534
  353. package/src/Appearance/default/themes/blue/blueDefaultDotTheme.module.css +9 -9
  354. package/src/Appearance/default/themes/green/greenDefaultDotTheme.module.css +9 -9
  355. package/src/Appearance/default/themes/orange/orangeDefaultDotTheme.module.css +9 -9
  356. package/src/Appearance/default/themes/red/redDefaultDotTheme.module.css +9 -9
  357. package/src/Appearance/default/themes/yellow/yellowDefaultDotTheme.module.css +9 -9
  358. package/src/Attachment/Attachment.js +119 -119
  359. package/src/Attachment/Attachment.module.css +121 -121
  360. package/src/Attachment/docs/Attachment__default.docs.js +63 -63
  361. package/src/ChannelIcon/ChannelIcon.js +154 -154
  362. package/src/ChannelIcon/ChannelIcon.module.css +208 -208
  363. package/src/ChannelIcon/docs/ChannelIcon__default.docs.js +63 -63
  364. package/src/Drawer/Drawer.js +398 -398
  365. package/src/Drawer/Drawer.module.css +103 -103
  366. package/src/Drawer/docs/Drawer__default.docs.js +86 -86
  367. package/src/Drawer/docs/Drawer__multiDrawer.docs.js +111 -111
  368. package/src/Drawer/docs/Drawer__noFreeze.docs.js +20 -20
  369. package/src/Drawer/docs/Drawer__withModal.docs.js +76 -76
  370. package/src/ExternalLink/ExternalLink.js +75 -75
  371. package/src/ExternalLink/ExternalLink.module.css +3 -3
  372. package/src/ExternalLink/__tests__/ExternalLink.spec.js +28 -28
  373. package/src/ExternalLink/docs/ExternalLink__default.docs.js +24 -24
  374. package/src/FlipCard/FlipCard.js +193 -193
  375. package/src/FlipCard/FlipCard.module.css +35 -35
  376. package/src/FlipCard/docs/FlipCard__default.docs.js +76 -76
  377. package/src/FormAction/FormAction.js +126 -126
  378. package/src/FormAction/FormAction.module.css +57 -57
  379. package/src/FormAction/docs/FormAction__default.docs.js +93 -93
  380. package/src/FreezeLayer/FreezeLayer.js +159 -159
  381. package/src/FreezeLayer/FreezeLayer.module.css +38 -38
  382. package/src/FreezeLayer/docs/FreezeLayer__dark.docs.js +52 -52
  383. package/src/FreezeLayer/docs/FreezeLayer__default.docs.js +51 -51
  384. package/src/IconButton/IconButton.js +186 -186
  385. package/src/IconButton/IconButton.module.css +22 -22
  386. package/src/IconButton/docs/IconButton__default.docs.js +158 -158
  387. package/src/Image/Image.js +58 -58
  388. package/src/Image/Image.module.css +10 -10
  389. package/src/Image/docs/Image__default.docs.js +18 -18
  390. package/src/ImportantNotes/ImportantNotes.js +57 -57
  391. package/src/ImportantNotes/ImportantNotes.module.css +15 -15
  392. package/src/ImportantNotes/docs/ImportantNotes__default.docs.js +22 -22
  393. package/src/Link/Link.js +123 -121
  394. package/src/Link/Link.module.css +3 -3
  395. package/src/Link/LinkContext.js +9 -9
  396. package/src/Link/docs/Link__default.docs.js +91 -91
  397. package/src/Loader/Loader.js +21 -21
  398. package/src/Loader/Loader.module.css +25 -25
  399. package/src/Loader/docs/Loader__default.docs.js +21 -21
  400. package/src/Message/Message.js +109 -109
  401. package/src/Message/Message.module.css +69 -69
  402. package/src/Message/docs/Message__default.docs.js +53 -53
  403. package/src/MessageBanner/MessageBanner.js +83 -79
  404. package/src/MessageBanner/MessageBanner.module.css +38 -37
  405. package/src/MessageBanner/docs/MessageBanner__default.docs.js +87 -87
  406. package/src/NewStar/NewStar.js +83 -83
  407. package/src/NewStar/NewStar.module.css +73 -73
  408. package/src/NewStar/docs/NewStar__default.docs.js +39 -39
  409. package/src/PlusIcon/PlusIcon.js +64 -64
  410. package/src/PlusIcon/PlusIcon.module.css +16 -16
  411. package/src/PlusIcon/docs/PlusIcon__default.docs.js +18 -18
  412. package/src/Provider.js +203 -200
  413. package/src/ToastMessage/ToastMessage.js +315 -315
  414. package/src/ToastMessage/ToastMessage.module.css +257 -257
  415. package/src/ToastMessage/docs/ToastMessage__custom.docs.js +97 -97
  416. package/src/ToastMessage/docs/ToastMessage__information.docs.js +57 -57
  417. package/src/ToastMessage/docs/ToastMessage__primary.docs.js +135 -135
  418. package/src/ToastMessage/docs/ToastMessage__secondary.docs.js +40 -40
  419. package/src/ToastMessage/docs/ToastMessage__success.docs.js +68 -68
  420. package/src/Upload/Upload.js +103 -103
  421. package/src/Upload/Upload.module.css +106 -106
  422. package/src/Upload/docs/Upload__default.docs.js +72 -72
  423. package/src/actions/AutoClose.js +51 -51
  424. package/src/actions/index.js +22 -22
  425. package/src/alert/AlertHeader/AlertHeader.js +122 -122
  426. package/src/alert/AlertHeader/AlertHeader.module.css +62 -62
  427. package/src/alert/AlertHeader/docs/AlertHeader__default.docs.js +73 -73
  428. package/src/alert/AlertLookup/AlertLookup.js +214 -214
  429. package/src/alert/AlertLookup/AlertLookup.module.css +22 -22
  430. package/src/alert/AlertLookup/docs/AlertLookup__default.docs.js +124 -124
  431. package/src/avatar/AvatarClose/AvatarClose.js +49 -49
  432. package/src/avatar/AvatarClose/AvatarClose.module.css +31 -31
  433. package/src/avatar/AvatarClose/docs/AvatarClose__default.docs.js +26 -26
  434. package/src/avatar/AvatarCollision/AvatarCollision.js +81 -81
  435. package/src/avatar/AvatarCollision/AvatarCollision.module.css +55 -55
  436. package/src/avatar/AvatarCollision/docs/AvatarCollision__default.docs.js +40 -40
  437. package/src/avatar/AvatarIcon/AvatarIcon.js +99 -99
  438. package/src/avatar/AvatarIcon/AvatarIcon.module.css +59 -59
  439. package/src/avatar/AvatarIcon/docs/AvatarIcon__palette.docs.js +49 -49
  440. package/src/avatar/AvatarIcon/docs/AvatarIcon__size.docs.js +36 -36
  441. package/src/avatar/AvatarStatus/AvatarStatus.js +95 -95
  442. package/src/avatar/AvatarStatus/AvatarStatus.module.css +96 -96
  443. package/src/avatar/AvatarStatus/docs/AvatarStatus__size.docs.js +38 -38
  444. package/src/avatar/AvatarStatus/docs/AvatarStatus__state.docs.js +63 -63
  445. package/src/avatar/AvatarThread/AvatarThread.js +136 -131
  446. package/src/avatar/AvatarThread/AvatarThread.module.css +113 -113
  447. package/src/avatar/AvatarThread/docs/AvatarThread__default.docs.js +167 -167
  448. package/src/avatar/AvatarUser/AvatarUser.js +160 -160
  449. package/src/avatar/AvatarUser/AvatarUser.module.css +100 -100
  450. package/src/avatar/AvatarUser/docs/AvatarUser__default.docs.js +148 -148
  451. package/src/avatar/AvatarWithTeam/AvatarWithTeam.js +134 -134
  452. package/src/avatar/AvatarWithTeam/AvatarWithTeam.module.css +16 -16
  453. package/src/avatar/AvatarWithTeam/__tests__/AvatarWithTeam.spec.js +50 -50
  454. package/src/avatar/AvatarWithTeam/docs/AvatarWithTeam__default.docs.js +28 -28
  455. package/src/deprecated/SelectDropdown/SelectDropdown.js +122 -122
  456. package/src/deprecated/SelectDropdown/SelectDropdown.module.css +47 -47
  457. package/src/deprecated/SelectDropdown/docs/SelectDropdown__default.docs.js +31 -31
  458. package/src/docs/formDocs.js +26 -26
  459. package/src/docs/generalDocs.js +161 -161
  460. package/src/docs/lookupDocs.js +51 -51
  461. package/src/docs/setupDocs.js +25 -27
  462. package/src/dropdown/ToggleDropDown/ToggleDropDown.js +950 -950
  463. package/src/dropdown/ToggleDropDown/ToggleDropDown.module.css +84 -84
  464. package/src/dropdown/ToggleDropDown/docs/ToggleDropDown__default.docs.js +242 -242
  465. package/src/emptystate/CommonEmptyState/CommonEmptyState.js +116 -116
  466. package/src/emptystate/CommonEmptyState/CommonEmptyState.module.css +77 -77
  467. package/src/emptystate/CommonEmptyState/docs/CommonEmptyState__default.docs.js +107 -107
  468. package/src/emptystate/EditionPage/EditionPage.css +37 -37
  469. package/src/emptystate/EditionPage/EditionPage.js +69 -69
  470. package/src/emptystate/EditionPage/docs/EditionPage__default.docs.js +23 -23
  471. package/src/errorstate/EmptyStates.module.css +84 -84
  472. package/src/errorstate/Inconvenience/Inconvenience.js +132 -132
  473. package/src/errorstate/Inconvenience/Inconvenience.module.css +4 -4
  474. package/src/errorstate/Inconvenience/docs/Inconvenience__default.docs.js +19 -19
  475. package/src/errorstate/LinkText/LinkText.js +35 -35
  476. package/src/errorstate/LinkText/LinkText.module.css +6 -6
  477. package/src/errorstate/LinkText/docs/LinkText__default.docs.js +13 -13
  478. package/src/errorstate/NoRequestFound/NoRequestFound.js +132 -132
  479. package/src/errorstate/NoRequestFound/NoRequestFound.module.css +3 -3
  480. package/src/errorstate/NoRequestFound/docs/NoRequestFound__default.docs.js +19 -19
  481. package/src/errorstate/PermissionPlay/PermissionPlay.js +127 -127
  482. package/src/errorstate/PermissionPlay/PermissionPlay.module.css +34 -34
  483. package/src/errorstate/PermissionPlay/docs/PermissionPlay__default.docs.js +20 -20
  484. package/src/errorstate/RequestUrlNotFound/RequestUrlNotFound.js +132 -132
  485. package/src/errorstate/RequestUrlNotFound/RequestUrlNotFound.module.css +3 -3
  486. package/src/errorstate/RequestUrlNotFound/docs/RequestUrlNotFound__default.docs.js +19 -19
  487. package/src/errorstate/UnableToProcess/UnableToProcess.js +130 -130
  488. package/src/errorstate/UnableToProcess/UnableToProcess.module.css +3 -3
  489. package/src/errorstate/UnableToProcess/docs/UnableToProcess__default.docs.js +19 -19
  490. package/src/errorstate/UnauthorizedLogin/UnauthorizedLogin.js +130 -130
  491. package/src/errorstate/UnauthorizedLogin/UnauthorizedLogin.module.css +3 -3
  492. package/src/errorstate/UnauthorizedLogin/docs/UnauthorizedLogin__insufficient.docs.js +20 -20
  493. package/src/errorstate/UnauthorizedLogin/docs/UnauthorizedLogin__unauthorizedLogin.docs.js +19 -19
  494. package/src/errorstate/WillBack/WillBack.js +120 -120
  495. package/src/errorstate/WillBack/WillBack.module.css +36 -36
  496. package/src/errorstate/WillBack/docs/WillBack__default.docs.js +21 -21
  497. package/src/form/fields/CheckBoxField/CheckBoxField.js +220 -220
  498. package/src/form/fields/CheckBoxField/docs/CheckBoxField__default.docs.js +32 -32
  499. package/src/form/fields/CurrencyField/CurrencyField.js +267 -267
  500. package/src/form/fields/DateField/DateField.js +281 -281
  501. package/src/form/fields/DateField/docs/DateField__default.docs.js +24 -24
  502. package/src/form/fields/Fields.module.css +145 -145
  503. package/src/form/fields/MultiSelectField/MultiSelectField.js +311 -311
  504. package/src/form/fields/MultiSelectField/docs/MultiSelectField__default.docs.js +53 -53
  505. package/src/form/fields/PhoneField/PhoneField.js +227 -227
  506. package/src/form/fields/PhoneField/docs/PhoneField__default.docs.js +26 -26
  507. package/src/form/fields/RadioField/RadioField.js +181 -181
  508. package/src/form/fields/SelectField/SelectField.js +296 -296
  509. package/src/form/fields/SelectField/docs/SelectField__default.docs.js +48 -48
  510. package/src/form/fields/TagsMultiSelect/TagsMultiSelect.js +331 -331
  511. package/src/form/fields/TagsMultiSelect/TagsMultiSelect.module.css +95 -95
  512. package/src/form/fields/TagsMultiSelect/docs/TagsMultiSelect__default.docs.js +55 -55
  513. package/src/form/fields/TagsMultiSelectField/TagsMultiSelectField.js +342 -342
  514. package/src/form/fields/TagsMultiSelectField/TagsMultiSelectField.module.css +6 -6
  515. package/src/form/fields/TagsMultiSelectField/docs/TagsMultiSelectField__default.docs.js +58 -58
  516. package/src/form/fields/TextBoxField/TextBoxField.js +274 -274
  517. package/src/form/fields/TextBoxField/docs/TextBoxField__default.docs.js +38 -38
  518. package/src/form/fields/TextEditor/TextEditor.js +440 -440
  519. package/src/form/fields/TextEditor/TextEditor.module.css +582 -582
  520. package/src/form/fields/TextEditorField/TextEditorField.js +286 -286
  521. package/src/form/fields/TextEditorField/docs/TextEditorField__default.docs.js +62 -62
  522. package/src/form/fields/TextEditorWrapper/TextEditorWrapper.js +239 -239
  523. package/src/form/fields/TextEditorWrapper/TextEditorWrapper.module.css +25 -25
  524. package/src/form/fields/TextareaField/TextareaField.js +247 -247
  525. package/src/form/fields/TextareaField/docs/TextareaField__default.docs.js +25 -25
  526. package/src/form/fields/ValidationMessage/ValidationMessage.js +77 -77
  527. package/src/form/fields/ValidationMessage/ValidationMessage.module.css +22 -22
  528. package/src/form/fields/ValidationMessage/docs/ValidationMessage__default.docs.js +66 -66
  529. package/src/form/layout/Field/Field.js +53 -53
  530. package/src/form/layout/Field/Field.module.css +22 -22
  531. package/src/form/layout/Field/docs/Field__default.docs.js +20 -20
  532. package/src/form/layout/Section/ModuleFormSection.module.css +3 -3
  533. package/src/form/layout/Section/Section.js +51 -47
  534. package/src/form/layout/Section/docs/Section__default.docs.js +21 -21
  535. package/src/i18n.js +5498 -5498
  536. package/src/index.js +8 -8
  537. package/src/layout/SetupDetailLayout/SetupDetailLayout.js +274 -274
  538. package/src/layout/SetupDetailLayout/SetupDetailLayout.module.css +116 -116
  539. package/src/layout/SetupDetailLayout/docs/SetupDetailLayout__default.docs.js +34 -34
  540. package/src/layout/SetupDetailLayout/index.js +4 -4
  541. package/src/layout/SubtabLayout/SubtabLayout.js +235 -235
  542. package/src/layout/SubtabLayout/SubtabLayout.module.css +120 -120
  543. package/src/layout/SubtabLayout/docs/SubtabLayout__default.docs.js +53 -53
  544. package/src/layout/SubtabLayout/index.js +4 -4
  545. package/src/list/AvatarFlip/AvatarFlip.js +106 -106
  546. package/src/list/AvatarFlip/AvatarFlip.module.css +3 -3
  547. package/src/list/AvatarFlip/docs/AvatarFlip__default.docs.js +82 -82
  548. package/src/list/BluePrintStatus/BluePrintStatus.js +28 -28
  549. package/src/list/BluePrintStatus/BluePrintStatus.module.css +14 -14
  550. package/src/list/BluePrintStatus/docs/BluePrintStatus__default.docs.js +20 -20
  551. package/src/list/Comment/Comment.js +51 -51
  552. package/src/list/Comment/Comment.module.css +24 -24
  553. package/src/list/Comment/docs/Comment__default.docs.js +22 -22
  554. package/src/list/DepartmentDropDown/DepartmentDropDown.js +119 -119
  555. package/src/list/DepartmentDropDown/DepartmentDropDown.module.css +9 -9
  556. package/src/list/Dot/Dot.js +27 -27
  557. package/src/list/Dot/Dot.module.css +15 -15
  558. package/src/list/DotNew/DotNew.js +29 -29
  559. package/src/list/DotNew/DotNew.module.css +22 -22
  560. package/src/list/DotNew/docs/DotNew__default.docs.js +18 -18
  561. package/src/list/GridStencils/GridStencils.js +46 -46
  562. package/src/list/GridStencils/GridStencils.module.css +102 -102
  563. package/src/list/GridStencils/docs/GridStencils__default.docs.js +30 -30
  564. package/src/list/Icons/AddNewIcon.js +29 -29
  565. package/src/list/Icons/CompleteIcon.js +30 -30
  566. package/src/list/Icons/DeleteIcon.js +31 -31
  567. package/src/list/Icons/EditIcon.js +31 -31
  568. package/src/list/Icons/FloatingIcons.js +32 -32
  569. package/src/list/Icons/Icons.module.css +15 -15
  570. package/src/list/Icons/ReadUnreadIcon.js +42 -42
  571. package/src/list/Icons/SmartIcon.js +32 -32
  572. package/src/list/Icons/docs/FloatingIcons__default.docs.js +26 -26
  573. package/src/list/ListLayout/ListLayout.js +117 -111
  574. package/src/list/ListLayout/ListLayout.module.css +50 -36
  575. package/src/list/ListLayout/docs/ListLayout__default.docs.js +54 -54
  576. package/src/list/ListStencils/ListStencils.js +45 -45
  577. package/src/list/ListStencils/ListStencils.module.css +62 -62
  578. package/src/list/ListStencils/docs/ListStencils__default.docs.js +18 -18
  579. package/src/list/SecondaryText/AccountName.js +130 -130
  580. package/src/list/SecondaryText/ContactName.js +137 -137
  581. package/src/list/SecondaryText/DepartmentText.js +34 -34
  582. package/src/list/SecondaryText/Email.js +86 -86
  583. package/src/list/SecondaryText/HappinessRating.js +37 -37
  584. package/src/list/SecondaryText/PhoneNumber.js +93 -93
  585. package/src/list/SecondaryText/PriorityText.js +40 -40
  586. package/src/list/SecondaryText/SecondaryText.js +43 -43
  587. package/src/list/SecondaryText/SecondaryText.module.css +126 -126
  588. package/src/list/SecondaryText/StatusText.js +42 -42
  589. package/src/list/SecondaryText/TicketId.js +78 -78
  590. package/src/list/SecondaryText/Website.js +59 -59
  591. package/src/list/SecondaryText/docs/ContactName__default.docs.js +18 -18
  592. package/src/list/SecondaryText/index.js +11 -11
  593. package/src/list/SecondryPanel/SecondryPanel.js +144 -144
  594. package/src/list/SecondryPanel/SecondryPanel.module.css +5 -5
  595. package/src/list/SecondryPanel/docs/SecondryPanelDocs.module.css +37 -37
  596. package/src/list/SecondryPanel/docs/SecondryPanel__default.docs.js +90 -90
  597. package/src/list/SentimentStatus/SentimentStatus.js +32 -32
  598. package/src/list/SentimentStatus/SentimentStatus.module.css +9 -9
  599. package/src/list/SentimentStatus/docs/SentimentStatus__default.docs.js +20 -20
  600. package/src/list/Subject/Subject.js +88 -88
  601. package/src/list/Subject/Subject.module.css +27 -27
  602. package/src/list/Subject/docs/Subject__default.docs.js +34 -34
  603. package/src/list/TagNew/TagNew.js +40 -40
  604. package/src/list/TagNew/TagNew.module.css +108 -108
  605. package/src/list/TagNew/docs/TagNew__default.docs.js +18 -18
  606. package/src/list/Thread/Thread.js +43 -43
  607. package/src/list/Thread/Thread.module.css +30 -30
  608. package/src/list/Thread/docs/Thread__default.docs.js +18 -18
  609. package/src/list/UserTime/UserTime.js +138 -138
  610. package/src/list/UserTime/UserTime.module.css +52 -52
  611. package/src/list/UserTime/docs/UserTime__default.docs.js +114 -114
  612. package/src/list/listCommon.module.css +52 -52
  613. package/src/list/status/StatusDropdown/StatusDropdown.js +538 -538
  614. package/src/list/status/StatusDropdown/StatusDropdown.module.css +76 -76
  615. package/src/list/status/StatusDropdown/docs/StatusDropdown__default.docs.js +92 -92
  616. package/src/list/status/StatusListItem/StatusListItem.js +149 -149
  617. package/src/list/status/StatusListItem/StatusListItem.module.css +81 -81
  618. package/src/list/status/StatusListItem/docs/StatusListItem__default.docs.js +19 -19
  619. package/src/lookup/EmptyPage/EmptyPage.js +62 -62
  620. package/src/lookup/EmptyPage/LookupEmptyPage.module.css +12 -12
  621. package/src/lookup/EmptyPage/docs/EmptyPage__account.docs.js +17 -17
  622. package/src/lookup/EmptyPage/docs/EmptyPage__contact.docs.js +17 -17
  623. package/src/lookup/EmptyPage/docs/EmptyPage__default.docs.js +16 -16
  624. package/src/lookup/EmptyPage/docs/EmptyPage__product.docs.js +17 -17
  625. package/src/lookup/Lookup/Lookup.js +113 -113
  626. package/src/lookup/Lookup/Lookup.module.css +26 -26
  627. package/src/lookup/Lookup/docs/Lookup__contact.docs.js +184 -184
  628. package/src/lookup/Lookup/docs/Lookup__default.docs.js +59 -59
  629. package/src/lookup/Section/LookupSection.module.css +8 -8
  630. package/src/lookup/Section/Section.js +27 -27
  631. package/src/lookup/header/Close/Close.js +36 -36
  632. package/src/lookup/header/Close/LookupClose.module.css +15 -15
  633. package/src/lookup/header/Close/docs/Close__default.docs.js +17 -17
  634. package/src/lookup/header/ModuleHeader/ModuleHeader.js +103 -97
  635. package/src/lookup/header/ModuleHeader/docs/ModuleHeader__default.docs.js +53 -40
  636. package/src/lookup/header/Search/LookupSearch.module.css +48 -48
  637. package/src/lookup/header/Search/Search.js +249 -249
  638. package/src/lookup/header/Search/docs/Search__default.docs.js +106 -106
  639. package/src/lookup/header/TicketHeader/TicketHeader.js +126 -123
  640. package/src/lookup/header/TicketHeader/TicketHeader.module.css +19 -19
  641. package/src/lookup/header/TicketHeader/docs/TicketHeader__default.docs.js +63 -63
  642. package/src/lookup/header/Title/LookupTitle.module.css +20 -20
  643. package/src/lookup/header/Title/Title.js +38 -38
  644. package/src/lookup/header/Title/docs/Title__default.docs.js +17 -17
  645. package/src/lookup/header/ViewDropDown/ViewDropDown.js +199 -199
  646. package/src/lookup/header/ViewDropDown/ViewDropDown.module.css +46 -46
  647. package/src/lookup/header/ViewDropDown/docs/ViewDropDown__default.docs.js +54 -54
  648. package/src/lookup/header/lookupHeaderCommon.module.css +31 -25
  649. package/src/lookup/header/lookupHeaderCommonResponsive.module.css +15 -15
  650. package/src/setup/header/Button/Button.js +40 -40
  651. package/src/setup/header/Button/HeaderButton.module.css +3 -3
  652. package/src/setup/header/Button/docs/Button__default.docs.js +21 -21
  653. package/src/setup/header/Link/HeaderLink.module.css +15 -15
  654. package/src/setup/header/Link/Link.js +48 -48
  655. package/src/setup/header/Link/docs/Link__default.docs.js +20 -20
  656. package/src/setup/header/Search/Search.js +87 -87
  657. package/src/setup/header/Search/Search.module.css +57 -57
  658. package/src/setup/header/Search/docs/Search__default.docs.js +32 -32
  659. package/src/setup/header/Views/Views.js +62 -62
  660. package/src/setup/header/Views/Views.module.css +27 -27
  661. package/src/setup/header/Views/docs/Views__default.docs.js +20 -20
  662. package/src/setup/helptips/Description/Description.js +22 -22
  663. package/src/setup/helptips/Description/HelpTipsDescription.module.css +6 -6
  664. package/src/setup/helptips/Description/docs/Description__default.docs.js +24 -24
  665. package/src/setup/helptips/Link/HelpTipsLink.module.css +6 -6
  666. package/src/setup/helptips/Link/Link.js +39 -39
  667. package/src/setup/helptips/Link/docs/Link__default.docs.js +27 -27
  668. package/src/setup/helptips/ListGroup/ListGroup.js +42 -42
  669. package/src/setup/helptips/ListGroup/ListGroup.module.css +17 -17
  670. package/src/setup/helptips/ListGroup/docs/ListGroup__default.docs.js +37 -37
  671. package/src/setup/helptips/Title/HelpTipsTitle.module.css +5 -5
  672. package/src/setup/helptips/Title/Title.js +22 -22
  673. package/src/setup/helptips/Title/docs/Title__default.docs.js +22 -22
  674. package/src/setup/table/Table/Table.js +31 -31
  675. package/src/setup/table/Table/docs/Table__default.docs.js +115 -115
  676. package/src/setup/table/TableBody/TableBody.js +37 -37
  677. package/src/setup/table/TableData/SetupTableData.module.css +36 -36
  678. package/src/setup/table/TableData/TableData.js +56 -56
  679. package/src/setup/table/TableData/Tablehover.module.css +6 -6
  680. package/src/setup/table/TableHead/SetupTableHead.module.css +8 -8
  681. package/src/setup/table/TableHead/TableHead.js +53 -53
  682. package/src/setup/table/TableRow/SetupTableRow.module.css +10 -10
  683. package/src/setup/table/TableRow/TableRow.js +60 -60
  684. package/src/setup/table/Text/TableText.module.css +37 -37
  685. package/src/setup/table/Text/Text.js +82 -82
  686. package/src/setup/table/Text/docs/Text__default.docs.js +38 -38
  687. package/src/svg/PlusIcon.js +43 -43
  688. package/src/svg/SnippetIcon.js +50 -50
  689. package/src/svg/TemplateIcon.js +34 -34
  690. package/src/svg/docs/SVG__default.docs.js +46 -46
  691. package/src/utils/ChannelIconMapping.js +130 -130
  692. package/src/utils/Common.js +20 -20
  693. package/src/utils/General.js +58 -58
  694. package/src/utils/KeyboardApi.js +280 -280
  695. package/src/utils/editorUtils.js +189 -189
  696. package/src/version2/AlertClose/AlertClose.js +45 -45
  697. package/src/version2/AlertClose/AlertClose.module.css +42 -42
  698. package/src/version2/AlertClose/docs/AlertClose__default.docs.js +46 -46
  699. package/src/version2/GlobalNotification/GlobalNotification.js +112 -112
  700. package/src/version2/GlobalNotification/GlobalNotification.module.css +89 -89
  701. package/src/version2/GlobalNotification/docs/GlobalNotification__default.docs.js +94 -94
  702. package/src/version2/alertIcons/AlarmAlertIcon.js +32 -32
  703. package/src/version2/alertIcons/AlertIcons.js +60 -60
  704. package/src/version2/alertIcons/AlertIcons.module.css +67 -67
  705. package/src/version2/alertIcons/DangerAlertIcon.js +33 -33
  706. package/src/version2/alertIcons/ErrorAlertIcon.js +34 -34
  707. package/src/version2/alertIcons/InfoAlertIcon.js +35 -35
  708. package/src/version2/alertIcons/NotificationAlertIcon.js +31 -31
  709. package/src/version2/alertIcons/SuccessAlertIcon.js +30 -30
  710. package/src/version2/alertIcons/WarningAlertIcon.js +31 -31
  711. package/src/version2/alertIcons/docs/AlertIcons__default.docs.js +123 -123
  712. package/src/version2/errorstate/Inconvenience/Inconvenience.js +98 -98
  713. package/src/version2/errorstate/Inconvenience/docs/Inconvenience__default.docs.js +19 -19
  714. package/src/version2/errorstate/OopsSomethingMiss/OopsSomethingMiss.js +99 -99
  715. package/src/version2/errorstate/OopsSomethingMiss/docs/OopsSomethingMiss__default.docs.js +21 -21
  716. package/src/version2/errorstate/UnableToProcessRequest/UnableToProcessRequest.js +98 -98
  717. package/src/version2/errorstate/UnableToProcessRequest/docs/UnableToProcessRequest__default.docs.js +31 -31
  718. package/src/version2/errorstate/UnauthorizedLogin/UnauthorizedLogin.js +102 -102
  719. package/src/version2/errorstate/UnauthorizedLogin/docs/UnauthorizedLogin__default.docs.js +19 -19
  720. package/src/version2/errorstate/UrlNotFound/UrlNotFound.js +98 -98
  721. package/src/version2/errorstate/UrlNotFound/docs/UrlNotFound__default.docs.js +21 -21
  722. package/src/version2/errorstate/V2_ErrorStates.module.css +46 -46
  723. package/src/version2/errorstate/WillBeRightBack/WillBeRightBack.js +98 -98
  724. package/src/version2/errorstate/WillBeRightBack/docs/WillBeRightBack__default.docs.js +19 -19
  725. package/src/version2/lookup/AlertHeader/AlertHeader.js +100 -100
  726. package/src/version2/lookup/AlertHeader/AlertHeaderNew.module.css +63 -63
  727. package/src/version2/lookup/AlertHeader/docs/AlertHeader__default.docs.js +66 -66
  728. package/src/version2/lookup/AlertLookup/AlertLookup.js +290 -290
  729. package/src/version2/lookup/AlertLookup/AlertLookupNew.module.css +39 -39
  730. package/src/version2/lookup/AlertLookup/docs/AlertLookup__default.docs.js +150 -150
  731. package/src/version2/lookup/alertLookupCommonNew.module.css +25 -25
  732. package/src/version2/notification/DesktopNotification/DesktopNotification.js +251 -251
  733. package/src/version2/notification/DesktopNotification/DesktopNotification.module.css +90 -90
  734. package/src/version2/notification/DesktopNotification/docs/DesktopNotification__default.docs.js +86 -86
  735. package/src/version2/notification/DesktopNotificationHeader/DesktopNotificationHeader.js +92 -92
  736. package/src/version2/notification/DesktopNotificationHeader/DesktopNotificationHeader.module.css +99 -99
  737. package/src/version2/notification/DesktopNotificationHeader/docs/DesktopNotificationHeader__default.docs.js +51 -51
  738. package/es/deprecated/Theme/dotDarkTheme.module.css +0 -532
  739. package/es/deprecated/Theme/dotDefaultTheme.module.css +0 -532
  740. package/es/deprecated/Theme/palette/darkPalette.module.css +0 -40
  741. package/es/deprecated/Theme/palette/defaultPalette.module.css +0 -40
  742. package/lib/deprecated/Theme/dotDarkTheme.module.css +0 -532
  743. package/lib/deprecated/Theme/dotDefaultTheme.module.css +0 -532
  744. package/lib/deprecated/Theme/palette/darkPalette.module.css +0 -40
  745. package/lib/deprecated/Theme/palette/defaultPalette.module.css +0 -40
  746. package/src/deprecated/Theme/dotDarkTheme.module.css +0 -532
  747. package/src/deprecated/Theme/dotDefaultTheme.module.css +0 -532
  748. package/src/deprecated/Theme/palette/darkPalette.module.css +0 -40
  749. package/src/deprecated/Theme/palette/defaultPalette.module.css +0 -40
@@ -1,950 +1,950 @@
1
- import React, { Component, Fragment } from 'react';
2
- import PropTypes from 'prop-types';
3
- import Icon from '@zohodesk/icons/lib/Icon';
4
- import DropBox from '@zohodesk/components/lib/DropBox/DropBox';
5
- import Popup from '@zohodesk/components/lib/Popup/Popup';
6
- import { Box, Container } from '@zohodesk/components/lib/Layout';
7
- import ListItem from '@zohodesk/components/lib/ListItem/ListItem';
8
- import ListItemWithIcon from '@zohodesk/components/lib/ListItem/ListItemWithIcon';
9
- import DropDownHeading from '@zohodesk/components/lib/DropDown/DropDownHeading';
10
- import TextBoxIcon from '@zohodesk/components/lib/TextBoxIcon/TextBoxIcon';
11
- import Loader from '@zohodesk/svg/lib/svg/Loader';
12
- import CommonEmptyState from '../../emptystate/CommonEmptyState/CommonEmptyState';
13
- import EmptySearch from '@zohodesk/svg/lib/svg/EmptySearch';
14
- import CssProvider from '@zohodesk/components/lib/Provider/CssProvider';
15
- import { scrollTo } from '@zohodesk/components/lib/utils/Common';
16
- import { getUniqueId } from '@zohodesk/components/lib/Provider/IdProvider';
17
- import btnStyle from '@zohodesk/components/lib/semantic/Button/semanticButton.module.css';
18
- import RippleEffect from '@zohodesk/components/lib/RippleEffect/RippleEffect';
19
- import { shallowDiff } from '../../utils/General';
20
- import style from './ToggleDropDown.module.css';
21
-
22
- export class ToggleDropDown extends Component {
23
- constructor(props) {
24
- super(props);
25
- this.state = {
26
- searchValue: '',
27
- selectedIndex: -1,
28
- options: props.options
29
- };
30
- this.handleChange = this.handleChange.bind(this);
31
- this.handleKeyDown = this.handleKeyDown.bind(this);
32
- this.onSelect = this.onSelect.bind(this);
33
- this.handleTogglePopup = this.handleTogglePopup.bind(this);
34
- this.showTogglePopup = this.showTogglePopup.bind(this);
35
- this.hideTogglePopup = this.hideTogglePopup.bind(this);
36
- this.onSearchAPI = this.onSearchAPI.bind(this);
37
- this.onSearchClear = this.onSearchClear.bind(this);
38
- this.handleFilterSuggestions = this.handleFilterSuggestions.bind(this);
39
- this.scrollContentRef = this.scrollContentRef.bind(this);
40
- this.handleMouseEnter = this.handleMouseEnter.bind(this);
41
- this.searchInputRef = this.searchInputRef.bind(this);
42
- this.itemRef = this.itemRef.bind(this);
43
- this.inputRef = this.inputRef.bind(this);
44
- this.handleScroll = this.handleScroll.bind(this);
45
- this.getOptionsArray = this.getOptionsArray.bind(this);
46
- this.emptySearchSVG = this.emptySearchSVG.bind(this);
47
- this.getAriaId = getUniqueId(this);
48
- this.getSelectedIndex = this.getSelectedIndex.bind(this);
49
- }
50
-
51
- emptySearchSVG() {
52
- return <EmptySearch size='small' />;
53
- }
54
-
55
- inputRef(el) {
56
- this.hiddenInput = el;
57
- }
58
-
59
- itemRef(ele, index, id) {
60
- this[`suggestion_${id}`] = ele;
61
- }
62
-
63
- searchInputRef(el) {
64
- this.searchInput = el;
65
- }
66
-
67
- handleTogglePopup(e) {
68
- const {
69
- togglePopup,
70
- boxPosition,
71
- onSelectLabel,
72
- isPopupOpen,
73
- removeClose
74
- } = this.props;
75
- removeClose && removeClose(e);
76
- !isPopupOpen && onSelectLabel && onSelectLabel(e);
77
- togglePopup(e, boxPosition);
78
- }
79
-
80
- showTogglePopup(e) {
81
- const { togglePopup, boxPosition, onSelectLabel, isPopupOpen } = this.props;
82
- !isPopupOpen && onSelectLabel && onSelectLabel(e);
83
- !isPopupOpen && togglePopup(e, boxPosition);
84
- }
85
-
86
- hideTogglePopup(e) {
87
- const { togglePopup, boxPosition, onSelectLabel, isPopupOpen } = this.props;
88
- !isPopupOpen && onSelectLabel && onSelectLabel(e);
89
- isPopupOpen && togglePopup(e, boxPosition);
90
- }
91
-
92
- scrollContentRef(el) {
93
- const { isPopupOpen } = this.props;
94
- if (isPopupOpen) {
95
- this.optionsContainer = el;
96
- }
97
- }
98
-
99
- componentWillReceiveProps(nextProps) {
100
- // if (nextProps.options.length != this.props.options.length) {
101
- // this.setState({
102
- // options: nextProps.options
103
- // });
104
- // }
105
- if (shallowDiff(this.props.options, nextProps.options)) {
106
- this.setState({
107
- options: nextProps.options
108
- });
109
- }
110
- }
111
-
112
- onSelect(element, e) {
113
- const { onClick, togglePopup, preventPopupClose } = this.props;
114
- onClick && onClick(e, element);
115
- !preventPopupClose && togglePopup(e);
116
- }
117
-
118
- componentDidUpdate(prevProps) {
119
- const {
120
- isPopupOpen,
121
- isPopupReady,
122
- isSearch,
123
- idName,
124
- options,
125
- onDropDownOpen,
126
- onDropDownClose
127
- } = this.props;
128
- const { selectedIndex, searchValue } = this.state;
129
- if (prevProps.isPopupReady !== isPopupReady) {
130
- setTimeout(() => {
131
- isPopupReady
132
- ? isSearch
133
- ? this.searchInput.focus({ preventScroll: true })
134
- : this.hiddenInput.focus({ preventScroll: true })
135
- : this.hiddenInput.focus({ preventScroll: true });
136
- }, 10);
137
- }
138
- const optionsArr = this.getOptionsArray();
139
- const option = optionsArr[selectedIndex];
140
- const id = (option && option[idName]) || {};
141
- const selSuggestion = this[`suggestion_${id}`];
142
- if (isPopupOpen) {
143
- this.optionsContainer && scrollTo(this.optionsContainer, selSuggestion);
144
- }
145
- if (!prevProps.isPopupOpen && isPopupOpen && searchValue.length) {
146
- this.onSearchClear();
147
- }
148
-
149
- if (this.props.from == 'activityFilter') {
150
- //Temproary
151
- const results = this.props.options.filter(
152
- ({ isDisabled: id1 }) =>
153
- !prevProps.options.some(({ isDisabled: id2 }) => id2 === id1)
154
- );
155
- if (results.length > 0) {
156
- this.setState({ options: options });
157
- }
158
- }
159
-
160
- if (prevProps.isPopupOpen !== isPopupOpen) {
161
- if (isPopupOpen) {
162
- onDropDownOpen && onDropDownOpen();
163
- } else {
164
- onDropDownClose && onDropDownClose();
165
- }
166
- this.getSelectedIndex(optionsArr);
167
- }
168
- }
169
-
170
- handleFilterSuggestions(searchValue) {
171
- const { options, keyName, isGroupDropDown, groupOptionsKey, groupNameKey } =
172
- this.props;
173
- searchValue = searchValue.trim().toLowerCase();
174
- let result = [];
175
- if (isGroupDropDown) {
176
- const filteredGroups = [];
177
- options.map(group => {
178
- const { needDivider } = group;
179
- const name = group[groupNameKey];
180
- const groupOptions = group[groupOptionsKey];
181
- const datas = groupOptions.filter(list => {
182
- const value = list[keyName];
183
- return value.toLowerCase().includes(searchValue);
184
- });
185
- if (datas.length) {
186
- filteredGroups.push({
187
- [groupNameKey]: name,
188
- [groupOptionsKey]: datas,
189
- needDivider
190
- });
191
- }
192
- });
193
- result = filteredGroups;
194
- } else {
195
- let filteredOptions = options.filter((item, i) => {
196
- if (item.needDivider) {
197
- return true;
198
- }
199
- return item[keyName].toLowerCase().includes(searchValue);
200
- });
201
- if (filteredOptions.length) {
202
- // to avoid more than one dividers consecutively comes as one by one
203
- let needDividerCount = 0;
204
- const orderedOptions = filteredOptions.filter(item => {
205
- if (item.needDivider && needDividerCount === 0) {
206
- needDividerCount++;
207
- return true;
208
- } else if (!item.needDivider) {
209
- needDividerCount = 0;
210
- return true;
211
- }
212
- });
213
- // remove divider if it placed in first or last index
214
- filteredOptions = [];
215
- filteredOptions = orderedOptions.filter((item, i) => {
216
- if (i == 0 || i == orderedOptions.length - 1) {
217
- if (!item.needDivider) {
218
- return true;
219
- }
220
- } else {
221
- return true;
222
- }
223
- });
224
- result = filteredOptions;
225
- }
226
- }
227
- return result;
228
- }
229
-
230
- getOptionsArray() {
231
- const { searchValue } = this.state;
232
- const { isGroupDropDown, groupOptionsKey } = this.props;
233
-
234
- const options = searchValue.length
235
- ? this.handleFilterSuggestions(searchValue)
236
- : this.props.options;
237
- let optionsArr = [];
238
- if (isGroupDropDown) {
239
- for (let i = 0; i < options.length; i++) {
240
- const groupOptions = options[i][groupOptionsKey];
241
- Array.prototype.push.apply(optionsArr, groupOptions);
242
- }
243
- } else {
244
- optionsArr = options.filter(item => !item.needDivider);
245
- }
246
- return optionsArr;
247
- }
248
-
249
- handleKeyDown(e) {
250
- const { keyCode } = e;
251
- const { selectedIndex, searchValue } = this.state;
252
- const optionsArr = this.getOptionsArray();
253
- const totalIndex = optionsArr.length;
254
- const {
255
- togglePopup,
256
- onClick,
257
- boxPosition,
258
- isPopupReady,
259
- isNextOptions,
260
- getNextOptions,
261
- value,
262
- keyName,
263
- idName,
264
- preventPopupClose,
265
- isSearch
266
- } = this.props;
267
- if (
268
- isPopupReady &&
269
- (keyCode === 38 || keyCode === 40) &&
270
- e.preventDefault
271
- ) {
272
- e.preventDefault(); //prevent body scroll
273
- }
274
- if (isPopupReady) {
275
- switch (keyCode) {
276
- case 40:
277
- if (selectedIndex === totalIndex - 1) {
278
- this.setState({ selectedIndex: 0 });
279
- } else {
280
- if (selectedIndex === totalIndex - 3) {
281
- isNextOptions &&
282
- getNextOptions &&
283
- getNextOptions(e, { searchValue });
284
- }
285
- this.setState({
286
- selectedIndex: selectedIndex + 1
287
- });
288
- }
289
- break;
290
- case 38:
291
- if (selectedIndex === 0) {
292
- this.setState({ selectedIndex: totalIndex - 1 });
293
- } else {
294
- this.setState({
295
- selectedIndex: selectedIndex - 1
296
- });
297
- }
298
- break;
299
- case 13:
300
- const selectedId = optionsArr[selectedIndex][idName] || '';
301
- onClick && onClick(selectedId, optionsArr[selectedIndex]);
302
- if (!preventPopupClose) {
303
- togglePopup(e, boxPosition);
304
- } else if (isSearch) {
305
- this.searchInput.focus({ preventScroll: true });
306
- } else {
307
- this.hiddenInput.focus({ preventScroll: true });
308
- }
309
- break;
310
- }
311
- } else {
312
- if (keyCode === 13 || keyCode === 40) {
313
- togglePopup(e, boxPosition);
314
- }
315
- }
316
- }
317
-
318
- getSelectedIndex(optionsArr) {
319
- const { selectedId, idName } = this.props;
320
- if (selectedId) {
321
- for (let i = 0; i < optionsArr.length; i++) {
322
- const indexId = optionsArr[i][idName];
323
- if (selectedId === indexId) {
324
- this.setState({
325
- selectedIndex: i
326
- });
327
- break;
328
- }
329
- }
330
- } else {
331
- this.setState({
332
- selectedIndex: -1
333
- });
334
- }
335
- }
336
-
337
- onSearchAPI() {
338
- const { searchValue } = this.state;
339
- const { needSearchFetching, onSearch } = this.props;
340
- if (needSearchFetching && onSearch) {
341
- onSearch(searchValue);
342
- }
343
- }
344
-
345
- handleChange(value, e) {
346
- const filteredOptions = this.handleFilterSuggestions(value);
347
- this.setState(
348
- {
349
- searchValue: value,
350
- selectedIndex: -1,
351
- options: filteredOptions
352
- },
353
- () => {
354
- this.onSearchAPI();
355
- }
356
- );
357
- }
358
-
359
- onSearchClear() {
360
- const filteredOptions = this.handleFilterSuggestions('');
361
- this.setState(
362
- {
363
- searchValue: '',
364
- options: filteredOptions
365
- },
366
- () => {
367
- this.onSearchAPI();
368
- }
369
- );
370
- }
371
-
372
- handleMouseEnter(id, value, index, e) {
373
- this.setState({
374
- selectedIndex: index
375
- });
376
- }
377
-
378
- handleScroll(e) {
379
- const { isNextOptions, getNextOptions } = this.props;
380
- const { searchValue } = this.state;
381
- if (
382
- e.target.scrollTop + e.target.offsetHeight >
383
- e.target.scrollHeight - 1
384
- ) {
385
- isNextOptions && getNextOptions && getNextOptions(e, { searchValue });
386
- }
387
- }
388
-
389
- render() {
390
- const { options, selectedIndex } = this.state;
391
- const {
392
- value,
393
- removeClose,
394
- boxSize,
395
- keyName,
396
- idName,
397
- title,
398
- isSearch,
399
- isArrow,
400
- placeHolderText,
401
- className,
402
- right,
403
- left,
404
- top,
405
- bottom,
406
- isPopupOpen: isOpen,
407
- isPopupActive,
408
- needExternalPopupState,
409
- isPopupReady,
410
- position,
411
- getTargetRef,
412
- getContainerRef,
413
- dataId,
414
- searchBoxSize,
415
- searchEmptyHint,
416
- searchErrorText,
417
- activeStyle,
418
- showOnHover,
419
- isDisabled,
420
- showIconOnHover,
421
- isReadOnly,
422
- hoverStyle,
423
- isEditable,
424
- iconName,
425
- iconSize,
426
- needTick,
427
- dataTitle,
428
- isDataLoaded,
429
- children,
430
- needResponsive,
431
- arrowIconPosition,
432
- isGroupDropDown,
433
- groupOptionsKey,
434
- groupNameKey,
435
- isToggleStateNeeded,
436
- selectedId,
437
- isPadding,
438
- isNeedEffect,
439
- hoverType,
440
- palette,
441
- getFooter,
442
- customProps
443
- } = this.props;
444
- let {
445
- ToggleDropDownProps = {},
446
- DropBoxProps = {},
447
- TextBoxIconProps = {},
448
- ListItemWithIconProps = {},
449
- ListItemProps = {}
450
- } = customProps;
451
- const isPopupOpen = needExternalPopupState
452
- ? isPopupActive && isOpen
453
- : isOpen;
454
- const Component = isToggleStateNeeded ? children.type : null,
455
- componentProps = isToggleStateNeeded ? children.props : null;
456
- const { searchValue } = this.state;
457
-
458
- const commonClass = `${className ? className : ''} ${
459
- isPopupReady ? (activeStyle ? activeStyle : '') : ''
460
- } ${
461
- isDisabled
462
- ? CssProvider('isDisable')
463
- : isReadOnly || !isEditable
464
- ? style.cursorDefault
465
- : !showOnHover
466
- ? `${style.cursor} ${hoverStyle ? hoverStyle : ''}`
467
- : `${hoverStyle ? hoverStyle : ''} ${style.cursorDefault}`
468
- }`;
469
- let listIndex = -1;
470
- const ariaTitleId = this.getAriaId();
471
- const allyOptionsArr = this.getOptionsArray();
472
-
473
- return (
474
- <div
475
- className={style.wrapper}
476
- onMouseEnter={
477
- showOnHover && !isDisabled && !isReadOnly && isEditable
478
- ? this.showTogglePopup
479
- : undefined
480
- }
481
- onMouseLeave={
482
- showOnHover && !isDisabled && !isReadOnly && isEditable
483
- ? this.hideTogglePopup
484
- : undefined
485
- }
486
- {...ToggleDropDownProps}
487
- >
488
- <Container
489
- alignBox='row'
490
- onClick={
491
- !showOnHover &&
492
- !isDisabled &&
493
- !isReadOnly &&
494
- isEditable &&
495
- this.handleTogglePopup
496
- }
497
- eleRef={getTargetRef}
498
- align='vertical'
499
- isCover={false}
500
- dataId={dataId}
501
- >
502
- <div className={style.hiddenInput}>
503
- <input
504
- type='text'
505
- ref={this.inputRef}
506
- onKeyDown={this.handleKeyDown}
507
- tabIndex='-1'
508
- className={style.hiddenInputElement}
509
- />
510
- </div>
511
- {children ? (
512
- isToggleStateNeeded ? (
513
- <Component {...componentProps} isActive={isPopupOpen} />
514
- ) : (
515
- children
516
- )
517
- ) : (
518
- <RippleEffect
519
- hoverType={hoverType}
520
- isActive={isPopupOpen}
521
- isNeedEffect={isEditable && isNeedEffect}
522
- >
523
- <Container
524
- className={`${btnStyle.buttonReset} ${commonClass} ${
525
- !isPopupOpen && showIconOnHover ? style.hoverIcon : ''
526
- }`}
527
- isCover={false}
528
- alignBox='row'
529
- align='vertical'
530
- tagName='button'
531
- aria-labelledby={ariaTitleId}
532
- aria-haspopup={true}
533
- aria-expanded={isPopupOpen ? true : false}
534
- >
535
- {iconName ? (
536
- <Box className={value ? style.iconBox : ''}>
537
- <Icon name={iconName} size={iconSize} />
538
- </Box>
539
- ) : null}
540
- {value && (
541
- <React.Fragment>
542
- <Box
543
- id={ariaTitleId}
544
- aria-hidden={true}
545
- className={`${style.value} toggleDropText`}
546
- shrink
547
- tagName='span'
548
- data-title={dataTitle}
549
- >
550
- {value}
551
- </Box>
552
- {isEditable ? (
553
- <Icon
554
- aria-hidden={true}
555
- size='6'
556
- name='ZD-down'
557
- iconClass={`${'toggleDropIcon'} ${style.arrow} ${
558
- style[`${arrowIconPosition}_arrow`]
559
- }`}
560
- dataId='statusdownarrow'
561
- />
562
- ) : null}
563
- </React.Fragment>
564
- )}
565
- </Container>
566
- </RippleEffect>
567
- )}
568
- </Container>
569
-
570
- {isPopupOpen ? (
571
- <DropBox
572
- boxPosition={position}
573
- isActive={isPopupReady}
574
- onClick={removeClose}
575
- size={boxSize}
576
- right={right}
577
- left={left}
578
- top={top}
579
- bottom={bottom}
580
- isArrow={isArrow}
581
- isAnimate
582
- getRef={getContainerRef}
583
- customClass={{
584
- customDropBoxWrap: style.dropBoxContainer
585
- }}
586
- needResponsive={needResponsive}
587
- isPadding={isPadding}
588
- tabindex='0'
589
- a11y={{
590
- role: !isSearch ? 'menu' : undefined,
591
- ariaLabelledby: !isSearch ? ariaTitleId : undefined
592
- }}
593
- palette={palette}
594
- {...DropBoxProps}
595
- >
596
- <Fragment>
597
- {isSearch ? (
598
- <div className={style.search}>
599
- <TextBoxIcon
600
- placeHolder={placeHolderText}
601
- onChange={this.handleChange}
602
- value={searchValue}
603
- onClear={this.onSearchClear}
604
- size={searchBoxSize}
605
- inputRef={this.searchInputRef}
606
- onKeyDown={this.handleKeyDown}
607
- a11y={{
608
- role: 'combobox',
609
- ariaOwns: ariaTitleId,
610
- ariaActivedescendant:
611
- allyOptionsArr[selectedIndex] &&
612
- allyOptionsArr[selectedIndex][keyName],
613
- ariaAutocomplete: 'list',
614
- ariaHaspopup: true,
615
- ariaExpanded: true
616
- }}
617
- {...TextBoxIconProps}
618
- />
619
- </div>
620
- ) : null}
621
- {title && options.length != 0 && (
622
- <div className={style.title}>
623
- <DropDownHeading
624
- text={title}
625
- htmlId={ariaTitleId}
626
- palette={palette}
627
- a11y={{
628
- role: 'heading'
629
- }}
630
- customClass={style.dropdown}
631
- />
632
- </div>
633
- )}
634
- <Box
635
- id={ariaTitleId}
636
- scroll='vertical'
637
- dataId={`${dataId}_list`}
638
- className={style.maxHgt}
639
- eleRef={this.scrollContentRef}
640
- onScroll={this.handleScroll}
641
- role={isSearch ? 'listbox' : undefined}
642
- aria-labelledby={isSearch ? ariaTitleId : undefined}
643
- >
644
- {isDataLoaded ? (
645
- options && options.length != 0 ? (
646
- isGroupDropDown ? (
647
- <Fragment>
648
- {options.map(group => {
649
- const groupName = group[groupNameKey];
650
- const groupOptions = group[groupOptionsKey];
651
- const { needDivider } = group;
652
- return (
653
- <Fragment key={`index${groupName}`}>
654
- {needDivider && (
655
- <div className={style.seperatedLine} />
656
- )}
657
- {groupName && (
658
- <div className={style.groupName}>
659
- <DropDownHeading
660
- text={groupName}
661
- palette={palette}
662
- a11y={{
663
- role: 'heading'
664
- }}
665
- />
666
- </div>
667
- )}
668
- {groupOptions &&
669
- groupOptions.map(item => {
670
- const {
671
- iconName,
672
- iconSize,
673
- iconClass,
674
- title,
675
- disableTitle = '',
676
- isDisabled = false
677
- } = item;
678
- listIndex += 1;
679
- return iconName ? (
680
- <ListItemWithIcon
681
- key={listIndex}
682
- dataId={item[keyName]}
683
- value={item[keyName]}
684
- id={item[idName]}
685
- active={selectedId === item[idName]}
686
- onClick={this.onSelect.bind(this, item)}
687
- index={listIndex}
688
- highlight={selectedIndex === listIndex}
689
- disableTitle={disableTitle}
690
- isDisabled={isDisabled}
691
- iconName={iconName}
692
- iconClass={iconClass}
693
- iconSize={iconSize}
694
- needTick={needTick}
695
- needBorder={false}
696
- onMouseEnter={this.handleMouseEnter}
697
- getRef={this.itemRef}
698
- title={title ? title : item[keyName]}
699
- palette={palette}
700
- a11y={{
701
- role: isSearch ? 'option' : 'menuitem',
702
- ariaSelected:
703
- selectedId === item[idName]
704
- }}
705
- {...ListItemWithIconProps}
706
- />
707
- ) : (
708
- <ListItem
709
- key={listIndex}
710
- dataId={item[keyName]}
711
- value={item[keyName]}
712
- id={item[idName]}
713
- active={selectedId === item[idName]}
714
- onClick={this.onSelect.bind(this, item)}
715
- isDisabled={isDisabled}
716
- disableTitle={disableTitle}
717
- index={listIndex}
718
- highlight={selectedIndex === listIndex}
719
- needTick={needTick}
720
- needBorder={false}
721
- onMouseEnter={this.handleMouseEnter}
722
- getRef={this.itemRef}
723
- title={title ? title : item[keyName]}
724
- palette={palette}
725
- a11y={{
726
- role: isSearch ? 'option' : 'menuitem',
727
- ariaSelected:
728
- selectedId === item[idName]
729
- }}
730
- {...ListItemProps}
731
- />
732
- );
733
- })}
734
- </Fragment>
735
- );
736
- })}
737
- </Fragment>
738
- ) : (
739
- <Fragment>
740
- {options.map((item, i) => {
741
- const {
742
- iconName,
743
- iconSize,
744
- iconClass,
745
- title,
746
- needDivider,
747
- isDisabled = false,
748
- disableTitle = ''
749
- } = item;
750
- if (!needDivider) {
751
- listIndex += 1;
752
- }
753
- return (
754
- <Fragment key={i}>
755
- {needDivider ? (
756
- <div className={style.seperatedLine} />
757
- ) : iconName ? (
758
- <ListItemWithIcon
759
- dataId={item[keyName]}
760
- value={item[keyName]}
761
- id={item[idName]}
762
- active={selectedId === item[idName]}
763
- onClick={this.onSelect.bind(this, item)}
764
- index={listIndex}
765
- disableTitle={disableTitle}
766
- isDisabled={isDisabled}
767
- highlight={selectedIndex === listIndex}
768
- iconName={iconName}
769
- iconClass={iconClass}
770
- iconSize={iconSize}
771
- needTick={needTick}
772
- needBorder={false}
773
- onMouseEnter={this.handleMouseEnter}
774
- getRef={this.itemRef}
775
- title={title ? title : item[keyName]}
776
- key={listIndex}
777
- palette={palette}
778
- a11y={{
779
- role: isSearch ? 'option' : 'menuitem',
780
- ariaSelected: selectedId === item[idName]
781
- }}
782
- {...ListItemWithIconProps}
783
- />
784
- ) : (
785
- <ListItem
786
- key={listIndex}
787
- dataId={item[keyName]}
788
- value={item[keyName]}
789
- id={item[idName]}
790
- disableTitle={disableTitle}
791
- isDisabled={isDisabled}
792
- active={selectedId === item[idName]}
793
- onClick={this.onSelect.bind(this, item)}
794
- index={listIndex}
795
- highlight={selectedIndex === listIndex}
796
- needTick={needTick}
797
- needBorder={false}
798
- onMouseEnter={this.handleMouseEnter}
799
- getRef={this.itemRef}
800
- title={title ? title : item[keyName]}
801
- palette={palette}
802
- a11y={{
803
- role: isSearch ? 'option' : 'menuitem',
804
- ariaSelected: selectedId === item[idName]
805
- }}
806
- {...ListItemProps}
807
- />
808
- )}
809
- </Fragment>
810
- );
811
- })}
812
- </Fragment>
813
- )
814
- ) : (
815
- <CommonEmptyState
816
- className={style.svgWrapper}
817
- title={searchErrorText || 'oops !'}
818
- description={searchEmptyHint}
819
- size='small'
820
- getEmptyState={this.emptySearchSVG}
821
- />
822
- )
823
- ) : (
824
- <div className={style.loader}>
825
- <Loader />
826
- </div>
827
- )}
828
- </Box>
829
- {getFooter ? <div>{getFooter()}</div> : null}
830
- </Fragment>
831
- </DropBox>
832
- ) : null}
833
- </div>
834
- );
835
- }
836
- }
837
- ToggleDropDown.defaultProps = {
838
- keyName: 'value',
839
- idName: 'id',
840
- isArrow: true,
841
- searchBoxSize: 'small',
842
- isDisabled: false,
843
- showIconOnHover: false,
844
- showOnHover: false,
845
- isReadOnly: false,
846
- isEditable: true,
847
- isDataLoaded: true,
848
- needTick: true,
849
- needResponsive: true,
850
- arrowIconPosition: 'default',
851
- groupOptionsKey: 'items',
852
- groupNameKey: 'name',
853
- isPadding: true,
854
- isToggleStateNeeded: false,
855
- isNeedEffect: true,
856
- hoverType: 'default',
857
- needExternalPopupState: false,
858
- customProps: {},
859
- preventPopupClose: false
860
- };
861
-
862
- ToggleDropDown.propTypes = {
863
- activeStyle: PropTypes.string,
864
- arrowIconPosition: PropTypes.oneOf(['default', 'overlay']),
865
- bottom: PropTypes.number,
866
- boxPosition: PropTypes.oneOf([
867
- 'bottomRight',
868
- 'bottomLeft',
869
- 'bottomCenter',
870
- 'topRight',
871
- 'topLeft',
872
- 'topCenter',
873
- 'rightTop',
874
- 'rightBottom',
875
- 'rightCenter',
876
- 'leftTop',
877
- 'leftBottom',
878
- 'leftCenter'
879
- ]),
880
- boxSize: PropTypes.oneOf(['xsmall', 'small', 'medium', 'mlarge', 'large']),
881
- children: PropTypes.node,
882
- className: PropTypes.string,
883
- dataId: PropTypes.string,
884
- dataTitle: PropTypes.string,
885
- getContainerRef: PropTypes.func,
886
- getNextOptions: PropTypes.func,
887
- getTargetRef: PropTypes.func,
888
- groupNameKey: PropTypes.string,
889
- groupOptionsKey: PropTypes.string,
890
- hoverStyle: PropTypes.string,
891
- hoverType: PropTypes.oneOf(['default', 'border', 'bg']),
892
- iconName: PropTypes.string,
893
- iconSize: PropTypes.string,
894
- idName: PropTypes.string,
895
- isArrow: PropTypes.bool,
896
- isDataLoaded: PropTypes.bool,
897
- isDisabled: PropTypes.bool,
898
- isEditable: PropTypes.bool,
899
- isGroupDropDown: PropTypes.bool,
900
- isNeedEffect: PropTypes.bool,
901
- isNextOptions: PropTypes.bool,
902
- isPadding: PropTypes.bool,
903
- isPopupActive: PropTypes.bool,
904
- isPopupOpen: PropTypes.bool,
905
- isPopupReady: PropTypes.bool,
906
- isReadOnly: PropTypes.bool,
907
- isSearch: PropTypes.bool,
908
- isToggleStateNeeded: PropTypes.bool,
909
- keyName: PropTypes.string,
910
- left: PropTypes.number,
911
- needExternalPopupState: PropTypes.bool,
912
- needResponsive: PropTypes.bool,
913
- needSearchFetching: PropTypes.bool,
914
- needTick: PropTypes.bool,
915
- onClick: PropTypes.func,
916
- onSearch: PropTypes.func,
917
- options: PropTypes.array.isRequired,
918
- palette: PropTypes.oneOf(['dark']),
919
- placeHolderText: PropTypes.string,
920
- position: PropTypes.string,
921
- removeClose: PropTypes.func,
922
- right: PropTypes.number,
923
- searchBoxSize: PropTypes.oneOf(['small', 'medium', 'xmedium']),
924
- searchEmptyHint: PropTypes.string,
925
- searchErrorText: PropTypes.string,
926
- selectedId: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
927
- showIconOnHover: PropTypes.bool,
928
- showOnHover: PropTypes.bool,
929
- title: PropTypes.string,
930
- togglePopup: PropTypes.func,
931
- value: PropTypes.node,
932
- onDropDownOpen: PropTypes.func,
933
- onDropDownClose: PropTypes.func,
934
- getFooter: PropTypes.func,
935
- customProps: PropTypes.shape({
936
- ToggleDropDownProps: PropTypes.object,
937
- DropBoxProps: PropTypes.object,
938
- TextBoxIconProps: PropTypes.object,
939
- ListItemWithIconProps: PropTypes.object,
940
- ListItemProps: PropTypes.object
941
- }),
942
- preventPopupClose: PropTypes.bool
943
- };
944
-
945
- if (__DOCS__) {
946
- ToggleDropDown.docs = {
947
- componentGroup: 'Molecule'
948
- };
949
- }
950
- export default Popup(ToggleDropDown);
1
+ import React, { Component, Fragment } from 'react';
2
+ import PropTypes from 'prop-types';
3
+ import Icon from '@zohodesk/icons/lib/Icon';
4
+ import DropBox from '@zohodesk/components/lib/DropBox/DropBox';
5
+ import Popup from '@zohodesk/components/lib/Popup/Popup';
6
+ import { Box, Container } from '@zohodesk/components/lib/Layout';
7
+ import ListItem from '@zohodesk/components/lib/ListItem/ListItem';
8
+ import ListItemWithIcon from '@zohodesk/components/lib/ListItem/ListItemWithIcon';
9
+ import DropDownHeading from '@zohodesk/components/lib/DropDown/DropDownHeading';
10
+ import TextBoxIcon from '@zohodesk/components/lib/TextBoxIcon/TextBoxIcon';
11
+ import Loader from '@zohodesk/svg/lib/svg/Loader';
12
+ import CommonEmptyState from '../../emptystate/CommonEmptyState/CommonEmptyState';
13
+ import EmptySearch from '@zohodesk/svg/lib/svg/EmptySearch';
14
+ import CssProvider from '@zohodesk/components/lib/Provider/CssProvider';
15
+ import { scrollTo } from '@zohodesk/components/lib/utils/Common';
16
+ import { getUniqueId } from '@zohodesk/components/lib/Provider/IdProvider';
17
+ import btnStyle from '@zohodesk/components/lib/semantic/Button/semanticButton.module.css';
18
+ import RippleEffect from '@zohodesk/components/lib/RippleEffect/RippleEffect';
19
+ import { shallowDiff } from '../../utils/General';
20
+ import style from './ToggleDropDown.module.css';
21
+
22
+ export class ToggleDropDown extends Component {
23
+ constructor(props) {
24
+ super(props);
25
+ this.state = {
26
+ searchValue: '',
27
+ selectedIndex: -1,
28
+ options: props.options
29
+ };
30
+ this.handleChange = this.handleChange.bind(this);
31
+ this.handleKeyDown = this.handleKeyDown.bind(this);
32
+ this.onSelect = this.onSelect.bind(this);
33
+ this.handleTogglePopup = this.handleTogglePopup.bind(this);
34
+ this.showTogglePopup = this.showTogglePopup.bind(this);
35
+ this.hideTogglePopup = this.hideTogglePopup.bind(this);
36
+ this.onSearchAPI = this.onSearchAPI.bind(this);
37
+ this.onSearchClear = this.onSearchClear.bind(this);
38
+ this.handleFilterSuggestions = this.handleFilterSuggestions.bind(this);
39
+ this.scrollContentRef = this.scrollContentRef.bind(this);
40
+ this.handleMouseEnter = this.handleMouseEnter.bind(this);
41
+ this.searchInputRef = this.searchInputRef.bind(this);
42
+ this.itemRef = this.itemRef.bind(this);
43
+ this.inputRef = this.inputRef.bind(this);
44
+ this.handleScroll = this.handleScroll.bind(this);
45
+ this.getOptionsArray = this.getOptionsArray.bind(this);
46
+ this.emptySearchSVG = this.emptySearchSVG.bind(this);
47
+ this.getAriaId = getUniqueId(this);
48
+ this.getSelectedIndex = this.getSelectedIndex.bind(this);
49
+ }
50
+
51
+ emptySearchSVG() {
52
+ return <EmptySearch size='small' />;
53
+ }
54
+
55
+ inputRef(el) {
56
+ this.hiddenInput = el;
57
+ }
58
+
59
+ itemRef(ele, index, id) {
60
+ this[`suggestion_${id}`] = ele;
61
+ }
62
+
63
+ searchInputRef(el) {
64
+ this.searchInput = el;
65
+ }
66
+
67
+ handleTogglePopup(e) {
68
+ const {
69
+ togglePopup,
70
+ boxPosition,
71
+ onSelectLabel,
72
+ isPopupOpen,
73
+ removeClose
74
+ } = this.props;
75
+ removeClose && removeClose(e);
76
+ !isPopupOpen && onSelectLabel && onSelectLabel(e);
77
+ togglePopup(e, boxPosition);
78
+ }
79
+
80
+ showTogglePopup(e) {
81
+ const { togglePopup, boxPosition, onSelectLabel, isPopupOpen } = this.props;
82
+ !isPopupOpen && onSelectLabel && onSelectLabel(e);
83
+ !isPopupOpen && togglePopup(e, boxPosition);
84
+ }
85
+
86
+ hideTogglePopup(e) {
87
+ const { togglePopup, boxPosition, onSelectLabel, isPopupOpen } = this.props;
88
+ !isPopupOpen && onSelectLabel && onSelectLabel(e);
89
+ isPopupOpen && togglePopup(e, boxPosition);
90
+ }
91
+
92
+ scrollContentRef(el) {
93
+ const { isPopupOpen } = this.props;
94
+ if (isPopupOpen) {
95
+ this.optionsContainer = el;
96
+ }
97
+ }
98
+
99
+ componentWillReceiveProps(nextProps) {
100
+ // if (nextProps.options.length != this.props.options.length) {
101
+ // this.setState({
102
+ // options: nextProps.options
103
+ // });
104
+ // }
105
+ if (shallowDiff(this.props.options, nextProps.options)) {
106
+ this.setState({
107
+ options: nextProps.options
108
+ });
109
+ }
110
+ }
111
+
112
+ onSelect(element, e) {
113
+ const { onClick, togglePopup, preventPopupClose } = this.props;
114
+ onClick && onClick(e, element);
115
+ !preventPopupClose && togglePopup(e);
116
+ }
117
+
118
+ componentDidUpdate(prevProps) {
119
+ const {
120
+ isPopupOpen,
121
+ isPopupReady,
122
+ isSearch,
123
+ idName,
124
+ options,
125
+ onDropDownOpen,
126
+ onDropDownClose
127
+ } = this.props;
128
+ const { selectedIndex, searchValue } = this.state;
129
+ if (prevProps.isPopupReady !== isPopupReady) {
130
+ setTimeout(() => {
131
+ isPopupReady
132
+ ? isSearch
133
+ ? this.searchInput.focus({ preventScroll: true })
134
+ : this.hiddenInput.focus({ preventScroll: true })
135
+ : this.hiddenInput.focus({ preventScroll: true });
136
+ }, 10);
137
+ }
138
+ const optionsArr = this.getOptionsArray();
139
+ const option = optionsArr[selectedIndex];
140
+ const id = (option && option[idName]) || {};
141
+ const selSuggestion = this[`suggestion_${id}`];
142
+ if (isPopupOpen) {
143
+ this.optionsContainer && scrollTo(this.optionsContainer, selSuggestion);
144
+ }
145
+ if (!prevProps.isPopupOpen && isPopupOpen && searchValue.length) {
146
+ this.onSearchClear();
147
+ }
148
+
149
+ if (this.props.from == 'activityFilter') {
150
+ //Temproary
151
+ const results = this.props.options.filter(
152
+ ({ isDisabled: id1 }) =>
153
+ !prevProps.options.some(({ isDisabled: id2 }) => id2 === id1)
154
+ );
155
+ if (results.length > 0) {
156
+ this.setState({ options: options });
157
+ }
158
+ }
159
+
160
+ if (prevProps.isPopupOpen !== isPopupOpen) {
161
+ if (isPopupOpen) {
162
+ onDropDownOpen && onDropDownOpen();
163
+ } else {
164
+ onDropDownClose && onDropDownClose();
165
+ }
166
+ this.getSelectedIndex(optionsArr);
167
+ }
168
+ }
169
+
170
+ handleFilterSuggestions(searchValue) {
171
+ const { options, keyName, isGroupDropDown, groupOptionsKey, groupNameKey } =
172
+ this.props;
173
+ searchValue = searchValue.trim().toLowerCase();
174
+ let result = [];
175
+ if (isGroupDropDown) {
176
+ const filteredGroups = [];
177
+ options.map(group => {
178
+ const { needDivider } = group;
179
+ const name = group[groupNameKey];
180
+ const groupOptions = group[groupOptionsKey];
181
+ const datas = groupOptions.filter(list => {
182
+ const value = list[keyName];
183
+ return value.toLowerCase().includes(searchValue);
184
+ });
185
+ if (datas.length) {
186
+ filteredGroups.push({
187
+ [groupNameKey]: name,
188
+ [groupOptionsKey]: datas,
189
+ needDivider
190
+ });
191
+ }
192
+ });
193
+ result = filteredGroups;
194
+ } else {
195
+ let filteredOptions = options.filter((item, i) => {
196
+ if (item.needDivider) {
197
+ return true;
198
+ }
199
+ return item[keyName].toLowerCase().includes(searchValue);
200
+ });
201
+ if (filteredOptions.length) {
202
+ // to avoid more than one dividers consecutively comes as one by one
203
+ let needDividerCount = 0;
204
+ const orderedOptions = filteredOptions.filter(item => {
205
+ if (item.needDivider && needDividerCount === 0) {
206
+ needDividerCount++;
207
+ return true;
208
+ } else if (!item.needDivider) {
209
+ needDividerCount = 0;
210
+ return true;
211
+ }
212
+ });
213
+ // remove divider if it placed in first or last index
214
+ filteredOptions = [];
215
+ filteredOptions = orderedOptions.filter((item, i) => {
216
+ if (i == 0 || i == orderedOptions.length - 1) {
217
+ if (!item.needDivider) {
218
+ return true;
219
+ }
220
+ } else {
221
+ return true;
222
+ }
223
+ });
224
+ result = filteredOptions;
225
+ }
226
+ }
227
+ return result;
228
+ }
229
+
230
+ getOptionsArray() {
231
+ const { searchValue } = this.state;
232
+ const { isGroupDropDown, groupOptionsKey } = this.props;
233
+
234
+ const options = searchValue.length
235
+ ? this.handleFilterSuggestions(searchValue)
236
+ : this.props.options;
237
+ let optionsArr = [];
238
+ if (isGroupDropDown) {
239
+ for (let i = 0; i < options.length; i++) {
240
+ const groupOptions = options[i][groupOptionsKey];
241
+ Array.prototype.push.apply(optionsArr, groupOptions);
242
+ }
243
+ } else {
244
+ optionsArr = options.filter(item => !item.needDivider);
245
+ }
246
+ return optionsArr;
247
+ }
248
+
249
+ handleKeyDown(e) {
250
+ const { keyCode } = e;
251
+ const { selectedIndex, searchValue } = this.state;
252
+ const optionsArr = this.getOptionsArray();
253
+ const totalIndex = optionsArr.length;
254
+ const {
255
+ togglePopup,
256
+ onClick,
257
+ boxPosition,
258
+ isPopupReady,
259
+ isNextOptions,
260
+ getNextOptions,
261
+ value,
262
+ keyName,
263
+ idName,
264
+ preventPopupClose,
265
+ isSearch
266
+ } = this.props;
267
+ if (
268
+ isPopupReady &&
269
+ (keyCode === 38 || keyCode === 40) &&
270
+ e.preventDefault
271
+ ) {
272
+ e.preventDefault(); //prevent body scroll
273
+ }
274
+ if (isPopupReady) {
275
+ switch (keyCode) {
276
+ case 40:
277
+ if (selectedIndex === totalIndex - 1) {
278
+ this.setState({ selectedIndex: 0 });
279
+ } else {
280
+ if (selectedIndex === totalIndex - 3) {
281
+ isNextOptions &&
282
+ getNextOptions &&
283
+ getNextOptions(e, { searchValue });
284
+ }
285
+ this.setState({
286
+ selectedIndex: selectedIndex + 1
287
+ });
288
+ }
289
+ break;
290
+ case 38:
291
+ if (selectedIndex === 0) {
292
+ this.setState({ selectedIndex: totalIndex - 1 });
293
+ } else {
294
+ this.setState({
295
+ selectedIndex: selectedIndex - 1
296
+ });
297
+ }
298
+ break;
299
+ case 13:
300
+ const selectedId = optionsArr[selectedIndex][idName] || '';
301
+ onClick && onClick(selectedId, optionsArr[selectedIndex]);
302
+ if (!preventPopupClose) {
303
+ togglePopup(e, boxPosition);
304
+ } else if (isSearch) {
305
+ this.searchInput.focus({ preventScroll: true });
306
+ } else {
307
+ this.hiddenInput.focus({ preventScroll: true });
308
+ }
309
+ break;
310
+ }
311
+ } else {
312
+ if (keyCode === 13 || keyCode === 40) {
313
+ togglePopup(e, boxPosition);
314
+ }
315
+ }
316
+ }
317
+
318
+ getSelectedIndex(optionsArr) {
319
+ const { selectedId, idName } = this.props;
320
+ if (selectedId) {
321
+ for (let i = 0; i < optionsArr.length; i++) {
322
+ const indexId = optionsArr[i][idName];
323
+ if (selectedId === indexId) {
324
+ this.setState({
325
+ selectedIndex: i
326
+ });
327
+ break;
328
+ }
329
+ }
330
+ } else {
331
+ this.setState({
332
+ selectedIndex: -1
333
+ });
334
+ }
335
+ }
336
+
337
+ onSearchAPI() {
338
+ const { searchValue } = this.state;
339
+ const { needSearchFetching, onSearch } = this.props;
340
+ if (needSearchFetching && onSearch) {
341
+ onSearch(searchValue);
342
+ }
343
+ }
344
+
345
+ handleChange(value, e) {
346
+ const filteredOptions = this.handleFilterSuggestions(value);
347
+ this.setState(
348
+ {
349
+ searchValue: value,
350
+ selectedIndex: -1,
351
+ options: filteredOptions
352
+ },
353
+ () => {
354
+ this.onSearchAPI();
355
+ }
356
+ );
357
+ }
358
+
359
+ onSearchClear() {
360
+ const filteredOptions = this.handleFilterSuggestions('');
361
+ this.setState(
362
+ {
363
+ searchValue: '',
364
+ options: filteredOptions
365
+ },
366
+ () => {
367
+ this.onSearchAPI();
368
+ }
369
+ );
370
+ }
371
+
372
+ handleMouseEnter(id, value, index, e) {
373
+ this.setState({
374
+ selectedIndex: index
375
+ });
376
+ }
377
+
378
+ handleScroll(e) {
379
+ const { isNextOptions, getNextOptions } = this.props;
380
+ const { searchValue } = this.state;
381
+ if (
382
+ e.target.scrollTop + e.target.offsetHeight >
383
+ e.target.scrollHeight - 1
384
+ ) {
385
+ isNextOptions && getNextOptions && getNextOptions(e, { searchValue });
386
+ }
387
+ }
388
+
389
+ render() {
390
+ const { options, selectedIndex } = this.state;
391
+ const {
392
+ value,
393
+ removeClose,
394
+ boxSize,
395
+ keyName,
396
+ idName,
397
+ title,
398
+ isSearch,
399
+ isArrow,
400
+ placeHolderText,
401
+ className,
402
+ right,
403
+ left,
404
+ top,
405
+ bottom,
406
+ isPopupOpen: isOpen,
407
+ isPopupActive,
408
+ needExternalPopupState,
409
+ isPopupReady,
410
+ position,
411
+ getTargetRef,
412
+ getContainerRef,
413
+ dataId,
414
+ searchBoxSize,
415
+ searchEmptyHint,
416
+ searchErrorText,
417
+ activeStyle,
418
+ showOnHover,
419
+ isDisabled,
420
+ showIconOnHover,
421
+ isReadOnly,
422
+ hoverStyle,
423
+ isEditable,
424
+ iconName,
425
+ iconSize,
426
+ needTick,
427
+ dataTitle,
428
+ isDataLoaded,
429
+ children,
430
+ needResponsive,
431
+ arrowIconPosition,
432
+ isGroupDropDown,
433
+ groupOptionsKey,
434
+ groupNameKey,
435
+ isToggleStateNeeded,
436
+ selectedId,
437
+ isPadding,
438
+ isNeedEffect,
439
+ hoverType,
440
+ palette,
441
+ getFooter,
442
+ customProps
443
+ } = this.props;
444
+ let {
445
+ ToggleDropDownProps = {},
446
+ DropBoxProps = {},
447
+ TextBoxIconProps = {},
448
+ ListItemWithIconProps = {},
449
+ ListItemProps = {}
450
+ } = customProps;
451
+ const isPopupOpen = needExternalPopupState
452
+ ? isPopupActive && isOpen
453
+ : isOpen;
454
+ const Component = isToggleStateNeeded ? children.type : null,
455
+ componentProps = isToggleStateNeeded ? children.props : null;
456
+ const { searchValue } = this.state;
457
+
458
+ const commonClass = `${className ? className : ''} ${
459
+ isPopupReady ? (activeStyle ? activeStyle : '') : ''
460
+ } ${
461
+ isDisabled
462
+ ? CssProvider('isDisable')
463
+ : isReadOnly || !isEditable
464
+ ? style.cursorDefault
465
+ : !showOnHover
466
+ ? `${style.cursor} ${hoverStyle ? hoverStyle : ''}`
467
+ : `${hoverStyle ? hoverStyle : ''} ${style.cursorDefault}`
468
+ }`;
469
+ let listIndex = -1;
470
+ const ariaTitleId = this.getAriaId();
471
+ const allyOptionsArr = this.getOptionsArray();
472
+
473
+ return (
474
+ <div
475
+ className={style.wrapper}
476
+ onMouseEnter={
477
+ showOnHover && !isDisabled && !isReadOnly && isEditable
478
+ ? this.showTogglePopup
479
+ : undefined
480
+ }
481
+ onMouseLeave={
482
+ showOnHover && !isDisabled && !isReadOnly && isEditable
483
+ ? this.hideTogglePopup
484
+ : undefined
485
+ }
486
+ {...ToggleDropDownProps}
487
+ >
488
+ <Container
489
+ alignBox='row'
490
+ onClick={
491
+ !showOnHover &&
492
+ !isDisabled &&
493
+ !isReadOnly &&
494
+ isEditable &&
495
+ this.handleTogglePopup
496
+ }
497
+ eleRef={getTargetRef}
498
+ align='vertical'
499
+ isCover={false}
500
+ dataId={dataId}
501
+ >
502
+ <div className={style.hiddenInput}>
503
+ <input
504
+ type='text'
505
+ ref={this.inputRef}
506
+ onKeyDown={this.handleKeyDown}
507
+ tabIndex='-1'
508
+ className={style.hiddenInputElement}
509
+ />
510
+ </div>
511
+ {children ? (
512
+ isToggleStateNeeded ? (
513
+ <Component {...componentProps} isActive={isPopupOpen} />
514
+ ) : (
515
+ children
516
+ )
517
+ ) : (
518
+ <RippleEffect
519
+ hoverType={hoverType}
520
+ isActive={isPopupOpen}
521
+ isNeedEffect={isEditable && isNeedEffect}
522
+ >
523
+ <Container
524
+ className={`${btnStyle.buttonReset} ${commonClass} ${
525
+ !isPopupOpen && showIconOnHover ? style.hoverIcon : ''
526
+ }`}
527
+ isCover={false}
528
+ alignBox='row'
529
+ align='vertical'
530
+ tagName='button'
531
+ aria-labelledby={ariaTitleId}
532
+ aria-haspopup={true}
533
+ aria-expanded={isPopupOpen ? true : false}
534
+ >
535
+ {iconName ? (
536
+ <Box className={value ? style.iconBox : ''}>
537
+ <Icon name={iconName} size={iconSize} />
538
+ </Box>
539
+ ) : null}
540
+ {value && (
541
+ <React.Fragment>
542
+ <Box
543
+ id={ariaTitleId}
544
+ aria-hidden={true}
545
+ className={`${style.value} toggleDropText`}
546
+ shrink
547
+ tagName='span'
548
+ data-title={dataTitle}
549
+ >
550
+ {value}
551
+ </Box>
552
+ {isEditable ? (
553
+ <Icon
554
+ aria-hidden={true}
555
+ size='6'
556
+ name='ZD-down'
557
+ iconClass={`${'toggleDropIcon'} ${style.arrow} ${
558
+ style[`${arrowIconPosition}_arrow`]
559
+ }`}
560
+ dataId='statusdownarrow'
561
+ />
562
+ ) : null}
563
+ </React.Fragment>
564
+ )}
565
+ </Container>
566
+ </RippleEffect>
567
+ )}
568
+ </Container>
569
+
570
+ {isPopupOpen ? (
571
+ <DropBox
572
+ boxPosition={position}
573
+ isActive={isPopupReady}
574
+ onClick={removeClose}
575
+ size={boxSize}
576
+ right={right}
577
+ left={left}
578
+ top={top}
579
+ bottom={bottom}
580
+ isArrow={isArrow}
581
+ isAnimate
582
+ getRef={getContainerRef}
583
+ customClass={{
584
+ customDropBoxWrap: style.dropBoxContainer
585
+ }}
586
+ needResponsive={needResponsive}
587
+ isPadding={isPadding}
588
+ tabindex='0'
589
+ a11y={{
590
+ role: !isSearch ? 'menu' : undefined,
591
+ ariaLabelledby: !isSearch ? ariaTitleId : undefined
592
+ }}
593
+ palette={palette}
594
+ {...DropBoxProps}
595
+ >
596
+ <Fragment>
597
+ {isSearch ? (
598
+ <div className={style.search}>
599
+ <TextBoxIcon
600
+ placeHolder={placeHolderText}
601
+ onChange={this.handleChange}
602
+ value={searchValue}
603
+ onClear={this.onSearchClear}
604
+ size={searchBoxSize}
605
+ inputRef={this.searchInputRef}
606
+ onKeyDown={this.handleKeyDown}
607
+ a11y={{
608
+ role: 'combobox',
609
+ ariaOwns: ariaTitleId,
610
+ ariaActivedescendant:
611
+ allyOptionsArr[selectedIndex] &&
612
+ allyOptionsArr[selectedIndex][keyName],
613
+ ariaAutocomplete: 'list',
614
+ ariaHaspopup: true,
615
+ ariaExpanded: true
616
+ }}
617
+ {...TextBoxIconProps}
618
+ />
619
+ </div>
620
+ ) : null}
621
+ {title && options.length != 0 && (
622
+ <div className={style.title}>
623
+ <DropDownHeading
624
+ text={title}
625
+ htmlId={ariaTitleId}
626
+ palette={palette}
627
+ a11y={{
628
+ role: 'heading'
629
+ }}
630
+ customClass={style.dropdown}
631
+ />
632
+ </div>
633
+ )}
634
+ <Box
635
+ id={ariaTitleId}
636
+ scroll='vertical'
637
+ dataId={`${dataId}_list`}
638
+ className={style.maxHgt}
639
+ eleRef={this.scrollContentRef}
640
+ onScroll={this.handleScroll}
641
+ role={isSearch ? 'listbox' : undefined}
642
+ aria-labelledby={isSearch ? ariaTitleId : undefined}
643
+ >
644
+ {isDataLoaded ? (
645
+ options && options.length != 0 ? (
646
+ isGroupDropDown ? (
647
+ <Fragment>
648
+ {options.map(group => {
649
+ const groupName = group[groupNameKey];
650
+ const groupOptions = group[groupOptionsKey];
651
+ const { needDivider } = group;
652
+ return (
653
+ <Fragment key={`index${groupName}`}>
654
+ {needDivider && (
655
+ <div className={style.seperatedLine} />
656
+ )}
657
+ {groupName && (
658
+ <div className={style.groupName}>
659
+ <DropDownHeading
660
+ text={groupName}
661
+ palette={palette}
662
+ a11y={{
663
+ role: 'heading'
664
+ }}
665
+ />
666
+ </div>
667
+ )}
668
+ {groupOptions &&
669
+ groupOptions.map(item => {
670
+ const {
671
+ iconName,
672
+ iconSize,
673
+ iconClass,
674
+ title,
675
+ disableTitle = '',
676
+ isDisabled = false
677
+ } = item;
678
+ listIndex += 1;
679
+ return iconName ? (
680
+ <ListItemWithIcon
681
+ key={listIndex}
682
+ dataId={item[keyName]}
683
+ value={item[keyName]}
684
+ id={item[idName]}
685
+ active={selectedId === item[idName]}
686
+ onClick={this.onSelect.bind(this, item)}
687
+ index={listIndex}
688
+ highlight={selectedIndex === listIndex}
689
+ disableTitle={disableTitle}
690
+ isDisabled={isDisabled}
691
+ iconName={iconName}
692
+ iconClass={iconClass}
693
+ iconSize={iconSize}
694
+ needTick={needTick}
695
+ needBorder={false}
696
+ onMouseEnter={this.handleMouseEnter}
697
+ getRef={this.itemRef}
698
+ title={title ? title : item[keyName]}
699
+ palette={palette}
700
+ a11y={{
701
+ role: isSearch ? 'option' : 'menuitem',
702
+ ariaSelected:
703
+ selectedId === item[idName]
704
+ }}
705
+ {...ListItemWithIconProps}
706
+ />
707
+ ) : (
708
+ <ListItem
709
+ key={listIndex}
710
+ dataId={item[keyName]}
711
+ value={item[keyName]}
712
+ id={item[idName]}
713
+ active={selectedId === item[idName]}
714
+ onClick={this.onSelect.bind(this, item)}
715
+ isDisabled={isDisabled}
716
+ disableTitle={disableTitle}
717
+ index={listIndex}
718
+ highlight={selectedIndex === listIndex}
719
+ needTick={needTick}
720
+ needBorder={false}
721
+ onMouseEnter={this.handleMouseEnter}
722
+ getRef={this.itemRef}
723
+ title={title ? title : item[keyName]}
724
+ palette={palette}
725
+ a11y={{
726
+ role: isSearch ? 'option' : 'menuitem',
727
+ ariaSelected:
728
+ selectedId === item[idName]
729
+ }}
730
+ {...ListItemProps}
731
+ />
732
+ );
733
+ })}
734
+ </Fragment>
735
+ );
736
+ })}
737
+ </Fragment>
738
+ ) : (
739
+ <Fragment>
740
+ {options.map((item, i) => {
741
+ const {
742
+ iconName,
743
+ iconSize,
744
+ iconClass,
745
+ title,
746
+ needDivider,
747
+ isDisabled = false,
748
+ disableTitle = ''
749
+ } = item;
750
+ if (!needDivider) {
751
+ listIndex += 1;
752
+ }
753
+ return (
754
+ <Fragment key={i}>
755
+ {needDivider ? (
756
+ <div className={style.seperatedLine} />
757
+ ) : iconName ? (
758
+ <ListItemWithIcon
759
+ dataId={item[keyName]}
760
+ value={item[keyName]}
761
+ id={item[idName]}
762
+ active={selectedId === item[idName]}
763
+ onClick={this.onSelect.bind(this, item)}
764
+ index={listIndex}
765
+ disableTitle={disableTitle}
766
+ isDisabled={isDisabled}
767
+ highlight={selectedIndex === listIndex}
768
+ iconName={iconName}
769
+ iconClass={iconClass}
770
+ iconSize={iconSize}
771
+ needTick={needTick}
772
+ needBorder={false}
773
+ onMouseEnter={this.handleMouseEnter}
774
+ getRef={this.itemRef}
775
+ title={title ? title : item[keyName]}
776
+ key={listIndex}
777
+ palette={palette}
778
+ a11y={{
779
+ role: isSearch ? 'option' : 'menuitem',
780
+ ariaSelected: selectedId === item[idName]
781
+ }}
782
+ {...ListItemWithIconProps}
783
+ />
784
+ ) : (
785
+ <ListItem
786
+ key={listIndex}
787
+ dataId={item[keyName]}
788
+ value={item[keyName]}
789
+ id={item[idName]}
790
+ disableTitle={disableTitle}
791
+ isDisabled={isDisabled}
792
+ active={selectedId === item[idName]}
793
+ onClick={this.onSelect.bind(this, item)}
794
+ index={listIndex}
795
+ highlight={selectedIndex === listIndex}
796
+ needTick={needTick}
797
+ needBorder={false}
798
+ onMouseEnter={this.handleMouseEnter}
799
+ getRef={this.itemRef}
800
+ title={title ? title : item[keyName]}
801
+ palette={palette}
802
+ a11y={{
803
+ role: isSearch ? 'option' : 'menuitem',
804
+ ariaSelected: selectedId === item[idName]
805
+ }}
806
+ {...ListItemProps}
807
+ />
808
+ )}
809
+ </Fragment>
810
+ );
811
+ })}
812
+ </Fragment>
813
+ )
814
+ ) : (
815
+ <CommonEmptyState
816
+ className={style.svgWrapper}
817
+ title={searchErrorText || 'oops !'}
818
+ description={searchEmptyHint}
819
+ size='small'
820
+ getEmptyState={this.emptySearchSVG}
821
+ />
822
+ )
823
+ ) : (
824
+ <div className={style.loader}>
825
+ <Loader />
826
+ </div>
827
+ )}
828
+ </Box>
829
+ {getFooter ? <div>{getFooter()}</div> : null}
830
+ </Fragment>
831
+ </DropBox>
832
+ ) : null}
833
+ </div>
834
+ );
835
+ }
836
+ }
837
+ ToggleDropDown.defaultProps = {
838
+ keyName: 'value',
839
+ idName: 'id',
840
+ isArrow: true,
841
+ searchBoxSize: 'small',
842
+ isDisabled: false,
843
+ showIconOnHover: false,
844
+ showOnHover: false,
845
+ isReadOnly: false,
846
+ isEditable: true,
847
+ isDataLoaded: true,
848
+ needTick: true,
849
+ needResponsive: true,
850
+ arrowIconPosition: 'default',
851
+ groupOptionsKey: 'items',
852
+ groupNameKey: 'name',
853
+ isPadding: true,
854
+ isToggleStateNeeded: false,
855
+ isNeedEffect: true,
856
+ hoverType: 'default',
857
+ needExternalPopupState: false,
858
+ customProps: {},
859
+ preventPopupClose: false
860
+ };
861
+
862
+ ToggleDropDown.propTypes = {
863
+ activeStyle: PropTypes.string,
864
+ arrowIconPosition: PropTypes.oneOf(['default', 'overlay']),
865
+ bottom: PropTypes.number,
866
+ boxPosition: PropTypes.oneOf([
867
+ 'bottomRight',
868
+ 'bottomLeft',
869
+ 'bottomCenter',
870
+ 'topRight',
871
+ 'topLeft',
872
+ 'topCenter',
873
+ 'rightTop',
874
+ 'rightBottom',
875
+ 'rightCenter',
876
+ 'leftTop',
877
+ 'leftBottom',
878
+ 'leftCenter'
879
+ ]),
880
+ boxSize: PropTypes.oneOf(['xsmall', 'small', 'medium', 'mlarge', 'large']),
881
+ children: PropTypes.node,
882
+ className: PropTypes.string,
883
+ dataId: PropTypes.string,
884
+ dataTitle: PropTypes.string,
885
+ getContainerRef: PropTypes.func,
886
+ getNextOptions: PropTypes.func,
887
+ getTargetRef: PropTypes.func,
888
+ groupNameKey: PropTypes.string,
889
+ groupOptionsKey: PropTypes.string,
890
+ hoverStyle: PropTypes.string,
891
+ hoverType: PropTypes.oneOf(['default', 'border', 'bg']),
892
+ iconName: PropTypes.string,
893
+ iconSize: PropTypes.string,
894
+ idName: PropTypes.string,
895
+ isArrow: PropTypes.bool,
896
+ isDataLoaded: PropTypes.bool,
897
+ isDisabled: PropTypes.bool,
898
+ isEditable: PropTypes.bool,
899
+ isGroupDropDown: PropTypes.bool,
900
+ isNeedEffect: PropTypes.bool,
901
+ isNextOptions: PropTypes.bool,
902
+ isPadding: PropTypes.bool,
903
+ isPopupActive: PropTypes.bool,
904
+ isPopupOpen: PropTypes.bool,
905
+ isPopupReady: PropTypes.bool,
906
+ isReadOnly: PropTypes.bool,
907
+ isSearch: PropTypes.bool,
908
+ isToggleStateNeeded: PropTypes.bool,
909
+ keyName: PropTypes.string,
910
+ left: PropTypes.number,
911
+ needExternalPopupState: PropTypes.bool,
912
+ needResponsive: PropTypes.bool,
913
+ needSearchFetching: PropTypes.bool,
914
+ needTick: PropTypes.bool,
915
+ onClick: PropTypes.func,
916
+ onSearch: PropTypes.func,
917
+ options: PropTypes.array.isRequired,
918
+ palette: PropTypes.oneOf(['dark']),
919
+ placeHolderText: PropTypes.string,
920
+ position: PropTypes.string,
921
+ removeClose: PropTypes.func,
922
+ right: PropTypes.number,
923
+ searchBoxSize: PropTypes.oneOf(['small', 'medium', 'xmedium']),
924
+ searchEmptyHint: PropTypes.string,
925
+ searchErrorText: PropTypes.string,
926
+ selectedId: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
927
+ showIconOnHover: PropTypes.bool,
928
+ showOnHover: PropTypes.bool,
929
+ title: PropTypes.string,
930
+ togglePopup: PropTypes.func,
931
+ value: PropTypes.node,
932
+ onDropDownOpen: PropTypes.func,
933
+ onDropDownClose: PropTypes.func,
934
+ getFooter: PropTypes.func,
935
+ customProps: PropTypes.shape({
936
+ ToggleDropDownProps: PropTypes.object,
937
+ DropBoxProps: PropTypes.object,
938
+ TextBoxIconProps: PropTypes.object,
939
+ ListItemWithIconProps: PropTypes.object,
940
+ ListItemProps: PropTypes.object
941
+ }),
942
+ preventPopupClose: PropTypes.bool
943
+ };
944
+
945
+ if (__DOCS__) {
946
+ ToggleDropDown.docs = {
947
+ componentGroup: 'Molecule'
948
+ };
949
+ }
950
+ export default Popup(ToggleDropDown);