Commit Graph

293 Commits

Author SHA1 Message Date
Hannes Küttner
7bf87f3df3 Fix a few dev mode warnings (#18249)
* `list-m2m` make layout optional

* Silence a few more warnings

* Properly type v-button `to`

* Make search prop in field-detail-simple not required

* Set undefined as default value for text in v-text-overflow

* Change initial search value to undefined in field-detail

* Rework field-detail and field-detail-simple to use script setup

* One less ctrl+z

* Remove unnecessary new line

---------

Co-authored-by: Rijk van Zanten <rijkvanzanten@me.com>
2023-04-19 17:13:20 +00:00
Hannes Küttner
e189118557 Fix m2a/m2a/o2m sorting (#18196)
* Fix m2a/m2a/o2m sorting

* Use `toArray` from @directus/utils

* Fix consequential issue when sorting newly added items

> TypeError: item[relation.value.junctionPrimaryKeyField.field] is undefined

* add test

* Fix linter warnings

* More linter fun!

---------

Co-authored-by: Rijk van Zanten <rijkvanzanten@me.com>
Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>
Co-authored-by: Nitwel <mail@nitwel.de>
2023-04-19 17:03:35 +00:00
Azri Kahar
6e0d56ed8c fix Action enum import in use-revisions (#18241) 2023-04-19 10:57:03 +08:00
Rijk van Zanten
c48309ab68 Last eslint tweak (#18198)
* Should be there now

* Format
2023-04-14 17:40:50 -04:00
rijkvanzanten
37658802b7 One more 2023-04-14 17:30:56 -04:00
Rijk van Zanten
bdb1a919e2 White space rules (#18197)
* White space rules

* Auto-fix whitespace linter warnings
2023-04-14 17:21:56 -04:00
Nitwel
4e1d3b72f4 Revert "Fix update deduplication in useRelationMultiple (#18159)" (#18169) 2023-04-13 12:14:29 -04:00
Hannes Küttner
3f2dfdcbc7 Fix update deduplication in useRelationMultiple (#18159)
* Check for duplicate update in useRelationMultiple update action

* Add test

---------

Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>
Co-authored-by: Rijk van Zanten <rijkvanzanten@me.com>
2023-04-13 11:36:39 -04:00
Nitwel
24487711bb Load relational data from api on button-links (#17959)
* load relational data from api on button-links

* make const shared

* lint

---------

Co-authored-by: Rijk van Zanten <rijkvanzanten@me.com>
Co-authored-by: Azri Kahar <42867097+azrikahar@users.noreply.github.com>
2023-04-12 17:15:49 -04:00
Nitwel
ea35a1ab73 Fix tabular headers (#17799)
* Rework table headers

* fix tabular headers

* run linter

* fix display with translations

* remove console log

* run linter

* Update app/src/layouts/tabular/tabular.vue

Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>

* Update app/src/layouts/tabular/tabular.vue

Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>

* add array prop

* turn to dealiased

---------

Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>
Co-authored-by: Rijk van Zanten <rijkvanzanten@me.com>
Co-authored-by: Azri Kahar <42867097+azrikahar@users.noreply.github.com>
2023-04-11 10:22:06 -04:00
Rijk van Zanten
2983e61870 The Great TypeScript Modernization Program Season 3 Episode 6: The Big One (#18014)
* Step 1

* Step 2

* False sense of confidence

* Couple more before dinner

* Update schema package

* Update format-title

* Upgrade specs file

* Close

* Replace ts-node-dev with tsx, and various others

* Replace lodash with lodash-es

* Add lodash-es types

* Update knex import

* More fun is had

* FSE

* Consolidate repos

* Various tweaks and fixes

* Fix specs

* Remove dependency on knex-schema-inspector

* Fix wrong imports of inspector

* Move shared exceptions to new package

* Move constants to separate module

* Move types to new types package

* Use directus/types

* I believe this is no longer needed

* [WIP] Start moving utils to esm

* ESMify Shared

* Move shared utils to  @directus/utils

* Use @directus/utils instead of @directus/shared/utils

* It runs!

* Use correct schemaoverview type

* Fix imports

* Fix the thing

* Start on new update-checker lib

* Use new update-check package

* Swap out directus/shared in app

* Pushing through the last bits now

* Dangerously make extensions SDK ESM

* Use @directus/types in tests

* Copy util function to test

* Fix linter config

* Add missing import

* Hot takes

* Fix build

* Curse these default exports

* No tests in constants

* Add tests

* Remove tests from types

* Add tests for exceptions

* Fix test

* Fix app tests

* Fix import in test

* Fix various tests

* Fix specs export

* Some more tests

* Remove broken integration tests

These were broken beyond repair.. They were also written before we really knew what we we're doing with tests, so I think it's better to say goodbye and start over with these

* Regenerate lockfile

* Fix imports from merge

* I create my own problems

* Make sharp play nice

* Add vitest config

* Install missing blackbox dep

* Consts shouldn't be in types

tsk tsk tsk tsk

* Fix type/const usage in extensions-sdk

* cursed.default

* Reduce circular deps

* Fix circular dep in items service

* vvv

* Trigger testing for all vendors

* Add workaround for rollup

* Prepend the file protocol for the ESM loader to be compatible with Windows
"WARN: Only URLs with a scheme in: file and data are supported by the default ESM loader. On Windows, absolute paths must be valid file:// URLs. Received protocol 'c:'"

* Fix postgres

* Schema package updates

Co-authored-by: Azri Kahar <42867097+azrikahar@users.noreply.github.com>

* Resolve cjs/mjs extensions

* Clean-up eslint config

* fixed extension concatination

* using string interpolation for consistency

* Revert MySQL optimisation

* Revert testing for all vendors

* Replace tsx with esbuild-kit/esm-loader

Is a bit faster and we can rely on the built-in `watch` and `inspect`
functionalities of Node.js

Note: The possibility to watch other files (.env in our case) might be
added in the future, see https://github.com/nodejs/node/issues/45467

* Use exact version for esbuild-kit/esm-loader

* Fix import

---------

Co-authored-by: ian <licitdev@gmail.com>
Co-authored-by: Brainslug <tim@brainslug.nl>
Co-authored-by: Azri Kahar <42867097+azrikahar@users.noreply.github.com>
Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>
2023-04-04 17:41:56 -04:00
Nitwel
b3be34850e Fix sorting in m2m table (#17746)
* fix sorting in m2m table

* fix sorting

* run linter

* Update app/src/composables/use-relation-multiple.ts

* improve syntax

---------

Co-authored-by: Azri Kahar <42867097+azrikahar@users.noreply.github.com>
2023-03-28 21:03:21 +08:00
José Varela
89293d92a9 App: Fix saving required relational fields (#17842)
* Fix saving relational fields

* Be more specific on variable name

* Fix missing quotes
2023-03-28 13:03:56 +02:00
Nitwel
d5ee27ee76 Fix translations setting primary key and request spamming (#17778)
* Fix translations setting primary key and request spamming

* add return type
2023-03-17 10:03:25 +01:00
Brainslug
5ecb9965b7 Hide related fields without read permissions (#16832)
* remove related O2M fields without read permissions

* Added basic test for usePermissions composable

* updated test

---------

Co-authored-by: Rijk van Zanten <rijkvanzanten@me.com>
2023-02-24 12:44:16 -05:00
Nitwel
da9c3fed3c Fix infinite recursion (#17609)
* fix infinite recursion

* ran eslint

---------

Co-authored-by: Brainslug <tim@brainslug.nl>
2023-02-23 16:04:55 +01:00
Nitwel
7dd5c07ee5 Fix display fields on selected items (#15549)
* Fix display fields on selected items

* run linter

* run linter

---------

Co-authored-by: Rijk van Zanten <rijkvanzanten@me.com>
2023-02-08 15:44:42 +00:00
Nitwel
b3a755ab31 Fix loading of relational fields in group (#17415)
* Fix loading of relational fields in group

* run linter
2023-02-08 10:18:30 -05:00
Nitwel
218961e88b Display proper pages for selected items (#17439) 2023-02-08 10:17:57 -05:00
Jay Bharadia
b13efb61ef Fix field configuration view not updating when navigating between different fields in New Field drawer (#17254)
* Fix field configuration view not updating when navigating between different fields in New Field drawer

* Used Vue toRef instead of computed as per the feedback

* Make type reactive too

Co-authored-by: rijkvanzanten <rijkvanzanten@me.com>
2023-01-23 13:05:25 -05:00
Pascal Jufer
c16be6f644 Type fixes in app (part 1) (#16545)
* Fix paths of imports

* Process not-found.vue as ts

To prevent the following error from 'vue-tsc':
  error TS6504: File '/Users/pascal/Development/directus/app/src/modules/insights/routes/not-found.vue.js' is a JavaScript file. Did you mean to enable the 'allowJs' option?

Note: We could also enable 'allowJS' but since this is the only js file
this seems to be a more fitting fix

* Drop hljs language definition for GraphQL (now in core)

Co-authored-by: rijkvanzanten <rijkvanzanten@me.com>
2023-01-09 18:29:03 +00:00
Brainslug
9f60b0f31d Remove auto-increment primary key when saving as copy (#16966)
* check for auto increment when saving as copy

* updated check to cover uuid generated IDs

* attempt to test use-item composable

* updated test objects

* do not rely on is_generated

* fix readonly regression

Co-authored-by: Azri Kahar <42867097+azrikahar@users.noreply.github.com>
2023-01-05 19:07:11 +08:00
Azri Kahar
446dbb87c7 fix removal of item in local storage (#16581) 2023-01-05 11:17:00 +01:00
Brainslug
cbd2af050b Implements server sort in o2m table interface (#16897)
* implements server sort when dealing with multple relational pages

* always use server sort

* fixed unsetting sort

* removed frontend sorting

* make loading total count more accurate

* remove removed prop

Co-authored-by: Nitwel <mail@nitwel.de>
2023-01-04 16:32:05 +01:00
Azri Kahar
6bf5de1f9d Re-use getEndpoint utility function (#16700)
* re-use getEndpoint util

* rename endpoint var to route in calendar layout

* move loading below early return statements
2022-12-23 11:50:21 -05:00
Brainslug
511c8d368b Fix json serialization (#16558)
* fix copying json fields

* fixed preset filter type

* handling fallback in copyToClipboard function

* add test

* try parsing json content on paste

Co-authored-by: Azri Kahar <42867097+azrikahar@users.noreply.github.com>
2022-12-15 10:40:43 +01:00
Brainslug
807bda3dcb Follow up user Roles not loading (#16278)
* applied the same role fix too users invite

* added same fix when saving permissions

* Prevent loading users unecessarily on the permission page

* Added proper `deep` query typing

* fixed typing for tests

* apply similar fix for navigation folder
2022-12-13 15:05:14 +01:00
Azri Kahar
1c93cc661e Reduce translate function calls in the App (#16038)
* translate fields during hydration

* patch untranslated raw values on field edit

* simplify/remove existing translate usages

* minor codestyle

* translate field note and validation_message

* stub api call in fleld-detail store test

* skip fields translation before user locale sets in

* optimize hydration calls

* use translateLiteral for note & validation_message

* cherry pick field meta properties to patch

* reduce setLanguage calls & settings requests

* settings store test & type update

* tweak variable casing

* test server store & fix existing type/ref issues

* update fields store test for skipTranslation

* fix render-display merge

* await field update before opening drawer

* fetch meta at the end to load relationships first

* add loading state to prevent editing some fields

Co-authored-by: Rijk van Zanten <rijkvanzanten@me.com>
Co-authored-by: Brainslug <br41nslug@users.noreply.github.com>
2022-11-30 13:33:31 +01:00
Azri Kahar
ce8f571c72 Fix key combinations being prevented in dbSafe v-input when it's a leading number (#16668)
* Fix key combinations being prevented in v-input

* should normalize accented characters first

* add tests for processValue and emitValue

* export keyMap from use-shortcut to keep things DRY

* try to add test for use-shortcut composable

* move systemKeys to use-shortcut

* add "capslock" & "enter" to systemKeys
2022-11-30 19:56:44 +08:00
Nicola Krumschmidt
7bf90efa62 Add support for a package extension bundle type (#15672)
* Add bundle type to constants and types

* Add support for API bundle extensions

* Rename generateExtensionsEntry to generateExtensionsEntrypoint

* Add support for App bundle extensions

* Refactor App extension registration

* Replace extensions inject with useExtensions()

* Replace getInterfaces() with useExtensions()

* Replace getDisplays() with useExtensions()

* Replace getLayouts() with useExtensions()

* Replace getModules() with useExtensions()

* Replace getPanels() with useExtensions()

* Replace getOperations() with useExtensions()

* Add useExtension() composable

* Replace useExtensions() with useExtension() where applicable

* Remove interface getters

* Remove display getters

* Remove layout getters

* Remove module getter

* Remove panel getters

* Remove operation getters

* Rename extension register.ts files to index.ts

* Perform module pre register check in parallel

* Remove Refs from AppExtensionConfigs type

* Remove old extension shims

* Ensure registration of modules is awaited when hydrating

* Add support for scaffolding package extensions

* Add support for building bundle extensions

* Add JsonValue type

* Use json for complex command line flags

* Load internal extensions if custom ones are not available

* Fix extension manifest validation for pack extensions

* Fix tests in shared

* Add SplitEntrypoint type

* Move command specific utils to helpers

* Add SDK version getter

* Move extension dev deps generation to helpers

* Move template path to getter util

* Move template copying to a helper

* Only rename copied template files

* Add directus-extension add command

* Convert provided extension source path to url

* Replace deprecated import.meta.globEager

* Mock URL.createObjectURL to make App unit tests pass

* Update rollup-plugin-typescript2

* indentation

* sort vite glob imported modules

* fix unintentional wrong commit

* Simplify app extension import logic

* reinstall @rollup/plugin-virtual

* add test for getInterfaces() expected sort order

Co-authored-by: Rijk van Zanten <rijkvanzanten@me.com>
Co-authored-by: Azri Kahar <42867097+azrikahar@users.noreply.github.com>
2022-11-16 11:28:52 -05:00
Nitwel
568479712f fix preset resetting itself (#16473) 2022-11-16 09:34:14 -05:00
Michal Szycko
96de8994a3 Keep SidebarOpen state in local storage (#15861)
* save sidebarOpen state in local storage

* handle errors while setting value to local storage

* use useLocalStorage to keep sidebarOpen state, add default value to useLocalStorage, cleanup

* move logic to useLocalStorage, remove LocalStorageObject

* use parseJSON utility

Co-authored-by: Rijk van Zanten <rijkvanzanten@me.com>
Co-authored-by: Brainslug <br41nslug@users.noreply.github.com>
2022-11-15 14:30:11 +01:00
Azri Kahar
2c0ad892b6 Fix literal interpolation for curly brackets for Translation Strings (#16235)
* Allow curly brackets usage in Translation Strings

* update test
2022-11-01 16:04:01 -04:00
Nitwel
fb58fd9bf2 Remove use-m2m (#15955)
* remove old composable

* Fix linter warnings

Co-authored-by: rijkvanzanten <rijkvanzanten@me.com>
2022-10-12 17:03:21 +00:00
Azri Kahar
a06bb0eefc Check for M2A with single related collection in useFieldTree composable (#15957)
* check for m2a in use-field-tree

* add test for use-field-tree

* fix test with filter
2022-10-12 12:55:07 -04:00
Azri Kahar
fd47923706 Fix special characters in translation strings (#15872)
* Fix special characters in translation strings

* unit test

Co-authored-by: Brainslug <br41nslug@users.noreply.github.com>
2022-10-10 11:49:37 +02:00
Azri Kahar
c0e12638c6 Fix O2M edits on unsaved items (#15221)
* fix o2m reopening unsaved item in drawer

* fix use-relation-multiple edits w/ display fields

* remove cloneDeep in #15220 since it's reverted

* use isObjectLike

* update the logic of cleaning edited item

* revert o2m fix

* fix merging of edits

Co-authored-by: Nitwel <nitwel@arcor.de>
Co-authored-by: Brainslug <br41nslug@users.noreply.github.com>
2022-09-13 11:30:41 -04:00
Nitwel
b36ea51e13 Fix duplicate indexes (#15500)
* fix duplicate indexes

* lint

Co-authored-by: Azri Kahar <42867097+azrikahar@users.noreply.github.com>
2022-09-12 17:55:08 -04:00
Brainslug
e72ae3b2a7 Item Duplication for manually entered primary keys (#14947)
* disable save as copy for manually entered primary keys

* only mark primaryKey as readonly for generated pk's

* re-enable save-as-copy for manual ids
2022-09-12 17:23:54 -04:00
Nitwel
358e6266c0 Add unit tests for useRelationMultiple (#15372)
* add unit tests

* add more tests
2022-09-05 11:14:33 -04:00
Brainslug
0d56357475 Sort is set to NULL for new items (#15241)
* Fix sort field assignment in relationships

* fixed a merge error

* add sort logic to API

* using isNil for a more concise condition expression

* Removed the custom getSortMax function in favor of Math.max

* increment sort value accordingly for bulk creates

* make reordering sort start with 1 instead of 0

* account for bulk create in API side

* removed the redundant frontend sorting code

* reverted change from pr #14987

* updated selectedOnPage to support both item duplication and sorting

* Revert "account for bulk create in API side"

This reverts commit b37ed207f3.

* re-add bulk create increment sort logic

* prevent sending "+" as primary key for newly created relational items (#15353)

* re-add the removed new line as it felt odd

* ensure sql query fires once only

* fix return value

* use `.max()`

Co-authored-by: André Gaul <andre@gaul.io>
Co-authored-by: Azri Kahar <42867097+azrikahar@users.noreply.github.com>
Co-authored-by: Rijk van Zanten <rijkvanzanten@me.com>
2022-09-02 15:58:30 -04:00
Nitwel
791f739b66 Reset value when no changes (#15366)
* initial fix

* change fetching

* finish fix

* clean up useRelationMultiple

* fix for m2a
2022-09-02 10:14:11 -04:00
Nitwel
5fe28db539 Add Components Package (#15094)
* move components without dependencies to packages

* make every components use vue script setup

* move components and utils from shared to @directus/components

* fix imports

* move over some more components

* get rid of unnecessary isEmpty and notEmpty

* move pagination

* fix missing !

* move groupable components

* move text-overflow and useElementSize

* fix icons not being shown

* add first unit tests

* remove capitalizeFirst

* simple cleanup

* add css-var unit test

* move over most other components

* make every component use script setup

* add some more unit tests

* add more tests and burn v-switch to the ground. 🔥

* add checkbox tests

* start with next test

* add storybook

* add more pages to storybook

* add final stories

* fix stories actions

* improve action fix

* cleaning props and adding tests

* unit tests -.-

* add some documentation to components

* Add docs to each prop

* clean storybook paths

* add more unit tests

* apply v-select fix

* update lock file

* small tweaks

* move back to shared

* fix imports

* fix imports

* cleaning

* stories to typescript

* Fix version number

Co-authored-by: Rijk van Zanten <rijkvanzanten@me.com>
2022-09-01 16:07:31 -04:00
Brainslug
f5befa5bc5 Current items cleared in o2m/m2m when selecting nothing with "add existing" (#15337)
* don't update the state if nothing was selected

* temp disable clearValue for relational fields

Co-authored-by: Nitwel <nitwel@arcor.de>
2022-09-01 14:52:32 -04:00
Nitwel
f0fdd463a0 Fix drawer (#15336)
* start fixing the drawer

* debug

* fix drawer-item

* finish fixing all interfaces
2022-08-31 13:49:25 -04:00
ian
a971455216 Add origin to accountability (#15273)
* Add origin to accountability

* Remove origin column from seeds
2022-08-30 14:15:44 -04:00
Brainslug
b2d127dcc8 Default values ignored for validations affected by conditions (#15310)
* added default values when validating items

* abstracted default value parsing to its own util

* Added a basic test

* updated tests

* fixed import

* implementing the same fix for conditions on the drawer-item
2022-08-30 16:46:38 +02:00
Azri Kahar
f77d12eff4 Fix thumbnail overflow in render-template (#15115)
* fix thumbnail overflow in render-template

* new fix for render-template thumbnail in table

* fix thumbnail not working in page titles

* prevent thumbnail overflow in page title
2022-08-29 15:06:57 -04:00
Nitwel
61a8cca102 Fix filter not resetting on bookmarks (#15236)
* fix bug and make code consistent

* clean up unnecessary complexity
2022-08-24 15:21:13 -04:00
Gerard Lamusse
9c104519f0 Initial interface of O2M & M2M Table View (#12820)
* Fix lint issues
Merge in main

* Add support for resizing columns.
Disable sorting on json columns

* Replaced static text with translations

* remove unused variables

* add no collection/fields states to system-fields

* turn columns to notice when creating list-m2m

* tweak system-fields no fields background color

* add danger styling for deselect in table layout

* add tooltips

* prevent linking to items without ID yet

* fix launch icon for list layout

* tweak padding for per page

* Update missing types

* resolve ::v-deep to :deep warning

* minor style tweaks

* fix search

* fix destructuring crashing when no permissions

* remove unused variables

Co-authored-by: Azri Kahar <42867097+azrikahar@users.noreply.github.com>
2022-08-19 03:16:20 +08:00