-
-
Notifications
You must be signed in to change notification settings - Fork 7.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat(i18n): bulk locale publish modal in CM edit view #20069
feat(i18n): bulk locale publish modal in CM edit view #20069
Conversation
Hey @joshuaellis this is still very very WIP still but I thought this was a good point to check in with you on the way I'm implementing this. wdyt? |
The latest updates on your projects. Learn more about Vercel for Git ↗︎
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Overall looking good 💪🏼
packages/plugins/i18n/admin/src/components/BulkLocaleActionModal.tsx
Outdated
Show resolved
Hide resolved
…o feat/fe-bulk-locale-publish
…o feat/fe-bulk-locale-publish
…o feat/fe-bulk-locale-publish
…o feat/fe-bulk-locale-publish
…o feat/fe-bulk-locale-publish
…nd add basic e2e test
Size Change: +86 B (0%) Total Size: 2.58 MB
ℹ️ View Unchanged
|
…o feat/fe-bulk-locale-publish
…o feat/fe-bulk-locale-publish
…o feat/fe-bulk-locale-publish
…o feat/fe-bulk-locale-publish
…o feat/fe-bulk-locale-publish
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Your action and modal look great, clear how it all works, some minor feedback on the inners of the CM changes :)
@@ -4,6 +4,13 @@ | |||
* but should still export the same things. | |||
*/ | |||
|
|||
export * from './pages/EditView/components/DocumentStatus'; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
These are all gonna be exported by @strapi/strapi/admin
. I think we're better off just recreating them, most are fairly simple. The DocumentStatus we already have inline at L102 of CMHeaderActions.
The endpoints, we can either replicate in the plugin OR we could create a new hook API = useDocumentRelations
but then you need to figure out how best you want to handle the queries since you'd probably need them to be lazy queries.
const key = currentError.path.split('[').join('.').split(']').join(''); | ||
const message = currentError.message; | ||
|
||
if (isMessageDescriptor(message)) { | ||
acc[key] = { | ||
...(message as MessageDescriptor), | ||
values: extractValuesFromYupError(currentError?.type, currentError?.params), | ||
}; | ||
} else { | ||
acc[key] = { | ||
id: message, | ||
defaultMessage: message, | ||
values: extractValuesFromYupError(currentError?.type, currentError?.params), | ||
}; | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Alright i've just realised the confusion around all this, this function works differently to how the Form
works managing YupValidation Errors. I must have forgotten about this, lets unify them (imo the form way is easier to understand, unless you disagree?):
if (isErrorYupValidationError(err)) { |
…o feat/fe-bulk-locale-publish
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Need to fix the package.json for i18n, but otherwise code looks good to me, @innerdvations was going to actually QA this right?
3635041
into
feat/be-bulk-locale-publish
* feat(core): document service (un)publish multiple locales * fix(core): cleanup locale param types * feat(content-manager): wip - multiple locale support * Count draft relations across locales (#20116) * feat(content-manager): publish multiple locales from CM route * feat(core): multiple locales in document service discard draft * feat(content-manager): use bulkpublish for locale publish * feat(content-manager): use query from bulkpublish locales * feat(content-manager): publishMany * feat(content-manager): api test for bulk locale + document publish * chore(content-manager): fix for build * fix(core): avoid * in locale data * chore(content-manager): pr amends and validation improvement * feat(content-manager): use transaction in document manager publish many * feat(core): throw when a non string locale is provided and not supported * fix(core): doc service find many * chore: clean up * feat(content-manager): Select fields that require validation in availablelocales (#20156) * feat(content-manager): wip - select more fields in availablelocales * feat(content-manager): wip available locales using entity traversal * feat(content-manager): wip test available locales returns fields with validation * feat(content-manager): test available locales returns fields with validation * fix(content-manager): ensure sensitive info not exposed in available statuses * fix(content-manager): sanitize document metadata available status * fix(content-manager): sanitize document metadata available status at controller level * fix(content-manager): populate only for validatable fields * chore: clean up * chore: clean up * chore: clean up * fix(content-manager): build issues * fix(content-manager): allow null locales * fix(content-manager): history service (#20185) * fix(content-manager): history service * chore(content-manager): clean up * fix: pr feedback * chore: update actions deps * chore: update utility deps * chore: upgrade sentry * chore: upgrade graphql-tools * fix: http-errors ugprade * chore: add fs-extra types where needed * docs(typescript): type system cheat sheet * chore!: remove deprecated verbose option from ts:generate-types * chore: clean up fix(content-manager) correctly count bulk publish results * fix(content-manager): pr feedback and test improvements * feat(i18n): bulk locale publish modal in CM edit view (#20069) * feat(i18n): wip bulk locale publish modal * fix(i18n): wip - fe bulk locale publish * feat(content-manager): multi locale publish, integrate with backend and add basic e2e test * feat(i18n): wip - display validation errors in bulk locale modal * chore: clean up * chore(i18n): design system changes * feat(i18n): display correct status after publish and clean up error messaging * feat(i18n): access onclose from modal body * fix(i18n): selected locale change * fix(i18n): locale table state * fix(i18n): edit view e2e test * chore(content-manager): validation tweak wip * feat(i18n): cover validation cases in i18n e2e tests * chore: clean up * fix(i18n): edit view more document actions disabled state * chore: feedback * fix(i18n): send all params to publish many * fix(i18n): place bulk locale publish 3rd in array * fix(content-manager): validation error extraction * fix(content-manager): pr feedback * fix: build * chore(content-manager): simplify exports * chore(i18n): revert package --------- Co-authored-by: Alexandre Bodin <bodin.alex@gmail.com> Co-authored-by: Jean-Sébastien Herbaux <jean-sebastien.herbaux@epitech.eu> Co-authored-by: Ben Irvin <ben.irvin@strapi.io>
* fix: date comparison * feat(core): document service publish multiple locales (#20046) * feat(core): document service (un)publish multiple locales * fix(core): cleanup locale param types * feat(content-manager): wip - multiple locale support * Count draft relations across locales (#20116) * feat(content-manager): publish multiple locales from CM route * feat(core): multiple locales in document service discard draft * feat(content-manager): use bulkpublish for locale publish * feat(content-manager): use query from bulkpublish locales * feat(content-manager): publishMany * feat(content-manager): api test for bulk locale + document publish * chore(content-manager): fix for build * fix(core): avoid * in locale data * chore(content-manager): pr amends and validation improvement * feat(content-manager): use transaction in document manager publish many * feat(core): throw when a non string locale is provided and not supported * fix(core): doc service find many * chore: clean up * feat(content-manager): Select fields that require validation in availablelocales (#20156) * feat(content-manager): wip - select more fields in availablelocales * feat(content-manager): wip available locales using entity traversal * feat(content-manager): wip test available locales returns fields with validation * feat(content-manager): test available locales returns fields with validation * fix(content-manager): ensure sensitive info not exposed in available statuses * fix(content-manager): sanitize document metadata available status * fix(content-manager): sanitize document metadata available status at controller level * fix(content-manager): populate only for validatable fields * chore: clean up * chore: clean up * chore: clean up * fix(content-manager): build issues * fix(content-manager): allow null locales * fix(content-manager): history service (#20185) * fix(content-manager): history service * chore(content-manager): clean up * fix: pr feedback * chore: update actions deps * chore: update utility deps * chore: upgrade sentry * chore: upgrade graphql-tools * fix: http-errors ugprade * chore: add fs-extra types where needed * docs(typescript): type system cheat sheet * chore!: remove deprecated verbose option from ts:generate-types * chore: clean up fix(content-manager) correctly count bulk publish results * fix(content-manager): pr feedback and test improvements * feat(i18n): bulk locale publish modal in CM edit view (#20069) * feat(i18n): wip bulk locale publish modal * fix(i18n): wip - fe bulk locale publish * feat(content-manager): multi locale publish, integrate with backend and add basic e2e test * feat(i18n): wip - display validation errors in bulk locale modal * chore: clean up * chore(i18n): design system changes * feat(i18n): display correct status after publish and clean up error messaging * feat(i18n): access onclose from modal body * fix(i18n): selected locale change * fix(i18n): locale table state * fix(i18n): edit view e2e test * chore(content-manager): validation tweak wip * feat(i18n): cover validation cases in i18n e2e tests * chore: clean up * fix(i18n): edit view more document actions disabled state * chore: feedback * fix(i18n): send all params to publish many * fix(i18n): place bulk locale publish 3rd in array * fix(content-manager): validation error extraction * fix(content-manager): pr feedback * fix: build * chore(content-manager): simplify exports * chore(i18n): revert package --------- Co-authored-by: Alexandre Bodin <bodin.alex@gmail.com> Co-authored-by: Jean-Sébastien Herbaux <jean-sebastien.herbaux@epitech.eu> Co-authored-by: Ben Irvin <ben.irvin@strapi.io> * fix(i18n): disable publish button after bulk locale publish * fix(content-manager): ce e2e fix * chore: typography * fix(i18n): e2e edit view test * fix: wip date comparison * fix: wip date comparison * fix(content-manager): simplify date comparison * fix: clean up metadata api test * chore: update api tests * fix: draft versions must be ahead of published to be considered modified * fix: published modified calculation * fix: clean up * fix: simplify draft and publish comparison * chore: clean up * fix: flaky fe tests * fix: pr feedback * fix(i18n): error message extraction in bulk locale modal * chore: remove old publish action * chore: pr feedback * chore: refactor error types & validation messages * chore: use anchor link for locale changes * chore: fix releases * fix: clean up * chore: snapshot --------- Co-authored-by: Marc-Roig <marc12info@gmail.com> Co-authored-by: Alexandre Bodin <bodin.alex@gmail.com> Co-authored-by: Jean-Sébastien Herbaux <jean-sebastien.herbaux@epitech.eu> Co-authored-by: Ben Irvin <ben.irvin@strapi.io> Co-authored-by: Josh <37798644+joshuaellis@users.noreply.github.com>
What does it do?
Adds bulk locale publish modal to the CM edit view
Why is it needed?
V5 core feature
How to test it?
Added E2E test
Related issue(s)/PR(s)
DX-1364
TODO
What tracking events should we send from this actionEmit event to be handled by the doc service