diff --git a/api/src/controllers/fields.ts b/api/src/controllers/fields.ts index 8f75dbe111..023c3fd878 100644 --- a/api/src/controllers/fields.ts +++ b/api/src/controllers/fields.ts @@ -150,9 +150,7 @@ router.patch( ); const updateSchema = Joi.object({ - type: Joi.string() - .valid(...types) - .required(), + type: Joi.string().valid(...types), schema: Joi.object({ default_value: Joi.any(), max_length: [Joi.number(), Joi.string(), Joi.valid(null)], @@ -176,6 +174,10 @@ router.patch( throw new InvalidPayloadException(error.message); } + if (req.body.schema && !req.body.type) { + throw new InvalidPayloadException(`You need to provide "type" when providing "schema".`); + } + const fieldData: Partial & { field: string; type: typeof types[number] } = req.body; if (!fieldData.field) fieldData.field = req.params.field; diff --git a/app/src/components/register.ts b/app/src/components/register.ts index 0540da310e..324a012f5d 100644 --- a/app/src/components/register.ts +++ b/app/src/components/register.ts @@ -21,7 +21,7 @@ import VIcon from './v-icon/'; import VInfo from './v-info/'; import VInput from './v-input/'; import VItemGroup, { VItem } from './v-item-group'; -import VList, { VListGroup, VListItem, VListItemContent, VListItemHint, VListItemIcon, VListItemText } from './v-list/'; +import VList, { VListGroup, VListItem, VListItemContent, VListItemHint, VListItemIcon } from './v-list/'; import VMenu from './v-menu/'; import VDrawer from './v-drawer/'; import VNotice from './v-notice/'; @@ -38,6 +38,7 @@ import VSwitch from './v-switch/'; import VTable from './v-table/'; import VTabs, { VTab, VTabsItems, VTabItem } from './v-tabs/'; import VTextarea from './v-textarea'; +import VTextOverflow from './v-text-overflow.vue'; import VUpload from './v-upload'; Vue.component('v-avatar', VAvatar); @@ -70,7 +71,6 @@ Vue.component('v-list-group', VListGroup); Vue.component('v-list-item-content', VListItemContent); Vue.component('v-list-item-hint', VListItemHint); Vue.component('v-list-item-icon', VListItemIcon); -Vue.component('v-list-item-text', VListItemText); Vue.component('v-list-item', VListItem); Vue.component('v-list', VList); Vue.component('v-menu', VMenu); @@ -92,6 +92,7 @@ Vue.component('v-table', VTable); Vue.component('v-tabs-items', VTabsItems); Vue.component('v-tabs', VTabs); Vue.component('v-textarea', VTextarea); +Vue.component('v-text-overflow', VTextOverflow); Vue.component('v-upload', VUpload); import TransitionBounce from './transition/bounce'; diff --git a/app/src/components/v-divider/v-divider.story.ts b/app/src/components/v-divider/v-divider.story.ts deleted file mode 100644 index 2e53db5426..0000000000 --- a/app/src/components/v-divider/v-divider.story.ts +++ /dev/null @@ -1,109 +0,0 @@ -import VDivider from './v-divider.vue'; -import readme from './readme.md'; -import withPadding from '../../../.storybook/decorators/with-padding'; -import { withKnobs, boolean } from '@storybook/addon-knobs'; -import { defineComponent } from '@vue/composition-api'; -import VList, { VListItem, VListItemContent, VListItemText, VListItemIcon } from '@/components/v-list'; -import VIcon from '@/components/v-icon/'; - -export default { - title: 'Components / Divider', - parameters: { - notes: readme, - }, - decorators: [withPadding, withKnobs], -}; - -export const basic = () => - defineComponent({ - components: { VDivider }, - props: { - vertical: { - default: boolean('Vertical', false), - }, - }, - template: ` - - `, - }); - -export const withText = () => - defineComponent({ - components: { VDivider }, - props: { - vertical: { - default: boolean('Vertical', false), - }, - inlineTitle: { - default: boolean('Inline Title', true), - }, - }, - template: ` - - This is a divider. - - `, - }); - -export const withColorIcon = () => - defineComponent({ - components: { VDivider, VIcon }, - props: { - vertical: { - default: boolean('Vertical', false), - }, - inlineTitle: { - default: boolean('Inline Title', true), - }, - }, - template: ` - - - This is a divider. - - `, - }); - -export const inList = () => - defineComponent({ - components: { - VDivider, - VList, - VListItem, - VListItemContent, - VListItemIcon, - VListItemText, - VIcon, - }, - props: {}, - template: ` - - - - - - Item {{ n }} - - - - - - - - - Item {{ n + 3 }} - - - - - - - - - Item {{ n + 4 }} - - - - - `, - }); diff --git a/app/src/components/v-form/v-form.vue b/app/src/components/v-form/v-form.vue index b691e24696..662d2a2623 100644 --- a/app/src/components/v-form/v-form.vue +++ b/app/src/components/v-form/v-form.vue @@ -91,7 +91,7 @@ export default defineComponent({ }, }, setup(props, { emit }) { - const el = ref(null); + const el = ref(); const fieldsStore = useFieldsStore(); const values = computed(() => { diff --git a/app/src/components/v-list/index.ts b/app/src/components/v-list/index.ts index e6ac55a2ae..f6175659f1 100644 --- a/app/src/components/v-list/index.ts +++ b/app/src/components/v-list/index.ts @@ -1,11 +1,10 @@ import VList from './v-list.vue'; import VListItem from './v-list-item.vue'; import VListItemContent from './v-list-item-content.vue'; -import VListItemText from './v-list-item-text.vue'; import VListItemIcon from './v-list-item-icon.vue'; import VListItemHint from './v-list-item-hint.vue'; import VListGroup from './v-list-group.vue'; -export { VList, VListItem, VListItemContent, VListItemText, VListItemIcon, VListItemHint, VListGroup }; +export { VList, VListItem, VListItemContent, VListItemIcon, VListItemHint, VListGroup }; export default VList; diff --git a/app/src/components/v-list/v-list-item-text.vue b/app/src/components/v-list/v-list-item-text.vue deleted file mode 100644 index 1e5b17ec44..0000000000 --- a/app/src/components/v-list/v-list-item-text.vue +++ /dev/null @@ -1,17 +0,0 @@ - - - diff --git a/app/src/components/v-list/v-list-item.vue b/app/src/components/v-list/v-list-item.vue index 4298053e10..00c7043b89 100644 --- a/app/src/components/v-list/v-list-item.vue +++ b/app/src/components/v-list/v-list-item.vue @@ -175,13 +175,13 @@ body { } &.dense { - ::v-deep .v-list-item-text { + ::v-deep .v-text-overflow { color: var(--foreground-subdued); } &:hover, &.active { - ::v-deep .v-list-item-text { + ::v-deep .v-text-overflow { color: var(--primary); } } diff --git a/app/src/components/v-table/table-row/table-row.vue b/app/src/components/v-table/table-row/table-row.vue index e017e86a9f..edfee9c774 100644 --- a/app/src/components/v-table/table-row/table-row.vue +++ b/app/src/components/v-table/table-row/table-row.vue @@ -15,7 +15,10 @@ - {{ get(item, header.value) }} + + + + diff --git a/app/src/components/v-text-overflow.vue b/app/src/components/v-text-overflow.vue new file mode 100644 index 0000000000..d0785b0804 --- /dev/null +++ b/app/src/components/v-text-overflow.vue @@ -0,0 +1,46 @@ + + + + + diff --git a/app/src/composables/use-element-size/use-element-size.ts b/app/src/composables/use-element-size/use-element-size.ts index 776d47f305..a33ea137ba 100644 --- a/app/src/composables/use-element-size/use-element-size.ts +++ b/app/src/composables/use-element-size/use-element-size.ts @@ -8,7 +8,7 @@ declare global { } } -export default function useElementSize(target: T | Ref | Ref) { +export default function useElementSize(target: T | Ref | Ref) { const width = ref(0); const height = ref(0); diff --git a/app/src/displays/file/file.vue b/app/src/displays/file/file.vue index 3df7d3516b..8371681310 100644 --- a/app/src/displays/file/file.vue +++ b/app/src/displays/file/file.vue @@ -34,7 +34,7 @@ export default defineComponent({ }, }, setup(props) { - const previewEl = ref(null); + const previewEl = ref(); const fileExtension = computed(() => { if (!props.value) return null; diff --git a/app/src/interfaces/m2a-builder/m2a-builder.vue b/app/src/interfaces/m2a-builder/m2a-builder.vue index 64fc742ab7..20766fc69d 100644 --- a/app/src/interfaces/m2a-builder/m2a-builder.vue +++ b/app/src/interfaces/m2a-builder/m2a-builder.vue @@ -52,9 +52,7 @@ :key="collection.collection" > - - {{ collection.name }} - + @@ -73,9 +71,7 @@ :key="collection.collection" > - - {{ collection.name }} - + diff --git a/app/src/interfaces/markdown/markdown.vue b/app/src/interfaces/markdown/markdown.vue index ade221819a..afa9675464 100644 --- a/app/src/interfaces/markdown/markdown.vue +++ b/app/src/interfaces/markdown/markdown.vue @@ -9,7 +9,7 @@ - {{ $t(`wysiwyg_options.h${n}`) }} + diff --git a/app/src/layouts/cards/cards.vue b/app/src/layouts/cards/cards.vue index 29f931d036..44cf5a8646 100644 --- a/app/src/layouts/cards/cards.vue +++ b/app/src/layouts/cards/cards.vue @@ -210,7 +210,7 @@ export default defineComponent({ setup(props, { emit }) { const relationsStore = useRelationsStore(); - const layoutElement = ref(null); + const layoutElement = ref(); const mainElement = inject('main-element', ref(null)); const _selection = useSync(props, 'selection', emit); @@ -219,7 +219,7 @@ export default defineComponent({ const _filters = useSync(props, 'filters', emit); const _searchQuery = useSync(props, 'searchQuery', emit); - const { collection, searchQuery } = toRefs(props); + const { collection } = toRefs(props); const { info, primaryKeyField, fields: fieldsInCollection } = useCollection(collection); const fileFields = computed(() => { diff --git a/app/src/modules/activity/components/navigation.vue b/app/src/modules/activity/components/navigation.vue index 94ffdf3e26..ea5d4e74bb 100644 --- a/app/src/modules/activity/components/navigation.vue +++ b/app/src/modules/activity/components/navigation.vue @@ -5,7 +5,7 @@ - {{ $t('all_activity') }} + @@ -17,7 +17,7 @@ - {{ $t('my_activity') }} + @@ -31,7 +31,7 @@ - {{ $t('create') }} + @@ -43,7 +43,7 @@ - {{ $t('update') }} + @@ -55,7 +55,7 @@ - {{ $t('delete') }} + @@ -67,7 +67,7 @@ - {{ $t('comment') }} + @@ -79,7 +79,7 @@ - {{ $t('login') }} + diff --git a/app/src/modules/collections/components/navigation-bookmark.vue b/app/src/modules/collections/components/navigation-bookmark.vue index 5ba163b02e..181a8680fa 100644 --- a/app/src/modules/collections/components/navigation-bookmark.vue +++ b/app/src/modules/collections/components/navigation-bookmark.vue @@ -1,7 +1,9 @@ @@ -30,7 +34,9 @@ - {{ navItem.name }} + + + diff --git a/app/src/modules/files/components/navigation-folder.vue b/app/src/modules/files/components/navigation-folder.vue index 7b9e330261..21fe521a35 100644 --- a/app/src/modules/files/components/navigation-folder.vue +++ b/app/src/modules/files/components/navigation-folder.vue @@ -8,7 +8,9 @@ @contextmenu.native.prevent.stop="$refs.contextMenu.activate" > - {{ folder.name }} + + + - {{ folder.name }} + + + - {{ $t('rename_folder') }} + @@ -52,7 +56,7 @@ - {{ $t('move_to_folder') }} + @@ -60,7 +64,7 @@ - {{ $t('delete_folder') }} + diff --git a/app/src/modules/files/components/navigation.vue b/app/src/modules/files/components/navigation.vue index a2af1e58cc..9c27df059f 100644 --- a/app/src/modules/files/components/navigation.vue +++ b/app/src/modules/files/components/navigation.vue @@ -13,7 +13,9 @@ - {{ $t('file_library') }} + + + - {{ $t('all_files') }} + + + - {{ $t('my_files') }} + + + - {{ $t('recent_files') }} + + + diff --git a/app/src/modules/settings/components/navigation.vue b/app/src/modules/settings/components/navigation.vue index 32e86569d4..6c489560c0 100644 --- a/app/src/modules/settings/components/navigation.vue +++ b/app/src/modules/settings/components/navigation.vue @@ -3,7 +3,7 @@ - {{ item.name }} + @@ -12,14 +12,14 @@ - {{ item.name }} + - Directus {{ version }} + @@ -103,7 +103,7 @@ Node: ${parsedInfo.value?.node.version} color: var(--foreground-subdued); transition: color var(--fast) var(--transition); } - ::v-deep .v-list-item-text { + ::v-deep .v-text-overflow { color: var(--foreground-subdued); transition: color var(--fast) var(--transition); } @@ -111,7 +111,7 @@ Node: ${parsedInfo.value?.node.version} .v-icon { color: var(--foreground-normal-alt); } - ::v-deep .v-list-item-text { + ::v-deep .v-text-overflow { color: var(--foreground-normal-alt); } } diff --git a/app/src/modules/settings/routes/data-model/collections/collections.vue b/app/src/modules/settings/routes/data-model/collections/collections.vue index 329152f561..153b0789a9 100644 --- a/app/src/modules/settings/routes/data-model/collections/collections.vue +++ b/app/src/modules/settings/routes/data-model/collections/collections.vue @@ -49,17 +49,15 @@