@orangelogic/orange-dam-content-browser-sdk 2.1.54 → 2.1.55

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 (281) hide show
  1. package/build/ApiService.d.ts +15 -0
  2. package/build/App.d.ts +62 -0
  3. package/build/AppContext.d.ts +18 -0
  4. package/build/GlobalConfigContext.d.ts +32 -0
  5. package/build/OrangeDAMContentBrowserSDK.min.css +2 -0
  6. package/build/OrangeDAMContentBrowserSDK.min.css.map +1 -0
  7. package/build/OrangeDAMContentBrowserSDK.min.js +11468 -0
  8. package/build/OrangeDAMContentBrowserSDK.min.js.map +1 -0
  9. package/build/asset-manifest.json +13 -0
  10. package/build/components/ArrayClamp/ArrayClamp.d.ts +10 -0
  11. package/build/components/ArrayClamp/ArrayClamp.styled.d.ts +1 -0
  12. package/build/components/ArrayClamp/index.d.ts +1 -0
  13. package/build/components/Browser/Browser.constants.d.ts +3 -0
  14. package/build/components/Browser/Browser.d.ts +21 -0
  15. package/build/components/Browser/Browser.styled.d.ts +2 -0
  16. package/build/components/Browser/BrowserItem.d.ts +13 -0
  17. package/build/components/Browser/LoadMoreButton.d.ts +9 -0
  18. package/build/components/ControlBar/ControlBar.constants.d.ts +10 -0
  19. package/build/components/ControlBar/ControlBar.d.ts +23 -0
  20. package/build/components/ControlBar/ControlBar.styled.d.ts +1 -0
  21. package/build/components/ControlBar/Facet/Facet.d.ts +14 -0
  22. package/build/components/ControlBar/Facet/index.d.ts +1 -0
  23. package/build/components/FormatDialog/CropPreviewer/CropPreviewer.d.ts +41 -0
  24. package/{src/components/FormatDialog/CropPreviewer/index.ts → build/components/FormatDialog/CropPreviewer/index.d.ts} +1 -1
  25. package/build/components/FormatDialog/CustomRendition/CustomRendition.constants.d.ts +5 -0
  26. package/build/components/FormatDialog/CustomRendition/CustomRendition.d.ts +56 -0
  27. package/build/components/FormatDialog/CustomRendition/CustomRendition.styled.d.ts +1 -0
  28. package/build/components/FormatDialog/CustomRendition/index.d.ts +1 -0
  29. package/build/components/FormatDialog/CustomRendition/transformations/Crop.d.ts +26 -0
  30. package/build/components/FormatDialog/CustomRendition/transformations/Extension.d.ts +11 -0
  31. package/build/components/FormatDialog/CustomRendition/transformations/Format.d.ts +10 -0
  32. package/build/components/FormatDialog/CustomRendition/transformations/Metadata.d.ts +7 -0
  33. package/build/components/FormatDialog/CustomRendition/transformations/Quality.d.ts +7 -0
  34. package/build/components/FormatDialog/CustomRendition/transformations/Resize.d.ts +18 -0
  35. package/build/components/FormatDialog/CustomRendition/transformations/Rotate.d.ts +8 -0
  36. package/{src/components/FormatDialog/CustomRendition/transformations/index.ts → build/components/FormatDialog/CustomRendition/transformations/index.d.ts} +3 -1
  37. package/build/components/FormatDialog/FormatDialog.d.ts +49 -0
  38. package/build/components/FormatDialog/FormatDialog.styled.d.ts +3 -0
  39. package/build/components/FormatDialog/Previewer/Previewer.d.ts +17 -0
  40. package/build/components/FormatDialog/Previewer/Previewer.styled.d.ts +1 -0
  41. package/build/components/FormatDialog/Previewer/index.d.ts +1 -0
  42. package/build/components/FormatDialog/ProxyMenu/ProxyMenu.d.ts +20 -0
  43. package/build/components/FormatDialog/ProxyMenu/ProxyMenu.styled.d.ts +2 -0
  44. package/build/components/FormatDialog/ProxyMenu/index.d.ts +1 -0
  45. package/build/components/FormatDialog/TrackingParameters/TrackingParameters.d.ts +13 -0
  46. package/build/components/FormatDialog/TrackingParameters/index.d.ts +1 -0
  47. package/build/components/FormatDialog/VersionHistory/VersionHistory.d.ts +6 -0
  48. package/build/components/FormatDialog/VersionHistory/VersionHistory.styled.d.ts +1 -0
  49. package/build/components/FormatDialog/VersionHistory/index.d.ts +1 -0
  50. package/build/components/FormatDialog/index.d.ts +1 -0
  51. package/build/components/Header/Header.d.ts +15 -0
  52. package/build/components/Header/Header.styled.d.ts +5 -0
  53. package/build/components/Loader/Loader.d.ts +7 -0
  54. package/build/components/Loader/index.d.ts +1 -0
  55. package/build/components/NoResult/NoResult.d.ts +7 -0
  56. package/build/components/NoResult/index.d.ts +1 -0
  57. package/build/components/Result/AssetCard/AssetCard.d.ts +15 -0
  58. package/build/components/Result/AssetCard/AssetCard.styled.d.ts +2 -0
  59. package/build/components/Result/AssetCard/AssetCardWrapper.d.ts +18 -0
  60. package/build/components/Result/AssetCard/AssetCardWrapper.styled.d.ts +1 -0
  61. package/build/components/Result/AssetCard/index.d.ts +1 -0
  62. package/build/components/Result/AssetPreview/AssetPreview.d.ts +11 -0
  63. package/build/components/Result/AssetPreview/AssetPreview.styled.d.ts +1 -0
  64. package/build/components/Result/AssetPreview/ImagePreview/ImagePreview.d.ts +11 -0
  65. package/build/components/Result/AssetPreview/ImagePreview/index.d.ts +1 -0
  66. package/build/components/Result/AssetPreview/OtherPreview/OtherPreview.d.ts +9 -0
  67. package/build/components/Result/AssetPreview/OtherPreview/OtherPreview.styled.d.ts +1 -0
  68. package/build/components/Result/AssetPreview/OtherPreview/index.d.ts +1 -0
  69. package/build/components/Result/AssetPreview/VideoPreview/VideoPreview.d.ts +11 -0
  70. package/build/components/Result/AssetPreview/VideoPreview/index.d.ts +1 -0
  71. package/build/components/Result/AssetPreview/index.d.ts +1 -0
  72. package/build/consts/asset.d.ts +14 -0
  73. package/build/consts/auth.d.ts +4 -0
  74. package/build/consts/data.d.ts +21 -0
  75. package/build/index.d.ts +225 -0
  76. package/build/index.html +1 -0
  77. package/build/page/Authenticate/Authenticate.d.ts +2 -0
  78. package/build/page/Authenticate/ConnectingBackground.d.ts +8 -0
  79. package/build/page/Authenticate/index.d.ts +2 -0
  80. package/build/page/Home/Home.d.ts +6 -0
  81. package/build/page/Home/Home.styled.d.ts +2 -0
  82. package/build/setupTests.d.ts +1 -0
  83. package/build/store/assets/assets.api.d.ts +66 -0
  84. package/build/store/assets/assets.service.d.ts +23 -0
  85. package/build/store/assets/assets.slice.d.ts +65 -0
  86. package/build/store/auth/auth.service.d.ts +10 -0
  87. package/build/store/auth/auth.slice.d.ts +76 -0
  88. package/build/store/index.d.ts +368 -0
  89. package/build/store/search/search.api.d.ts +39 -0
  90. package/build/store/search/search.slice.d.ts +12 -0
  91. package/build/store/user/user.api.d.ts +5 -0
  92. package/build/types/assets.d.ts +68 -0
  93. package/build/types/auth.d.ts +35 -0
  94. package/build/types/common.d.ts +11 -0
  95. package/build/types/download.d.ts +8 -0
  96. package/build/types/navigation.d.ts +3 -0
  97. package/build/types/search.d.ts +148 -0
  98. package/{src/types/storage.ts → build/types/storage.d.ts} +1 -1
  99. package/build/types/user.d.ts +7 -0
  100. package/build/utils/api.d.ts +27 -0
  101. package/build/utils/array.d.ts +13 -0
  102. package/build/utils/constants.d.ts +11 -0
  103. package/build/utils/function.d.ts +1 -0
  104. package/build/utils/getRequestUrl.d.ts +1 -0
  105. package/build/utils/hooks.d.ts +1 -0
  106. package/build/utils/icon.d.ts +3 -0
  107. package/build/utils/image.d.ts +24 -0
  108. package/build/utils/number.d.ts +4 -0
  109. package/build/utils/rotate.d.ts +4 -0
  110. package/build/utils/storage.d.ts +23 -0
  111. package/build/utils/string.d.ts +12 -0
  112. package/build/view/AssetsPicker.d.ts +6 -0
  113. package/package.json +49 -8
  114. package/.env +0 -1
  115. package/.eslintignore +0 -2
  116. package/.eslintrc.json +0 -82
  117. package/.releaserc +0 -17
  118. package/.travis.yml +0 -20
  119. package/CBSDKdemo.html +0 -315
  120. package/GitVersion.yml +0 -18
  121. package/azure-pipeline.yaml +0 -93
  122. package/clientlib.config.js +0 -36
  123. package/config/env.js +0 -105
  124. package/config/getHttpsConfig.js +0 -67
  125. package/config/jest/babelTransform.js +0 -30
  126. package/config/jest/cssTransform.js +0 -14
  127. package/config/jest/fileTransform.js +0 -41
  128. package/config/modules.js +0 -135
  129. package/config/paths.js +0 -79
  130. package/config/webpack/persistentCache/createEnvironmentHash.js +0 -10
  131. package/config/webpack.config.js +0 -762
  132. package/config/webpackDevServer.config.js +0 -128
  133. package/config-overrides.js +0 -8
  134. package/gab_extension/GAB.html +0 -85
  135. package/gab_extension/GoogleChrome/manifest.json +0 -28
  136. package/gab_extension/GoogleChrome/src/assets/icon48.png +0 -0
  137. package/gab_extension/GoogleChrome/src/background/index.js +0 -6
  138. package/gab_extension/GoogleChrome/src/scripts/index.js +0 -347
  139. package/gab_extension/MozillaFirefox/manifest.json +0 -20
  140. package/gab_extension/MozillaFirefox/src/assets/icon.png +0 -0
  141. package/gab_extension/MozillaFirefox/src/background/index.js +0 -5
  142. package/gab_extension/MozillaFirefox/src/scripts/index.js +0 -347
  143. package/gab_extension/README.md +0 -11
  144. package/gab_extension/Safari/Orange DAM Asset Browser Extension/Orange DAM Asset Browser Extension.xcodeproj/project.pbxproj +0 -927
  145. package/gab_extension/Safari/Orange DAM Asset Browser Extension/Orange DAM Asset Browser Extension.xcodeproj/project.xcworkspace/contents.xcworkspacedata +0 -7
  146. package/gab_extension/Safari/Orange DAM Asset Browser Extension/Orange DAM Asset Browser Extension.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -8
  147. package/gab_extension/Safari/Orange DAM Asset Browser Extension/Orange DAM Asset Browser Extension.xcodeproj/project.xcworkspace/xcuserdata/oldevmac01.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  148. package/gab_extension/Safari/Orange DAM Asset Browser Extension/Orange DAM Asset Browser Extension.xcodeproj/xcuserdata/oldevmac01.xcuserdatad/xcschemes/xcschememanagement.plist +0 -19
  149. package/gab_extension/Safari/Orange DAM Asset Browser Extension/Shared (App)/Assets.xcassets/AccentColor.colorset/Contents.json +0 -11
  150. package/gab_extension/Safari/Orange DAM Asset Browser Extension/Shared (App)/Assets.xcassets/AppIcon.appiconset/Contents.json +0 -63
  151. package/gab_extension/Safari/Orange DAM Asset Browser Extension/Shared (App)/Assets.xcassets/Contents.json +0 -6
  152. package/gab_extension/Safari/Orange DAM Asset Browser Extension/Shared (App)/Assets.xcassets/LargeIcon.imageset/Contents.json +0 -20
  153. package/gab_extension/Safari/Orange DAM Asset Browser Extension/Shared (App)/Base.lproj/Main.html +0 -23
  154. package/gab_extension/Safari/Orange DAM Asset Browser Extension/Shared (App)/Resources/Icon.png +0 -0
  155. package/gab_extension/Safari/Orange DAM Asset Browser Extension/Shared (App)/Resources/Script.js +0 -24
  156. package/gab_extension/Safari/Orange DAM Asset Browser Extension/Shared (App)/Resources/Style.css +0 -61
  157. package/gab_extension/Safari/Orange DAM Asset Browser Extension/Shared (App)/ViewController.swift +0 -81
  158. package/gab_extension/Safari/Orange DAM Asset Browser Extension/Shared (Extension)/SafariWebExtensionHandler.swift +0 -26
  159. package/gab_extension/Safari/Orange DAM Asset Browser Extension/iOS (App)/AppDelegate.swift +0 -24
  160. package/gab_extension/Safari/Orange DAM Asset Browser Extension/iOS (App)/Base.lproj/LaunchScreen.storyboard +0 -36
  161. package/gab_extension/Safari/Orange DAM Asset Browser Extension/iOS (App)/Base.lproj/Main.storyboard +0 -38
  162. package/gab_extension/Safari/Orange DAM Asset Browser Extension/iOS (App)/Info.plist +0 -27
  163. package/gab_extension/Safari/Orange DAM Asset Browser Extension/iOS (App)/SceneDelegate.swift +0 -18
  164. package/gab_extension/Safari/Orange DAM Asset Browser Extension/iOS (Extension)/Info.plist +0 -13
  165. package/gab_extension/Safari/Orange DAM Asset Browser Extension/macOS (App)/AppDelegate.swift +0 -21
  166. package/gab_extension/Safari/Orange DAM Asset Browser Extension/macOS (App)/Base.lproj/Main.storyboard +0 -125
  167. package/gab_extension/Safari/Orange DAM Asset Browser Extension/macOS (App)/Info.plist +0 -8
  168. package/gab_extension/Safari/Orange DAM Asset Browser Extension/macOS (App)/Orange DAM Asset Browser Extension.entitlements +0 -12
  169. package/gab_extension/Safari/Orange DAM Asset Browser Extension/macOS (Extension)/Info.plist +0 -13
  170. package/gab_extension/Safari/Orange DAM Asset Browser Extension/macOS (Extension)/Orange DAM Asset Browser Extension.entitlements +0 -10
  171. package/public/index.html +0 -92
  172. package/scripts/build.js +0 -218
  173. package/scripts/start.js +0 -154
  174. package/scripts/test.js +0 -53
  175. package/src/App.tsx +0 -98
  176. package/src/AppContext.ts +0 -18
  177. package/src/GlobalConfigContext.ts +0 -46
  178. package/src/components/ArrayClamp/ArrayClamp.styled.ts +0 -42
  179. package/src/components/ArrayClamp/ArrayClamp.tsx +0 -167
  180. package/src/components/ArrayClamp/index.ts +0 -1
  181. package/src/components/Browser/Browser.styled.ts +0 -82
  182. package/src/components/Browser/Browser.tsx +0 -284
  183. package/src/components/Browser/BrowserItem.tsx +0 -98
  184. package/src/components/ControlBar/ControlBar.constants.tsx +0 -66
  185. package/src/components/ControlBar/ControlBar.styled.ts +0 -82
  186. package/src/components/ControlBar/ControlBar.tsx +0 -528
  187. package/src/components/ControlBar/Facet/Facet.tsx +0 -113
  188. package/src/components/ControlBar/Facet/index.ts +0 -1
  189. package/src/components/FormatDialog/CropPreviewer/CropPreviewer.tsx +0 -224
  190. package/src/components/FormatDialog/CustomRendition/CustomRendition.constants.ts +0 -24
  191. package/src/components/FormatDialog/CustomRendition/CustomRendition.styled.ts +0 -57
  192. package/src/components/FormatDialog/CustomRendition/CustomRendition.tsx +0 -178
  193. package/src/components/FormatDialog/CustomRendition/index.ts +0 -1
  194. package/src/components/FormatDialog/CustomRendition/transformations/Crop.tsx +0 -249
  195. package/src/components/FormatDialog/CustomRendition/transformations/Extension.tsx +0 -54
  196. package/src/components/FormatDialog/CustomRendition/transformations/Format.tsx +0 -86
  197. package/src/components/FormatDialog/CustomRendition/transformations/Resize.tsx +0 -176
  198. package/src/components/FormatDialog/CustomRendition/transformations/Rotate.tsx +0 -101
  199. package/src/components/FormatDialog/FormatDialog.styled.ts +0 -137
  200. package/src/components/FormatDialog/FormatDialog.tsx +0 -1533
  201. package/src/components/FormatDialog/Previewer/Previewer.styled.ts +0 -31
  202. package/src/components/FormatDialog/Previewer/Previewer.tsx +0 -143
  203. package/src/components/FormatDialog/Previewer/index.ts +0 -1
  204. package/src/components/FormatDialog/ProxyMenu/ProxyMenu.styled.ts +0 -88
  205. package/src/components/FormatDialog/ProxyMenu/ProxyMenu.tsx +0 -74
  206. package/src/components/FormatDialog/ProxyMenu/index.ts +0 -1
  207. package/src/components/FormatDialog/TrackingParameters/TrackingParameters.tsx +0 -59
  208. package/src/components/FormatDialog/TrackingParameters/index.ts +0 -1
  209. package/src/components/FormatDialog/index.ts +0 -1
  210. package/src/components/Header/Header.styled.ts +0 -51
  211. package/src/components/Header/Header.tsx +0 -118
  212. package/src/components/Loader/Loader.tsx +0 -37
  213. package/src/components/Loader/index.ts +0 -1
  214. package/src/components/NoResult/NoResult.tsx +0 -37
  215. package/src/components/NoResult/index.tsx +0 -1
  216. package/src/components/Result/AssetCard/AssetCard.styled.ts +0 -120
  217. package/src/components/Result/AssetCard/AssetCard.tsx +0 -192
  218. package/src/components/Result/AssetCard/AssetCardWrapper.styled.ts +0 -35
  219. package/src/components/Result/AssetCard/AssetCardWrapper.tsx +0 -165
  220. package/src/components/Result/AssetCard/index.ts +0 -1
  221. package/src/components/Result/AssetPreview/AssetPreview.styled.ts +0 -108
  222. package/src/components/Result/AssetPreview/AssetPreview.tsx +0 -78
  223. package/src/components/Result/AssetPreview/ImagePreview/ImagePreview.tsx +0 -42
  224. package/src/components/Result/AssetPreview/ImagePreview/index.ts +0 -1
  225. package/src/components/Result/AssetPreview/OtherPreview/OtherPreview.styled.ts +0 -23
  226. package/src/components/Result/AssetPreview/OtherPreview/OtherPreview.tsx +0 -28
  227. package/src/components/Result/AssetPreview/OtherPreview/index.ts +0 -1
  228. package/src/components/Result/AssetPreview/VideoPreview/VideoPreview.tsx +0 -132
  229. package/src/components/Result/AssetPreview/VideoPreview/index.ts +0 -1
  230. package/src/components/Result/AssetPreview/index.ts +0 -1
  231. package/src/consts/asset.ts +0 -16
  232. package/src/consts/data.ts +0 -17
  233. package/src/index.tsx +0 -305
  234. package/src/page/Authenticate/Authenticate.tsx +0 -232
  235. package/src/page/Authenticate/ConnectingBackground.tsx +0 -44
  236. package/src/page/Authenticate/index.tsx +0 -94
  237. package/src/page/Home/Home.styled.ts +0 -46
  238. package/src/page/Home/Home.tsx +0 -941
  239. package/src/react-web-component.d.ts +0 -4617
  240. package/src/store/assets/assets.api.ts +0 -167
  241. package/src/store/assets/assets.service.ts +0 -223
  242. package/src/store/assets/assets.slice.ts +0 -104
  243. package/src/store/auth/auth.service.ts +0 -71
  244. package/src/store/auth/auth.slice.ts +0 -295
  245. package/src/store/index.ts +0 -27
  246. package/src/store/search/search.api.ts +0 -319
  247. package/src/store/search/search.slice.ts +0 -28
  248. package/src/store/user/user.api.ts +0 -29
  249. package/src/styles.css +0 -42
  250. package/src/types/assets.ts +0 -71
  251. package/src/types/auth.ts +0 -42
  252. package/src/types/common.ts +0 -11
  253. package/src/types/download.ts +0 -8
  254. package/src/types/navigation.ts +0 -3
  255. package/src/types/search.ts +0 -116
  256. package/src/types/user.ts +0 -6
  257. package/src/utils/api.ts +0 -186
  258. package/src/utils/array.ts +0 -25
  259. package/src/utils/constants.ts +0 -12
  260. package/src/utils/fetch.ts +0 -116
  261. package/src/utils/getRequestUrl.ts +0 -15
  262. package/src/utils/hooks.ts +0 -36
  263. package/src/utils/icon.ts +0 -22
  264. package/src/utils/image.ts +0 -157
  265. package/src/utils/number.ts +0 -11
  266. package/src/utils/rotate.ts +0 -23
  267. package/src/utils/storage.ts +0 -184
  268. package/src/utils/string.ts +0 -24
  269. package/src/view/AssetsPicker.tsx +0 -24
  270. package/src/web-component.d.ts +0 -8151
  271. package/tsconfig.eslint.json +0 -10
  272. package/tsconfig.json +0 -37
  273. /package/{src/components/Browser/index.ts → build/components/Browser/index.d.ts} +0 -0
  274. /package/{src/components/ControlBar/index.ts → build/components/ControlBar/index.d.ts} +0 -0
  275. /package/{src/components/Header/index.ts → build/components/Header/index.d.ts} +0 -0
  276. /package/{public → build}/favicon.ico +0 -0
  277. /package/{public → build}/logo192.png +0 -0
  278. /package/{public → build}/logo512.png +0 -0
  279. /package/{public → build}/manifest.json +0 -0
  280. /package/{src/page/Home/index.ts → build/page/Home/index.d.ts} +0 -0
  281. /package/{public → build}/robots.txt +0 -0
@@ -1,528 +0,0 @@
1
- import { FC, useCallback, useEffect, useMemo, useRef, useState } from 'react';
2
-
3
- import { SortOrder } from '@/types/assets';
4
- import { Filter, GridView, SortDirection } from '@/types/search';
5
- import {
6
- CxChangeEvent, CxDropdown, CxInput, CxRemoveEvent, CxSelectEvent, CxSelectionChangeEvent,
7
- } from '@/web-component';
8
-
9
- import { sortDirections, views } from './ControlBar.constants';
10
- import { Container } from './ControlBar.styled';
11
- import Facet from './Facet';
12
-
13
- const TYPE = {
14
- type: 'type',
15
- visibilityClass: 'visibilityClass',
16
- status: 'status',
17
- extension: 'extension',
18
- };
19
-
20
- type Props = {
21
- allowSorting: boolean;
22
- currentCount: number;
23
- loading: boolean;
24
- extensions: string[];
25
- facets?: Record<string, Record<string, number>>;
26
- isMobile: boolean;
27
- isSeeThrough: boolean;
28
- mediaTypes: string[];
29
- searchValue: string;
30
- sortDirection?: 'ascending' | 'descending';
31
- sortOrder: string;
32
- sortOrders?: Record<string, SortOrder[]>;
33
- statuses: string[];
34
- totalCount: number;
35
- view: GridView;
36
- visibilityClasses: string[];
37
- onSearchChange: (value: string) => void;
38
- onSettingChange: (
39
- setting: string,
40
- value: GridView | SortDirection | Filter | string | boolean | string[]
41
- ) => void;
42
- onChangeNewlySelectedFacet: (value: string) => void;
43
- };
44
-
45
- const ControlBar: FC<Props> = ({
46
- allowSorting,
47
- currentCount,
48
- loading,
49
- extensions,
50
- facets,
51
- isMobile,
52
- isSeeThrough,
53
- mediaTypes,
54
- searchValue: searchText,
55
- sortDirection,
56
- sortOrder,
57
- sortOrders,
58
- statuses,
59
- totalCount,
60
- view,
61
- visibilityClasses,
62
- onSearchChange,
63
- onSettingChange,
64
- onChangeNewlySelectedFacet,
65
- }) => {
66
- const [isDefined, setIsDefined] = useState(false);
67
- const [newlyChangedOption, setNewlyChangedOption] = useState<{
68
- type?: string;
69
- value?: string;
70
- }>({
71
- type: undefined,
72
- value: undefined,
73
- });
74
- const searchRef = useRef<CxInput>(null);
75
- const filterDropdownRef = useRef<CxDropdown>(null);
76
- const viewDropdownRef = useRef<CxDropdown>(null);
77
- const sortDropdownRef = useRef<CxDropdown>(null);
78
-
79
- useEffect(() => {
80
- Promise.all([
81
- customElements.whenDefined('cx-input'),
82
- customElements.whenDefined('cx-checkbox'),
83
- customElements.whenDefined('cx-dropdown'),
84
- ]).then(() => setIsDefined(true));
85
- }, []);
86
-
87
- useEffect(() => {
88
- const onSearchInput = (e: CxChangeEvent) => {
89
- const value = (e.target as CxInput).value;
90
- if (searchText !== value) {
91
- onSearchChange(value);
92
- }
93
- };
94
- const searchInput = searchRef.current;
95
- searchInput?.addEventListener('cx-change', onSearchInput);
96
- return () => {
97
- searchInput?.removeEventListener('cx-change', onSearchInput);
98
- };
99
- }, [isDefined, searchText, onSearchChange]);
100
-
101
- useEffect(() => {
102
- const onViewSelect = (e: CxSelectEvent) => {
103
- const value = e.detail.item.value;
104
-
105
- if (value === 'see-thru') {
106
- onSettingChange('isSeeThrough', !isSeeThrough);
107
- } else {
108
- onSettingChange('view', value ?? GridView.Medium);
109
- }
110
- };
111
- const viewDropdown = viewDropdownRef.current;
112
- viewDropdown?.addEventListener('cx-select', onViewSelect);
113
- return () => {
114
- viewDropdown?.removeEventListener('cx-select', onViewSelect);
115
- };
116
- }, [isDefined, isSeeThrough, onSettingChange]);
117
-
118
- useEffect(() => {
119
- const onFilterRemove = (e: CxRemoveEvent) => {
120
- const target = e.target as HTMLElement;
121
- const type = target.dataset.type;
122
- const value = target.dataset.value;
123
- onChangeNewlySelectedFacet('');
124
-
125
- if (!value) {
126
- return;
127
- }
128
-
129
- let newMediaTypes = mediaTypes;
130
- let newVisibilityClasses = visibilityClasses;
131
- let newStatuses = statuses;
132
- let newExtensions = extensions;
133
-
134
- switch (type) {
135
- case TYPE.type:
136
- newMediaTypes = mediaTypes.filter((item) => item !== value);
137
- break;
138
- case TYPE.visibilityClass:
139
- newVisibilityClasses = visibilityClasses.filter((item) => item !== value);
140
- break;
141
- case TYPE.status:
142
- newStatuses = statuses.filter((item) => item !== value);
143
- break;
144
- case TYPE.extension:
145
- newExtensions = extensions.filter((item) => item !== value);
146
- break;
147
- default:
148
- break;
149
- }
150
-
151
- onSettingChange('filter', {
152
- mediaTypes: newMediaTypes,
153
- visibilityClasses: newVisibilityClasses,
154
- statuses: newStatuses,
155
- extensions: newExtensions,
156
- });
157
- };
158
- const onFilterSelectionChange = (e: CxSelectionChangeEvent) => {
159
- const facet = (e.target as HTMLElement).dataset.facet;
160
- setNewlyChangedOption({
161
- type: 'filter',
162
- value: facet,
163
- });
164
- onChangeNewlySelectedFacet(facet ?? '');
165
-
166
- const newSelection = e.detail.selection.reduce(
167
- (acc, item) => {
168
- const type = item.dataset.type;
169
- const value = item.dataset.value;
170
-
171
- if (!value) {
172
- return acc;
173
- }
174
-
175
- switch (type) {
176
- case TYPE.type:
177
- acc.mediaTypes.push(value);
178
- break;
179
- case TYPE.visibilityClass:
180
- acc.visibilityClasses.push(value);
181
- break;
182
- case TYPE.status:
183
- acc.statuses.push(value);
184
- break;
185
- case TYPE.extension:
186
- acc.extensions.push(value);
187
- break;
188
- default:
189
- break;
190
- }
191
-
192
- return acc;
193
- }, {
194
- extensions: facet === TYPE.extension ? [] as string[] : extensions,
195
- mediaTypes: facet === TYPE.type ? [] as string[] : mediaTypes,
196
- visibilityClasses: facet === TYPE.visibilityClass ? [] as string[] : visibilityClasses,
197
- statuses: facet === TYPE.status ? [] as string[] : statuses,
198
- },
199
- );
200
-
201
- onSettingChange('filter', newSelection);
202
- };
203
- const onSortSelect = (e: CxSelectEvent) => {
204
- const type = e.detail.item.dataset.type;
205
- const value = e.detail.item.value;
206
-
207
- if (!value) {
208
- return;
209
- }
210
-
211
- if (type === 'sort-direction') {
212
- setNewlyChangedOption({
213
- type: 'sortDirection',
214
- value,
215
- });
216
- onSettingChange('sortDirection', value as 'ascending' | 'descending');
217
- } else if (type === 'sort-order') {
218
- setNewlyChangedOption({
219
- type: 'sortOrder',
220
- value,
221
- });
222
- onSettingChange('sortOrder', value);
223
- }
224
- };
225
- const filterDropdown = filterDropdownRef.current;
226
- const sortDropdown = sortDropdownRef.current;
227
- filterDropdown?.addEventListener('cx-selection-change', onFilterSelectionChange);
228
- filterDropdown?.addEventListener('cx-remove', onFilterRemove);
229
- sortDropdown?.addEventListener('cx-select', onSortSelect);
230
- return () => {
231
- filterDropdown?.removeEventListener('cx-selection-change', onFilterSelectionChange);
232
- filterDropdown?.removeEventListener('cx-remove', onFilterRemove);
233
- sortDropdown?.removeEventListener('cx-select', onSortSelect);
234
- };
235
- }, [isDefined, extensions, mediaTypes, statuses, visibilityClasses, onSettingChange, onChangeNewlySelectedFacet]);
236
-
237
- const selectedView = useMemo(() => views.find((item) => item.value === view), [view]);
238
-
239
- const renderAppliedFilters = useCallback(() => {
240
- const appliedFilersCount = mediaTypes.length + visibilityClasses.length + statuses.length + extensions.length;
241
-
242
- return (
243
- <cx-details
244
- open
245
- className={`filter-details ${appliedFilersCount === 0 ? 'filter-details--empty' : ''}`.trim()}
246
- >
247
- <cx-space
248
- slot="summary"
249
- align-items="center"
250
- spacing="x-small"
251
- wrap="nowrap"
252
- >
253
- <span>Applied filters {appliedFilersCount > 0 ? ` (${appliedFilersCount})` : ''}</span>
254
- {loading && newlyChangedOption.type === 'filter' && <cx-spinner></cx-spinner>}
255
- </cx-space>
256
- <cx-space direction="horizontal" spacing="small">
257
- {mediaTypes.map((item) => (
258
- <cx-tag
259
- key={item}
260
- removable
261
- data-value={item}
262
- data-type={TYPE.type}
263
- size='small'
264
- >
265
- {item.toLowerCase()}
266
- </cx-tag>
267
- ))}
268
- {visibilityClasses.map((item) => (
269
- <cx-tag
270
- key={item}
271
- removable
272
- data-value={item}
273
- data-type={TYPE.visibilityClass}
274
- size='small'
275
- >
276
- {item.toLowerCase()}
277
- </cx-tag>
278
- ))}
279
- {statuses.map((item) => (
280
- <cx-tag
281
- key={item}
282
- removable
283
- data-value={item}
284
- data-type={TYPE.status}
285
- size='small'
286
- >
287
- {item.toLowerCase()}
288
- </cx-tag>
289
- ))}
290
- {extensions.map((item) => (
291
- <cx-tag
292
- key={item}
293
- removable
294
- data-value={item}
295
- data-type={TYPE.extension}
296
- size='small'
297
- >
298
- {item.toLowerCase()}
299
- </cx-tag>
300
- ))}
301
- </cx-space>
302
- {appliedFilersCount > 0 && (
303
- <cx-button
304
- variant="text"
305
- className='clear-all-button'
306
- onClick={() => {
307
- onChangeNewlySelectedFacet('');
308
- onSettingChange('filter', {
309
- mediaTypes: [],
310
- visibilityClasses: [],
311
- statuses: [],
312
- extensions: [],
313
- });
314
- }}
315
- >
316
- Clear all
317
- <cx-icon slot="prefix" name="clear" label="Clear"></cx-icon>
318
- </cx-button>
319
- )}
320
- </cx-details>
321
- );
322
- }, [
323
- extensions,
324
- loading,
325
- mediaTypes,
326
- newlyChangedOption.type,
327
- statuses,
328
- visibilityClasses,
329
- onChangeNewlySelectedFacet,
330
- onSettingChange,
331
- ]);
332
-
333
- return (
334
- <Container>
335
- <cx-space
336
- align-items="center"
337
- spacing="x-small"
338
- wrap="nowrap"
339
- style={{
340
- flex: 1,
341
- }}
342
- >
343
- <cx-input
344
- ref={searchRef}
345
- value={searchText}
346
- placeholder="Search..."
347
- clearable
348
- className="search-input"
349
- >
350
- <cx-icon
351
- name="search"
352
- slot="prefix"
353
- className="icon--large"
354
- ></cx-icon>
355
- </cx-input>
356
- <cx-dropdown ref={filterDropdownRef}>
357
- <div slot="trigger">
358
- <cx-tooltip content="Filter">
359
- <cx-icon-button
360
- name="filter_alt"
361
- label="Filter"
362
- outline
363
- ></cx-icon-button>
364
- </cx-tooltip>
365
- </div>
366
- {renderAppliedFilters()}
367
- <Facet
368
- key={TYPE.type}
369
- facet={facets?.type ?? {}}
370
- displayName="Type"
371
- type={TYPE.type}
372
- collections={mediaTypes}
373
- />
374
- <Facet
375
- key={TYPE.visibilityClass}
376
- facet={facets?.visibilityClass ?? {}}
377
- displayName="Visibility class"
378
- type={TYPE.visibilityClass}
379
- collections={visibilityClasses}
380
- />
381
- <Facet
382
- key={TYPE.status}
383
- facet={facets?.status ?? {}}
384
- displayName="Status"
385
- type={TYPE.status}
386
- collections={statuses}
387
- />
388
- <Facet
389
- key={TYPE.extension}
390
- facet={facets?.extension ?? {}}
391
- type={TYPE.extension}
392
- displayName="Extension"
393
- collections={extensions}
394
- capitalize={false}
395
- />
396
- </cx-dropdown>
397
- </cx-space>
398
- <cx-space
399
- align-items="center"
400
- spacing="x-small"
401
- wrap="nowrap"
402
- style={{ marginLeft: 'auto' }}
403
- >
404
- <cx-line-clamp lines={1}>
405
- <cx-typography variant="body3">
406
- {currentCount} of {totalCount}
407
- </cx-typography>
408
- </cx-line-clamp>
409
- <cx-dropdown
410
- ref={viewDropdownRef}
411
- auto-width-factor={0.6}
412
- stay-open-on-select
413
- placement="bottom-end"
414
- skidding={isMobile ? 40 : 0}
415
- >
416
- <div slot="trigger">
417
- <cx-tooltip content="View">
418
- <cx-icon-button
419
- name="dashboard"
420
- label="View"
421
- outline
422
- ></cx-icon-button>
423
- </cx-tooltip>
424
- </div>
425
- <cx-menu>
426
- <cx-menu-label>View</cx-menu-label>
427
- <cx-menu-item class={selectedView ? 'selected' : ''}>
428
- Grid ({selectedView?.label})
429
- <cx-menu slot="submenu">
430
- {views.map((item) => (
431
- <cx-menu-item
432
- key={item.value}
433
- value={item.value.toString()}
434
- class={item.value === view ? 'selected' : ''}
435
- >
436
- {item.label}
437
- {
438
- <cx-icon
439
- slot="prefix"
440
- name={view === item.value ? 'check' : ''}
441
- ></cx-icon>
442
- }
443
- </cx-menu-item>
444
- ))}
445
- </cx-menu>
446
- <cx-icon slot="prefix" name="grid_view"></cx-icon>
447
- </cx-menu-item>
448
- <cx-divider></cx-divider>
449
- <cx-menu-item value="see-thru" className="menu-item--switch">
450
- <cx-line-clamp lines={1}>See-thru</cx-line-clamp>
451
- <cx-switch
452
- checked={isSeeThrough}
453
- onClick={(e) => e.preventDefault()}
454
- ></cx-switch>
455
- </cx-menu-item>
456
- </cx-menu>
457
- </cx-dropdown>
458
- <cx-dropdown
459
- ref={sortDropdownRef}
460
- auto-width-factor={0.5}
461
- stay-open-on-select
462
- >
463
- <div slot="trigger">
464
- <cx-tooltip content="Sort">
465
- <cx-icon-button name="sort" label="Sort" outline></cx-icon-button>
466
- </cx-tooltip>
467
- </div>
468
- <cx-menu>
469
- {(sortOrders ? sortDirections
470
- .map(
471
- (item) => {
472
- const label = sortOrders[sortOrder]?.find(
473
- (sort) => sort.sortDirection.toLowerCase() === item.value.toLowerCase(),
474
- )?.sortDirectionDisplayName;
475
-
476
- return {
477
- ...item,
478
- label: label ?? item.value,
479
- };
480
- },
481
- ) : sortDirections)
482
- .map((item) => (
483
- <cx-menu-item
484
- key={item.value}
485
- data-type="sort-direction"
486
- disabled={!allowSorting}
487
- value={item.value}
488
- class={allowSorting && sortDirection === item.value ? 'selected' : ''}
489
- >
490
- {item.label.replace(/\b\w/g, (char) => char.toUpperCase())}
491
- {loading &&
492
- newlyChangedOption.type === 'sortDirection' &&
493
- newlyChangedOption.value === item.value ? (
494
- <cx-spinner slot="prefix"></cx-spinner>
495
- ) : (
496
- <item.icon></item.icon>
497
- )}
498
- </cx-menu-item>
499
- ))}
500
- <cx-divider></cx-divider>
501
- {Object.keys(sortOrders ?? {}).map((item) => (
502
- <cx-menu-item
503
- key={item}
504
- data-type="sort-order"
505
- value={item}
506
- class={sortOrder === item ? 'selected' : ''}
507
- >
508
- {item.replace(/\b\w/g, (char) => char.toUpperCase())}
509
- {loading &&
510
- newlyChangedOption.type === 'sortOrder' &&
511
- newlyChangedOption.value === item ? (
512
- <cx-spinner slot="prefix"></cx-spinner>
513
- ) : (
514
- <cx-icon
515
- slot="prefix"
516
- name={sortOrder === item ? 'check' : ''}
517
- ></cx-icon>
518
- )}
519
- </cx-menu-item>
520
- ))}
521
- </cx-menu>
522
- </cx-dropdown>
523
- </cx-space>
524
- </Container>
525
- );
526
- };
527
-
528
- export default ControlBar;
@@ -1,113 +0,0 @@
1
- import _capitalize from 'lodash-es/capitalize';
2
- import { FC } from 'react';
3
-
4
- type Props = {
5
- facet: Record<string, number>;
6
- type: string;
7
- displayName: string;
8
- collections: string[];
9
- capitalize?: boolean;
10
- loading?: boolean;
11
- };
12
-
13
- const Facet: FC<Props> = ({
14
- facet,
15
- type,
16
- displayName,
17
- collections,
18
- capitalize = true,
19
- loading = false,
20
- }) => {
21
- if (!facet || Object.values(facet).length === 0) {
22
- return null;
23
- }
24
-
25
- /*
26
- The current facet value is flat. If a facet includes the ">>" character, it means it's a subtype, and the parent type is the value before ">>". We need to group them.
27
- For example, "contact >> email", "contact >> phone", and "contact >> address" should be grouped as "contact" => { email: 10, phone: 5, address: 3 }
28
- The "all" key will contain the total count of all subtypes for that parent type.
29
- Sometimes there are some asset belongs to the parent type but not to any subtype. In that case, we need to add the parent type to the result as well.
30
- For example, "contact" => { all: 12, email: 5, phone: 3 } means that 5 of them are emails, 3 are phones, and 2 are just contacts that are directly of the parent's type.
31
- */
32
-
33
- const mappedSubtypes = Object.entries(facet).reduce((acc, [key, value]) => {
34
- const [parent, subtype] = key.split('>>');
35
-
36
- if (!acc[parent] || typeof acc[parent] !== 'object') {
37
- if (acc[parent]) {
38
- acc[parent] = {
39
- 'all': acc[parent],
40
- };
41
- } else {
42
- acc[parent] = {};
43
- }
44
- }
45
- if (subtype) {
46
- acc[parent][subtype] = value;
47
- }
48
- acc[parent].all = (acc[parent].all || 0) + value;
49
-
50
- return acc;
51
- }, {} as Record<string, Record<string, number> | number>);
52
-
53
- return (
54
- <cx-details open className="filter-details">
55
- <cx-space
56
- slot="summary"
57
- align-items="center"
58
- spacing="x-small"
59
- wrap="nowrap"
60
- >
61
- <span>{displayName}</span>
62
- {loading && <cx-spinner></cx-spinner>}
63
- </cx-space>
64
- <cx-space direction="vertical">
65
- <cx-tree selection="multiple" data-facet={type}>
66
- {Object.entries(mappedSubtypes).map(([key, value]) => {
67
- if (typeof value === 'object') {
68
- const selected = collections.includes(key);
69
-
70
- const { all, ...rest } = value;
71
-
72
- return (
73
- <cx-tree-item
74
- key={key}
75
- data-value={key}
76
- data-type={type}
77
- readonly={loading}
78
- selected={selected}
79
- >
80
- {capitalize ? _capitalize(key) : key} {!!all && `(${all})`}
81
- {Object.entries(rest).map(([subtype, count]) => (
82
- <cx-tree-item
83
- key={subtype}
84
- data-value={`${key}>>${subtype}`}
85
- data-type={type}
86
- readonly={loading}
87
- selected={collections.includes(`${key}>>${subtype}`)}
88
- >
89
- {capitalize ? _capitalize(subtype) : subtype} ({count})
90
- </cx-tree-item>
91
- ))}
92
- </cx-tree-item>
93
- );
94
- }
95
- return (
96
- <cx-tree-item
97
- key={key}
98
- data-value={key}
99
- data-type={type}
100
- readonly={loading}
101
- selected={collections.includes(key)}
102
- >
103
- {capitalize ? _capitalize(key) : key} ({value})
104
- </cx-tree-item>
105
- );
106
- })}
107
- </cx-tree>
108
- </cx-space>
109
- </cx-details>
110
- );
111
- };
112
-
113
- export default Facet;
@@ -1 +0,0 @@
1
- export { default } from './Facet';