refs https://github.com/TryGhost/Team/issues/3208
- added maximum width limit to the editor stage, so the image doesn't get under the editor controls
- made the crop indicator a bit bigger
- fixed image alignment for the vertical layout
refs https://github.com/TryGhost/Team/issues/3148
- Collections should never ever operate on pages, so limiting them at the fetch stage is the bes possible place, so they don't enter the system when an automatic collection is created.
refs https://github.com/TryGhost/Team/issues/3170
- This implementation allows to create an automatic collection with a filter defining automatically populated posts that belong to a collection
- To populate collection using a filter the API client can send a `filter` property along with a collection request
- Filter values are compatible with the filters used in Content API (https://ghost.org/docs/content-api/#filter)
refs https://github.com/TryGhost/Team/issues/3351
- wires Suspend/Un-suspend user action on user detail modal
- adds running state for task buttons in modal
- adds api to delete and suspend/un-suspend users
refs https://github.com/TryGhost/Team/issues/3351
Allows logged in user to send invites to new users, with allowed roles that can be invited restricted based on the role of logged in user.
refs https://github.com/TryGhost/Team/issues/3351
- adds password validation and reset for non-owner users
- password validation uses basic checks for now and will include more checks from current admin in future
fixes https://github.com/TryGhost/Toolbox/issues/587
- this commit changes two things surrounding the extensions script:
- moves the script tag from the nav menu to the application template
so we always load the script irregardless of if the current page has
a nav menu
- opens up showing the script to all logged-in users and not just
Owners as previous
closes https://github.com/TryGhost/Team/issues/3369
- removes `lexical` from user-visible URL
- only renames path rather than renaming all associated files to keep changeset minimal prior to beta launch
closes https://github.com/TryGhost/Team/issues/3307
This commit includes several important updates to add internationalisation (i18n) support within the signup form package:
- Modified the translate script in `package.json` to include translations for the signup form.
- Added a new test for the signup form resources in `i18n.test.js`.
- Updated `tsconfig.json` to allow synthetic default imports.
- Made updates to `package.json`, including adding a prebuild command for `@tryghost/i18n` to ensure typescript declaration files get built.
- added `vite-plugin-commonjs` so we can bundle commonjs packages to be useable by the browser.
- In `App.tsx`, imported the `i18n` library and created an `i18n` instance for the `signup-form` namespace. This `i18n` instance's `t` function was added to the application context.
- Updated the `AppContextType` in `AppContext.ts` to include the `t` function from i18n
Co-authored-by: Daniel Lockyer <hi@daniellockyer.com>
refs https://github.com/TryGhost/Team/issues/3269
- fixes continuation of list sequence when a non-list-node separates list nodes bringing rendered output in line with editor depiction
refs https://github.com/TryGhost/Team/issues/3318
- adds new file service that allows managing image and file uploads
- wires file upload and save to twitter setting
- fixes issue with dynamic SVG icon loading not working randomly
refs https://github.com/TryGhost/Team/issues/3151
Some settings, like twitter and facebook urls, need transformation on save and read as the value shown to user is shown as the full URL while we save only the username for their facebook and twitter accounts.
This change adds a pattern for handling special (de)serialisation for setting keys.
refs https://github.com/TryGhost/Team/issues/3318
Adds error handling pattern for facebook and twitter account settings same as old admin, showing error message when incorrect value is added and also on blur updates the value to include the facebook/twitter URL
refs https://github.com/TryGhost/Team/issues/3337
Moved current email customization functionality that is behind the
`makeItRain` to its own flag (`emailCustomization`) and removed the now
redundant `makeItRain` flag
refs https://github.com/TryGhost/Team/issues/3151
The api service in admin-x was using hardcoded `x-ghost-version` as we did not have access to version value in the app so far. This change passes the ghost version from ember Admin app to Settings-X app via props, and refactors the api util to use the app version as a common header.
- Adds new services provider to pass common services for the app
- passes API as a service via context for the App
- refactors existing API usage to use api from context
no issue
Added support for `--signup` to `yarn dev`. This will make sure that the signup form preview server is served (with rebuilding) and can be used in admin (instead of using the published version). This is also automatically started when using `yarn dev --all`, but with a twist:
If you only run `yarn dev --all`, it will only build and watch the production build of the signup form. If you use `yarn dev --signup` or `yarn dev --all --signup` it will also serve the demo app on `http://localhost:6173`.
fixes https://github.com/TryGhost/Team/issues/3331
This adds attribution tracking to the signup form. It sends a newly
created url history when sending the signup API call, this url history
will get translated to a proper attribution and saved on the backend. We
send a history with only a single item that contains the referrer
source, medium and path of the Embed form.
This also makes some changes to the E2E tests so that the tests run
in an https environment instead of about:blank.
refs https://github.com/TryGhost/Team/issues/3260
- We need a way to remove posts form collections without fetching the whole collection's content. This API method allows to remove posts from manual collections by collection id and post id.
- As a response it returns up to date collection state without the removed post.
refs https://github.com/TryGhost/Team/issues/3260
- Whenever properties of the DTO are undefined they should be removed to avoid unintentional empty assignments to the stored collection
refs https://github.com/TryGhost/Team/issues/3260
- We need a way to append posts to collections without sending over all of the posts that are already in the collection
- The API would receive post_id and collection_id as required fields and will optionally take in sort_order to control the ordering in the manual collection
closes https://github.com/TryGhost/Team/issues/3134
- the mobile nav was showing for 404 pages when not logged in
- this adds an additional check, so that the nav is only shown when user is logged in, not only when the user is not contributor
no issue
- Removed the postHistory flag from labs
- Post History will be saved and displayed for all lexical posts,
regardless of whether the lexicalEditor flag is currently set
- Post History will still not be displayed for any mobiledoc posts
- With this change, the logic is simplified as we don't have to worry
about flags, but only the content in the given post (mobiledoc vs
lexical)
- If someone toggles the lexicalEditor flag on, creates a new post, then
toggles the lexicalEditor off, we still want Post History to work for
the existing lexical post
refs https://github.com/TryGhost/Team/issues/3329
- product card images have explicit width and height attributes in the markup now, and the image needs auto height for that reason
- without it, the images will lose its original aspect ratio for themes without the auto height images
closes https://github.com/TryGhost/Team/issues/3257
- replaces the TTF with WOFF2 which is more compressed version
- adds a font file for italic style specifically so that the italic text is rendered consistently across different browsers
refs https://github.com/TryGhost/Team/issues/3338
* background and button color can be passed in the script tag dataset
* text color is calculated automatically from background/button color
- This includes changes to support PascalCase filenames for interfaces
- Also bumps newer packages to use the latest version to avoid conflicts
with the underlying eslint-plugin-filenames package
refs https://github.com/TryGhost/Team/issues/3151
- updated save sequence for setting groups where edit button is hidden by default
- shows `Saved` for couple of seconds before disappearing on saving such setting groups
- adds save sequence for default recipient setting group
refs https://github.com/TryGhost/Team/issues/3151
- adds Save -> Saving -> Saved sequence to save buttons on all setting groups
- uses common hook state to manage state across all Settings
refs https://github.com/TryGhost/Team/issues/3151
- updates role info for user details modal for owner user, hides option to change role for owner
- adds saving/saved state for user detail modal
- removes alerts from invite and detail modal
- adds wiring for remaining user detail modal settings
refs https://github.com/TryGhost/Team/issues/3328
<!--
copilot:summary
-->
### <samp>🤖 Generated by Copilot at 8a276bc</samp>
This pull request adds a new DropdownMenu component to the admin-x-ds
global library. It also includes a storybook file to showcase the
component's usage and appearance.
---------
Co-authored-by: Djordje Vlaisavljevic <dzvlais@gmail.com>
refs https://github.com/TryGhost/Team/issues/3307
Added TypeScript support and a new namespace for the `i18n` module. This
enables type checking and localisation for the new signup form component and future typescript projects that may need to add i18n support.
closes https://github.com/TryGhost/Team/issues/3324
- When the recipients batch size is larger than the limit in addition to logging the error we need extra data to figure out what exactly is inside those `2000` or `3000` records causing faulty behavior.
- This change grabs all available models and dumps them into a file inside of the `content/data` folder. The code is temporary and should be removed once the problem is narrowed down
refs. https://github.com/TryGhost/Team/issues/3318
Until now all assets was part of the main app and not the AdminX Design System which could be problematic later when the system becomes a standalone library. Moved the assets folder under the design system for better reusability, less redundancy and for a more self-encapsulated system
refs https://ghost.slack.com/archives/C02G9E68C/p1685446707169999
- `actions/setup-node` has a bug where it doesn't parse paths where the path is pretty-printed with colors, so we have to explicitly disable colors
- Added whitespace change inside signup-form to trigger new CI run
refs https://github.com/TryGhost/Team/issues/1856
- adds a custom duration option with date picker to the complimentary plan when "Custom" is selected
- this allows customers to choose any date as expiration date
---------
Co-authored-by: Michael Barrett <mike@ghost.org>
refs https://github.com/TryGhost/Team/issues/3151
- updates data providers to include roles as well as cleaner api syntax
- updates api methods to cleaner syntax and add roles api
- updated wiring for staff user profile editing and save
- updated data provider location in main app, is used before the modal provider so it has access to common context
- added `useRoles` hook that providers access to roles data for admin
- added `currentUser` to the staff provider
refs: https://github.com/TryGhost/Ghost/issues/16628
This adds a library for interpolating strings with React components, which allows us to pass HTML elements / React components into our i18n templates. We can further templatize those components to have fully translated, nested components.
refs: https://github.com/TryGhost/Ghost/issues/16628
Separate commit for these, this change was a little more complex since the string "Complimentary" was repeated several times, with different additional context.
I decided to keep "Complimentary" by itself as a translatable string, and concatenated a second string for the expiry.
If this would be better as 3 strings, then we could switch to having these:
- "Complimentary"
- "Complimentary ({{label}})"
- "Complimentary - Expires {{expiry date}}"
^ Makes sense only if the use of parentheses & hyphens would be changed in other locales
refs https://github.com/TryGhost/Team/issues/2808
Updated the test to ensure that the date assertions do not unexpectedly
fail if the dates used are computed precisely at the start of a second
(no milliseconds `.000Z`)
refs https://github.com/TryGhost/Team/issues/3234
Added an e2e for the update check script to detect potential breakages
in the script due to uninitialised dependencies in the isolated
execution environment
fixes https://github.com/TryGhost/Team/issues/3296
Adds a new `signupForm` feature flag, that will enable/disable the new embeddable signup form code generation.
Since the new flag shares its name with a new config value (that contains the script location), this also fixes the feature helper to only use a config with the same name if it is a boolean.
refs https://github.com/TryGhost/Team/issues/3151
Using svg imports in React *.tsx files was throwing error as Module `*.svg` did not have any exported member as `ReactComponent`. This change updates the typings to declare the module with exported ReactComponent as an SVG element, allowing svg files to be imported normally.
closes https://github.com/TryGhost/Team/issues/3311
- added event handler to the mobiledoc editor for cut and copy operations that reads mobiledoc from the event data, converts to lexical using `@tryghost/kg-converters` and stores the converted data on the event under the `application/x-lexical-editor` mimetype ready to be pasted into a lexical editor
refs https://github.com/TryGhost/Team/issues/3199
- when content is copied from the Lexical editor the converted mobiledoc post is placed in the clipboardData's `application/x-mobiledoc-editor` mimetype
- added custom paste handling to extract that data and place it into the html content in the same format as a typical mobiledoc copy/paste so that it can then be handled internally by mobiledoc
refs https://github.com/TryGhost/Team/issues/3151
- adds api to fetch staff users
- adds provider to use users data in the application
- wires Users UI to show real owner and other staff users
- combines all data providers for application under a single provider