no issue
- borders are necessary on selected cards to keep consistent spacing between selected/non-selected cards
- use transparent borders in dark mode rather than eliminating borders
- moved transparent card background style to `_koenig-dark.css` so it only affects dark mode - we want to keep the background colour for light mode so that we don't get mis-aligned backgrounds in certain cards
no issue
- now that we no longer have the `ember-sticky-element` dependency we're free to upgrade `ember-in-viewport`
- remove package.json resolution so latest version gets installed
- remove ember-in-viewport from renovate ignore config
- update `<GhScrollTrigger>` to match latest `ember-in-viewport` usage and convert to a glimmer component
- ensure `scrollableArea` is always set so that the trigger doesn't stop working after the first trigger
no issue
- native `position: sticky` support is now good enough across the board of our supported browser versions to use in place of a JS version for our use cases
- `ember-sticky-element` is preventing the dependency update of `ember-in-viewport` so removing it will allow a lot of our sub-dependencies to be updated
no issue
- Current logic was not setting empty accent color in portal preview which was misleading when no accent color is set
- Updated preview url to contain empty accent color which is picked by Portal preview
no issue
- Safari 12 support was automatically dropped when Safari 14 was released this September. This created quite a step-change in level of JS that is left as native in the build output causing problems for users who haven't upgraded or are stuck on browser versions ~1yr old
- adjusted the browser support to include last 3 versions of Safari, giving another year (most likely based on Apple's historic release schedule) of older browser support
no issue
- Social account(twitter/facebook) values in general settings were only updated to settings upstream on focus out
- Uses `notifyPropertyChange` to avoid multiple `.set()` workarounds
Co-authored-by: Kevin Ansfield <kevin@lookingsideways.co.uk>
closes https://github.com/TryGhost/Ghost/issues/12014
- `startDateLabel` was never populated after refactoring the members chart to use the members stats service
- use the first date that's returned as part of the members stats days array so that we can account for any potential time period being selected
Co-authored-by: Kevin Ansfield <kevin@lookingsideways.co.uk>
no issue
On newer iOS devices with no home button, we have this bar at the bottom of the screen instead. When installed as a PWA, the mobile nav sits under that bar. I'm unsure how much Ghost is used this way, but this is a small QOL improvement for those who do.
This PR uses the native `env` CSS custom properties Safari has to add a propriety amount of `padding-bottom` to the mobile nav bar, and also the global container to prevent anything in the iframe from being hidden by the taller nav bar. If the device does not support these `env` vars, is has no adverse affect. In order for this to work, the `<meta name="viewport" />` tag needs `viewport-fit=cover` added to it.
MDN docs for reference: https://developer.mozilla.org/en-US/docs/Web/CSS/env
closes https://github.com/TryGhost/Ghost/issues/11786
`GhTokenInput` uses `PowerSelect` component of `ember-power-select` internally in `app/components/gh-token-input/select-multiple`.
When you open that component, [you can find](d36f38f39e/addon/components/power-select.ts (L262-L278)) that it calls `stopImmediatePropagation` when ctrl/cmd or meta key is down.
```js
handleTriggerKeydown(e: KeyboardEvent) {
if (this.args.onKeydown && this.args.onKeydown(this.storedAPI, e) === false) {
e.stopImmediatePropagation();
return;
}
if (e.ctrlKey || e.metaKey) {
e.stopImmediatePropagation();
return;
}
if ((e.keyCode >= 48 && e.keyCode <= 90) || isNumpadKeyEvent(e)) { // Keys 0-9, a-z or numpad keys
(this.triggerTypingTask as unknown as Performable).perform(e);
} else if (e.keyCode === 32) { // Space
this._handleKeySpace(this.storedAPI, e);
} else {
return this._routeKeydown(this.storedAPI, e);
}
}
```
Because of that, I had to dispatch event directly to the root of the Ghost admin app.
refs https://github.com/TryGhost/Ghost-Admin/pull/1701
- swap `ember-cli-uglify` for `ember-cli-terser` to match ember-cli 3.21.1's generated package.json
- swap `broccoli-uglify-sourcemap` for `broccoli-terser-sourcemap` used manually in our production builds to keep dependencies the same across custom and built-in build artefacts
no issue
depends on https://github.com/TryGhost/Ghost/pull/12211
- Other than dev flag, the Portal is now also enabled behind a dedicated `portal` flag
- Shows/hides Portal settings based on dev or Portal flag
refs https://github.com/TryGhost/Ghost-Admin/pull/1701
- swap `ember-cli-uglify` for `ember-cli-terser` to match ember-cli 3.21.1's generated package.json
- swap `broccoli-uglify-sourcemap` for `broccoli-terser-sourcemap` used manually in our production builds to keep dependencies the same across custom and built-in build artefacts
- we recently had an issue where a dependency update broke the
release process because it was building in production mode, but our CI
never ran in this mode and we missed it
- this commit adds a test to run in prod mode so hopefully we catch it
next time
closes https://github.com/TryGhost/Team/issues/347
- removes the warning banner directing users to use Ghost Desktop/a
desktop browser because users are happy with the experience of editing
on mobile/tablets
* Fixed spacing issue with account menu by changing verticalPosition of the Ember dropdown component to 'above' and adjusted the top attribute as needed.
no issue
- Adds 2 new email address fields for members in email settings section - support address and reply-to address
- Support address - Is used for member auth emails as well as in themes and Portal for allowing members to contact support.
- Reply-to address - Is used to set `reply-to` address for newsletter emails that allows configuring where member's reply to emails will go
- Disabled from address update for empty value
- Updated success toast message and copy for from/support address update
- Changed section title + description for email addresses
- Added "public" to support email description
no issue
- When an import is in progress showing completed progress bar is unusefull and confusing. For large imports it takes a lot longer to process the import itself than to upload the file, that's why it made sense to show a generic spinner untill a better solution is worked on (probably with introduction of jobs)
no refs
- Syncs the new color picker for accent color to the input field
- Updating color through new color picker or input field updates the portal preview
closes#12154
Adds a new css class selector to app-dark.css to mimic the same effect as created in the gh-markdown-editor. The class keonig-card-html--editor is applied conditionally when the card is in edit mode, as per its template file. This now makes the cursor the same color as the text and easier to read.
refs https://github.com/TryGhost/members.js/issues/77
- There was a quick flicker before the portal popup appears due to the site theme being visible in background till portal loads
- Adds the constant background with slight delay to show the frame which ensures the portal script is successfully loaded to minimise the visible flicker
no issue
- Members importer returns to first state of uploader with file selection when unknown error happens during the upload. If the upload fails and 'summary' state is set, it leads to showing summary stas during 'customizing' state.
closes https://github.com/TryGhost/Ghost/issues/12112
- perform a paid members list query with a limit of 1 when the modal is displayed if the post is set to members only, then use the pagination meta data to get a total number of members
- display a spinner and disable the confirm button whilst the count query is in progress
- does not display any counts for users with the Editor role as they do not have permission to list members
refs fd91b593a5
- fixed incorrect call `pluralize(undefined, {withoutCount: true})` when number is undefined - `pluralize()` expects only one argument when no number is provided
- fixed destructuring in ghPluralize
- fixed linting error for undefined method after removal of `formatNumber` import
- fixed typo of import path in members controller
closes https://github.com/TryGhost/Ghost/issues/12110
- adds `{{gh-pluralize}}` helper that wraps the `{{pluralize}}` helper from `ember-inflector` but formats the number using our `{{format-number}}` helper
- updates all uses of `{{pluralize}}` to `{{gh-pluralize}}`
closes https://github.com/TryGhost/members.js/issues/80
- This adds the link/attribute switcher and chooser directly to Admin in Portal preview area
- Thinks links/attributes section was previously shown as a Portal page
closes https://github.com/TryGhost/Ghost/issues/12102
- The scheduled date was incorrectly shown as month number in the toast box after scheduling
- Updates to correctly show the selected date
refs https://github.com/TryGhost/Ghost/issues/12098
- the component template was directly referencing `this._isSaving` which meant that the `this.isSaving` getter was never fetched and so no autotracking was set up for `this.args.isSaving` to trigger the task that updates `this._isSaving`
no issue
- updated single member delete modal copy + design layout
- swapped switch to regular checkbox + applied red color to it
- set button label based on checkbox state
no-issue
* Supported cancellation of subscriptions on delete
This makes the cancellation of subscriptions much more obvious to the
user, and we err on the side of caution by *not* cancelling by default.
* Updated base adapter to handle urls with query params
After creating the member adapter and overriding the urlForDeleteRecord
method the flow would take the url from that and it would get passed
into the buildUrl method of the base adapter. At this point it would
append a "/" _after_ the query param.
It would ouput http://admin.com/ghost/api?query=blah/
rather than http://admin.com/ghost/api/?query=blah
no issue
- Accent color setting was behind dev flag on General settings screen
- Its now moved inside Portal settings where its primarily being used
- This change removes it from general settings screen so its only on Portal settings
no issue
- Updates url to load portal preview to use more specific path by appending `/preview` in hash path
- Allows portal script to validate preview mode easily instead of guessing based on query string
requires 8ceabbcfba
- if the API responds with `meta.import_label` after an import, use it to reset and apply the filter across the members list so that it's quick to see the results of the import and perform further bulk actions (coming later)
- added ability to pass arguments through `<GhFullscreenModal>`'s `@confirm` action
- added a `console.error()` call to the members csv import so that any underlying error is not completely lost by the custom error handling
no issue
- All interactions on the portal preview should be disabled to keep a focused view.
- Disabled pointer events on portal preview iframe to not allow any interactions on page that can cause popup to close or navigate away
no issue
- Adds mapping for default svg icons to keys
- Updates custom icon check to not include default icons
- Updated settings update to save default icon key on update
no issue
- Portal preview's free plan selection for Signup in settings was disabled because of old setting check
- Updates the disabled check to use correct self signup property
no issue
- we're seeing random failures in CI with the error "Browser failed to connect within 30s. testem.js not loaded?"
- bumped the timeout to 120s to determine if it's due to occasional CI-related slowness or something else
no issue
- Ember 3.20.0 introduced `{{in-element}}` as a public API in place of the now-deprecated `{{-in-element}}` private API
- replaced our usage of the private API with the public API
refs https://github.com/TryGhost/Ghost/issues/11971
- Newsletter preview email request has been using hardcoded fixed error message
- Reads custom error message from server's API response to show when available
no refs.
- refined typography, colors and layout
- using built in admin icons for portal button icon temporarily
- styled icons for future usage with inline svgs
refs 2bf69f94e7
- Tests were temporary disabled to unblock the release.
- The solution for failing tests was adding a "waitFor" statement which allowed asyncronous CSV parsing to finish
closes https://github.com/TryGhost/Ghost/issues/12052
* Added breaking test for mailgun settings
* 🐛 Fixed mailgun settings to always set a baseUrl
This matches the functionality seen before the bulk_email_settings were
split, where the baseUrl was set when any of the mailgun settings were.
no issue
- Portal modal was using incorrect `allowSelfSignup` value post settings refactor
- Updated to use correct setting for free signup to correctly disable/enable checkbox
closes https://github.com/TryGhost/Ghost/issues/11385
- Updates og and twitter description to use correct fallbacks for posts/pages
- Updates og and twitter description to use correct fallback for tags
- Updates og and twitter title to use correct name format for tags
no issue
- Removes redesigned members importer features from behind `enableDeveloperExperiments` flag enabling it by default for everyone
- Had to disable some of the tests for future investigation to unblock the release
no issue
- Ensures the "email" field required to create a member is always present with the mapping
- If the field is not mapped, import would fail for all members
no issue
- Because returned validation errors are too technical some of the most common ones were mapped for better human readibility.
- This is a patchwork on the client instead of introducing a lot bigger changes on the server side
no refs.
- added counter ("x of y") to "Data" header for member import mapping table
- set disabled style to prev/next buttons in "Data" header for first/last records
no issue
- Fixes nav item values not saving on keyboard save shortcut
- Nav items value was only being updated in settings on focus out from text field.
- In case of keyboard save, focus out didn't happen so old value got saved and re-populated
- Change fixes to update setting value while typing
no issue
- Adds new Look & Feel section to portal settings to control accent color, button style, text and icon
- Adds Links section to portal settings to show static links to control popup behavior
- Adds the 3 new portal settings to setting model
no issue
- A new validation stage has been introduced as a second step after CSV file has been dropped. It is meant to catch any obvious validation errors and output detailed statistics about
- These improvements also improve sampling logic which increases sample size to 30 non-empty cells which are used to validate stripe_customer_ids when there's such need.
- New sampling logic also introduces improved automatic field type detection which allows to better map email and stripe_customer_id fields to CSV columns