@blaze-cms/plugin-data-ui 0.146.0-node18-core-styles-tooltips.3 → 0.146.0-node18-core-styles-tooltips.5
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.
- package/CHANGELOG.md +36 -0
- package/README.md +36 -0
- package/lib/components/EntityManager/Entity/Entity.js +16 -7
- package/lib/components/EntityManager/Entity/Entity.js.map +1 -1
- package/lib/components/EntityManager/Entity/SideBarRelations/index.js +22 -5
- package/lib/components/EntityManager/Entity/SideBarRelations/index.js.map +1 -1
- package/lib/components/ListingTable/ListingTable.js +12 -11
- package/lib/components/ListingTable/ListingTable.js.map +1 -1
- package/lib/components/ListingTable/ListingTableContent/ListingTableContent.js +27 -1
- package/lib/components/ListingTable/ListingTableContent/ListingTableContent.js.map +1 -1
- package/lib/components/ListingTable/SearchFilter/SearchContainer.js +313 -0
- package/lib/components/ListingTable/SearchFilter/SearchContainer.js.map +1 -0
- package/lib/components/ListingTable/SearchFilter/SearchFilter.js +59 -0
- package/lib/components/ListingTable/SearchFilter/SearchFilter.js.map +1 -0
- package/lib/components/ListingTable/SearchFilter/helpers.js +128 -0
- package/lib/components/ListingTable/SearchFilter/helpers.js.map +1 -0
- package/lib/components/ListingTable/SearchFilter/querys.js +13 -0
- package/lib/components/ListingTable/SearchFilter/querys.js.map +1 -0
- package/lib/components/ListingTable/service/index.js +3 -3
- package/lib/components/ListingTable/service/index.js.map +1 -1
- package/lib/constants.js +3 -1
- package/lib/constants.js.map +1 -1
- package/lib/utils/build-listing-query.js +4 -4
- package/lib/utils/build-listing-query.js.map +1 -1
- package/lib-es/components/EntityManager/Entity/Entity.js +7 -3
- package/lib-es/components/EntityManager/Entity/Entity.js.map +1 -1
- package/lib-es/components/EntityManager/Entity/SideBarRelations/index.js +21 -5
- package/lib-es/components/EntityManager/Entity/SideBarRelations/index.js.map +1 -1
- package/lib-es/components/ListingTable/ListingTable.js +12 -11
- package/lib-es/components/ListingTable/ListingTable.js.map +1 -1
- package/lib-es/components/ListingTable/ListingTableContent/ListingTableContent.js +16 -1
- package/lib-es/components/ListingTable/ListingTableContent/ListingTableContent.js.map +1 -1
- package/lib-es/components/ListingTable/SearchFilter/SearchContainer.js +207 -0
- package/lib-es/components/ListingTable/SearchFilter/SearchContainer.js.map +1 -0
- package/lib-es/components/ListingTable/SearchFilter/SearchFilter.js +40 -0
- package/lib-es/components/ListingTable/SearchFilter/SearchFilter.js.map +1 -0
- package/lib-es/components/ListingTable/SearchFilter/helpers.js +96 -0
- package/lib-es/components/ListingTable/SearchFilter/helpers.js.map +1 -0
- package/lib-es/components/ListingTable/SearchFilter/querys.js +8 -0
- package/lib-es/components/ListingTable/SearchFilter/querys.js.map +1 -0
- package/lib-es/components/ListingTable/service/index.js +3 -2
- package/lib-es/components/ListingTable/service/index.js.map +1 -1
- package/lib-es/constants.js +3 -1
- package/lib-es/constants.js.map +1 -1
- package/lib-es/utils/build-listing-query.js +4 -4
- package/lib-es/utils/build-listing-query.js.map +1 -1
- package/package.json +5 -5
- package/src/components/EntityManager/Entity/Entity.js +12 -2
- package/src/components/EntityManager/Entity/SideBarRelations/index.js +30 -7
- package/src/components/ListingTable/ListingTable.js +13 -18
- package/src/components/ListingTable/ListingTableContent/ListingTableContent.js +21 -1
- package/src/components/ListingTable/SearchFilter/SearchContainer.js +243 -0
- package/src/components/ListingTable/SearchFilter/SearchFilter.js +38 -0
- package/src/components/ListingTable/SearchFilter/helpers.js +99 -0
- package/src/components/ListingTable/SearchFilter/querys.js +9 -0
- package/src/components/ListingTable/service/index.js +2 -2
- package/src/constants.js +7 -1
- package/src/utils/build-listing-query.js +4 -4
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { DEFAULT_FILTER_OPTION_LABEL } from '../../../constants';
|
|
2
|
+
const updateListFilters = (searchTerm, selectedFilters, setListFilters, fields = []) => {
|
|
3
|
+
const filters = [];
|
|
4
|
+
if (searchTerm) {
|
|
5
|
+
filters.push({
|
|
6
|
+
simple_query_string: {
|
|
7
|
+
query: `${searchTerm}`,
|
|
8
|
+
default_operator: 'AND',
|
|
9
|
+
fields: fields.map(field => field)
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
Object.entries(selectedFilters).forEach(([filterKey, filterValue]) => {
|
|
14
|
+
if (!filterValue || filterValue === DEFAULT_FILTER_OPTION_LABEL) return;
|
|
15
|
+
filters.push({
|
|
16
|
+
match: {
|
|
17
|
+
[`${filterKey}.keyword`]: {
|
|
18
|
+
query: filterValue
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
});
|
|
23
|
+
setListFilters(filters);
|
|
24
|
+
};
|
|
25
|
+
const getKeywordSearchFilters = schema => {
|
|
26
|
+
if (!schema || !schema.properties) return [];
|
|
27
|
+
const {
|
|
28
|
+
properties = {},
|
|
29
|
+
dynamicProperties = {}
|
|
30
|
+
} = schema;
|
|
31
|
+
const propertyKeyword = Object.entries(properties).filter(isFilterKeywordItem);
|
|
32
|
+
const dynamicPropertyKeywords = Object.entries(dynamicProperties).filter(isFilterKeywordItem);
|
|
33
|
+
return [...propertyKeyword, ...dynamicPropertyKeywords];
|
|
34
|
+
};
|
|
35
|
+
const isFilterKeywordItem = ([, item]) => item.adminListingOptions && item.adminListingOptions.includeInKeywordSeach === true;
|
|
36
|
+
const findSelectFilters = schema => {
|
|
37
|
+
if (!schema || !schema.properties) return [];
|
|
38
|
+
const {
|
|
39
|
+
properties = {},
|
|
40
|
+
dynamicProperties = {}
|
|
41
|
+
} = schema;
|
|
42
|
+
const propertySelects = Object.entries(properties).filter(isFilterSelectItem);
|
|
43
|
+
const dynamicPropertySelects = Object.entries(dynamicProperties).filter(isFilterSelectItem);
|
|
44
|
+
return [...propertySelects, ...dynamicPropertySelects];
|
|
45
|
+
};
|
|
46
|
+
const isFilterSelectItem = ([, item]) => item.adminListingOptions && item.adminListingOptions.filterType === 'select';
|
|
47
|
+
const buildQueryFields = (selectFilters, entityId) => {
|
|
48
|
+
if (!Array.isArray(selectFilters) || selectFilters.length === 0) {
|
|
49
|
+
return {
|
|
50
|
+
gqlFields: '',
|
|
51
|
+
rawQuery: '{}'
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
const aggs = {};
|
|
55
|
+
selectFilters.forEach(([property, details]) => {
|
|
56
|
+
aggs[property] = {
|
|
57
|
+
terms: {
|
|
58
|
+
field: `${property}.keyword`,
|
|
59
|
+
// todo: handle different field types
|
|
60
|
+
size: 1000,
|
|
61
|
+
// todo: customise size
|
|
62
|
+
order: {
|
|
63
|
+
_key: 'asc'
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
});
|
|
68
|
+
const docType = entityId;
|
|
69
|
+
const rawQueryObject = {
|
|
70
|
+
size: 0,
|
|
71
|
+
query: {
|
|
72
|
+
bool: {
|
|
73
|
+
filter: {
|
|
74
|
+
bool: {
|
|
75
|
+
must: [{
|
|
76
|
+
match: {
|
|
77
|
+
docType
|
|
78
|
+
}
|
|
79
|
+
}]
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
},
|
|
84
|
+
aggs
|
|
85
|
+
};
|
|
86
|
+
const rawQuery = JSON.stringify(rawQueryObject);
|
|
87
|
+
const gqlFields = `
|
|
88
|
+
rawResults
|
|
89
|
+
`;
|
|
90
|
+
return {
|
|
91
|
+
gqlFields,
|
|
92
|
+
rawQuery
|
|
93
|
+
};
|
|
94
|
+
};
|
|
95
|
+
export { buildQueryFields, updateListFilters, getKeywordSearchFilters, findSelectFilters };
|
|
96
|
+
//# sourceMappingURL=helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.js","names":["DEFAULT_FILTER_OPTION_LABEL","updateListFilters","searchTerm","selectedFilters","setListFilters","fields","filters","push","simple_query_string","query","default_operator","map","field","Object","entries","forEach","filterKey","filterValue","match","getKeywordSearchFilters","schema","properties","dynamicProperties","propertyKeyword","filter","isFilterKeywordItem","dynamicPropertyKeywords","item","adminListingOptions","includeInKeywordSeach","findSelectFilters","propertySelects","isFilterSelectItem","dynamicPropertySelects","filterType","buildQueryFields","selectFilters","entityId","Array","isArray","length","gqlFields","rawQuery","aggs","property","details","terms","size","order","_key","docType","rawQueryObject","bool","must","JSON","stringify"],"sources":["../../../../src/components/ListingTable/SearchFilter/helpers.js"],"sourcesContent":["import { DEFAULT_FILTER_OPTION_LABEL } from '../../../constants';\n\nconst updateListFilters = (searchTerm, selectedFilters, setListFilters, fields = []) => {\n const filters = [];\n\n if (searchTerm) {\n filters.push({\n simple_query_string: {\n query: `${searchTerm}`,\n default_operator: 'AND',\n fields: fields.map(field => field)\n }\n });\n }\n\n Object.entries(selectedFilters).forEach(([filterKey, filterValue]) => {\n if (!filterValue || filterValue === DEFAULT_FILTER_OPTION_LABEL) return;\n filters.push({\n match: {\n [`${filterKey}.keyword`]: {\n query: filterValue\n }\n }\n });\n });\n\n setListFilters(filters);\n};\n\nconst getKeywordSearchFilters = schema => {\n if (!schema || !schema.properties) return [];\n\n const { properties = {}, dynamicProperties = {} } = schema;\n\n const propertyKeyword = Object.entries(properties).filter(isFilterKeywordItem);\n const dynamicPropertyKeywords = Object.entries(dynamicProperties).filter(isFilterKeywordItem);\n\n return [...propertyKeyword, ...dynamicPropertyKeywords];\n};\n\nconst isFilterKeywordItem = ([, item]) =>\n item.adminListingOptions && item.adminListingOptions.includeInKeywordSeach === true;\n\nconst findSelectFilters = schema => {\n if (!schema || !schema.properties) return [];\n\n const { properties = {}, dynamicProperties = {} } = schema;\n\n const propertySelects = Object.entries(properties).filter(isFilterSelectItem);\n const dynamicPropertySelects = Object.entries(dynamicProperties).filter(isFilterSelectItem);\n\n return [...propertySelects, ...dynamicPropertySelects];\n};\n\nconst isFilterSelectItem = ([, item]) =>\n item.adminListingOptions && item.adminListingOptions.filterType === 'select';\n\nconst buildQueryFields = (selectFilters, entityId) => {\n if (!Array.isArray(selectFilters) || selectFilters.length === 0) {\n return { gqlFields: '', rawQuery: '{}' };\n }\n\n const aggs = {};\n selectFilters.forEach(([property, details]) => {\n aggs[property] = {\n terms: {\n field: `${property}.keyword`, // todo: handle different field types\n size: 1000, // todo: customise size\n order: {\n _key: 'asc'\n }\n }\n };\n });\n\n const docType = entityId;\n const rawQueryObject = {\n size: 0,\n query: {\n bool: {\n filter: {\n bool: {\n must: [{ match: { docType } }]\n }\n }\n }\n },\n aggs\n };\n const rawQuery = JSON.stringify(rawQueryObject);\n\n const gqlFields = `\n rawResults\n `;\n\n return { gqlFields, rawQuery };\n};\n\nexport { buildQueryFields, updateListFilters, getKeywordSearchFilters, findSelectFilters };\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"querys.js","names":["gql","NOOP_QUERY"],"sources":["../../../../src/components/ListingTable/SearchFilter/querys.js"],"sourcesContent":["import { gql } from '@apollo/client';\n\nconst NOOP_QUERY = gql`\n query NoOp {\n __typename\n }\n`;\n\nexport { NOOP_QUERY };\n"],"mappings":"AAAA,SAASA,GAAG,QAAQ,gBAAgB;AAEpC,MAAMC,UAAU,GAAGD,GAAG;AACtB;AACA;AACA;AACA,CAAC;AAED,SAASC,UAAU","ignoreList":[]}
|
|
@@ -54,13 +54,14 @@ const fetchData = async ({
|
|
|
54
54
|
displayProperties: {
|
|
55
55
|
adminListings: {
|
|
56
56
|
dataSource: {
|
|
57
|
-
source
|
|
57
|
+
source,
|
|
58
|
+
index
|
|
58
59
|
} = {}
|
|
59
60
|
} = {}
|
|
60
61
|
} = {}
|
|
61
62
|
} = entitySchema;
|
|
62
63
|
const isSearchQuery = source === 'search';
|
|
63
|
-
const query = buildListingQuery(entitySchema, isSearchQuery);
|
|
64
|
+
const query = buildListingQuery(entitySchema, index, isSearchQuery);
|
|
64
65
|
const variables = buildVariables({
|
|
65
66
|
entitySchema,
|
|
66
67
|
listFilters,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["buildListingQuery","buildVariables","entitySchema","isSearchQuery","listFilters","queryParams","identifier","sort","offset","limit","where","property","direction","parsedOffset","_objectSpread","Array","isArray","rawQuery","bool","must","filter","term","entityIdentifier","JSON","stringify","fetchData","client","querySettings","displayProperties","adminListings","dataSource","source","query","variables","data","fetchPolicy","searchResults","listingData","results","totalRecords","total"],"sources":["../../../../src/components/ListingTable/service/index.js"],"sourcesContent":["import buildListingQuery from '../../../utils/build-listing-query';\n\nfunction buildVariables({ entitySchema, isSearchQuery, listFilters = [], queryParams = {} }) {\n const { identifier } = entitySchema;\n const { sort, offset, limit, where } = queryParams;\n const [{ property, direction }] = sort;\n const parsedOffset = `${property}:${direction}`;\n\n if (!isSearchQuery)\n return {\n ...queryParams,\n where: !Array.isArray(listFilters) ? listFilters : where\n };\n\n const rawQuery = {\n bool: {\n must: listFilters || [],\n filter: [\n {\n term: {\n entityIdentifier: identifier\n }\n }\n ]\n }\n };\n\n return {\n limit,\n offset,\n sort: parsedOffset,\n where: JSON.stringify(rawQuery)\n };\n}\n\nconst fetchData = async ({ client, querySettings: { entitySchema, queryParams }, listFilters }) => {\n const { displayProperties: { adminListings: { dataSource: { source } = {} } = {} } = {} } =\n entitySchema;\n\n const isSearchQuery = source === 'search';\n const query = buildListingQuery(entitySchema, isSearchQuery);\n const variables = buildVariables({ entitySchema, listFilters, queryParams, isSearchQuery });\n\n const { data = {} } = await client.query({\n query,\n variables,\n fetchPolicy: 'network-only'\n });\n\n if (data.searchResults) {\n return {\n listingData: data.searchResults.results,\n totalRecords: data.searchResults.total\n };\n }\n return data;\n};\n\nexport { fetchData };\n"],"mappings":";;;AAAA,OAAOA,iBAAiB,MAAM,oCAAoC;AAElE,SAASC,cAAcA,CAAC;EAAEC,YAAY;EAAEC,aAAa;EAAEC,WAAW,GAAG,EAAE;EAAEC,WAAW,GAAG,CAAC;AAAE,CAAC,EAAE;EAC3F,MAAM;IAAEC;EAAW,CAAC,GAAGJ,YAAY;EACnC,MAAM;IAAEK,IAAI;IAAEC,MAAM;IAAEC,KAAK;IAAEC;EAAM,CAAC,GAAGL,WAAW;EAClD,MAAM,CAAC;IAAEM,QAAQ;IAAEC;EAAU,CAAC,CAAC,GAAGL,IAAI;EACtC,MAAMM,YAAY,GAAG,GAAGF,QAAQ,IAAIC,SAAS,EAAE;EAE/C,IAAI,CAACT,aAAa,EAChB,OAAAW,aAAA,CAAAA,aAAA,KACKT,WAAW;IACdK,KAAK,EAAE,CAACK,KAAK,CAACC,OAAO,CAACZ,WAAW,CAAC,GAAGA,WAAW,GAAGM;EAAK;EAG5D,MAAMO,QAAQ,GAAG;IACfC,IAAI,EAAE;MACJC,IAAI,EAAEf,WAAW,IAAI,EAAE;MACvBgB,MAAM,EAAE,CACN;QACEC,IAAI,EAAE;UACJC,gBAAgB,EAAEhB;QACpB;MACF,CAAC;IAEL;EACF,CAAC;EAED,OAAO;IACLG,KAAK;IACLD,MAAM;IACND,IAAI,EAAEM,YAAY;IAClBH,KAAK,EAAEa,IAAI,CAACC,SAAS,CAACP,QAAQ;EAChC,CAAC;AACH;AAEA,MAAMQ,SAAS,GAAG,MAAAA,CAAO;EAAEC,MAAM;EAAEC,aAAa,EAAE;IAAEzB,YAAY;IAAEG;EAAY,CAAC;EAAED;AAAY,CAAC,KAAK;EACjG,MAAM;IAAEwB,iBAAiB,EAAE;MAAEC,aAAa,EAAE;QAAEC,UAAU,EAAE;UAAEC;
|
|
1
|
+
{"version":3,"file":"index.js","names":["buildListingQuery","buildVariables","entitySchema","isSearchQuery","listFilters","queryParams","identifier","sort","offset","limit","where","property","direction","parsedOffset","_objectSpread","Array","isArray","rawQuery","bool","must","filter","term","entityIdentifier","JSON","stringify","fetchData","client","querySettings","displayProperties","adminListings","dataSource","source","index","query","variables","data","fetchPolicy","searchResults","listingData","results","totalRecords","total"],"sources":["../../../../src/components/ListingTable/service/index.js"],"sourcesContent":["import buildListingQuery from '../../../utils/build-listing-query';\n\nfunction buildVariables({ entitySchema, isSearchQuery, listFilters = [], queryParams = {} }) {\n const { identifier } = entitySchema;\n const { sort, offset, limit, where } = queryParams;\n const [{ property, direction }] = sort;\n const parsedOffset = `${property}:${direction}`;\n\n if (!isSearchQuery)\n return {\n ...queryParams,\n where: !Array.isArray(listFilters) ? listFilters : where\n };\n\n const rawQuery = {\n bool: {\n must: listFilters || [],\n filter: [\n {\n term: {\n entityIdentifier: identifier\n }\n }\n ]\n }\n };\n\n return {\n limit,\n offset,\n sort: parsedOffset,\n where: JSON.stringify(rawQuery)\n };\n}\n\nconst fetchData = async ({ client, querySettings: { entitySchema, queryParams }, listFilters }) => {\n const { displayProperties: { adminListings: { dataSource: { source, index } = {} } = {} } = {} } =\n entitySchema;\n\n const isSearchQuery = source === 'search';\n const query = buildListingQuery(entitySchema, index, isSearchQuery);\n const variables = buildVariables({ entitySchema, listFilters, queryParams, isSearchQuery });\n\n const { data = {} } = await client.query({\n query,\n variables,\n fetchPolicy: 'network-only'\n });\n\n if (data.searchResults) {\n return {\n listingData: data.searchResults.results,\n totalRecords: data.searchResults.total\n };\n }\n return data;\n};\n\nexport { fetchData };\n"],"mappings":";;;AAAA,OAAOA,iBAAiB,MAAM,oCAAoC;AAElE,SAASC,cAAcA,CAAC;EAAEC,YAAY;EAAEC,aAAa;EAAEC,WAAW,GAAG,EAAE;EAAEC,WAAW,GAAG,CAAC;AAAE,CAAC,EAAE;EAC3F,MAAM;IAAEC;EAAW,CAAC,GAAGJ,YAAY;EACnC,MAAM;IAAEK,IAAI;IAAEC,MAAM;IAAEC,KAAK;IAAEC;EAAM,CAAC,GAAGL,WAAW;EAClD,MAAM,CAAC;IAAEM,QAAQ;IAAEC;EAAU,CAAC,CAAC,GAAGL,IAAI;EACtC,MAAMM,YAAY,GAAG,GAAGF,QAAQ,IAAIC,SAAS,EAAE;EAE/C,IAAI,CAACT,aAAa,EAChB,OAAAW,aAAA,CAAAA,aAAA,KACKT,WAAW;IACdK,KAAK,EAAE,CAACK,KAAK,CAACC,OAAO,CAACZ,WAAW,CAAC,GAAGA,WAAW,GAAGM;EAAK;EAG5D,MAAMO,QAAQ,GAAG;IACfC,IAAI,EAAE;MACJC,IAAI,EAAEf,WAAW,IAAI,EAAE;MACvBgB,MAAM,EAAE,CACN;QACEC,IAAI,EAAE;UACJC,gBAAgB,EAAEhB;QACpB;MACF,CAAC;IAEL;EACF,CAAC;EAED,OAAO;IACLG,KAAK;IACLD,MAAM;IACND,IAAI,EAAEM,YAAY;IAClBH,KAAK,EAAEa,IAAI,CAACC,SAAS,CAACP,QAAQ;EAChC,CAAC;AACH;AAEA,MAAMQ,SAAS,GAAG,MAAAA,CAAO;EAAEC,MAAM;EAAEC,aAAa,EAAE;IAAEzB,YAAY;IAAEG;EAAY,CAAC;EAAED;AAAY,CAAC,KAAK;EACjG,MAAM;IAAEwB,iBAAiB,EAAE;MAAEC,aAAa,EAAE;QAAEC,UAAU,EAAE;UAAEC,MAAM;UAAEC;QAAM,CAAC,GAAG,CAAC;MAAE,CAAC,GAAG,CAAC;IAAE,CAAC,GAAG,CAAC;EAAE,CAAC,GAC9F9B,YAAY;EAEd,MAAMC,aAAa,GAAG4B,MAAM,KAAK,QAAQ;EACzC,MAAME,KAAK,GAAGjC,iBAAiB,CAACE,YAAY,EAAE8B,KAAK,EAAE7B,aAAa,CAAC;EACnE,MAAM+B,SAAS,GAAGjC,cAAc,CAAC;IAAEC,YAAY;IAAEE,WAAW;IAAEC,WAAW;IAAEF;EAAc,CAAC,CAAC;EAE3F,MAAM;IAAEgC,IAAI,GAAG,CAAC;EAAE,CAAC,GAAG,MAAMT,MAAM,CAACO,KAAK,CAAC;IACvCA,KAAK;IACLC,SAAS;IACTE,WAAW,EAAE;EACf,CAAC,CAAC;EAEF,IAAID,IAAI,CAACE,aAAa,EAAE;IACtB,OAAO;MACLC,WAAW,EAAEH,IAAI,CAACE,aAAa,CAACE,OAAO;MACvCC,YAAY,EAAEL,IAAI,CAACE,aAAa,CAACI;IACnC,CAAC;EACH;EACA,OAAON,IAAI;AACb,CAAC;AAED,SAASV,SAAS","ignoreList":[]}
|
package/lib-es/constants.js
CHANGED
|
@@ -27,6 +27,7 @@ const PAGE_BUILDER_TAB = 'Page builder';
|
|
|
27
27
|
const PAGE_BUILDER_TAB_INDEX = 1;
|
|
28
28
|
const EDITOR_VIEW_TAB = 'Editor view';
|
|
29
29
|
const EDITOR_VIEW_TAB_INDEX = 0;
|
|
30
|
+
const ENTER_KEY = 'Enter';
|
|
30
31
|
const ICON_SIZE = {
|
|
31
32
|
WIDTH: '25px',
|
|
32
33
|
HEIGHT: '25px'
|
|
@@ -35,5 +36,6 @@ const ICON_COLOR = {
|
|
|
35
36
|
STROKE: '#63779C',
|
|
36
37
|
FILL: '#63779C'
|
|
37
38
|
};
|
|
38
|
-
|
|
39
|
+
const DEFAULT_FILTER_OPTION_LABEL = 'Any';
|
|
40
|
+
export { DATA_LISTING_PREFIX, ENTITY_PUBLISHED, KEY_TO_CHECK, LEAVE_PAGE_MESSAGE, MENU_PERMISSIONS, PAGE_BUILDER, PLUGIN_NAME, PREVIEW_INTERFACE, SELECT_DEFAULT_VALUE, TEXT_CONTENT_TYPE, PAGE_BUILDER_FIELD_ID, PAGE_BUILDER_TEMPLATE_FIELD_ID, ERROR, SUCCESS, PUBLISHED, UNPUBLISHED, SAVE_BUTTON_TEXTS, ACTIONS, PAGE_BUILDER_TAB_INDEX, EDITOR_VIEW_TAB_INDEX, EDITOR_VIEW_TAB, PAGE_BUILDER_TAB, UNPUBLISHED_WARNING, SAVE_BEFORE_PUBLISH_MESSAGE, ICON_SIZE, ICON_COLOR, PAGE_NOT_FOUND, ENTER_KEY, DEFAULT_FILTER_OPTION_LABEL };
|
|
39
41
|
//# sourceMappingURL=constants.js.map
|
package/lib-es/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","names":["PLUGIN_NAME","DATA_LISTING_PREFIX","PAGE_BUILDER","TEXT_CONTENT_TYPE","ENTITY_PUBLISHED","SELECT_DEFAULT_VALUE","LEAVE_PAGE_MESSAGE","KEY_TO_CHECK","MENU_PERMISSIONS","PREVIEW_INTERFACE","PAGE_BUILDER_FIELD_ID","PAGE_BUILDER_TEMPLATE_FIELD_ID","ERROR","SUCCESS","PUBLISHED","UNPUBLISHED","SAVE_BUTTON_TEXTS","save","saved","saving","ACTIONS","UNPUBLISHED_WARNING","PAGE_NOT_FOUND","SAVE_BEFORE_PUBLISH_MESSAGE","PAGE_BUILDER_TAB","PAGE_BUILDER_TAB_INDEX","EDITOR_VIEW_TAB","EDITOR_VIEW_TAB_INDEX","ICON_SIZE","WIDTH","HEIGHT","ICON_COLOR","STROKE","FILL"],"sources":["../src/constants.js"],"sourcesContent":["const PLUGIN_NAME = 'data-ui';\nconst DATA_LISTING_PREFIX = '/data-listing';\nconst PAGE_BUILDER = 'pageBuilder';\nconst TEXT_CONTENT_TYPE = 'Publish';\nconst ENTITY_PUBLISHED = 'published';\nconst SELECT_DEFAULT_VALUE = 'Please Choose...';\nconst LEAVE_PAGE_MESSAGE = 'You are going to leave without saving. Are you sure you want to leave?';\nconst KEY_TO_CHECK = 'values.slug';\nconst MENU_PERMISSIONS = ['update:any', 'update:own', 'create:any', 'create:own'];\nconst PREVIEW_INTERFACE = 'preview/can-preview';\nconst PAGE_BUILDER_FIELD_ID = 'pageBuilder';\nconst PAGE_BUILDER_TEMPLATE_FIELD_ID = 'pageBuilderTemplateId';\nconst ERROR = 'error';\nconst SUCCESS = 'success';\nconst PUBLISHED = 'published';\nconst UNPUBLISHED = 'unpublished';\nconst SAVE_BUTTON_TEXTS = { save: 'save', saved: 'saved', saving: 'saving' };\nconst ACTIONS = 'actions';\nconst UNPUBLISHED_WARNING = 'Page already unpublished';\nconst PAGE_NOT_FOUND = 'Page not found';\nconst SAVE_BEFORE_PUBLISH_MESSAGE =\n 'You have to click save to create the record before you can publish';\n\nconst PAGE_BUILDER_TAB = 'Page builder';\nconst PAGE_BUILDER_TAB_INDEX = 1;\nconst EDITOR_VIEW_TAB = 'Editor view';\nconst EDITOR_VIEW_TAB_INDEX = 0;\n\nconst ICON_SIZE = {\n WIDTH: '25px',\n HEIGHT: '25px'\n};\n\nconst ICON_COLOR = {\n STROKE: '#63779C',\n FILL: '#63779C'\n};\n\nexport {\n DATA_LISTING_PREFIX,\n ENTITY_PUBLISHED,\n KEY_TO_CHECK,\n LEAVE_PAGE_MESSAGE,\n MENU_PERMISSIONS,\n PAGE_BUILDER,\n PLUGIN_NAME,\n PREVIEW_INTERFACE,\n SELECT_DEFAULT_VALUE,\n TEXT_CONTENT_TYPE,\n PAGE_BUILDER_FIELD_ID,\n PAGE_BUILDER_TEMPLATE_FIELD_ID,\n ERROR,\n SUCCESS,\n PUBLISHED,\n UNPUBLISHED,\n SAVE_BUTTON_TEXTS,\n ACTIONS,\n PAGE_BUILDER_TAB_INDEX,\n EDITOR_VIEW_TAB_INDEX,\n EDITOR_VIEW_TAB,\n PAGE_BUILDER_TAB,\n UNPUBLISHED_WARNING,\n SAVE_BEFORE_PUBLISH_MESSAGE,\n ICON_SIZE,\n ICON_COLOR,\n PAGE_NOT_FOUND\n};\n"],"mappings":"AAAA,MAAMA,WAAW,GAAG,SAAS;AAC7B,MAAMC,mBAAmB,GAAG,eAAe;AAC3C,MAAMC,YAAY,GAAG,aAAa;AAClC,MAAMC,iBAAiB,GAAG,SAAS;AACnC,MAAMC,gBAAgB,GAAG,WAAW;AACpC,MAAMC,oBAAoB,GAAG,kBAAkB;AAC/C,MAAMC,kBAAkB,GAAG,wEAAwE;AACnG,MAAMC,YAAY,GAAG,aAAa;AAClC,MAAMC,gBAAgB,GAAG,CAAC,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,CAAC;AACjF,MAAMC,iBAAiB,GAAG,qBAAqB;AAC/C,MAAMC,qBAAqB,GAAG,aAAa;AAC3C,MAAMC,8BAA8B,GAAG,uBAAuB;AAC9D,MAAMC,KAAK,GAAG,OAAO;AACrB,MAAMC,OAAO,GAAG,SAAS;AACzB,MAAMC,SAAS,GAAG,WAAW;AAC7B,MAAMC,WAAW,GAAG,aAAa;AACjC,MAAMC,iBAAiB,GAAG;EAAEC,IAAI,EAAE,MAAM;EAAEC,KAAK,EAAE,OAAO;EAAEC,MAAM,EAAE;AAAS,CAAC;AAC5E,MAAMC,OAAO,GAAG,SAAS;AACzB,MAAMC,mBAAmB,GAAG,0BAA0B;AACtD,MAAMC,cAAc,GAAG,gBAAgB;AACvC,MAAMC,2BAA2B,GAC/B,oEAAoE;AAEtE,MAAMC,gBAAgB,GAAG,cAAc;AACvC,MAAMC,sBAAsB,GAAG,CAAC;AAChC,MAAMC,eAAe,GAAG,aAAa;AACrC,MAAMC,qBAAqB,GAAG,CAAC;AAE/B,MAAMC,SAAS,GAAG;EAChBC,KAAK,EAAE,MAAM;EACbC,MAAM,EAAE;AACV,CAAC;AAED,MAAMC,UAAU,GAAG;EACjBC,MAAM,EAAE,SAAS;EACjBC,IAAI,EAAE;AACR,CAAC;AAED,
|
|
1
|
+
{"version":3,"file":"constants.js","names":["PLUGIN_NAME","DATA_LISTING_PREFIX","PAGE_BUILDER","TEXT_CONTENT_TYPE","ENTITY_PUBLISHED","SELECT_DEFAULT_VALUE","LEAVE_PAGE_MESSAGE","KEY_TO_CHECK","MENU_PERMISSIONS","PREVIEW_INTERFACE","PAGE_BUILDER_FIELD_ID","PAGE_BUILDER_TEMPLATE_FIELD_ID","ERROR","SUCCESS","PUBLISHED","UNPUBLISHED","SAVE_BUTTON_TEXTS","save","saved","saving","ACTIONS","UNPUBLISHED_WARNING","PAGE_NOT_FOUND","SAVE_BEFORE_PUBLISH_MESSAGE","PAGE_BUILDER_TAB","PAGE_BUILDER_TAB_INDEX","EDITOR_VIEW_TAB","EDITOR_VIEW_TAB_INDEX","ENTER_KEY","ICON_SIZE","WIDTH","HEIGHT","ICON_COLOR","STROKE","FILL","DEFAULT_FILTER_OPTION_LABEL"],"sources":["../src/constants.js"],"sourcesContent":["const PLUGIN_NAME = 'data-ui';\nconst DATA_LISTING_PREFIX = '/data-listing';\nconst PAGE_BUILDER = 'pageBuilder';\nconst TEXT_CONTENT_TYPE = 'Publish';\nconst ENTITY_PUBLISHED = 'published';\nconst SELECT_DEFAULT_VALUE = 'Please Choose...';\nconst LEAVE_PAGE_MESSAGE = 'You are going to leave without saving. Are you sure you want to leave?';\nconst KEY_TO_CHECK = 'values.slug';\nconst MENU_PERMISSIONS = ['update:any', 'update:own', 'create:any', 'create:own'];\nconst PREVIEW_INTERFACE = 'preview/can-preview';\nconst PAGE_BUILDER_FIELD_ID = 'pageBuilder';\nconst PAGE_BUILDER_TEMPLATE_FIELD_ID = 'pageBuilderTemplateId';\nconst ERROR = 'error';\nconst SUCCESS = 'success';\nconst PUBLISHED = 'published';\nconst UNPUBLISHED = 'unpublished';\nconst SAVE_BUTTON_TEXTS = { save: 'save', saved: 'saved', saving: 'saving' };\nconst ACTIONS = 'actions';\nconst UNPUBLISHED_WARNING = 'Page already unpublished';\nconst PAGE_NOT_FOUND = 'Page not found';\nconst SAVE_BEFORE_PUBLISH_MESSAGE =\n 'You have to click save to create the record before you can publish';\n\nconst PAGE_BUILDER_TAB = 'Page builder';\nconst PAGE_BUILDER_TAB_INDEX = 1;\nconst EDITOR_VIEW_TAB = 'Editor view';\nconst EDITOR_VIEW_TAB_INDEX = 0;\n\nconst ENTER_KEY = 'Enter';\n\nconst ICON_SIZE = {\n WIDTH: '25px',\n HEIGHT: '25px'\n};\n\nconst ICON_COLOR = {\n STROKE: '#63779C',\n FILL: '#63779C'\n};\n\nconst DEFAULT_FILTER_OPTION_LABEL = 'Any';\n\nexport {\n DATA_LISTING_PREFIX,\n ENTITY_PUBLISHED,\n KEY_TO_CHECK,\n LEAVE_PAGE_MESSAGE,\n MENU_PERMISSIONS,\n PAGE_BUILDER,\n PLUGIN_NAME,\n PREVIEW_INTERFACE,\n SELECT_DEFAULT_VALUE,\n TEXT_CONTENT_TYPE,\n PAGE_BUILDER_FIELD_ID,\n PAGE_BUILDER_TEMPLATE_FIELD_ID,\n ERROR,\n SUCCESS,\n PUBLISHED,\n UNPUBLISHED,\n SAVE_BUTTON_TEXTS,\n ACTIONS,\n PAGE_BUILDER_TAB_INDEX,\n EDITOR_VIEW_TAB_INDEX,\n EDITOR_VIEW_TAB,\n PAGE_BUILDER_TAB,\n UNPUBLISHED_WARNING,\n SAVE_BEFORE_PUBLISH_MESSAGE,\n ICON_SIZE,\n ICON_COLOR,\n PAGE_NOT_FOUND,\n ENTER_KEY,\n DEFAULT_FILTER_OPTION_LABEL\n};\n"],"mappings":"AAAA,MAAMA,WAAW,GAAG,SAAS;AAC7B,MAAMC,mBAAmB,GAAG,eAAe;AAC3C,MAAMC,YAAY,GAAG,aAAa;AAClC,MAAMC,iBAAiB,GAAG,SAAS;AACnC,MAAMC,gBAAgB,GAAG,WAAW;AACpC,MAAMC,oBAAoB,GAAG,kBAAkB;AAC/C,MAAMC,kBAAkB,GAAG,wEAAwE;AACnG,MAAMC,YAAY,GAAG,aAAa;AAClC,MAAMC,gBAAgB,GAAG,CAAC,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,CAAC;AACjF,MAAMC,iBAAiB,GAAG,qBAAqB;AAC/C,MAAMC,qBAAqB,GAAG,aAAa;AAC3C,MAAMC,8BAA8B,GAAG,uBAAuB;AAC9D,MAAMC,KAAK,GAAG,OAAO;AACrB,MAAMC,OAAO,GAAG,SAAS;AACzB,MAAMC,SAAS,GAAG,WAAW;AAC7B,MAAMC,WAAW,GAAG,aAAa;AACjC,MAAMC,iBAAiB,GAAG;EAAEC,IAAI,EAAE,MAAM;EAAEC,KAAK,EAAE,OAAO;EAAEC,MAAM,EAAE;AAAS,CAAC;AAC5E,MAAMC,OAAO,GAAG,SAAS;AACzB,MAAMC,mBAAmB,GAAG,0BAA0B;AACtD,MAAMC,cAAc,GAAG,gBAAgB;AACvC,MAAMC,2BAA2B,GAC/B,oEAAoE;AAEtE,MAAMC,gBAAgB,GAAG,cAAc;AACvC,MAAMC,sBAAsB,GAAG,CAAC;AAChC,MAAMC,eAAe,GAAG,aAAa;AACrC,MAAMC,qBAAqB,GAAG,CAAC;AAE/B,MAAMC,SAAS,GAAG,OAAO;AAEzB,MAAMC,SAAS,GAAG;EAChBC,KAAK,EAAE,MAAM;EACbC,MAAM,EAAE;AACV,CAAC;AAED,MAAMC,UAAU,GAAG;EACjBC,MAAM,EAAE,SAAS;EACjBC,IAAI,EAAE;AACR,CAAC;AAED,MAAMC,2BAA2B,GAAG,KAAK;AAEzC,SACElC,mBAAmB,EACnBG,gBAAgB,EAChBG,YAAY,EACZD,kBAAkB,EAClBE,gBAAgB,EAChBN,YAAY,EACZF,WAAW,EACXS,iBAAiB,EACjBJ,oBAAoB,EACpBF,iBAAiB,EACjBO,qBAAqB,EACrBC,8BAA8B,EAC9BC,KAAK,EACLC,OAAO,EACPC,SAAS,EACTC,WAAW,EACXC,iBAAiB,EACjBI,OAAO,EACPK,sBAAsB,EACtBE,qBAAqB,EACrBD,eAAe,EACfF,gBAAgB,EAChBH,mBAAmB,EACnBE,2BAA2B,EAC3BM,SAAS,EACTG,UAAU,EACVV,cAAc,EACdM,SAAS,EACTO,2BAA2B","ignoreList":[]}
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import { gql } from '@apollo/client';
|
|
2
2
|
import { BlazeError } from '@blaze-cms/core-errors';
|
|
3
3
|
import { getDynamicQuery } from '@blaze-cms/admin-ui-utils';
|
|
4
|
-
const buildAdminSearchQuery = entitySchema => {
|
|
4
|
+
const buildAdminSearchQuery = (entitySchema, index) => {
|
|
5
5
|
const {
|
|
6
6
|
listingProperties = []
|
|
7
7
|
} = entitySchema || {};
|
|
8
8
|
const parsedProperties = `id, ${listingProperties.join(' ') || 'id name'}`;
|
|
9
|
-
return getDynamicQuery('ADMIN_SEARCH')([entitySchema], parsedProperties, true);
|
|
9
|
+
return getDynamicQuery('ADMIN_SEARCH')([entitySchema], parsedProperties, true, index);
|
|
10
10
|
};
|
|
11
|
-
function buildListingQuery(entitySchema, isSearchQuery) {
|
|
11
|
+
function buildListingQuery(entitySchema, index, isSearchQuery) {
|
|
12
12
|
if (!entitySchema.actions || !entitySchema.actions.getAll || !entitySchema.listingProperties) {
|
|
13
13
|
throw new BlazeError('Listing query requires getAll action and listingProperties from entity schema');
|
|
14
14
|
}
|
|
15
|
-
if (isSearchQuery) return buildAdminSearchQuery(entitySchema);
|
|
15
|
+
if (isSearchQuery) return buildAdminSearchQuery(entitySchema, index);
|
|
16
16
|
const sortType = entitySchema.actions.getAll[0].toUpperCase() + entitySchema.actions.getAll.substr(1);
|
|
17
17
|
return gql`
|
|
18
18
|
query ${entitySchema.actions.getAll}($where: JSON, $limit: Int, $offset:Int, $sort: [${sortType}SortItem]) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-listing-query.js","names":["gql","BlazeError","getDynamicQuery","buildAdminSearchQuery","entitySchema","listingProperties","parsedProperties","join","buildListingQuery","isSearchQuery","actions","getAll","sortType","toUpperCase","substr","countAll"],"sources":["../../src/utils/build-listing-query.js"],"sourcesContent":["import { gql } from '@apollo/client';\nimport { BlazeError } from '@blaze-cms/core-errors';\nimport { getDynamicQuery } from '@blaze-cms/admin-ui-utils';\n\nconst buildAdminSearchQuery = entitySchema => {\n const { listingProperties = [] } = entitySchema || {};\n const parsedProperties = `id, ${listingProperties.join(' ') || 'id name'}`;\n\n return getDynamicQuery('ADMIN_SEARCH')([entitySchema], parsedProperties, true);\n};\n\nfunction buildListingQuery(entitySchema, isSearchQuery) {\n if (!entitySchema.actions || !entitySchema.actions.getAll || !entitySchema.listingProperties) {\n throw new BlazeError(\n 'Listing query requires getAll action and listingProperties from entity schema'\n );\n }\n\n if (isSearchQuery) return buildAdminSearchQuery(entitySchema);\n\n const sortType =\n entitySchema.actions.getAll[0].toUpperCase() + entitySchema.actions.getAll.substr(1);\n\n return gql`\n query ${\n entitySchema.actions.getAll\n }($where: JSON, $limit: Int, $offset:Int, $sort: [${sortType}SortItem]) {\n listingData: ${\n entitySchema.actions.getAll\n }(where: $where, limit: $limit, offset:$offset, sort:$sort){\n id,\n ${entitySchema.listingProperties.join(',\\n')}\n }\n totalRecords: ${entitySchema.actions.countAll}(where: $where)\n }\n `;\n}\n\nexport default buildListingQuery;\n"],"mappings":"AAAA,SAASA,GAAG,QAAQ,gBAAgB;AACpC,SAASC,UAAU,QAAQ,wBAAwB;AACnD,SAASC,eAAe,QAAQ,2BAA2B;AAE3D,MAAMC,qBAAqB,
|
|
1
|
+
{"version":3,"file":"build-listing-query.js","names":["gql","BlazeError","getDynamicQuery","buildAdminSearchQuery","entitySchema","index","listingProperties","parsedProperties","join","buildListingQuery","isSearchQuery","actions","getAll","sortType","toUpperCase","substr","countAll"],"sources":["../../src/utils/build-listing-query.js"],"sourcesContent":["import { gql } from '@apollo/client';\nimport { BlazeError } from '@blaze-cms/core-errors';\nimport { getDynamicQuery } from '@blaze-cms/admin-ui-utils';\n\nconst buildAdminSearchQuery = (entitySchema, index) => {\n const { listingProperties = [] } = entitySchema || {};\n const parsedProperties = `id, ${listingProperties.join(' ') || 'id name'}`;\n\n return getDynamicQuery('ADMIN_SEARCH')([entitySchema], parsedProperties, true, index);\n};\n\nfunction buildListingQuery(entitySchema, index, isSearchQuery) {\n if (!entitySchema.actions || !entitySchema.actions.getAll || !entitySchema.listingProperties) {\n throw new BlazeError(\n 'Listing query requires getAll action and listingProperties from entity schema'\n );\n }\n\n if (isSearchQuery) return buildAdminSearchQuery(entitySchema, index);\n\n const sortType =\n entitySchema.actions.getAll[0].toUpperCase() + entitySchema.actions.getAll.substr(1);\n\n return gql`\n query ${\n entitySchema.actions.getAll\n }($where: JSON, $limit: Int, $offset:Int, $sort: [${sortType}SortItem]) {\n listingData: ${\n entitySchema.actions.getAll\n }(where: $where, limit: $limit, offset:$offset, sort:$sort){\n id,\n ${entitySchema.listingProperties.join(',\\n')}\n }\n totalRecords: ${entitySchema.actions.countAll}(where: $where)\n }\n `;\n}\n\nexport default buildListingQuery;\n"],"mappings":"AAAA,SAASA,GAAG,QAAQ,gBAAgB;AACpC,SAASC,UAAU,QAAQ,wBAAwB;AACnD,SAASC,eAAe,QAAQ,2BAA2B;AAE3D,MAAMC,qBAAqB,GAAGA,CAACC,YAAY,EAAEC,KAAK,KAAK;EACrD,MAAM;IAAEC,iBAAiB,GAAG;EAAG,CAAC,GAAGF,YAAY,IAAI,CAAC,CAAC;EACrD,MAAMG,gBAAgB,GAAG,OAAOD,iBAAiB,CAACE,IAAI,CAAC,GAAG,CAAC,IAAI,SAAS,EAAE;EAE1E,OAAON,eAAe,CAAC,cAAc,CAAC,CAAC,CAACE,YAAY,CAAC,EAAEG,gBAAgB,EAAE,IAAI,EAAEF,KAAK,CAAC;AACvF,CAAC;AAED,SAASI,iBAAiBA,CAACL,YAAY,EAAEC,KAAK,EAAEK,aAAa,EAAE;EAC7D,IAAI,CAACN,YAAY,CAACO,OAAO,IAAI,CAACP,YAAY,CAACO,OAAO,CAACC,MAAM,IAAI,CAACR,YAAY,CAACE,iBAAiB,EAAE;IAC5F,MAAM,IAAIL,UAAU,CAClB,+EACF,CAAC;EACH;EAEA,IAAIS,aAAa,EAAE,OAAOP,qBAAqB,CAACC,YAAY,EAAEC,KAAK,CAAC;EAEpE,MAAMQ,QAAQ,GACZT,YAAY,CAACO,OAAO,CAACC,MAAM,CAAC,CAAC,CAAC,CAACE,WAAW,CAAC,CAAC,GAAGV,YAAY,CAACO,OAAO,CAACC,MAAM,CAACG,MAAM,CAAC,CAAC,CAAC;EAEtF,OAAOf,GAAG;AACZ,YACMI,YAAY,CAACO,OAAO,CAACC,MAAM,oDACuBC,QAAQ;AAChE,qBACQT,YAAY,CAACO,OAAO,CAACC,MAAM;AACnC;AACA,UACUR,YAAY,CAACE,iBAAiB,CAACE,IAAI,CAAC,KAAK,CAAC;AACpD;AACA,sBAAsBJ,YAAY,CAACO,OAAO,CAACK,QAAQ;AACnD;AACA,GAAG;AACH;AAEA,eAAeP,iBAAiB","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@blaze-cms/plugin-data-ui",
|
|
3
|
-
"version": "0.146.0-node18-core-styles-tooltips.
|
|
3
|
+
"version": "0.146.0-node18-core-styles-tooltips.5",
|
|
4
4
|
"description": "Blaze plugin data ui",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"module": "lib-es/index.js",
|
|
@@ -27,11 +27,11 @@
|
|
|
27
27
|
},
|
|
28
28
|
"license": "GPL-3.0",
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@blaze-cms/admin-ui-utils": "0.146.0-node18-core-styles-tooltips.
|
|
30
|
+
"@blaze-cms/admin-ui-utils": "0.146.0-node18-core-styles-tooltips.5",
|
|
31
31
|
"@blaze-cms/core-errors": "0.146.0-node18-core-styles-tooltips.3",
|
|
32
32
|
"@blaze-cms/plugin-render-hooks-ui": "0.146.0-node18-core-styles-tooltips.3",
|
|
33
|
-
"@blaze-cms/react-form-builder": "0.146.0-node18-core-styles-tooltips.
|
|
34
|
-
"@blaze-cms/react-page-builder": "0.146.0-node18-core-styles-tooltips.
|
|
33
|
+
"@blaze-cms/react-form-builder": "0.146.0-node18-core-styles-tooltips.5",
|
|
34
|
+
"@blaze-cms/react-page-builder": "0.146.0-node18-core-styles-tooltips.5",
|
|
35
35
|
"@blaze-cms/setup-ui": "0.146.0-node18-core-styles-tooltips.3",
|
|
36
36
|
"@blaze-cms/versioning-ui": "0.146.0-node18-core-styles-tooltips.3",
|
|
37
37
|
"@blaze-react/button": "0.8.0-alpha.82",
|
|
@@ -69,5 +69,5 @@
|
|
|
69
69
|
"lib/*",
|
|
70
70
|
"lib-es/*"
|
|
71
71
|
],
|
|
72
|
-
"gitHead": "
|
|
72
|
+
"gitHead": "d6b0cd14687e7fe634aade939e3b28c67aabda02"
|
|
73
73
|
}
|
|
@@ -70,6 +70,8 @@ const Entity = ({
|
|
|
70
70
|
const [saveButtonText, setSaveButtonText] = useState(SAVE_BUTTON_TEXTS.save);
|
|
71
71
|
const [externalUpdateTime, setExternalUpdateTime] = useState(null);
|
|
72
72
|
const [suppressPrompt, setSuppressPrompt] = useState(false);
|
|
73
|
+
const [isRightSidebarOpen, setIsRightSidebarOpen] = useState(true);
|
|
74
|
+
const handleToggleRightSidebar = () => setIsRightSidebarOpen(!isRightSidebarOpen);
|
|
73
75
|
|
|
74
76
|
const isCreatePage = history.location.pathname.includes('create');
|
|
75
77
|
const [isNewEntity, setIsNewEntity] = useState(isCreatePage);
|
|
@@ -453,7 +455,10 @@ const Entity = ({
|
|
|
453
455
|
/>
|
|
454
456
|
)}
|
|
455
457
|
|
|
456
|
-
<div
|
|
458
|
+
<div
|
|
459
|
+
className={`page__content--fixed${
|
|
460
|
+
!isRightSidebarOpen ? ' right-sidebar-collapsed' : ''
|
|
461
|
+
}`}>
|
|
457
462
|
<div className="page__content">
|
|
458
463
|
<div className="content">
|
|
459
464
|
<RenderHook
|
|
@@ -484,13 +489,18 @@ const Entity = ({
|
|
|
484
489
|
</div>
|
|
485
490
|
</div>
|
|
486
491
|
|
|
487
|
-
<div
|
|
492
|
+
<div
|
|
493
|
+
className={`column column--one-third page-sidebar page-sidebar--relations${
|
|
494
|
+
!isRightSidebarOpen ? ' sidebar--collapsed' : ''
|
|
495
|
+
}`}>
|
|
488
496
|
{showSideBarRelations && (
|
|
489
497
|
<SideBarRelations
|
|
490
498
|
entity={entity}
|
|
491
499
|
formData={formData.values}
|
|
492
500
|
schema={schema}
|
|
493
501
|
onChange={onChangeSideBarRelations}
|
|
502
|
+
isOpen={isRightSidebarOpen}
|
|
503
|
+
onToggle={handleToggleRightSidebar}
|
|
494
504
|
/>
|
|
495
505
|
)}
|
|
496
506
|
</div>
|
|
@@ -10,10 +10,16 @@ import { PUBLISHED, UNPUBLISHED } from '../../../../constants';
|
|
|
10
10
|
import CustomSidebarInfoContainer from './container/CustomSidebarInfoContainer';
|
|
11
11
|
import EntityNavLinks from '../EntitiyNavLinks';
|
|
12
12
|
|
|
13
|
-
const SideBarRelations = ({ schema, onChange, formData, entity }) => {
|
|
13
|
+
const SideBarRelations = ({ schema, onChange, formData, entity, isOpen, onToggle }) => {
|
|
14
14
|
const { relation: RelationComponent } = formFieldTypes;
|
|
15
|
-
const {
|
|
16
|
-
|
|
15
|
+
const {
|
|
16
|
+
formattedStatus,
|
|
17
|
+
formattedUpdated,
|
|
18
|
+
formattedCreated,
|
|
19
|
+
formattedPublished,
|
|
20
|
+
updatedBy,
|
|
21
|
+
status
|
|
22
|
+
} = formData;
|
|
17
23
|
const client = useApolloClient();
|
|
18
24
|
|
|
19
25
|
const [relationsComponents, setRelationsComponents] = useState(null);
|
|
@@ -58,7 +64,16 @@ const SideBarRelations = ({ schema, onChange, formData, entity }) => {
|
|
|
58
64
|
});
|
|
59
65
|
|
|
60
66
|
return (
|
|
61
|
-
<div
|
|
67
|
+
<div
|
|
68
|
+
className={classnames('sidebar', { 'sidebar--collapsed': !isOpen })}
|
|
69
|
+
data-testid="sideBarRelations-main-div">
|
|
70
|
+
<div
|
|
71
|
+
className="sidebar__toggle-button"
|
|
72
|
+
onClick={onToggle}
|
|
73
|
+
role="button"
|
|
74
|
+
aria-label={isOpen ? 'Collapse sidebar' : 'Expand sidebar'}>
|
|
75
|
+
<i className="material-icons">{isOpen ? 'keyboard_arrow_right' : 'keyboard_arrow_left'}</i>
|
|
76
|
+
</div>
|
|
62
77
|
<div className="sidebar__content">
|
|
63
78
|
<div className="sidebar__status">
|
|
64
79
|
{formattedCreated && (
|
|
@@ -82,6 +97,11 @@ const SideBarRelations = ({ schema, onChange, formData, entity }) => {
|
|
|
82
97
|
<p>
|
|
83
98
|
Updated: <span>{formattedUpdated}</span>
|
|
84
99
|
</p>
|
|
100
|
+
{updatedBy && (
|
|
101
|
+
<p>
|
|
102
|
+
Updated by: <span>{updatedBy.name}</span>
|
|
103
|
+
</p>
|
|
104
|
+
)}
|
|
85
105
|
</>
|
|
86
106
|
)}
|
|
87
107
|
|
|
@@ -114,11 +134,14 @@ SideBarRelations.propTypes = {
|
|
|
114
134
|
schema: PropTypes.object.isRequired,
|
|
115
135
|
onChange: PropTypes.func.isRequired,
|
|
116
136
|
formData: PropTypes.object.isRequired,
|
|
117
|
-
entity: PropTypes.object
|
|
137
|
+
entity: PropTypes.object,
|
|
138
|
+
isOpen: PropTypes.bool,
|
|
139
|
+
onToggle: PropTypes.func
|
|
118
140
|
};
|
|
119
|
-
|
|
120
141
|
SideBarRelations.defaultProps = {
|
|
121
|
-
entity: {}
|
|
142
|
+
entity: {},
|
|
143
|
+
isOpen: true,
|
|
144
|
+
onToggle: () => {}
|
|
122
145
|
};
|
|
123
146
|
|
|
124
147
|
export default SideBarRelations;
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import React, { useEffect, useState, Fragment } from 'react';
|
|
2
2
|
import PropTypes from 'prop-types';
|
|
3
|
-
import More from '@blaze-react/more';
|
|
4
3
|
import { useApolloClient } from '@apollo/client';
|
|
5
4
|
import { withRouter, Link, useLocation } from 'react-router-dom';
|
|
6
5
|
import { PageHeader, DeleteAction, CardPrompt } from '@blaze-cms/admin';
|
|
7
6
|
import { useToasts } from '@blaze-react/toaster';
|
|
8
7
|
import { RenderHook } from '@blaze-cms/plugin-render-hooks-ui';
|
|
9
8
|
import ListingTableContent from './ListingTableContent';
|
|
9
|
+
import SearchFilter from './SearchFilter/SearchFilter';
|
|
10
10
|
import availableActions from '../EntityManager/Entity/actions-handlers';
|
|
11
11
|
import { fetchData } from './service';
|
|
12
12
|
import { populateRows, formatRows, getParsedRowData } from './mappers/populate-rows';
|
|
@@ -38,7 +38,7 @@ const ListingTable = ({ match, entitySchema, history }) => {
|
|
|
38
38
|
...queryParams,
|
|
39
39
|
offset: currentPage * queryParamsDefault.limit - queryParamsDefault.limit
|
|
40
40
|
};
|
|
41
|
-
await doQuery(
|
|
41
|
+
await doQuery([], updatedQueryParams);
|
|
42
42
|
setPreviousSchema({ id: entitySchema.id });
|
|
43
43
|
}
|
|
44
44
|
})();
|
|
@@ -169,22 +169,9 @@ const ListingTable = ({ match, entitySchema, history }) => {
|
|
|
169
169
|
)}
|
|
170
170
|
<PageHeader title={entitySchema.displayName} subtitle="">
|
|
171
171
|
{createAction.active && !showAddButton && (
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
className="button button--small"
|
|
176
|
-
to={`${match.url}/create`}>
|
|
177
|
-
Add
|
|
178
|
-
</Link>
|
|
179
|
-
<PageHeader.Actions>
|
|
180
|
-
<More>
|
|
181
|
-
<More.Avatar isMoreMenu>
|
|
182
|
-
<span className="material-icons">more_vert</span>
|
|
183
|
-
</More.Avatar>
|
|
184
|
-
<More.Content isMoreMenu />
|
|
185
|
-
</More>
|
|
186
|
-
</PageHeader.Actions>
|
|
187
|
-
</>
|
|
172
|
+
<Link data-testid="addEntity" className="button button--small" to={`${match.url}/create`}>
|
|
173
|
+
Add
|
|
174
|
+
</Link>
|
|
188
175
|
)}
|
|
189
176
|
</PageHeader>
|
|
190
177
|
{showAddButton ? (
|
|
@@ -204,6 +191,11 @@ const ListingTable = ({ match, entitySchema, history }) => {
|
|
|
204
191
|
listFilters={listFilters}
|
|
205
192
|
setListFilters={updateListingFilters}
|
|
206
193
|
/>
|
|
194
|
+
<SearchFilter
|
|
195
|
+
schema={entitySchema}
|
|
196
|
+
listFilters={listFilters}
|
|
197
|
+
setListFilters={updateListingFilters}
|
|
198
|
+
/>
|
|
207
199
|
<ListingTableContent
|
|
208
200
|
totalItems={totalItems}
|
|
209
201
|
currentPage={currentPage}
|
|
@@ -211,6 +203,9 @@ const ListingTable = ({ match, entitySchema, history }) => {
|
|
|
211
203
|
handleOnPageChange={handleOnPageChange}
|
|
212
204
|
tableData={tableData}
|
|
213
205
|
onCloseCardPrompt={onCloseCardPrompt}
|
|
206
|
+
schema={entitySchema}
|
|
207
|
+
listFilters={listFilters}
|
|
208
|
+
setListFilters={updateListingFilters}
|
|
214
209
|
/>
|
|
215
210
|
</>
|
|
216
211
|
)}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React from 'react';
|
|
1
|
+
import React, { useEffect, useRef } from 'react';
|
|
2
2
|
import Table from '@blaze-react/table';
|
|
3
3
|
import Pagination from '@blaze-react/pagination';
|
|
4
4
|
import PropTypes from 'prop-types';
|
|
@@ -12,10 +12,30 @@ const ListingTableContent = ({
|
|
|
12
12
|
currentPage,
|
|
13
13
|
totalItems
|
|
14
14
|
}) => {
|
|
15
|
+
const ref = useRef(null);
|
|
15
16
|
const displayTable = tableData && tableData.rows && !!tableData.rows.length;
|
|
16
17
|
const { isEnquiry } = tableData;
|
|
17
18
|
const className = `page__content${isEnquiry ? ' array-table' : ''}`;
|
|
18
19
|
|
|
20
|
+
useEffect(() => {
|
|
21
|
+
// set table head to match body column widths to handle dynamic content
|
|
22
|
+
if (ref.current) {
|
|
23
|
+
const tableHeadCells = ref.current.querySelectorAll('.table-head .table-cell');
|
|
24
|
+
const firstRowCells = ref.current.querySelectorAll(
|
|
25
|
+
'.table-body .table-row:first-child .table-cell'
|
|
26
|
+
);
|
|
27
|
+
|
|
28
|
+
firstRowCells.forEach((element, i) => {
|
|
29
|
+
const styles = window.getComputedStyle(element);
|
|
30
|
+
|
|
31
|
+
if (tableHeadCells[i]) {
|
|
32
|
+
tableHeadCells[i].style.flex = styles.flex;
|
|
33
|
+
tableHeadCells[i].style['justify-content'] = styles['justify-content'];
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
}, [tableData]);
|
|
38
|
+
|
|
19
39
|
if (displayTable) {
|
|
20
40
|
return (
|
|
21
41
|
<div className={className}>
|