@blaze-cms/plugin-media-ui 0.146.0-node18-core-styles-tooltips.58 → 0.146.0-node18-tooltips.44

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 (118) hide show
  1. package/CHANGELOG.md +25 -92
  2. package/lib/components/CardMedia/CardMedia.js +107 -50
  3. package/lib/components/CardMedia/CardMedia.js.map +1 -1
  4. package/lib/components/EditMediaFile/EditMediaFile.js +31 -45
  5. package/lib/components/EditMediaFile/EditMediaFile.js.map +1 -1
  6. package/lib/components/EditMediaFile/EditMediaFilePage.js +18 -9
  7. package/lib/components/EditMediaFile/EditMediaFilePage.js.map +1 -1
  8. package/lib/components/FileList/useGetFiles/getFiles.js +13 -12
  9. package/lib/components/FileList/useGetFiles/getFiles.js.map +1 -1
  10. package/lib/components/FileList/useGetFiles/useGetFiles.js +8 -4
  11. package/lib/components/FileList/useGetFiles/useGetFiles.js.map +1 -1
  12. package/lib/components/FileList/useGetFilesList/getCounters.js +1 -1
  13. package/lib/components/FileList/useGetFilesList/getCounters.js.map +1 -1
  14. package/lib/components/FileList/useGetFilesList/useGetFilesList.js +4 -2
  15. package/lib/components/FileList/useGetFilesList/useGetFilesList.js.map +1 -1
  16. package/lib/components/FilePreview/Actions/index.js +1 -1
  17. package/lib/components/FilePreview/Actions/index.js.map +1 -1
  18. package/lib/components/FilePreview/Image/Image.js.map +1 -1
  19. package/lib/components/FilePreview/Image/imageSchema.js +8 -4
  20. package/lib/components/FilePreview/Image/imageSchema.js.map +1 -1
  21. package/lib/components/FilePreview/PDF/PDF.js.map +1 -1
  22. package/lib/components/FilePreview/PDF/schema.js +2 -1
  23. package/lib/components/FilePreview/PDF/schema.js.map +1 -1
  24. package/lib/components/FilePreview/index.js +52 -9
  25. package/lib/components/FilePreview/index.js.map +1 -1
  26. package/lib/components/FilePreview/previewDefault/PreviewDefault.js.map +1 -1
  27. package/lib/components/FilePreview/previewDefault/previewDefaultSchema.js +2 -1
  28. package/lib/components/FilePreview/previewDefault/previewDefaultSchema.js.map +1 -1
  29. package/lib/components/FilePreviewReadOnly/FilePreviewList.js +0 -1
  30. package/lib/components/FilePreviewReadOnly/FilePreviewList.js.map +1 -1
  31. package/lib/components/FilePreviewReadOnly/FilePreviewReadOnly.js +3 -3
  32. package/lib/components/FilePreviewReadOnly/FilePreviewReadOnly.js.map +1 -1
  33. package/lib/components/FileUploadAdapter/FileList.js +1 -1
  34. package/lib/components/FileUploadAdapter/FileList.js.map +1 -1
  35. package/lib/components/FileUploadAdapter/FilePreviewList.js +0 -1
  36. package/lib/components/FileUploadAdapter/FilePreviewList.js.map +1 -1
  37. package/lib/components/FileUploadAdapter/FileReorderList.js.map +1 -1
  38. package/lib/components/FileUploadAdapter/FileUploadAdapter.js +50 -36
  39. package/lib/components/FileUploadAdapter/FileUploadAdapter.js.map +1 -1
  40. package/lib/components/FileUploadModal/FileUploadModal.js +3 -3
  41. package/lib/components/FileUploadModal/FileUploadModal.js.map +1 -1
  42. package/lib/components/FilterPanel/FilterPanel.js +42 -141
  43. package/lib/components/FilterPanel/FilterPanel.js.map +1 -1
  44. package/lib/components/FilterPanel/MediaSearchFilter.js +40 -0
  45. package/lib/components/FilterPanel/MediaSearchFilter.js.map +1 -0
  46. package/lib/components/ListingContainer/Listing/Listing.js.map +1 -1
  47. package/lib/components/ListingContainer/Listing/MediaListing/MediaFileList/MediaFileList.js +6 -5
  48. package/lib/components/ListingContainer/Listing/MediaListing/MediaFileList/MediaFileList.js.map +1 -1
  49. package/lib/components/ListingContainer/Listing/MediaListing/MediaListing.js +1 -1
  50. package/lib/components/ListingContainer/Listing/MediaListing/MediaListing.js.map +1 -1
  51. package/lib/components/ListingContainer/ListingContainer.js +5 -2
  52. package/lib/components/ListingContainer/ListingContainer.js.map +1 -1
  53. package/lib/components/MediaListing.js +1 -1
  54. package/lib/components/MediaListing.js.map +1 -1
  55. package/lib/constants.js +2 -1
  56. package/lib/constants.js.map +1 -1
  57. package/lib/index.js +5 -5
  58. package/lib/index.js.map +1 -1
  59. package/lib/utils/bustUrl.js +1 -0
  60. package/lib/utils/bustUrl.js.map +1 -1
  61. package/lib-es/components/CardMedia/CardMedia.js +97 -54
  62. package/lib-es/components/CardMedia/CardMedia.js.map +1 -1
  63. package/lib-es/components/EditMediaFile/EditMediaFile.js +26 -42
  64. package/lib-es/components/EditMediaFile/EditMediaFile.js.map +1 -1
  65. package/lib-es/components/EditMediaFile/EditMediaFilePage.js +15 -8
  66. package/lib-es/components/EditMediaFile/EditMediaFilePage.js.map +1 -1
  67. package/lib-es/components/FileList/useGetFiles/getFiles.js +6 -3
  68. package/lib-es/components/FileList/useGetFiles/getFiles.js.map +1 -1
  69. package/lib-es/components/FileList/useGetFiles/useGetFiles.js +7 -2
  70. package/lib-es/components/FileList/useGetFiles/useGetFiles.js.map +1 -1
  71. package/lib-es/components/FileList/useGetFilesList/useGetFilesList.js +4 -1
  72. package/lib-es/components/FileList/useGetFilesList/useGetFilesList.js.map +1 -1
  73. package/lib-es/components/FilePreview/Actions/index.js.map +1 -1
  74. package/lib-es/components/FilePreview/Image/imageSchema.js +8 -4
  75. package/lib-es/components/FilePreview/Image/imageSchema.js.map +1 -1
  76. package/lib-es/components/FilePreview/PDF/PDF.js.map +1 -1
  77. package/lib-es/components/FilePreview/PDF/schema.js +2 -1
  78. package/lib-es/components/FilePreview/PDF/schema.js.map +1 -1
  79. package/lib-es/components/FilePreview/index.js +48 -3
  80. package/lib-es/components/FilePreview/index.js.map +1 -1
  81. package/lib-es/components/FilePreview/previewDefault/PreviewDefault.js.map +1 -1
  82. package/lib-es/components/FilePreview/previewDefault/previewDefaultSchema.js +2 -1
  83. package/lib-es/components/FilePreview/previewDefault/previewDefaultSchema.js.map +1 -1
  84. package/lib-es/components/FileUploadAdapter/FileList.js.map +1 -1
  85. package/lib-es/components/FileUploadAdapter/FileUploadAdapter.js +34 -23
  86. package/lib-es/components/FileUploadAdapter/FileUploadAdapter.js.map +1 -1
  87. package/lib-es/components/FileUploadAdapter/mappers/get-button-text.js.map +1 -1
  88. package/lib-es/components/FileUploadModal/FileUploadModal.js.map +1 -1
  89. package/lib-es/components/FilterPanel/FilterPanel.js +43 -123
  90. package/lib-es/components/FilterPanel/FilterPanel.js.map +1 -1
  91. package/lib-es/components/FilterPanel/MediaSearchFilter.js +34 -0
  92. package/lib-es/components/FilterPanel/MediaSearchFilter.js.map +1 -0
  93. package/lib-es/components/ListingContainer/Listing/MediaListing/MediaFileList/MediaFileList.js +5 -4
  94. package/lib-es/components/ListingContainer/Listing/MediaListing/MediaFileList/MediaFileList.js.map +1 -1
  95. package/lib-es/components/ListingContainer/ListingContainer.js +4 -1
  96. package/lib-es/components/ListingContainer/ListingContainer.js.map +1 -1
  97. package/lib-es/constants.js +2 -1
  98. package/lib-es/constants.js.map +1 -1
  99. package/lib-es/index.js +3 -3
  100. package/lib-es/index.js.map +1 -1
  101. package/lib-es/utils/bustUrl.js.map +1 -1
  102. package/package.json +8 -8
  103. package/src/components/CardMedia/CardMedia.js +119 -90
  104. package/src/components/EditMediaFile/EditMediaFile.js +28 -27
  105. package/src/components/EditMediaFile/EditMediaFilePage.js +12 -7
  106. package/src/components/FileList/useGetFiles/getFiles.js +12 -4
  107. package/src/components/FileList/useGetFiles/useGetFiles.js +3 -4
  108. package/src/components/FileList/useGetFilesList/useGetFilesList.js +2 -1
  109. package/src/components/FilePreview/Image/imageSchema.js +8 -4
  110. package/src/components/FilePreview/PDF/schema.js +2 -1
  111. package/src/components/FilePreview/index.js +37 -2
  112. package/src/components/FilePreview/previewDefault/previewDefaultSchema.js +2 -1
  113. package/src/components/FileUploadAdapter/FileUploadAdapter.js +24 -14
  114. package/src/components/FilterPanel/FilterPanel.js +44 -129
  115. package/src/components/FilterPanel/MediaSearchFilter.js +32 -0
  116. package/src/components/ListingContainer/Listing/MediaListing/MediaFileList/MediaFileList.js +5 -2
  117. package/src/components/ListingContainer/ListingContainer.js +4 -1
  118. package/src/constants.js +15 -1
@@ -1,9 +1,8 @@
1
1
  import React, { useState, useContext, useEffect } from 'react';
2
2
  import FileUpload from '@blaze-react/file-upload';
3
3
  import PropTypes from 'prop-types';
4
- import { useApolloClient } from '@apollo/client';
4
+ import { useApolloClient, useQuery } from '@apollo/client';
5
5
  import { getQuery, getMutation, ModalAdapter as Modal } from '@blaze-cms/admin-ui-utils';
6
- import { parseFormValues } from '@blaze-cms/react-form-builder';
7
6
  import { useToasts } from '@blaze-react/toaster';
8
7
  import Tooltip from '@blaze-react/tooltip';
9
8
  import { MORE } from '../../constants';
@@ -49,6 +48,13 @@ const FileUploadAdapter = ({
49
48
  const client = useApolloClient();
50
49
  const { addToast } = useToasts();
51
50
 
51
+ const { data: { getEntitySchemas: [schemaData] = [] } = {} } = useQuery(
52
+ getQuery('GET_ENTITY_SCHEMA'),
53
+ {
54
+ variables: { identifier: 'file' }
55
+ }
56
+ );
57
+
52
58
  const getFiles = async (offset, ids, fetchAll = previewAllFiles) => {
53
59
  const {
54
60
  data: { files: newFiles }
@@ -175,18 +181,22 @@ const FileUploadAdapter = ({
175
181
  };
176
182
 
177
183
  const handleEditFileForm = editedFile => {
178
- const values = parseFormValues(editedFile.valuesChecked);
184
+ const dataValues = editedFile.valuesChecked.reduce(
185
+ (acc, { id: formValueId, value: formValue, isDataPropery }) => {
186
+ if (isDataPropery) {
187
+ acc.data[formValueId] = formValue;
188
+ } else {
189
+ acc[formValueId] = formValue;
190
+ }
191
+ return acc;
192
+ },
193
+ { id: editFile.id, data: { ...editFile.data } }
194
+ );
195
+ delete dataValues.data.__typename; // Remove __typename if it exists in data to avoid issues with Apollo cache.
179
196
 
180
- const { altText, caption, credits, hrefUrl, name } = values;
181
197
  setEditFile({
182
198
  ...editFile,
183
- name,
184
- data: {
185
- altText,
186
- caption,
187
- credits,
188
- hrefUrl
189
- }
199
+ formData: dataValues
190
200
  });
191
201
  };
192
202
 
@@ -221,7 +231,7 @@ const FileUploadAdapter = ({
221
231
  {
222
232
  textButton: 'Apply',
223
233
  callback: async () => {
224
- const { name, id: editedFileId, data } = editFile;
234
+ const { name, id: editedFileId, data, formData } = editFile;
225
235
  const updatedSelectedFiles = selectedFiles.map(selectedFile => {
226
236
  if (selectedFile.id === editedFileId) {
227
237
  return { ...selectedFile, name, data };
@@ -235,8 +245,7 @@ const FileUploadAdapter = ({
235
245
  mutation: getMutation('UPDATE_FILE'),
236
246
  variables: {
237
247
  input: {
238
- name,
239
- data,
248
+ ...formData,
240
249
  id: editedFileId
241
250
  }
242
251
  },
@@ -324,6 +333,7 @@ const FileUploadAdapter = ({
324
333
  displayForm
325
334
  previewType="card"
326
335
  disableFilePreview={disableFilePreview}
336
+ schemaData={schemaData}
327
337
  />
328
338
  </Modal>
329
339
  )}
@@ -1,138 +1,53 @@
1
- /* eslint-disable jsx-a11y/no-static-element-interactions */
2
- /* eslint-disable jsx-a11y/anchor-is-valid */
3
- import React, { useState, useEffect } from 'react';
4
- import { SearchBar } from '@blaze-cms/plugin-search-ui';
5
- import classnames from 'classnames';
6
- import Select from '@blaze-react/select';
1
+ import React from 'react';
2
+ import MediaSearchFilter from './MediaSearchFilter';
7
3
  import { useMediaContext, MediaContext } from '../../utils/media-context';
8
- import useFileList from '../FileList/useFileList';
9
4
 
10
5
  const FilterPanel = () => {
11
- const [searchTerm, setSearchTerm] = useState('');
12
- const { filters, selectedFilter, changeSelectedFilter, fileStores } =
13
- useMediaContext(MediaContext);
14
- const { queryParams, data } = useFileList();
15
- const [active, setActive] = useState(filters[0].id);
16
-
17
- useEffect(() => {
18
- if (queryParams.searchTerm === null) {
19
- setSearchTerm('');
20
- }
21
- }, [queryParams.searchTerm]);
22
-
23
- const handleSearchTerm = ({ target: { value } }) => {
24
- setSearchTerm(value);
25
- };
26
-
27
- const storeKey = selectedFilter.storeKey || '';
28
-
29
- const onChangeFilter = id => {
30
- setActive(id);
31
- searchTerm
32
- ? changeSelectedFilter({
33
- filter: id,
34
- isSearch: true,
35
- searchTerm,
36
- storeKey
37
- })
38
- : changeSelectedFilter({
39
- filter: id,
40
- isSearch: false,
41
- searchTerm: null,
42
- storeKey
43
- });
6
+ const { filters, selectedFilter, changeSelectedFilter } = useMediaContext(MediaContext);
7
+
8
+ const handleOnSelectFilter = (esFilters = []) => {
9
+ let nextSearchTerm = null;
10
+ let nextFilterId = selectedFilter.filter;
11
+ let nextStoreKey = selectedFilter.storeKey || '';
12
+
13
+ esFilters.forEach(filterObj => {
14
+ const { simple_query_string: simpleQueryString, match } = filterObj || {};
15
+
16
+ if (simpleQueryString) {
17
+ const { query } = simpleQueryString;
18
+ if (query != null) {
19
+ nextSearchTerm = String(query).trim();
20
+ }
21
+ }
22
+
23
+ if (match) {
24
+ const { 'type.keyword': typeKeyword, 'storeKey.keyword': storeKeyKeyword } = match;
25
+
26
+ if (typeKeyword && typeKeyword.query != null) {
27
+ nextFilterId = typeKeyword.query;
28
+ }
29
+
30
+ if (storeKeyKeyword && storeKeyKeyword.query != null) {
31
+ nextStoreKey = storeKeyKeyword.query;
32
+ }
33
+ }
34
+ });
35
+
36
+ changeSelectedFilter({
37
+ filter: nextFilterId,
38
+ isSearch: Boolean(nextSearchTerm),
39
+ searchTerm: nextSearchTerm || null,
40
+ storeKey: nextStoreKey,
41
+ esFilters
42
+ });
44
43
  };
45
44
 
46
- const handleKeyDown = ({ key }) => {
47
- if (key === 'Enter') {
48
- searchTerm
49
- ? changeSelectedFilter({
50
- filter: selectedFilter.filter,
51
- isSearch: true,
52
- searchTerm: searchTerm.trim(),
53
- storeKey
54
- })
55
- : changeSelectedFilter({
56
- filter: selectedFilter.filter,
57
- isSearch: false,
58
- searchTerm: null,
59
- storeKey
60
- });
61
- }
62
- };
63
-
64
- const onSelectFilter = ({ value }) => {
65
- searchTerm
66
- ? changeSelectedFilter({
67
- filter: selectedFilter.filter,
68
- isSearch: true,
69
- searchTerm: searchTerm.trim(),
70
- storeKey: value
71
- })
72
- : changeSelectedFilter({
73
- filter: selectedFilter.filter,
74
- isSearch: false,
75
- searchTerm: null,
76
- storeKey: value
77
- });
78
- };
79
-
80
- const activeSegements = filters.reduce((acc, { id }, index) => {
81
- acc[`active-${index}`] = active === id;
82
- return acc;
83
- }, {});
84
- const activeBarSegment = classnames('filter-panel__barWrapper--active', activeSegements);
85
- const storeOptions = (fileStores || []).map(type => [type.key, type.name]);
86
-
87
45
  return (
88
- <div className="filter-panel">
89
- <div className="filter-panel__wrapper">
90
- <ul className="filter-panel__list">
91
- {filters.map(({ label, id }) =>
92
- selectedFilter.filter !== id ? (
93
- <li key={label} className="filter-panel__list-item">
94
- <a onClick={() => onChangeFilter(id)}>
95
- {label} ({data[id]})
96
- </a>
97
- </li>
98
- ) : (
99
- <li key={label} className="filter-panel__list-item active">
100
- {label} ({data[id]})
101
- </li>
102
- )
103
- )}
104
- </ul>
105
- <div className="filter-panel__barWrapper">
106
- <div className={activeBarSegment} />
107
- </div>
108
- </div>
109
- <div className="filter-panel__searchBarWrapper">
110
- <div className="select__wrapper">
111
- <Select
112
- name="filter"
113
- defaultTextValue="Any"
114
- options={storeOptions}
115
- onChange={onSelectFilter}
116
- selected={selectedFilter.storeKey}
117
- />
118
- </div>
119
- <SearchBar
120
- search={() =>
121
- changeSelectedFilter({
122
- filter: selectedFilter.filter,
123
- isSearch: true,
124
- searchTerm,
125
- storeKey: selectedFilter.storeKey
126
- })
127
- }
128
- handleKeyDown={handleKeyDown}
129
- searchTerm={searchTerm}
130
- handleSearchTerm={handleSearchTerm}
131
- placeholder="Search term here..."
132
- close={false}
133
- />
134
- </div>
135
- </div>
46
+ <MediaSearchFilter
47
+ selectedFilter={selectedFilter}
48
+ listFilters={filters}
49
+ updateListingFilters={handleOnSelectFilter}
50
+ />
136
51
  );
137
52
  };
138
53
 
@@ -0,0 +1,32 @@
1
+ import { useQuery } from '@apollo/client';
2
+ import React from 'react';
3
+ import PropTypes from 'prop-types';
4
+ import { getQuery } from '@blaze-cms/admin-ui-utils';
5
+ import { SearchFilter } from '@blaze-cms/plugin-data-ui';
6
+
7
+ const MediaSearchFilter = ({ selectedFilter, listFilters, updateListingFilters }) => {
8
+ const { data } = useQuery(getQuery('GET_ENTITY_SCHEMA'), {
9
+ variables: { identifier: 'file' }
10
+ });
11
+
12
+ const getEntitySchemas = data?.getEntitySchemas ?? [];
13
+
14
+ if (!getEntitySchemas.length) return null;
15
+
16
+ return (
17
+ <SearchFilter
18
+ schema={getEntitySchemas[0]}
19
+ listFilters={listFilters}
20
+ setListFilters={updateListingFilters}
21
+ values={selectedFilter.defaultFilters}
22
+ />
23
+ );
24
+ };
25
+
26
+ MediaSearchFilter.propTypes = {
27
+ selectedFilter: PropTypes.object.isRequired,
28
+ updateListingFilters: PropTypes.func.isRequired,
29
+ listFilters: PropTypes.array.isRequired
30
+ };
31
+
32
+ export default MediaSearchFilter;
@@ -41,6 +41,7 @@ const MediaFileList = ({
41
41
  setVerifiedRanges([]);
42
42
  setCurrentListIndex(0);
43
43
  setQueryParams({
44
+ ...selectedFilter,
44
45
  where: {
45
46
  ...AVAILABLE_FILTER_TYPES[selectedFilter.filter],
46
47
  storeKey: selectedFilter.storeKey
@@ -54,7 +55,8 @@ const MediaFileList = ({
54
55
  selectedFilter.filter,
55
56
  selectedFilter.storeKey,
56
57
  selectedFilter.isSearch,
57
- selectedFilter.searchTerm
58
+ selectedFilter.searchTerm,
59
+ selectedFilter.esFilters
58
60
  ]
59
61
  );
60
62
 
@@ -70,7 +72,8 @@ const MediaFileList = ({
70
72
  storeKey: selectedFilter.storeKey
71
73
  },
72
74
  isSearch: selectedFilter.isSearch,
73
- searchTerm: selectedFilter.searchTerm
75
+ searchTerm: selectedFilter.searchTerm,
76
+ esFilters: selectedFilter.esFilters
74
77
  });
75
78
  setVerifiedRanges([...verifiedRanges, loadIndex]);
76
79
  setCurrentListIndex(startIndex + MEDIA_OVER_SCAN_COUNT);
@@ -67,7 +67,10 @@ const ListingContainer = ({
67
67
  changeSelectedFilter: value => setSelectedFilter(value),
68
68
  selectedFilter: {
69
69
  ...selectedFilter,
70
- storeKey: selectedFilter.storeKey || defaultFileStore
70
+ storeKey: selectedFilter.storeKey || defaultFileStore,
71
+ defaultFilters: {
72
+ storeKey: selectedFilter.storeKey || defaultFileStore
73
+ }
71
74
  },
72
75
  selectedFiles,
73
76
  getSelectedFiles,
package/src/constants.js CHANGED
@@ -38,6 +38,19 @@ const REORDER = 'Reorder';
38
38
  const IMAGES = 'Images';
39
39
  const MORE = 'more ...';
40
40
 
41
+ const FILE_DEFAULT_PROPS = [
42
+ 'id',
43
+ 'location',
44
+ 'mimetype',
45
+ 'url',
46
+ 'data',
47
+ 'name',
48
+ 'storeKey',
49
+ 'filename',
50
+ 'type',
51
+ 'updated'
52
+ ];
53
+
41
54
  export {
42
55
  ALL,
43
56
  AVAILABLE_FILTER_TYPES,
@@ -53,5 +66,6 @@ export {
53
66
  REORDER,
54
67
  STORE_KEY,
55
68
  ICON_SIZE,
56
- ICON_COLOR
69
+ ICON_COLOR,
70
+ FILE_DEFAULT_PROPS
57
71
  };