mirror of
https://github.com/strapi/strapi.git
synced 2025-12-06 12:01:52 +00:00
Merge pull request #8727 from strapi/relational-fields/display-in-list
Display relational fields in the list view
This commit is contained in:
commit
3c9686f986
@ -23,12 +23,12 @@
|
|||||||
"@babel/preset-env": "^7.9.5",
|
"@babel/preset-env": "^7.9.5",
|
||||||
"@babel/preset-react": "^7.9.4",
|
"@babel/preset-react": "^7.9.4",
|
||||||
"@babel/runtime": "^7.9.2",
|
"@babel/runtime": "^7.9.2",
|
||||||
"@buffetjs/core": "3.3.1",
|
"@buffetjs/core": "3.3.1-next.2",
|
||||||
"@buffetjs/custom": "3.3.1",
|
"@buffetjs/custom": "3.3.1-next.2",
|
||||||
"@buffetjs/hooks": "3.3.1",
|
"@buffetjs/hooks": "3.3.1-next.2",
|
||||||
"@buffetjs/icons": "3.3.1",
|
"@buffetjs/icons": "3.3.1-next.2",
|
||||||
"@buffetjs/styles": "3.3.1",
|
"@buffetjs/styles": "3.3.1-next.2",
|
||||||
"@buffetjs/utils": "3.3.1",
|
"@buffetjs/utils": "3.3.1-next.2",
|
||||||
"@casl/ability": "^4.1.5",
|
"@casl/ability": "^4.1.5",
|
||||||
"@fortawesome/fontawesome-free": "^5.11.2",
|
"@fortawesome/fontawesome-free": "^5.11.2",
|
||||||
"@fortawesome/fontawesome-svg-core": "^1.2.32",
|
"@fortawesome/fontawesome-svg-core": "^1.2.32",
|
||||||
|
|||||||
@ -50,12 +50,12 @@
|
|||||||
"rollup-plugin-terser": "^4.0.4"
|
"rollup-plugin-terser": "^4.0.4"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@buffetjs/core": "3.3.1",
|
"@buffetjs/core": "3.3.1-next.2",
|
||||||
"@buffetjs/custom": "3.3.1",
|
"@buffetjs/custom": "3.3.1-next.2",
|
||||||
"@buffetjs/hooks": "3.3.1",
|
"@buffetjs/hooks": "3.3.1-next.2",
|
||||||
"@buffetjs/icons": "3.3.1",
|
"@buffetjs/icons": "3.3.1-next.2",
|
||||||
"@buffetjs/styles": "3.3.1",
|
"@buffetjs/styles": "3.3.1-next.2",
|
||||||
"@buffetjs/utils": "3.3.1",
|
"@buffetjs/utils": "3.3.1-next.2",
|
||||||
"bootstrap": "^4.5.3",
|
"bootstrap": "^4.5.3",
|
||||||
"classnames": "^2.2.5",
|
"classnames": "^2.2.5",
|
||||||
"immutable": "^3.8.2",
|
"immutable": "^3.8.2",
|
||||||
|
|||||||
@ -6,11 +6,11 @@ import { useGlobalContext } from 'strapi-helper-plugin';
|
|||||||
import { IconLinks } from '@buffetjs/core';
|
import { IconLinks } from '@buffetjs/core';
|
||||||
import { Duplicate } from '@buffetjs/icons';
|
import { Duplicate } from '@buffetjs/icons';
|
||||||
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
|
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
|
||||||
import useListView from '../../hooks/useListView';
|
import { useListView } from '../../hooks';
|
||||||
import dateFormats from '../../utils/dateFormats';
|
import dateFormats from '../../utils/dateFormats';
|
||||||
import CustomInputCheckbox from '../CustomInputCheckbox';
|
import CustomInputCheckbox from '../CustomInputCheckbox';
|
||||||
import MediaPreviewList from '../MediaPreviewList';
|
import { ActionContainer } from './styledComponents';
|
||||||
import { ActionContainer, Truncate, Truncated } from './styledComponents';
|
import RowCell from './RowCell';
|
||||||
|
|
||||||
/* eslint-disable jsx-a11y/no-noninteractive-element-interactions */
|
/* eslint-disable jsx-a11y/no-noninteractive-element-interactions */
|
||||||
|
|
||||||
@ -62,6 +62,9 @@ const getDisplayedValue = (type, value, name) => {
|
|||||||
|
|
||||||
return date.format(dateFormats.time);
|
return date.format(dateFormats.time);
|
||||||
}
|
}
|
||||||
|
case 'relation': {
|
||||||
|
return value;
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
return '-';
|
return '-';
|
||||||
}
|
}
|
||||||
@ -84,12 +87,16 @@ function Row({ canCreate, canDelete, canUpdate, isBulkable, row, headers, goTo }
|
|||||||
icon: canCreate ? <Duplicate fill="black" /> : null,
|
icon: canCreate ? <Duplicate fill="black" /> : null,
|
||||||
onClick: e => {
|
onClick: e => {
|
||||||
e.stopPropagation();
|
e.stopPropagation();
|
||||||
|
|
||||||
goTo(`create/clone/${row.id}`);
|
goTo(`create/clone/${row.id}`);
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
icon: canUpdate ? <FontAwesomeIcon icon="pencil-alt" /> : null,
|
icon: canUpdate ? <FontAwesomeIcon icon="pencil-alt" /> : null,
|
||||||
|
onClick: e => {
|
||||||
|
e.stopPropagation();
|
||||||
|
emitEventRef.current('willDeleteEntryFromList');
|
||||||
|
goTo(row.id);
|
||||||
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
icon: canDelete ? <FontAwesomeIcon icon="trash-alt" /> : null,
|
icon: canDelete ? <FontAwesomeIcon icon="trash-alt" /> : null,
|
||||||
@ -113,21 +120,22 @@ function Row({ canCreate, canDelete, canUpdate, isBulkable, row, headers, goTo }
|
|||||||
/>
|
/>
|
||||||
</td>
|
</td>
|
||||||
)}
|
)}
|
||||||
{headers.map(({ key, name, fieldSchema: { type }, cellFormatter }) => {
|
{headers.map(
|
||||||
const isMedia = type === 'media';
|
({ key, name, fieldSchema: { type, relationType }, cellFormatter, metadatas }) => (
|
||||||
|
|
||||||
return (
|
|
||||||
<td key={key}>
|
<td key={key}>
|
||||||
{isMedia && <MediaPreviewList files={memoizedDisplayedValue(name, type)} />}
|
{cellFormatter ? (
|
||||||
{cellFormatter && cellFormatter(row)}
|
cellFormatter(row)
|
||||||
{!isMedia && !cellFormatter && (
|
) : (
|
||||||
<Truncate>
|
<RowCell
|
||||||
<Truncated>{memoizedDisplayedValue(name, type)}</Truncated>
|
type={type}
|
||||||
</Truncate>
|
metadatas={metadatas}
|
||||||
|
relationType={relationType}
|
||||||
|
value={memoizedDisplayedValue(name, type)}
|
||||||
|
/>
|
||||||
)}
|
)}
|
||||||
</td>
|
</td>
|
||||||
);
|
)
|
||||||
})}
|
)}
|
||||||
<ActionContainer>
|
<ActionContainer>
|
||||||
<IconLinks links={links} />
|
<IconLinks links={links} />
|
||||||
</ActionContainer>
|
</ActionContainer>
|
||||||
|
|||||||
@ -0,0 +1,36 @@
|
|||||||
|
import React, { memo } from 'react';
|
||||||
|
import PropTypes from 'prop-types';
|
||||||
|
import MediaPreviewList from '../MediaPreviewList';
|
||||||
|
import RelationPreviewList from '../RelationPreviewList';
|
||||||
|
import { Truncate, Truncated } from './styledComponents';
|
||||||
|
|
||||||
|
const RowCell = ({ metadatas, type, value, relationType }) => {
|
||||||
|
if (type === 'media') {
|
||||||
|
return <MediaPreviewList files={value} />;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (type === 'relation') {
|
||||||
|
return <RelationPreviewList relationType={relationType} metadatas={metadatas} value={value} />;
|
||||||
|
}
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Truncate>
|
||||||
|
<Truncated title={value}>{value}</Truncated>
|
||||||
|
</Truncate>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
RowCell.defaultProps = {
|
||||||
|
type: null,
|
||||||
|
value: null,
|
||||||
|
relationType: null,
|
||||||
|
};
|
||||||
|
|
||||||
|
RowCell.propTypes = {
|
||||||
|
metadatas: PropTypes.object.isRequired,
|
||||||
|
relationType: PropTypes.string,
|
||||||
|
type: PropTypes.string,
|
||||||
|
value: PropTypes.any,
|
||||||
|
};
|
||||||
|
|
||||||
|
export default memo(RowCell);
|
||||||
@ -55,13 +55,20 @@ const CustomTable = ({
|
|||||||
|
|
||||||
const colSpanLength = isBulkable && canDelete ? headers.length + 2 : headers.length + 1;
|
const colSpanLength = isBulkable && canDelete ? headers.length + 2 : headers.length + 1;
|
||||||
|
|
||||||
const handleGoTo = id => {
|
const handleRowGoTo = id => {
|
||||||
emitEvent('willEditEntryFromList');
|
emitEvent('willEditEntryFromList');
|
||||||
push({
|
push({
|
||||||
pathname: `${pathname}/${id}`,
|
pathname: `${pathname}/${id}`,
|
||||||
state: { from: pathname },
|
state: { from: pathname },
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
const handleEditGoTo = id => {
|
||||||
|
emitEvent('willEditEntryFromButton');
|
||||||
|
push({
|
||||||
|
pathname: `${pathname}/${id}`,
|
||||||
|
state: { from: pathname },
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
const values = { contentType: upperFirst(label), search: _q };
|
const values = { contentType: upperFirst(label), search: _q };
|
||||||
let tableEmptyMsgId = filters.length > 0 ? 'withFilters' : 'withoutFilter';
|
let tableEmptyMsgId = filters.length > 0 ? 'withFilters' : 'withoutFilter';
|
||||||
@ -89,7 +96,7 @@ const CustomTable = ({
|
|||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
e.stopPropagation();
|
e.stopPropagation();
|
||||||
|
|
||||||
handleGoTo(row.id);
|
handleRowGoTo(row.id);
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<Row
|
<Row
|
||||||
@ -99,7 +106,7 @@ const CustomTable = ({
|
|||||||
isBulkable={isBulkable && canDelete}
|
isBulkable={isBulkable && canDelete}
|
||||||
headers={headers}
|
headers={headers}
|
||||||
row={row}
|
row={row}
|
||||||
goTo={handleGoTo}
|
goTo={handleEditGoTo}
|
||||||
/>
|
/>
|
||||||
</TableRow>
|
</TableRow>
|
||||||
);
|
);
|
||||||
|
|||||||
@ -0,0 +1,7 @@
|
|||||||
|
import styled from 'styled-components';
|
||||||
|
|
||||||
|
const CountWrapper = styled.div`
|
||||||
|
padding-top: 0.3rem;
|
||||||
|
`;
|
||||||
|
|
||||||
|
export default CountWrapper;
|
||||||
@ -0,0 +1,55 @@
|
|||||||
|
import React from 'react';
|
||||||
|
import PropTypes from 'prop-types';
|
||||||
|
import { Flex, Padded, Count } from '@buffetjs/core';
|
||||||
|
import { useIntl } from 'react-intl';
|
||||||
|
|
||||||
|
import { getTrad } from '../../utils';
|
||||||
|
import { Truncate, Truncated } from '../CustomTable/styledComponents';
|
||||||
|
import CountWrapper from './CountWrapper';
|
||||||
|
|
||||||
|
const RelationPreviewList = ({ metadatas: { mainField }, relationType, value }) => {
|
||||||
|
const { formatMessage } = useIntl();
|
||||||
|
const isSingle = ['oneWay', 'oneToOne', 'manyToOne'].includes(relationType);
|
||||||
|
|
||||||
|
if (isSingle) {
|
||||||
|
return (
|
||||||
|
<Truncate>
|
||||||
|
<Truncated>{value ? value[mainField] : '-'}</Truncated>
|
||||||
|
</Truncate>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
const size = value ? value.length : 0;
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Truncate>
|
||||||
|
<Flex>
|
||||||
|
<CountWrapper>
|
||||||
|
<Count count={size} />
|
||||||
|
</CountWrapper>
|
||||||
|
<Padded left size="xs" />
|
||||||
|
<Truncated>
|
||||||
|
{formatMessage({
|
||||||
|
id: getTrad(
|
||||||
|
size > 1 ? 'containers.ListPage.items.plural' : 'containers.ListPage.items.singular'
|
||||||
|
),
|
||||||
|
})}
|
||||||
|
</Truncated>
|
||||||
|
</Flex>
|
||||||
|
</Truncate>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
RelationPreviewList.defaultProps = {
|
||||||
|
value: null,
|
||||||
|
};
|
||||||
|
|
||||||
|
RelationPreviewList.propTypes = {
|
||||||
|
metadatas: PropTypes.shape({
|
||||||
|
mainField: PropTypes.string.isRequired,
|
||||||
|
}).isRequired,
|
||||||
|
relationType: PropTypes.string.isRequired,
|
||||||
|
value: PropTypes.oneOfType([PropTypes.array, PropTypes.object]),
|
||||||
|
};
|
||||||
|
|
||||||
|
export default RelationPreviewList;
|
||||||
@ -193,6 +193,7 @@ function ListView({
|
|||||||
});
|
});
|
||||||
|
|
||||||
onDeleteSeveralDataSucceeded();
|
onDeleteSeveralDataSucceeded();
|
||||||
|
emitEventRef.current('didBulkDeleteEntries');
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
strapi.notification.error(`${pluginId}.error.record.delete`);
|
strapi.notification.error(`${pluginId}.error.record.delete`);
|
||||||
}
|
}
|
||||||
@ -346,6 +347,11 @@ function ListView({
|
|||||||
};
|
};
|
||||||
}, [total, headerAction, label, canRead, formatMessage]);
|
}, [total, headerAction, label, canRead, formatMessage]);
|
||||||
|
|
||||||
|
const handleToggleModalDeleteAll = e => {
|
||||||
|
emitEventRef.current('willBulkDeleteEntries');
|
||||||
|
toggleModalDeleteAll(e);
|
||||||
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<ListViewProvider
|
<ListViewProvider
|
||||||
@ -360,7 +366,7 @@ function ListView({
|
|||||||
onChangeBulkSelectall={onChangeBulkSelectall}
|
onChangeBulkSelectall={onChangeBulkSelectall}
|
||||||
onClickDelete={handleClickDelete}
|
onClickDelete={handleClickDelete}
|
||||||
slug={slug}
|
slug={slug}
|
||||||
toggleModalDeleteAll={toggleModalDeleteAll}
|
toggleModalDeleteAll={handleToggleModalDeleteAll}
|
||||||
setQuery={setQuery}
|
setQuery={setQuery}
|
||||||
>
|
>
|
||||||
<FilterPicker
|
<FilterPicker
|
||||||
|
|||||||
@ -88,10 +88,17 @@ const listViewReducer = (state = initialState, action) =>
|
|||||||
|
|
||||||
if (!value) {
|
if (!value) {
|
||||||
const { metadatas, attributes } = state.contentType;
|
const { metadatas, attributes } = state.contentType;
|
||||||
|
let metas = metadatas[name].list;
|
||||||
|
|
||||||
|
if (attributes[name].type === 'relation') {
|
||||||
|
const mainField = metadatas[name].edit.mainField;
|
||||||
|
metas = { ...metas, mainField };
|
||||||
|
}
|
||||||
|
|
||||||
drafState.displayedHeaders.push({
|
drafState.displayedHeaders.push({
|
||||||
name,
|
name,
|
||||||
fieldSchema: attributes[name],
|
fieldSchema: attributes[name],
|
||||||
metadatas: metadatas[name].list,
|
metadatas: metas,
|
||||||
key: `__${name}_key__`,
|
key: `__${name}_key__`,
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@ -82,7 +82,16 @@ const formatLayoutWithMetas = (obj, ctUid, models) => {
|
|||||||
const formatListLayoutWithMetas = obj => {
|
const formatListLayoutWithMetas = obj => {
|
||||||
const formatted = obj.layouts.list.reduce((acc, current) => {
|
const formatted = obj.layouts.list.reduce((acc, current) => {
|
||||||
const fieldSchema = get(obj, ['attributes', current], {});
|
const fieldSchema = get(obj, ['attributes', current], {});
|
||||||
const metadatas = get(obj, ['metadatas', current, 'list'], {});
|
let metadatas = get(obj, ['metadatas', current, 'list'], {});
|
||||||
|
|
||||||
|
const type = fieldSchema.type;
|
||||||
|
|
||||||
|
if (type === 'relation') {
|
||||||
|
metadatas = {
|
||||||
|
...metadatas,
|
||||||
|
mainField: get(obj, ['metadatas', current, 'edit', 'mainField'], 'id'),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
acc.push({ key: `__${current}_key__`, name: current, fieldSchema, metadatas });
|
acc.push({ key: `__${current}_key__`, name: current, fieldSchema, metadatas });
|
||||||
|
|
||||||
|
|||||||
@ -77,6 +77,8 @@
|
|||||||
"containers.List.pluginHeaderDescription.singular": "{label} entry found",
|
"containers.List.pluginHeaderDescription.singular": "{label} entry found",
|
||||||
"containers.List.published": "Published",
|
"containers.List.published": "Published",
|
||||||
"containers.ListPage.displayedFields": "Displayed Fields",
|
"containers.ListPage.displayedFields": "Displayed Fields",
|
||||||
|
"containers.ListPage.items.plural": "items",
|
||||||
|
"containers.ListPage.items.singular": "item",
|
||||||
"containers.ListPage.table-headers.published_at": "State",
|
"containers.ListPage.table-headers.published_at": "State",
|
||||||
"containers.ListSettingsView.modal-form.edit-label": "Edit the label",
|
"containers.ListSettingsView.modal-form.edit-label": "Edit the label",
|
||||||
"containers.SettingPage.add.field": "Insert another field",
|
"containers.SettingPage.add.field": "Insert another field",
|
||||||
|
|||||||
@ -9,12 +9,12 @@
|
|||||||
"required": true
|
"required": true
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@buffetjs/core": "3.3.1",
|
"@buffetjs/core": "3.3.1-next.2",
|
||||||
"@buffetjs/custom": "3.3.1",
|
"@buffetjs/custom": "3.3.1-next.2",
|
||||||
"@buffetjs/hooks": "3.3.1",
|
"@buffetjs/hooks": "3.3.1-next.2",
|
||||||
"@buffetjs/icons": "3.3.1",
|
"@buffetjs/icons": "3.3.1-next.2",
|
||||||
"@buffetjs/styles": "3.3.1",
|
"@buffetjs/styles": "3.3.1-next.2",
|
||||||
"@buffetjs/utils": "3.3.1",
|
"@buffetjs/utils": "3.3.1-next.2",
|
||||||
"@sindresorhus/slugify": "1.1.0",
|
"@sindresorhus/slugify": "1.1.0",
|
||||||
"classnames": "^2.2.6",
|
"classnames": "^2.2.6",
|
||||||
"codemirror": "^5.46.0",
|
"codemirror": "^5.46.0",
|
||||||
|
|||||||
@ -8,12 +8,12 @@
|
|||||||
"description": "content-type-builder.plugin.description"
|
"description": "content-type-builder.plugin.description"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@buffetjs/core": "3.3.1",
|
"@buffetjs/core": "3.3.1-next.2",
|
||||||
"@buffetjs/custom": "3.3.1",
|
"@buffetjs/custom": "3.3.1-next.2",
|
||||||
"@buffetjs/hooks": "3.3.1",
|
"@buffetjs/hooks": "3.3.1-next.2",
|
||||||
"@buffetjs/icons": "3.3.1",
|
"@buffetjs/icons": "3.3.1-next.2",
|
||||||
"@buffetjs/styles": "3.3.1",
|
"@buffetjs/styles": "3.3.1-next.2",
|
||||||
"@buffetjs/utils": "3.3.1",
|
"@buffetjs/utils": "3.3.1-next.2",
|
||||||
"@sindresorhus/slugify": "1.1.0",
|
"@sindresorhus/slugify": "1.1.0",
|
||||||
"fs-extra": "^9.0.1",
|
"fs-extra": "^9.0.1",
|
||||||
"immutable": "^3.8.2",
|
"immutable": "^3.8.2",
|
||||||
|
|||||||
@ -11,12 +11,12 @@
|
|||||||
"test": "echo \"no tests yet\""
|
"test": "echo \"no tests yet\""
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@buffetjs/core": "3.3.1",
|
"@buffetjs/core": "3.3.1-next.2",
|
||||||
"@buffetjs/custom": "3.3.1",
|
"@buffetjs/custom": "3.3.1-next.2",
|
||||||
"@buffetjs/hooks": "3.3.1",
|
"@buffetjs/hooks": "3.3.1-next.2",
|
||||||
"@buffetjs/icons": "3.3.1",
|
"@buffetjs/icons": "3.3.1-next.2",
|
||||||
"@buffetjs/styles": "3.3.1",
|
"@buffetjs/styles": "3.3.1-next.2",
|
||||||
"@buffetjs/utils": "3.3.1",
|
"@buffetjs/utils": "3.3.1-next.2",
|
||||||
"cheerio": "^1.0.0-rc.3",
|
"cheerio": "^1.0.0-rc.3",
|
||||||
"fs-extra": "^9.0.1",
|
"fs-extra": "^9.0.1",
|
||||||
"immutable": "^3.8.2",
|
"immutable": "^3.8.2",
|
||||||
|
|||||||
@ -2,9 +2,6 @@ import styled from 'styled-components';
|
|||||||
|
|
||||||
import Flex from '../../Flex';
|
import Flex from '../../Flex';
|
||||||
|
|
||||||
// TODO : Design System
|
|
||||||
// Wait for the product designer to see
|
|
||||||
// if we need to add this new color in the theme or use an existing one.
|
|
||||||
const Wrapper = styled(Flex)`
|
const Wrapper = styled(Flex)`
|
||||||
width: 1.4rem;
|
width: 1.4rem;
|
||||||
height: 1.4rem;
|
height: 1.4rem;
|
||||||
|
|||||||
@ -12,12 +12,12 @@
|
|||||||
"test": "echo \"no tests yet\""
|
"test": "echo \"no tests yet\""
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@buffetjs/core": "3.3.1",
|
"@buffetjs/core": "3.3.1-next.2",
|
||||||
"@buffetjs/custom": "3.3.1",
|
"@buffetjs/custom": "3.3.1-next.2",
|
||||||
"@buffetjs/hooks": "3.3.1",
|
"@buffetjs/hooks": "3.3.1-next.2",
|
||||||
"@buffetjs/icons": "3.3.1",
|
"@buffetjs/icons": "3.3.1-next.2",
|
||||||
"@buffetjs/styles": "3.3.1",
|
"@buffetjs/styles": "3.3.1-next.2",
|
||||||
"@buffetjs/utils": "3.3.1",
|
"@buffetjs/utils": "3.3.1-next.2",
|
||||||
"byte-size": "^6.2.0",
|
"byte-size": "^6.2.0",
|
||||||
"cropperjs": "^1.5.6",
|
"cropperjs": "^1.5.6",
|
||||||
"immer": "^7.0.14",
|
"immer": "^7.0.14",
|
||||||
|
|||||||
@ -12,12 +12,12 @@
|
|||||||
"test": "echo \"no tests yet\""
|
"test": "echo \"no tests yet\""
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@buffetjs/core": "3.3.1",
|
"@buffetjs/core": "3.3.1-next.2",
|
||||||
"@buffetjs/custom": "3.3.1",
|
"@buffetjs/custom": "3.3.1-next.2",
|
||||||
"@buffetjs/hooks": "3.3.1",
|
"@buffetjs/hooks": "3.3.1-next.2",
|
||||||
"@buffetjs/icons": "3.3.1",
|
"@buffetjs/icons": "3.3.1-next.2",
|
||||||
"@buffetjs/styles": "3.3.1",
|
"@buffetjs/styles": "3.3.1-next.2",
|
||||||
"@buffetjs/utils": "3.3.1",
|
"@buffetjs/utils": "3.3.1-next.2",
|
||||||
"@purest/providers": "^1.0.1",
|
"@purest/providers": "^1.0.1",
|
||||||
"bcryptjs": "^2.4.3",
|
"bcryptjs": "^2.4.3",
|
||||||
"grant-koa": "5.2.0",
|
"grant-koa": "5.2.0",
|
||||||
|
|||||||
62
yarn.lock
62
yarn.lock
@ -1036,15 +1036,15 @@
|
|||||||
resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39"
|
resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39"
|
||||||
integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==
|
integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==
|
||||||
|
|
||||||
"@buffetjs/core@3.3.1":
|
"@buffetjs/core@3.3.1-next.2":
|
||||||
version "3.3.1"
|
version "3.3.1-next.2"
|
||||||
resolved "https://registry.yarnpkg.com/@buffetjs/core/-/core-3.3.1.tgz#56e4a398a854989c5072be7ae6c1e18ceb5861ed"
|
resolved "https://registry.yarnpkg.com/@buffetjs/core/-/core-3.3.1-next.2.tgz#a10eb10bcc8c729c41f2aec268d4aa42b1ba3442"
|
||||||
integrity sha512-WnbZB4yG0JskFmRu9EutzV3pvzaI/Qm23a74f+teuLuODLwK5OpClje76ZL1zw3ezxkGQ6O9dQ/A4J6hYcOimw==
|
integrity sha512-6BCuHqW74X8MW11l3USh7iQHmytRUOsPpiO4vcbqTOzNXvJftu3yaXS+fvXrRES5N48sY4TZ2HpLl2fSW541Hg==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@buffetjs/hooks" "3.3.1"
|
"@buffetjs/hooks" "3.3.1-next.2"
|
||||||
"@buffetjs/icons" "3.3.1"
|
"@buffetjs/icons" "3.3.1-next.2"
|
||||||
"@buffetjs/styles" "3.3.1"
|
"@buffetjs/styles" "3.3.1-next.2"
|
||||||
"@buffetjs/utils" "3.3.1"
|
"@buffetjs/utils" "3.3.1-next.2"
|
||||||
"@fortawesome/fontawesome-svg-core" "^1.2.25"
|
"@fortawesome/fontawesome-svg-core" "^1.2.25"
|
||||||
"@fortawesome/free-regular-svg-icons" "^5.11.2"
|
"@fortawesome/free-regular-svg-icons" "^5.11.2"
|
||||||
"@fortawesome/free-solid-svg-icons" "^5.11.2"
|
"@fortawesome/free-solid-svg-icons" "^5.11.2"
|
||||||
@ -1060,35 +1060,35 @@
|
|||||||
react-with-direction "^1.3.1"
|
react-with-direction "^1.3.1"
|
||||||
reactstrap "^8.5.1"
|
reactstrap "^8.5.1"
|
||||||
|
|
||||||
"@buffetjs/custom@3.3.1":
|
"@buffetjs/custom@3.3.1-next.2":
|
||||||
version "3.3.1"
|
version "3.3.1-next.2"
|
||||||
resolved "https://registry.yarnpkg.com/@buffetjs/custom/-/custom-3.3.1.tgz#6f01fa91302cdb31199fc3489096b3c7d3e988ff"
|
resolved "https://registry.yarnpkg.com/@buffetjs/custom/-/custom-3.3.1-next.2.tgz#9c8291ee24222e305c16824d14d78a36e68e38a6"
|
||||||
integrity sha512-akv22y1q3yzKiO0KtSMTXzF9UqBgWkZSaVgnWjtJ3xjB3ZfYlntwRvw1hJ791G0/Be2wypRUH2qIR/9kHsTIQw==
|
integrity sha512-qiqzVM6A7Cofy0W+OU5rcmz4hkcP/V2i8QQQiPsaRcOnmhtfriCwi5eGiae45f7RL77faMRwsZYxefrmTTr2Hg==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@buffetjs/core" "3.3.1"
|
"@buffetjs/core" "3.3.1-next.2"
|
||||||
"@buffetjs/styles" "3.3.1"
|
"@buffetjs/styles" "3.3.1-next.2"
|
||||||
"@buffetjs/utils" "3.3.1"
|
"@buffetjs/utils" "3.3.1-next.2"
|
||||||
lodash "4.17.19"
|
lodash "4.17.19"
|
||||||
moment "^2.24.0"
|
moment "^2.24.0"
|
||||||
prop-types "^15.5.10"
|
prop-types "^15.5.10"
|
||||||
react-moment-proptypes "^1.7.0"
|
react-moment-proptypes "^1.7.0"
|
||||||
|
|
||||||
"@buffetjs/hooks@3.3.1":
|
"@buffetjs/hooks@3.3.1-next.2":
|
||||||
version "3.3.1"
|
version "3.3.1-next.2"
|
||||||
resolved "https://registry.yarnpkg.com/@buffetjs/hooks/-/hooks-3.3.1.tgz#1888c5c7bebb1be0c2e8b7d88e8149610f7cf129"
|
resolved "https://registry.yarnpkg.com/@buffetjs/hooks/-/hooks-3.3.1-next.2.tgz#32db4c2d4c61ed2de3a01569a6cb204d67ef2766"
|
||||||
integrity sha512-aFTscNP3qKmAZNW7vqHeTIHwka6HhFQ/Z/0wJyfD8E52sMnPU0yJpXZgcDNyUjWisvYfZjJLqPowWIYuu4WFwA==
|
integrity sha512-C5vNPTmDlriJwXARYuR9UuvCMq9/2f7y9kNzKmDLeCjEtpmvVP6gzvwQnmG+SjvN7eyDyFKOx0HBAu+dj7dfbg==
|
||||||
|
|
||||||
"@buffetjs/icons@3.3.1":
|
"@buffetjs/icons@3.3.1-next.2":
|
||||||
version "3.3.1"
|
version "3.3.1-next.2"
|
||||||
resolved "https://registry.yarnpkg.com/@buffetjs/icons/-/icons-3.3.1.tgz#e066944b1b76409d07062e17629ff0a270ef3dd0"
|
resolved "https://registry.yarnpkg.com/@buffetjs/icons/-/icons-3.3.1-next.2.tgz#f7d0c51a7463db8571b70ba96121944866fa3137"
|
||||||
integrity sha512-lkHUemQdB22rNaZbZBQZ1tTxJARD7JJa2LGm3GRQ4nfjP2MH2kf2xgm3UP/kCK+TOO8RRW+Cnn0UvVKhgzwQXw==
|
integrity sha512-lcmi3l7pazrykcf8akpLxAha+Ic7uEpmsLowwR7mUX51u0akVqrSzG6FShk/AaN+UNsGo6Gs3UlBldakrQO9QA==
|
||||||
dependencies:
|
dependencies:
|
||||||
prop-types "^15.5.10"
|
prop-types "^15.5.10"
|
||||||
|
|
||||||
"@buffetjs/styles@3.3.1":
|
"@buffetjs/styles@3.3.1-next.2":
|
||||||
version "3.3.1"
|
version "3.3.1-next.2"
|
||||||
resolved "https://registry.yarnpkg.com/@buffetjs/styles/-/styles-3.3.1.tgz#eaef219649357b958192d79d0d74e1b1debbbd97"
|
resolved "https://registry.yarnpkg.com/@buffetjs/styles/-/styles-3.3.1-next.2.tgz#7165ae1f2f2c66d56b3fbc228e4a5517a974e878"
|
||||||
integrity sha512-CZiszfXpND3e1o50bG4rwDzU8uakHEjUjHgtJDeI3ZRlsWnFFjnmE8nHB43IPEaPmiIfmokAqNzNUzJ+NMI6Xw==
|
integrity sha512-udG1L1BIQcGCc8bmW0Q2gvtEg281HcA2WYr9Tr/n5UE6z8jk828eqvJQpjtfMxNquo9yRBR/zz4z52G7mYt2Dg==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@fortawesome/fontawesome-free" "^5.12.0"
|
"@fortawesome/fontawesome-free" "^5.12.0"
|
||||||
"@fortawesome/fontawesome-svg-core" "^1.2.22"
|
"@fortawesome/fontawesome-svg-core" "^1.2.22"
|
||||||
@ -1098,10 +1098,10 @@
|
|||||||
prop-types "^15.7.2"
|
prop-types "^15.7.2"
|
||||||
react-dates "^21.1.0"
|
react-dates "^21.1.0"
|
||||||
|
|
||||||
"@buffetjs/utils@3.3.1":
|
"@buffetjs/utils@3.3.1-next.2":
|
||||||
version "3.3.1"
|
version "3.3.1-next.2"
|
||||||
resolved "https://registry.yarnpkg.com/@buffetjs/utils/-/utils-3.3.1.tgz#903e29c8e69448418ec7bc940cf1c8eb104061c6"
|
resolved "https://registry.yarnpkg.com/@buffetjs/utils/-/utils-3.3.1-next.2.tgz#da72b8d4e47df60b5debc5e066380745d5908ff0"
|
||||||
integrity sha512-0EKrGc/yWNrI9w93HH0pM+EYTEsq98pf+vZOU8R2bWHXHeEodYC73Jr1wKwo7Z9ux/30Bmz5utgcHunnoj72SQ==
|
integrity sha512-9+lWadHP75sTO0GLwgdrK6AEDA8a4MIQnTqAsIDnIbSutdUZSC8ieJdHX+YzN5T4DuMXrMW//AO264h46zXyvQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
lodash "4.17.19"
|
lodash "4.17.19"
|
||||||
yup "^0.27.0"
|
yup "^0.27.0"
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user