@procore/core-react 11.25.1 → 11.25.2

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 (204) hide show
  1. package/babel.config.js +1 -1
  2. package/dist/Avatar/Avatar.styles.js +5 -5
  3. package/dist/AvatarStack/AvatarStack.styles.js +7 -7
  4. package/dist/Badge/Badge.styles.js +2 -2
  5. package/dist/Banner/Banner.styles.js +10 -10
  6. package/dist/Box/Box.styles.js +1 -1
  7. package/dist/Breadcrumbs/Breadcrumbs.styles.js +4 -4
  8. package/dist/Button/Button.styles.js +5 -5
  9. package/dist/Calendar/Calendar.styles.js +8 -8
  10. package/dist/Card/Card.styles.js +1 -1
  11. package/dist/Checkbox/Checkbox.styles.js +6 -6
  12. package/dist/ContactItem/ContactItem.styles.js +5 -5
  13. package/dist/Content/Content.styles.js +2 -2
  14. package/dist/DateInput/DateInput.styles.js +6 -6
  15. package/dist/DetailPage/DetailPage.styles.js +7 -7
  16. package/dist/Dropdown/Dropdown.styles.js +3 -3
  17. package/dist/DropdownFlyout/DropdownFlyout.styles.js +4 -4
  18. package/dist/Dropzone/Dropzone.js +1 -1
  19. package/dist/Dropzone/Dropzone.styles.js +9 -9
  20. package/dist/EmptyState/EmptyState.styles.js +6 -6
  21. package/dist/Field/Field.styles.js +3 -3
  22. package/dist/FileList/FileList.styles.js +4 -4
  23. package/dist/FileSelect/FileExplorer/FileExplorer.styles.js +9 -9
  24. package/dist/FileSelect/FileExplorer/FileExplorerSidebar.styles.js +3 -3
  25. package/dist/FileSelect/FileSelect.styles.js +2 -2
  26. package/dist/FileSelect/FileSelectDropzone/FileSelectDropzone.styles.js +3 -3
  27. package/dist/FileSelect/FileTokenList/FileTokenList.styles.js +2 -2
  28. package/dist/FileSelect/GridSource/GridSource.styles.js +6 -6
  29. package/dist/FileSelect/LocalSource/LocalSource.styles.js +4 -4
  30. package/dist/FileSelect/SourceItem/SourceItem.styles.js +3 -3
  31. package/dist/FileSelect/ThumbnailList/ThumbnailList.styles.js +6 -6
  32. package/dist/FileSelect/TreeSource/TreeSource.styles.js +1 -1
  33. package/dist/FileToken/FileToken.styles.js +4 -4
  34. package/dist/FilterToken/FilterToken.styles.js +2 -2
  35. package/dist/FlexList/FlexList.styles.js +1 -1
  36. package/dist/Form/Form.styles.js +16 -16
  37. package/dist/Grid/Grid.styles.js +2 -2
  38. package/dist/GroupSelect/GroupSelect.styles.js +1 -1
  39. package/dist/Input/Input.styles.js +1 -1
  40. package/dist/Link/Link.styles.js +1 -1
  41. package/dist/ListPage/ListPage.styles.js +8 -8
  42. package/dist/Loader/Loader.styles.js +2 -2
  43. package/dist/MenuImperative/MenuImperative.styles.js +10 -10
  44. package/dist/Modal/Modal.styles.js +13 -13
  45. package/dist/MultiSelect/MultiSelect.styles.js +6 -6
  46. package/dist/NextMenu/NextMenu.styles.js +3 -3
  47. package/dist/Notation/Notation.js +1 -1
  48. package/dist/NumberInput/NumberInput.styles.js +7 -7
  49. package/dist/Overlay/OverlayArrow.styles.js +1 -1
  50. package/dist/PageLayout/PageLayout.styles.js +13 -13
  51. package/dist/Pagination/Pagination.styles.js +5 -5
  52. package/dist/Panel/Panel.styles.js +11 -11
  53. package/dist/Pill/Pill.styles.js +2 -2
  54. package/dist/PillSelect/PillSelect.styles.js +4 -4
  55. package/dist/Popover/Popover.styles.js +2 -2
  56. package/dist/Portal/Portal.styles.js +1 -1
  57. package/dist/ProgressBar/ProgressBar.styles.js +2 -2
  58. package/dist/RadioButton/RadioButton.styles.js +3 -3
  59. package/dist/Required/Required.styles.js +3 -3
  60. package/dist/Search/Search.styles.js +5 -5
  61. package/dist/Section/Section.styles.js +6 -6
  62. package/dist/SegmentedController/SegmentedController.styles.js +4 -4
  63. package/dist/Select/Select.styles.js +7 -7
  64. package/dist/Semantic/Semantic.d.ts +6 -1
  65. package/dist/Semantic/Semantic.js +7 -1
  66. package/dist/Semantic/Semantic.js.map +1 -1
  67. package/dist/Semantic/Semantic.styles.d.ts +14 -4
  68. package/dist/Semantic/Semantic.styles.js +20 -10
  69. package/dist/Semantic/Semantic.styles.js.map +1 -1
  70. package/dist/Semantic/index.d.ts +1 -1
  71. package/dist/Semantic/index.js +1 -1
  72. package/dist/Semantic/index.js.map +1 -1
  73. package/dist/Sidebar/Sidebar.styles.js +7 -7
  74. package/dist/Slider/Slider.styles.js +5 -5
  75. package/dist/Spinner/Spinner.styles.js +7 -7
  76. package/dist/SuperSelect/SuperSelect.presets.styles.js +1 -1
  77. package/dist/SuperSelect/SuperSelect.styles.js +37 -37
  78. package/dist/Switch/Switch.styles.js +4 -4
  79. package/dist/Table/Table.styles.js +28 -28
  80. package/dist/TableShelf/TableShelf.styles.js +5 -5
  81. package/dist/Tabs/Tabs.styles.js +8 -8
  82. package/dist/Tearsheet/Tearsheet.styles.js +5 -5
  83. package/dist/TextArea/TextArea.styles.js +1 -1
  84. package/dist/TextEditorOutput/TextEditorOutput.styles.js +1 -1
  85. package/dist/Thumbnail/Thumbnail.styles.js +17 -17
  86. package/dist/ThumbnailGrid/ThumbnailGrid.styles.js +7 -7
  87. package/dist/TieredSelect/TieredSelect.styles.js +9 -9
  88. package/dist/Tile/Tile.styles.js +8 -8
  89. package/dist/Title/Title.styles.js +7 -7
  90. package/dist/Toast/Toast.styles.js +3 -3
  91. package/dist/ToggleButton/ToggleButton.styles.js +1 -1
  92. package/dist/Token/Token.styles.js +3 -3
  93. package/dist/ToolHeader/ToolHeader.styles.js +6 -6
  94. package/dist/Tooltip/Tooltip.styles.js +2 -2
  95. package/dist/Tree/Tree.styles.js +9 -9
  96. package/dist/Typeahead/Typeahead.styles.js +3 -3
  97. package/dist/Typography/Typography.styles.js +1 -1
  98. package/dist/Typography/Typography.table.story.js +2 -2
  99. package/dist/_typedoc/Avatar/Avatar.types.json +20 -20
  100. package/dist/_typedoc/AvatarStack/AvatarStack.types.json +23 -23
  101. package/dist/_typedoc/Badge/Badge.types.json +6 -6
  102. package/dist/_typedoc/Banner/Banner.types.json +13 -13
  103. package/dist/_typedoc/Box/Box.types.json +68 -68
  104. package/dist/_typedoc/Breadcrumbs/Breadcrumbs.types.json +10 -10
  105. package/dist/_typedoc/Button/Button.types.json +11 -11
  106. package/dist/_typedoc/Calendar/Calendar.types.json +80 -80
  107. package/dist/_typedoc/Card/Card.types.json +6 -6
  108. package/dist/_typedoc/Checkbox/Checkbox.types.json +9 -9
  109. package/dist/_typedoc/ContactItem/ContactItem.types.json +9 -9
  110. package/dist/_typedoc/DateInput/DateInput.types.json +35 -35
  111. package/dist/_typedoc/DateSelect/DateSelect.types.json +13 -13
  112. package/dist/_typedoc/DetailPage/DetailPage.types.json +4 -4
  113. package/dist/_typedoc/Dropdown/Dropdown.types.json +37 -37
  114. package/dist/_typedoc/DropdownFlyout/DropdownFlyout.types.json +29 -29
  115. package/dist/_typedoc/Dropzone/Dropzone.types.json +41 -41
  116. package/dist/_typedoc/EmptyState/EmptyState.types.json +14 -14
  117. package/dist/_typedoc/FileList/FileList.types.json +9 -9
  118. package/dist/_typedoc/FileSelect/FileSelect.types.json +26 -26
  119. package/dist/_typedoc/FileSelect/GridSource/GridSource.types.json +20 -20
  120. package/dist/_typedoc/FileSelect/LocalSource/LocalSource.types.json +14 -14
  121. package/dist/_typedoc/FileSelect/TreeSource/TreeSource.types.json +9 -9
  122. package/dist/_typedoc/Flex/Flex.types.json +27 -27
  123. package/dist/_typedoc/FlexList/FlexList.types.json +30 -30
  124. package/dist/_typedoc/Form/Form.types.json +726 -726
  125. package/dist/_typedoc/Grid/Grid.types.json +8 -8
  126. package/dist/_typedoc/GroupSelect/GroupSelect.types.json +52 -52
  127. package/dist/_typedoc/Input/Input.types.json +2 -2
  128. package/dist/_typedoc/Link/Link.types.json +4 -4
  129. package/dist/_typedoc/ListPage/ListPage.types.json +13 -13
  130. package/dist/_typedoc/Menu/Menu.types.json +62 -62
  131. package/dist/_typedoc/MenuImperative/MenuImperative.types.json +74 -74
  132. package/dist/_typedoc/Modal/Modal.types.json +41 -41
  133. package/dist/_typedoc/MultiSelect/MultiSelect.types.json +31 -31
  134. package/dist/_typedoc/Notation/Notation.types.json +4 -4
  135. package/dist/_typedoc/NumberInput/NumberInput.types.json +38 -38
  136. package/dist/_typedoc/OverlayTrigger/OverlayTrigger.types.json +31 -31
  137. package/dist/_typedoc/PageLayout/PageLayout.types.json +22 -22
  138. package/dist/_typedoc/Pagination/Pagination.types.json +7 -7
  139. package/dist/_typedoc/Panel/Panel.types.json +27 -27
  140. package/dist/_typedoc/Pill/Pill.types.json +2 -2
  141. package/dist/_typedoc/PillSelect/PillSelect.types.json +47 -47
  142. package/dist/_typedoc/Popover/Popover.types.json +14 -14
  143. package/dist/_typedoc/ProgressBar/ProgressBar.types.json +6 -6
  144. package/dist/_typedoc/RadioButton/RadioButton.types.json +6 -6
  145. package/dist/_typedoc/Required/Required.types.json +5 -5
  146. package/dist/_typedoc/Search/Search.types.json +18 -18
  147. package/dist/_typedoc/Section/Section.types.json +14 -14
  148. package/dist/_typedoc/SegmentedController/SegmentedController.types.json +20 -20
  149. package/dist/_typedoc/Select/Select.types.json +57 -57
  150. package/dist/_typedoc/Slider/Slider.types.json +6 -6
  151. package/dist/_typedoc/Spinner/Spinner.types.json +9 -9
  152. package/dist/_typedoc/Switch/Switch.types.json +3 -3
  153. package/dist/_typedoc/Table/Table.types.json +97 -97
  154. package/dist/_typedoc/Tabs/Tabs.types.json +17 -17
  155. package/dist/_typedoc/Tearsheet/Tearsheet.types.json +16 -16
  156. package/dist/_typedoc/TextArea/TextArea.types.json +3 -3
  157. package/dist/_typedoc/TextEditor/TextEditor.types.json +9 -9
  158. package/dist/_typedoc/TextEditorOutput/TextEditorOutput.types.json +4 -4
  159. package/dist/_typedoc/Thumbnail/Thumbnail.types.json +19 -19
  160. package/dist/_typedoc/TieredDropdown/TieredDropdown.types.json +42 -42
  161. package/dist/_typedoc/TieredSelect/TieredSelect.types.json +28 -28
  162. package/dist/_typedoc/Tile/Tile.types.json +30 -30
  163. package/dist/_typedoc/Toast/Toast.types.json +4 -4
  164. package/dist/_typedoc/ToggleButton/ToggleButton.types.json +3 -3
  165. package/dist/_typedoc/Token/Token.types.json +4 -4
  166. package/dist/_typedoc/ToolHeader/ToolHeader.types.json +10 -10
  167. package/dist/_typedoc/Tooltip/Tooltip.types.json +13 -13
  168. package/dist/_typedoc/Tree/Tree.types.json +86 -86
  169. package/dist/_typedoc/Typeahead/Typeahead.types.json +2 -2
  170. package/dist/_typedoc/Typography/Typography.types.json +8 -8
  171. package/dist/_typedoc/_utils/types.json +3 -3
  172. package/dist/index.d.ts +1 -0
  173. package/dist/index.js +1 -0
  174. package/dist/index.js.map +1 -1
  175. package/package.json +2 -2
  176. package/tsconfig.prod.json +7 -1
  177. package/dist/FileSelect/SourceItem/SourceItem.test.js +0 -53
  178. package/dist/MultiSelect/MultiSelect.test.js +0 -250
  179. package/dist/OverlayTrigger/OverlayTrigger.test.js +0 -483
  180. package/dist/SuperSelect/SuperSelect.utils.test.js +0 -717
  181. package/dist/SuperSelect/useSuperSelect.test.js +0 -1284
  182. package/dist/_hooks/OverflowObserver/OverflowObserver.test.js +0 -110
  183. package/dist/_hooks/__tests__/Anchor.test.js +0 -109
  184. package/dist/_hooks/__tests__/BoundingRect.test.js +0 -85
  185. package/dist/_hooks/__tests__/Buffer.test.js +0 -76
  186. package/dist/_hooks/__tests__/DateTime.test.js +0 -136
  187. package/dist/_hooks/__tests__/DelayedCallback.test.js +0 -119
  188. package/dist/_hooks/__tests__/DelayedToggle.test.js +0 -50
  189. package/dist/_hooks/__tests__/Deprecation.test.js +0 -58
  190. package/dist/_hooks/__tests__/Event.test.js +0 -46
  191. package/dist/_hooks/__tests__/EventListener.test.js +0 -124
  192. package/dist/_hooks/__tests__/Hotkey.test.js +0 -18
  193. package/dist/_hooks/__tests__/InjectedScript.test.js +0 -80
  194. package/dist/_hooks/__tests__/ListNavigation.test.js +0 -101
  195. package/dist/_hooks/__tests__/TextEntry.test.js +0 -92
  196. package/dist/_hooks/__tests__/Timer.test.js +0 -60
  197. package/dist/_hooks/__tests__/Trigger.test.js +0 -52
  198. package/dist/_hooks/__tests__/Visibility.test.js +0 -86
  199. package/dist/_hooks/__tests__/ZIndex.test.js +0 -76
  200. package/dist/_utils/__tests__/CalendarHelpers.test.js +0 -64
  201. package/dist/_utils/__tests__/filename.test.js +0 -27
  202. package/dist/_utils/__tests__/getAnchorPosition.test.js +0 -250
  203. package/dist/_utils/__tests__/mergeRefs.test.js +0 -58
  204. package/dist/_utils/__tests__/slotify.test.js +0 -152
@@ -1,717 +0,0 @@
1
- import { isOptgroupSymbol } from './SuperSelect.constants'
2
- import {
3
- collectGroupsInOrderOfOccurrence,
4
- createOptgroup,
5
- getBatchOptionFormatter,
6
- getGroupNameIsValid,
7
- getIsAllOptionsUngrouped,
8
- getOptionsSortingAlgorithm,
9
- removeEmptyOptGroups,
10
- reorder,
11
- sortOptgroups,
12
- } from './SuperSelect.utils'
13
-
14
- describe('reorder', () => {
15
- test('should move from index 4 to 1, from group 2 to 1', () => {
16
- expect(
17
- reorder(
18
- [
19
- {
20
- id: 1,
21
- label: 'Group 1',
22
- group: 'Group 1',
23
- [isOptgroupSymbol]: true,
24
- },
25
- { id: 2, label: 'item 2', group: 'Group 1' },
26
- { id: 3, label: 'item 3', group: 'Group 1' },
27
- {
28
- id: 4,
29
- label: 'Group 2',
30
- group: 'Group 2',
31
- [isOptgroupSymbol]: true,
32
- },
33
- { id: 5, label: 'item 5', group: 'Group 2' },
34
- ],
35
- 4,
36
- 1
37
- )
38
- ).toEqual({
39
- nextOptions: [
40
- { id: 1, label: 'Group 1', group: 'Group 1', [isOptgroupSymbol]: true },
41
- { id: 5, label: 'item 5', group: 'Group 2' },
42
- { id: 2, label: 'item 2', group: 'Group 1' },
43
- { id: 3, label: 'item 3', group: 'Group 1' },
44
- { id: 4, label: 'Group 2', group: 'Group 2', [isOptgroupSymbol]: true },
45
- ],
46
- prevGroup: 4,
47
- nextGroup: 1,
48
- })
49
- })
50
-
51
- test('should move from index 2 to 1, from group 1 to 1', () => {
52
- expect(
53
- reorder(
54
- [
55
- {
56
- id: 1,
57
- label: 'Group 1',
58
- group: 'Group 1',
59
- [isOptgroupSymbol]: true,
60
- },
61
- { id: 2, label: 'item 2', group: 'Group 1' },
62
- { id: 3, label: 'item 3', group: 'Group 1' },
63
- {
64
- id: 4,
65
- label: 'Group 2',
66
- group: 'Group 2',
67
- [isOptgroupSymbol]: true,
68
- },
69
- { id: 5, label: 'item 5', group: 'Group 2' },
70
- ],
71
- 2,
72
- 1
73
- )
74
- ).toEqual({
75
- nextOptions: [
76
- { id: 1, label: 'Group 1', group: 'Group 1', [isOptgroupSymbol]: true },
77
- { id: 3, label: 'item 3', group: 'Group 1' },
78
- { id: 2, label: 'item 2', group: 'Group 1' },
79
- { id: 4, label: 'Group 2', group: 'Group 2', [isOptgroupSymbol]: true },
80
- { id: 5, label: 'item 5', group: 'Group 2' },
81
- ],
82
- prevGroup: 1,
83
- nextGroup: 1,
84
- })
85
- })
86
-
87
- test('should move from index 2 to 0, from group 1 to no group', () => {
88
- expect(
89
- reorder(
90
- [
91
- {
92
- id: 1,
93
- label: 'Group 1',
94
- group: 'Group 1',
95
- [isOptgroupSymbol]: true,
96
- },
97
- { id: 2, label: 'item 2', group: 'Group 1' },
98
- { id: 3, label: 'item 3', group: 'Group 1' },
99
- {
100
- id: 4,
101
- label: 'Group 2',
102
- group: 'Group 2',
103
- [isOptgroupSymbol]: true,
104
- },
105
- { id: 5, label: 'item 5', group: 'Group 2' },
106
- ],
107
- 2,
108
- 0
109
- )
110
- ).toEqual({
111
- nextOptions: [
112
- { id: 3, label: 'item 3', group: 'Group 1' },
113
- { id: 1, label: 'Group 1', group: 'Group 1', [isOptgroupSymbol]: true },
114
- { id: 2, label: 'item 2', group: 'Group 1' },
115
- { id: 4, label: 'Group 2', group: 'Group 2', [isOptgroupSymbol]: true },
116
- { id: 5, label: 'item 5', group: 'Group 2' },
117
- ],
118
- prevGroup: 1,
119
- nextGroup: 'RESERVED_UNGROUPED_OPTGROUP_NAME',
120
- })
121
- })
122
-
123
- test('should move from index 2 to 3, from group 1 to 2', () => {
124
- expect(
125
- reorder(
126
- [
127
- {
128
- id: 1,
129
- label: 'Group 1',
130
- group: 'Group 1',
131
- [isOptgroupSymbol]: true,
132
- },
133
- { id: 2, label: 'item 2', group: 'Group 1' },
134
- { id: 3, label: 'item 3', group: 'Group 1' },
135
- {
136
- id: 4,
137
- label: 'Group 2',
138
- group: 'Group 2',
139
- [isOptgroupSymbol]: true,
140
- },
141
- { id: 5, label: 'item 5', group: 'Group 2' },
142
- ],
143
- 2,
144
- 3
145
- )
146
- ).toEqual({
147
- nextOptions: [
148
- { id: 1, label: 'Group 1', group: 'Group 1', [isOptgroupSymbol]: true },
149
- { id: 2, label: 'item 2', group: 'Group 1' },
150
- { id: 4, label: 'Group 2', group: 'Group 2', [isOptgroupSymbol]: true },
151
- { id: 3, label: 'item 3', group: 'Group 1' },
152
- { id: 5, label: 'item 5', group: 'Group 2' },
153
- ],
154
- prevGroup: 1,
155
- nextGroup: 4,
156
- })
157
- })
158
-
159
- test('should move from index 0 to 2, from no group to group 1', () => {
160
- expect(
161
- reorder(
162
- [
163
- { id: 2, label: 'item 2', group: 'RESERVED_UNGROUPED_OPTGROUP_NAME' },
164
- {
165
- id: 1,
166
- label: 'Group 1',
167
- group: 'Group 1',
168
- [isOptgroupSymbol]: true,
169
- },
170
- { id: 3, label: 'item 3', group: 'Group 1' },
171
- {
172
- id: 4,
173
- label: 'Group 2',
174
- group: 'Group 2',
175
- [isOptgroupSymbol]: true,
176
- },
177
- { id: 5, label: 'item 5', group: 'Group 2' },
178
- ],
179
- 0,
180
- 2
181
- )
182
- ).toEqual({
183
- nextOptions: [
184
- { id: 1, label: 'Group 1', group: 'Group 1', [isOptgroupSymbol]: true },
185
- { id: 3, label: 'item 3', group: 'Group 1' },
186
- { id: 2, label: 'item 2', group: 'RESERVED_UNGROUPED_OPTGROUP_NAME' },
187
- { id: 4, label: 'Group 2', group: 'Group 2', [isOptgroupSymbol]: true },
188
- { id: 5, label: 'item 5', group: 'Group 2' },
189
- ],
190
- prevGroup: 'RESERVED_UNGROUPED_OPTGROUP_NAME',
191
- nextGroup: 1,
192
- })
193
- })
194
-
195
- test('should move from index 1 to 5, from group 1 to 3', () => {
196
- expect(
197
- reorder(
198
- [
199
- {
200
- id: 1,
201
- label: 'Group 1',
202
- group: 'Group 1',
203
- [isOptgroupSymbol]: true,
204
- },
205
- { id: 2, label: 'item 2', group: 'Group 1' },
206
- { id: 3, label: 'item 3', group: 'Group 1' },
207
- {
208
- id: 4,
209
- label: 'Group 2',
210
- group: 'Group 2',
211
- [isOptgroupSymbol]: true,
212
- },
213
- {
214
- id: 6,
215
- label: 'Group 3',
216
- group: 'Group 3',
217
- [isOptgroupSymbol]: true,
218
- },
219
- { id: 5, label: 'item 5', group: 'Group 3' },
220
- ],
221
- 1,
222
- 5
223
- )
224
- ).toEqual({
225
- nextOptions: [
226
- { id: 1, label: 'Group 1', group: 'Group 1', [isOptgroupSymbol]: true },
227
- { id: 3, label: 'item 3', group: 'Group 1' },
228
- { id: 4, label: 'Group 2', group: 'Group 2', [isOptgroupSymbol]: true },
229
- { id: 6, label: 'Group 3', group: 'Group 3', [isOptgroupSymbol]: true },
230
- { id: 5, label: 'item 5', group: 'Group 3' },
231
- { id: 2, label: 'item 2', group: 'Group 1' },
232
- ],
233
- prevGroup: 1,
234
- nextGroup: 6,
235
- })
236
- })
237
-
238
- test('should move from index 0 to 1, from no group to no group', () => {
239
- expect(
240
- reorder(
241
- [
242
- { id: 2, label: 'item 2', group: 'RESERVED_UNGROUPED_OPTGROUP_NAME' },
243
- { id: 6, label: 'item 6', group: 'RESERVED_UNGROUPED_OPTGROUP_NAME' },
244
- {
245
- id: 1,
246
- label: 'Group 1',
247
- group: 'Group 1',
248
- [isOptgroupSymbol]: true,
249
- },
250
- { id: 3, label: 'item 3', group: 'Group 1' },
251
- {
252
- id: 4,
253
- label: 'Group 2',
254
- group: 'Group 2',
255
- [isOptgroupSymbol]: true,
256
- },
257
- { id: 5, label: 'item 5', group: 'Group 2' },
258
- ],
259
- 0,
260
- 1
261
- )
262
- ).toEqual({
263
- nextOptions: [
264
- { id: 6, label: 'item 6', group: 'RESERVED_UNGROUPED_OPTGROUP_NAME' },
265
- { id: 2, label: 'item 2', group: 'RESERVED_UNGROUPED_OPTGROUP_NAME' },
266
- { id: 1, label: 'Group 1', group: 'Group 1', [isOptgroupSymbol]: true },
267
- { id: 3, label: 'item 3', group: 'Group 1' },
268
- { id: 4, label: 'Group 2', group: 'Group 2', [isOptgroupSymbol]: true },
269
- { id: 5, label: 'item 5', group: 'Group 2' },
270
- ],
271
- prevGroup: 'RESERVED_UNGROUPED_OPTGROUP_NAME',
272
- nextGroup: 'RESERVED_UNGROUPED_OPTGROUP_NAME',
273
- })
274
- })
275
- })
276
-
277
- describe('getGroupNameIsValid', () => {
278
- test('should group name be valid', () => {
279
- expect(getGroupNameIsValid('Group 1')).toEqual(true)
280
-
281
- expect(getGroupNameIsValid(' ')).toEqual(true)
282
-
283
- expect(getGroupNameIsValid(null)).toEqual(false)
284
-
285
- expect(getGroupNameIsValid('')).toEqual(false)
286
-
287
- expect(getGroupNameIsValid(undefined)).toEqual(false)
288
-
289
- expect(getGroupNameIsValid('null')).toEqual(true)
290
- })
291
- })
292
-
293
- describe('collectGroupsInOrderOfOccurrence', () => {
294
- test('should get groups in the order they come and options', () => {
295
- expect(
296
- collectGroupsInOrderOfOccurrence(
297
- [
298
- { id: 1, label: 'item 1', customGroup: 'Group 2' },
299
- { id: 2, label: 'item 2', customGroup: 'Group 1' },
300
- { id: 3, label: 'item 3', customGroup: 'Group 1' },
301
- { id: 4, label: 'item 4', customGroup: 'Group 1' },
302
- { id: 5, label: 'item 5', customGroup: 'Group 3' },
303
- { id: 6, label: 'item 6', customGroup: 'Group 3' },
304
- { id: 7, label: 'item 7', customGroup: 'Group 2' },
305
- { id: 8, label: 'item 8', customGroup: null },
306
- { id: 9, label: 'item 9', customGroup: 'Group 1' },
307
- { id: 10, label: 'item 1', customGroup: 'Group 4' },
308
- { id: 11, label: 'item 2', customGroup: 'Group 4' },
309
- { id: 12, label: 'item 3', customGroup: 'Group 2' },
310
- { id: 13, label: 'item 4', customGroup: 'Group 4' },
311
- { id: 14, label: 'item 5', customGroup: undefined },
312
- { id: 15, label: 'item 6' },
313
- { id: 16, label: 'item 7', customGroup: 'Group 3' },
314
- { id: 17, label: 'item 8', customGroup: 'Group 1' },
315
- { id: 18, label: 'item 9', customGroup: 'Group 4' },
316
- ],
317
- (option) => {
318
- return option.customGroup
319
- }
320
- )
321
- ).toEqual({
322
- groups: [
323
- 'RESERVED_UNGROUPED_OPTGROUP_NAME',
324
- 'Group 2',
325
- 'Group 1',
326
- 'Group 3',
327
- 'Group 4',
328
- ],
329
- groupedOptions: {
330
- RESERVED_UNGROUPED_OPTGROUP_NAME: [
331
- { id: 8, label: 'item 8', customGroup: null },
332
- { id: 14, label: 'item 5', customGroup: undefined },
333
- { id: 15, label: 'item 6' },
334
- ],
335
- 'Group 2': [
336
- { id: 1, label: 'item 1', customGroup: 'Group 2' },
337
- { id: 7, label: 'item 7', customGroup: 'Group 2' },
338
- { id: 12, label: 'item 3', customGroup: 'Group 2' },
339
- ],
340
- 'Group 1': [
341
- { id: 2, label: 'item 2', customGroup: 'Group 1' },
342
- { id: 3, label: 'item 3', customGroup: 'Group 1' },
343
- { id: 4, label: 'item 4', customGroup: 'Group 1' },
344
- { id: 9, label: 'item 9', customGroup: 'Group 1' },
345
- { id: 17, label: 'item 8', customGroup: 'Group 1' },
346
- ],
347
- 'Group 3': [
348
- { id: 5, label: 'item 5', customGroup: 'Group 3' },
349
- { id: 6, label: 'item 6', customGroup: 'Group 3' },
350
- { id: 16, label: 'item 7', customGroup: 'Group 3' },
351
- ],
352
- 'Group 4': [
353
- { id: 10, label: 'item 1', customGroup: 'Group 4' },
354
- { id: 11, label: 'item 2', customGroup: 'Group 4' },
355
- { id: 13, label: 'item 4', customGroup: 'Group 4' },
356
- { id: 18, label: 'item 9', customGroup: 'Group 4' },
357
- ],
358
- },
359
- })
360
- })
361
- })
362
-
363
- describe('getOptgroups', () => {
364
- test('should return sorted array with "RESERVED_UNGROUPED_OPTGROUP_NAME"', () => {
365
- const groupsArray = [
366
- 'ksacowenv',
367
- 'RESERVED_UNGROUPED_OPTGROUP_NAME',
368
- 'asweoknvewovn',
369
- ]
370
- expect(groupsArray.sort(sortOptgroups)).toEqual([
371
- 'RESERVED_UNGROUPED_OPTGROUP_NAME',
372
- 'asweoknvewovn',
373
- 'ksacowenv',
374
- ])
375
- })
376
-
377
- test('should return sorted array of group names', () => {
378
- const groupsArray = ['ksacowenv', 'baiisfbiw', 'csewryhds', 'asweoknvewovn']
379
- expect(groupsArray.sort(sortOptgroups)).toEqual([
380
- 'asweoknvewovn',
381
- 'baiisfbiw',
382
- 'csewryhds',
383
- 'ksacowenv',
384
- ])
385
- })
386
- test('should return -1 if groupA is ungrouped', () => {
387
- expect(
388
- sortOptgroups('RESERVED_UNGROUPED_OPTGROUP_NAME', 'usaihfjbsiewjb')
389
- ).toEqual(-1)
390
- })
391
- test('should return -1 if groupA higher than groupB', () => {
392
- expect(sortOptgroups('akdidnwdoke', 'hjbhvjhv')).toEqual(-1)
393
- })
394
- test('should return 1 if groupB higher than groupA', () => {
395
- expect(sortOptgroups('dhredveve', 'asoireovein')).toEqual(1)
396
- })
397
- test('should return -1 if groupA higher than groupB', () => {
398
- expect(sortOptgroups('aaaaaaaaab', 'aaaaaaaaac')).toEqual(-1)
399
- })
400
- })
401
-
402
- describe('getOptgroup', () => {
403
- test('should return options without group options', () => {
404
- expect(
405
- createOptgroup('RESERVED_UNGROUPED_OPTGROUP_NAME', [
406
- { id: 2, label: 'item 2' },
407
- { id: 3, label: 'item 3' },
408
- ])
409
- ).toEqual([
410
- { id: 2, label: 'item 2' },
411
- { id: 3, label: 'item 3' },
412
- ])
413
- })
414
-
415
- test('should return options with group options', () => {
416
- expect(
417
- createOptgroup('GroupA', [
418
- { id: 2, label: 'item 2' },
419
- { id: 3, label: 'item 3' },
420
- ])
421
- ).toEqual([
422
- {
423
- [isOptgroupSymbol]: true,
424
- label: 'GroupA',
425
- id: 'GroupA',
426
- },
427
- { id: 2, label: 'item 2' },
428
- { id: 3, label: 'item 3' },
429
- ])
430
- })
431
- })
432
-
433
- describe('getIsAllOptionsUngrouped', () => {
434
- test('should return false if not all options are ungrouped and true if they are', () => {
435
- expect(
436
- getIsAllOptionsUngrouped(['RESERVED_UNGROUPED_OPTGROUP_NAME'])
437
- ).toEqual(true)
438
-
439
- expect(
440
- getIsAllOptionsUngrouped(['RESERVED_UNGROUPED_OPTGROUP_NAME', 'Group 1'])
441
- ).toEqual(false)
442
-
443
- expect(getIsAllOptionsUngrouped([''])).toEqual(false)
444
- })
445
- })
446
-
447
- describe('getOptionsSortingAlgorithm', () => {
448
- const getOptionIsBatch = (option) => {
449
- return Array.isArray(option.value)
450
- }
451
-
452
- const getOptionLabel = (option) => {
453
- return option.label
454
- }
455
-
456
- test('should return sorted array first batch than options', () => {
457
- const options = [
458
- { label: 'Item 2', value: 2, id: '3' },
459
-
460
- {
461
- id: '1',
462
- value: [2, 6, 11],
463
- label: 'Group B',
464
- },
465
- {
466
- id: '2',
467
- value: [1, 5, 10],
468
- label: 'Group A',
469
- },
470
- { label: 'Item 3', value: 3, id: '4' },
471
- ]
472
-
473
- const sortOptions = getOptionsSortingAlgorithm({
474
- getOptionIsBatch,
475
- getOptionLabel,
476
- })
477
-
478
- expect(options.sort(sortOptions)).toEqual([
479
- {
480
- id: '2',
481
- value: [1, 5, 10],
482
- label: 'Group A',
483
- },
484
- {
485
- id: '1',
486
- value: [2, 6, 11],
487
- label: 'Group B',
488
- },
489
- { label: 'Item 2', value: 2, id: '3' },
490
- { label: 'Item 3', value: 3, id: '4' },
491
- ])
492
- })
493
-
494
- test('should return sorted array options only', () => {
495
- const optionsArray = [
496
- { label: 'Item 2', value: 2, id: '2' },
497
- { label: 'Item 4', value: 4, id: '4' },
498
-
499
- { label: 'Item 3', value: 3, id: '3' },
500
- { label: 'Item 1', value: 1, id: '1' },
501
- ]
502
-
503
- const sortOptions = getOptionsSortingAlgorithm({
504
- getOptionIsBatch,
505
- getOptionLabel,
506
- })
507
-
508
- expect(optionsArray.sort(sortOptions)).toEqual([
509
- { label: 'Item 1', value: 1, id: '1' },
510
- { label: 'Item 2', value: 2, id: '2' },
511
- { label: 'Item 3', value: 3, id: '3' },
512
- { label: 'Item 4', value: 4, id: '4' },
513
- ])
514
- })
515
- })
516
-
517
- describe('getBatchOptionFormatter', () => {
518
- const getOptionIsBatch = (option) => {
519
- return Array.isArray(option.value)
520
- }
521
- const getOptionValue = (option) => {
522
- return option.value
523
- }
524
-
525
- const value = [2, 4, 6, 9]
526
-
527
- test('should return disabled true', () => {
528
- expect(
529
- getBatchOptionFormatter({
530
- value,
531
- multiple: true,
532
- getOptionIsBatch,
533
- getOptionValue,
534
- })({
535
- id: '1',
536
- group: 'Groups 1',
537
- value: [2, 4, 6],
538
- label: 'Group B',
539
- disabled: false,
540
- })
541
- ).toEqual({
542
- id: '1',
543
- group: 'Groups 1',
544
- value: [2, 4, 6],
545
- label: 'Group B',
546
- disabled: true,
547
- })
548
- })
549
-
550
- test('should return disabled false', () => {
551
- expect(
552
- getBatchOptionFormatter({
553
- value,
554
- multiple: true,
555
- getOptionIsBatch,
556
- getOptionValue,
557
- })({
558
- id: '1',
559
- group: 'Groups 1',
560
- value: [2, 3, 6],
561
- label: 'Group B',
562
- disabled: false,
563
- })
564
- ).toEqual({
565
- id: '1',
566
- group: 'Groups 1',
567
- value: [2, 3, 6],
568
- label: 'Group B',
569
- disabled: false,
570
- })
571
- })
572
-
573
- test('should return option', () => {
574
- expect(
575
- getBatchOptionFormatter({
576
- value,
577
- multiple: false,
578
- getOptionIsBatch,
579
- getOptionValue,
580
- })({
581
- group: 'Group 1',
582
- label: 'Item 0',
583
- value: 0,
584
- disabled: true,
585
- id: '0',
586
- })
587
- ).toEqual({
588
- group: 'Group 1',
589
- label: 'Item 0',
590
- value: 0,
591
- disabled: true,
592
- id: '0',
593
- })
594
- })
595
- })
596
-
597
- describe('removeEmptyOptGroups', () => {
598
- test('should delete empty groups', () => {
599
- expect(
600
- removeEmptyOptGroups([
601
- {
602
- label: 'value 1',
603
- value: 1,
604
- },
605
- {
606
- value: [9, 8, 10],
607
- label: 'Batch Ungrouped',
608
- disabled: false,
609
- },
610
- {
611
- id: 'Group 0',
612
- label: 'Group 0',
613
- [isOptgroupSymbol]: true,
614
- },
615
- {
616
- id: 'Group 1',
617
- label: 'Group 1',
618
- [isOptgroupSymbol]: true,
619
- },
620
- { label: 'value 0', value: 0, group: 'Group 1' },
621
- {
622
- label: 'Batch Group 1.1',
623
- value: [4, 6],
624
- group: 'Group 1',
625
- disabled: false,
626
- },
627
- {
628
- label: 'Batch Group 1.2',
629
- value: [1, 7],
630
- group: 'Group 1',
631
- disabled: false,
632
- },
633
- {
634
- id: 'Batch Group',
635
- label: 'Batch Group',
636
- [isOptgroupSymbol]: true,
637
- },
638
- {
639
- value: [2, 3, 5],
640
- label: 'Batch Group',
641
- group: 'Batch Group',
642
- disabled: true,
643
- },
644
- {
645
- id: 'Group 2',
646
- label: 'Group 2',
647
- [isOptgroupSymbol]: true,
648
- },
649
- { label: 'value 2', value: 2, group: 'Group 2' },
650
- { label: 'value 3', value: 3, group: 'Group 2' },
651
- {
652
- label: 'Batch Group 2',
653
- value: [11, 12, 13],
654
- group: 'Group 2',
655
- disabled: false,
656
- },
657
- {
658
- id: 'Group B',
659
- label: 'Group B',
660
- [isOptgroupSymbol]: true,
661
- },
662
- ])
663
- ).toEqual([
664
- {
665
- label: 'value 1',
666
- value: 1,
667
- },
668
- {
669
- value: [9, 8, 10],
670
- label: 'Batch Ungrouped',
671
- disabled: false,
672
- },
673
- {
674
- id: 'Group 1',
675
- label: 'Group 1',
676
- [isOptgroupSymbol]: true,
677
- },
678
- { label: 'value 0', value: 0, group: 'Group 1' },
679
- {
680
- label: 'Batch Group 1.1',
681
- value: [4, 6],
682
- group: 'Group 1',
683
- disabled: false,
684
- },
685
- {
686
- label: 'Batch Group 1.2',
687
- value: [1, 7],
688
- group: 'Group 1',
689
- disabled: false,
690
- },
691
- {
692
- id: 'Batch Group',
693
- label: 'Batch Group',
694
- [isOptgroupSymbol]: true,
695
- },
696
- {
697
- value: [2, 3, 5],
698
- label: 'Batch Group',
699
- group: 'Batch Group',
700
- disabled: true,
701
- },
702
- {
703
- id: 'Group 2',
704
- label: 'Group 2',
705
- [isOptgroupSymbol]: true,
706
- },
707
- { label: 'value 2', value: 2, group: 'Group 2' },
708
- { label: 'value 3', value: 3, group: 'Group 2' },
709
- {
710
- label: 'Batch Group 2',
711
- value: [11, 12, 13],
712
- group: 'Group 2',
713
- disabled: false,
714
- },
715
- ])
716
- })
717
- })