139 lines
3.9 KiB
JavaScript
139 lines
3.9 KiB
JavaScript
'use strict';
|
|
|
|
var React = require('react');
|
|
var strapiAdmin = require('@strapi/admin/strapi-admin');
|
|
var qs = require('qs');
|
|
var useConfig = require('./useConfig.js');
|
|
|
|
function _interopNamespaceDefault(e) {
|
|
var n = Object.create(null);
|
|
if (e) {
|
|
Object.keys(e).forEach(function (k) {
|
|
if (k !== 'default') {
|
|
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
Object.defineProperty(n, k, d.get ? d : {
|
|
enumerable: true,
|
|
get: function () { return e[k]; }
|
|
});
|
|
}
|
|
});
|
|
}
|
|
n.default = e;
|
|
return Object.freeze(n);
|
|
}
|
|
|
|
var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
|
|
|
|
const useModalQueryParams = (initialState)=>{
|
|
const { trackUsage } = strapiAdmin.useTracking();
|
|
const { config: { data: config } } = useConfig.useConfig();
|
|
const [queryObject, setQueryObject] = React__namespace.useState({
|
|
page: 1,
|
|
sort: 'updatedAt:DESC',
|
|
pageSize: 10,
|
|
filters: {
|
|
$and: []
|
|
},
|
|
...initialState
|
|
});
|
|
React__namespace.useEffect(()=>{
|
|
if (config && 'sort' in config && 'pageSize' in config) {
|
|
setQueryObject((prevQuery)=>({
|
|
...prevQuery,
|
|
sort: config.sort,
|
|
pageSize: config.pageSize
|
|
}));
|
|
}
|
|
}, [
|
|
config
|
|
]);
|
|
const handleChangeFilters = (nextFilters)=>{
|
|
if (nextFilters) {
|
|
trackUsage('didFilterMediaLibraryElements', {
|
|
location: 'content-manager',
|
|
filter: Object.keys(nextFilters[nextFilters.length - 1])[0]
|
|
});
|
|
setQueryObject((prev)=>({
|
|
...prev,
|
|
page: 1,
|
|
filters: {
|
|
$and: nextFilters
|
|
}
|
|
}));
|
|
}
|
|
};
|
|
const handleChangePageSize = (pageSize)=>{
|
|
setQueryObject((prev)=>({
|
|
...prev,
|
|
pageSize: typeof pageSize === 'string' ? parseInt(pageSize, 10) : pageSize,
|
|
page: 1
|
|
}));
|
|
};
|
|
const handeChangePage = (page)=>{
|
|
setQueryObject((prev)=>({
|
|
...prev,
|
|
page
|
|
}));
|
|
};
|
|
const handleChangeSort = (sort)=>{
|
|
if (sort) {
|
|
trackUsage('didSortMediaLibraryElements', {
|
|
location: 'content-manager',
|
|
sort
|
|
});
|
|
setQueryObject((prev)=>({
|
|
...prev,
|
|
sort
|
|
}));
|
|
}
|
|
};
|
|
const handleChangeSearch = (_q)=>{
|
|
if (_q) {
|
|
setQueryObject((prev)=>({
|
|
...prev,
|
|
_q,
|
|
page: 1
|
|
}));
|
|
} else {
|
|
const newState = {
|
|
page: 1
|
|
};
|
|
Object.keys(queryObject).forEach((key)=>{
|
|
if (![
|
|
'page',
|
|
'_q'
|
|
].includes(key)) {
|
|
newState[key] = queryObject[key];
|
|
}
|
|
});
|
|
setQueryObject(newState);
|
|
}
|
|
};
|
|
const handleChangeFolder = (folder, folderPath)=>{
|
|
setQueryObject((prev)=>({
|
|
...prev,
|
|
folder: folder ?? null,
|
|
folderPath
|
|
}));
|
|
};
|
|
return [
|
|
{
|
|
queryObject,
|
|
rawQuery: qs.stringify(queryObject, {
|
|
encode: false
|
|
})
|
|
},
|
|
{
|
|
onChangeFilters: handleChangeFilters,
|
|
onChangeFolder: handleChangeFolder,
|
|
onChangePage: handeChangePage,
|
|
onChangePageSize: handleChangePageSize,
|
|
onChangeSort: handleChangeSort,
|
|
onChangeSearch: handleChangeSearch
|
|
}
|
|
];
|
|
};
|
|
|
|
exports.useModalQueryParams = useModalQueryParams;
|
|
//# sourceMappingURL=useModalQueryParams.js.map
|