From d4a18c10bcc6a887199acd1edd93b13da4f5ed5f Mon Sep 17 00:00:00 2001 From: Peter Zimon Date: Tue, 4 Aug 2026 10:42:36 +0200 Subject: [PATCH 01/75] Added postsListReact flag gating the posts and pages lists no ref First phase of porting the Ember posts and pages list screens to React. Both implementations live on the same URLs and the flag picks one, so we can compare them side by side and fall back instantly if the React version has problems. The flag is private and defaults to off, so nothing changes for users yet - hence no emoji. Gating a route needs both halves, or both implementations end up in the DOM: React renders its screen instead of EmberFallback, and the Ember route aborts its own transition so its subtree never renders and its three infinity models never fire. Aborting is only half the job for a route other code navigates *to*, which is where this differs from the memberDetailsReact precedent - nothing transitions into the member route, but the publish flow calls transitionTo('posts') four times and two breadcrumbs link to it. Ember and React share the location hash, and an aborted transition never reaches updateURL, so those navigations would be silent no-ops. PostsRoute now supplies the URL itself for named transitions, and leaves URL-initiated ones alone so query params - which is how saved views are addressed - survive. Reused FlagGatedRoute rather than copying member-detail-gate: it already owns the loading/error/flag semantics, and only needed an optional fallback, since these routes must keep the gift-link modal host mounted next to Ember. Co-Authored-By: Claude Opus 5 --- .../advanced/labs/private-features.tsx | 4 + apps/admin/src/flag-gated-route.test.tsx | 45 ++++++ apps/admin/src/flag-gated-route.tsx | 14 +- apps/admin/src/posts-list-gate.test.tsx | 101 ++++++++++++ apps/admin/src/posts-list-gate.tsx | 36 +++++ apps/admin/src/posts/list/pages-route.tsx | 8 + apps/admin/src/posts/list/post-resource.ts | 32 ++++ .../src/posts/list/posts-list-screen.tsx | 45 ++++++ apps/admin/src/posts/list/posts-route.tsx | 9 ++ apps/admin/src/routes.tsx | 9 +- apps/ember-admin/app/routes/posts.js | 50 ++++++ apps/ember-admin/app/services/feature.js | 1 + .../acceptance/posts-list-react-flag-test.js | 153 ++++++++++++++++++ ghost/core/core/shared/labs.js | 3 +- .../admin/__snapshots__/config.test.js.snap | 1 + 15 files changed, 503 insertions(+), 8 deletions(-) create mode 100644 apps/admin/src/posts-list-gate.test.tsx create mode 100644 apps/admin/src/posts-list-gate.tsx create mode 100644 apps/admin/src/posts/list/pages-route.tsx create mode 100644 apps/admin/src/posts/list/post-resource.ts create mode 100644 apps/admin/src/posts/list/posts-list-screen.tsx create mode 100644 apps/admin/src/posts/list/posts-route.tsx create mode 100644 apps/ember-admin/tests/acceptance/posts-list-react-flag-test.js diff --git a/apps/admin-x-settings/src/components/settings/advanced/labs/private-features.tsx b/apps/admin-x-settings/src/components/settings/advanced/labs/private-features.tsx index 51869e00cb6..75e01dc4079 100644 --- a/apps/admin-x-settings/src/components/settings/advanced/labs/private-features.tsx +++ b/apps/admin-x-settings/src/components/settings/advanced/labs/private-features.tsx @@ -91,6 +91,10 @@ const features: Feature[] = [{ title: 'Gift subscription customization', description: 'Enables fixed-duration gift subscription purchases before publisher configuration is available', flag: 'giftSubCustomization' +}, { + title: 'React posts & pages lists', + description: 'Renders the posts (/posts) and pages (/pages) list screens from the React app instead of the Ember screens. Gates the migration behind a runtime toggle so we can compare both implementations.', + flag: 'postsListReact' }]; const AlphaFeatures: React.FC = () => { diff --git a/apps/admin/src/flag-gated-route.test.tsx b/apps/admin/src/flag-gated-route.test.tsx index da8950408aa..9b9fbc92ae4 100644 --- a/apps/admin/src/flag-gated-route.test.tsx +++ b/apps/admin/src/flag-gated-route.test.tsx @@ -100,4 +100,49 @@ describe('FlagGatedRoute', () => { expect(screen.getByTestId('react-screen')).toBeInTheDocument(); }); }); + + describe('with a custom fallback', () => { + // The posts and pages lists need more than a bare EmberFallback while + // the flag is off: the Ember list's context menu opens the React + // gift-link modal over the state bridge, so that host has to stay + // mounted alongside Ember. + const customFallback =
; + + it('renders the custom fallback instead of EmberFallback while the flag is off', () => { + mockUseBrowseConfig.mockReturnValue(withLabs({someFlag: false})); + + render(); + + expect(screen.getByTestId('custom-fallback')).toBeInTheDocument(); + expect(screen.queryByTestId('ember-fallback')).not.toBeInTheDocument(); + }); + + it('renders the custom fallback when the config query fails', () => { + mockUseBrowseConfig.mockReturnValue(configResult({isError: true, data: undefined})); + + render(); + + expect(screen.getByTestId('custom-fallback')).toBeInTheDocument(); + expect(screen.queryByTestId('ember-fallback')).not.toBeInTheDocument(); + }); + + it('still renders nothing while config is loading', () => { + mockUseBrowseConfig.mockReturnValue(configResult({isLoading: true})); + + const {container} = render(); + + expect(container).toBeEmptyDOMElement(); + }); + + it('still renders React while the flag is on', async () => { + mockUseBrowseConfig.mockReturnValue(withLabs({someFlag: true})); + + render(); + + await waitFor(() => { + expect(screen.getByTestId('react-screen')).toBeInTheDocument(); + }); + expect(screen.queryByTestId('custom-fallback')).not.toBeInTheDocument(); + }); + }); }); diff --git a/apps/admin/src/flag-gated-route.tsx b/apps/admin/src/flag-gated-route.tsx index 58e01127166..fa8c415f407 100644 --- a/apps/admin/src/flag-gated-route.tsx +++ b/apps/admin/src/flag-gated-route.tsx @@ -1,5 +1,5 @@ import { EmberFallback } from "./ember-bridge"; -import { Suspense, type ComponentType, type LazyExoticComponent } from "react"; +import { Suspense, type ComponentType, type LazyExoticComponent, type ReactNode } from "react"; import { useBrowseConfig } from "@tryghost/admin-x-framework/api/config"; /** @@ -20,10 +20,16 @@ import { useBrowseConfig } from "@tryghost/admin-x-framework/api/config"; * Errors are deliberately not reported here: `useBrowseConfig` already routes * them through the framework's default error handler, and the shell calls the * same query, so anything logged here would be a duplicate. + * + * `fallback` overrides what the Ember side renders, for routes that need more + * than a bare EmberFallback while the flag is off — the posts and pages lists + * also mount the React gift-link modal host, which the Ember context menu + * opens over the state bridge. */ -export function FlagGatedRoute({ flag, component: Component }: { +export function FlagGatedRoute({ flag, component: Component, fallback = }: { flag: string; component: LazyExoticComponent; + fallback?: ReactNode; }) { const { data: config, isError, isLoading } = useBrowseConfig(); @@ -32,11 +38,11 @@ export function FlagGatedRoute({ flag, component: Component }: { } if (isError || !config) { - return ; + return fallback; } if (config.config.labs?.[flag] !== true) { - return ; + return fallback; } return ( diff --git a/apps/admin/src/posts-list-gate.test.tsx b/apps/admin/src/posts-list-gate.test.tsx new file mode 100644 index 00000000000..f61db315405 --- /dev/null +++ b/apps/admin/src/posts-list-gate.test.tsx @@ -0,0 +1,101 @@ +import React from 'react'; +import {PagesListGate, PostsListGate} from './posts-list-gate'; +import {beforeEach, describe, expect, it, vi} from 'vitest'; +import {render, screen, waitFor} from '@testing-library/react'; + +const {mockUseBrowseConfig} = vi.hoisted(() => ({ + mockUseBrowseConfig: vi.fn() +})); + +vi.mock('@tryghost/admin-x-framework/api/config', () => ({ + useBrowseConfig: mockUseBrowseConfig +})); + +vi.mock('./ember-bridge', () => ({ + EmberFallback: () => React.createElement('div', {'data-testid': 'ember-fallback'}) +})); + +// The Ember side of these routes is EmberListWithGiftLinks rather than a bare +// EmberFallback: the Ember list's context menu opens the React gift-link modal +// over the state bridge, so that host has to stay mounted alongside Ember. +vi.mock('./gift-link-modal-host', () => ({ + EmberListWithGiftLinks: () => React.createElement('div', {'data-testid': 'ember-list-with-gift-links'}) +})); + +// Stand in for the real lazy route modules so the test asserts the wiring +// (which gate loads which resource) without pulling in Shade. +vi.mock('./posts/list/posts-route', () => ({ + default: () => React.createElement('div', {'data-testid': 'react-screen', 'data-resource': 'posts'}) +})); + +vi.mock('./posts/list/pages-route', () => ({ + default: () => React.createElement('div', {'data-testid': 'react-screen', 'data-resource': 'pages'}) +})); + +const configResult = (overrides: Record) => ({ + data: undefined, + isError: false, + isLoading: false, + ...overrides +}); + +const withLabs = (labs: Record) => configResult({data: {config: {labs}}}); + +describe('posts and pages list gates', () => { + beforeEach(() => { + mockUseBrowseConfig.mockReset(); + }); + + describe.each([ + {name: 'PostsListGate', Gate: PostsListGate, resource: 'posts'}, + {name: 'PagesListGate', Gate: PagesListGate, resource: 'pages'} + ])('$name', ({Gate, resource}) => { + it('renders the Ember list (with the gift-link host) while the flag is off', () => { + mockUseBrowseConfig.mockReturnValue(withLabs({postsListReact: false})); + + render(); + + expect(screen.getByTestId('ember-list-with-gift-links')).toBeInTheDocument(); + // A bare EmberFallback here would drop the gift-link modal host. + expect(screen.queryByTestId('ember-fallback')).not.toBeInTheDocument(); + }); + + it('renders the Ember list when the flag is absent', () => { + mockUseBrowseConfig.mockReturnValue(withLabs({})); + + render(); + + expect(screen.getByTestId('ember-list-with-gift-links')).toBeInTheDocument(); + }); + + it('renders the Ember list when the config query fails', () => { + mockUseBrowseConfig.mockReturnValue(configResult({isError: true})); + + render(); + + expect(screen.getByTestId('ember-list-with-gift-links')).toBeInTheDocument(); + }); + + it('renders nothing while config is loading', () => { + mockUseBrowseConfig.mockReturnValue(configResult({isLoading: true})); + + const {container} = render(); + + expect(container).toBeEmptyDOMElement(); + }); + + // The two gates are otherwise identical, so a copy-paste slip that had + // PagesListGate load the posts screen would ship silently without this. + it(`renders the React ${resource} screen while the flag is on`, async () => { + mockUseBrowseConfig.mockReturnValue(withLabs({postsListReact: true})); + + render(); + + await waitFor(() => { + expect(screen.getByTestId('react-screen')).toBeInTheDocument(); + }); + expect(screen.getByTestId('react-screen')).toHaveAttribute('data-resource', resource); + expect(screen.queryByTestId('ember-list-with-gift-links')).not.toBeInTheDocument(); + }); + }); +}); diff --git a/apps/admin/src/posts-list-gate.tsx b/apps/admin/src/posts-list-gate.tsx new file mode 100644 index 00000000000..7662b673b70 --- /dev/null +++ b/apps/admin/src/posts-list-gate.tsx @@ -0,0 +1,36 @@ +import { EmberListWithGiftLinks } from "./gift-link-modal-host"; +import { FlagGatedRoute } from "./flag-gated-route"; +import { lazy } from "react"; + +/** + * Serves `/posts` and `/pages` from the React list screens when the + * `postsListReact` Labs flag is on, and from Ember otherwise. The gating + * semantics (loading, error, and flag branching) live in FlagGatedRoute. + * + * The Ember side needs EmberListWithGiftLinks rather than a bare EmberFallback: + * the Ember list's context menu opens the React gift-link modal over the state + * bridge, so that host has to stay mounted. The React screens open the modal + * directly and don't need it. + */ +const PostsListReact = lazy(() => import("./posts/list/posts-route")); +const PagesListReact = lazy(() => import("./posts/list/pages-route")); + +export function PostsListGate() { + return ( + } + flag="postsListReact" + /> + ); +} + +export function PagesListGate() { + return ( + } + flag="postsListReact" + /> + ); +} diff --git a/apps/admin/src/posts/list/pages-route.tsx b/apps/admin/src/posts/list/pages-route.tsx new file mode 100644 index 00000000000..bda98a17d33 --- /dev/null +++ b/apps/admin/src/posts/list/pages-route.tsx @@ -0,0 +1,8 @@ +import {PostsListScreen} from './posts-list-screen'; + +/** + * Route entry for `/pages`. See `posts-route.tsx` — same screen, other resource. + */ +export default function PagesRoute() { + return ; +} diff --git a/apps/admin/src/posts/list/post-resource.ts b/apps/admin/src/posts/list/post-resource.ts new file mode 100644 index 00000000000..b79c76c44b5 --- /dev/null +++ b/apps/admin/src/posts/list/post-resource.ts @@ -0,0 +1,32 @@ +/** + * The posts and pages list screens are one implementation with two resources. + * They differ only in the API path, the `type` filter options (pages have no + * "Email only"), the editor link, and whether "Save as view" is offered — so + * everything is parameterised by this rather than forked. + */ +export type PostResource = 'posts' | 'pages'; + +interface PostResourceCopy { + /** Screen title. */ + title: string; + /** Label and href for the primary "new" action in the page header. */ + newLabel: string; + newHref: string; +} + +const COPY: Record = { + posts: { + title: 'Posts', + newLabel: 'New post', + newHref: '#/editor/post' + }, + pages: { + title: 'Pages', + newLabel: 'New page', + newHref: '#/editor/page' + } +}; + +export function getPostResourceCopy(resource: PostResource): PostResourceCopy { + return COPY[resource]; +} diff --git a/apps/admin/src/posts/list/posts-list-screen.tsx b/apps/admin/src/posts/list/posts-list-screen.tsx new file mode 100644 index 00000000000..fafd05900eb --- /dev/null +++ b/apps/admin/src/posts/list/posts-list-screen.tsx @@ -0,0 +1,45 @@ +import {Box, Container, Stack} from '@tryghost/shade/primitives'; +import {Button, LoadingIndicator} from '@tryghost/shade/components'; +import {ListPage} from '@tryghost/shade/page-templates'; +import {LucideIcon} from '@tryghost/shade/utils'; +import {PageHeader} from '@tryghost/shade/patterns'; +import {type PostResource, getPostResourceCopy} from './post-resource'; + +/** + * The React posts and pages list screens, served behind the `postsListReact` + * Labs flag. One implementation, two resources — see `post-resource.ts`. + */ +export function PostsListScreen({resource}: {resource: PostResource}) { + const copy = getPostResourceCopy(resource); + + return ( + + + + + + + {copy.title} + + + + + + + + + + + + + + + + + ); +} diff --git a/apps/admin/src/posts/list/posts-route.tsx b/apps/admin/src/posts/list/posts-route.tsx new file mode 100644 index 00000000000..52de92e56b2 --- /dev/null +++ b/apps/admin/src/posts/list/posts-route.tsx @@ -0,0 +1,9 @@ +import {PostsListScreen} from './posts-list-screen'; + +/** + * Route entry for `/posts`. Exists as its own module so the gate can lazy-load + * the posts and pages variants independently of each other. + */ +export default function PostsRoute() { + return ; +} diff --git a/apps/admin/src/routes.tsx b/apps/admin/src/routes.tsx index 6859ad05c1a..027e7516c2e 100644 --- a/apps/admin/src/routes.tsx +++ b/apps/admin/src/routes.tsx @@ -12,8 +12,8 @@ import MyProfileRedirect from "./my-profile-redirect"; import { EmberFallback, ForceUpgradeGuard } from "./ember-bridge"; import type { RouteHandle } from "./ember-bridge"; import HomeRedirect from "./home-redirect"; -import { EmberListWithGiftLinks } from "./gift-link-modal-host"; import { MemberDetailGate } from "./member-detail-gate"; +import { PagesListGate, PostsListGate } from "./posts-list-gate"; import { OnboardingRedirect } from "./onboarding/onboarding-redirect"; import { type AccessRouteHandle, RouteAccessGuard } from "./route-access-guard"; import { canAccessSettingsRoute } from "./settings/settings-access"; @@ -189,8 +189,11 @@ const appRoutes: RouteObject[] = [ requiresAccess: canAccessSettingsRoute } satisfies RouteHandle & AdminRouteHandle & AccessRouteHandle, }, - {path: "/posts", Component: EmberListWithGiftLinks, handle: emberFallbackHandle}, - {path: "/pages", Component: EmberListWithGiftLinks, handle: emberFallbackHandle}, + // Served by React or Ember depending on the `postsListReact` Labs flag. + // The handle stays emberFallbackHandle so force-upgrade behaves the same + // on both sides of the flag. + {path: "/posts", Component: PostsListGate, handle: emberFallbackHandle}, + {path: "/pages", Component: PagesListGate, handle: emberFallbackHandle}, // Ember-handled routes ...emberFallbackRoutes, { diff --git a/apps/ember-admin/app/routes/posts.js b/apps/ember-admin/app/routes/posts.js index 424acdb925e..5f4b4f354b5 100644 --- a/apps/ember-admin/app/routes/posts.js +++ b/apps/ember-admin/app/routes/posts.js @@ -70,6 +70,56 @@ export default class PostsRoute extends AuthenticatedRoute { }); } + // React owns /posts and /pages when the flag is on. Aborting keeps the + // Ember subtree unrendered, so `data-testid` attributes exist in only one + // tree and none of the three infinity models below fire for a screen + // nobody sees. Inherited by PagesRoute, so this covers both URLs. + beforeModel(transition) { + super.beforeModel(...arguments); + + if (!this.feature.postsListReact) { + return; + } + + transition.abort(); + + // Ember and React share window.location.hash, and an aborted + // transition never reaches updateURL - so a navigation Ember itself + // started would be a silent no-op without writing the URL ourselves. + // + // The transition intent says which case we're in. A URL intent (cold + // load, hash change, React-driven navigation) already has the browser + // URL pointing here, so React renders and there is nothing to do - + // and leaving it alone is what keeps query params like ?type=draft, + // which is how saved views are addressed, intact. A named intent + // (`transitionTo('posts')` from the publish flow, or a + // `` breadcrumb) has no URL yet, so we supply + // one. + if (!transition.intent?.url) { + this._navigateToReactRoute(this._reactRouteUrl(transition)); + } + } + + // Built by hand rather than with `router.urlFor`, whose output depends on + // the configured location - it returns `/ghost/posts` under the `none` + // location used in tests but `#/posts/` under `trailing-hash` in the app. + // These routes have no dynamic segments, so the path is just the name. + _reactRouteUrl(transition) { + const queryParams = transition.to?.queryParams ?? {}; + const search = Object.entries(queryParams) + .filter(([, value]) => value !== null && value !== undefined && value !== '') + .map(([key, value]) => `${encodeURIComponent(key)}=${encodeURIComponent(value)}`) + .join('&'); + + return search ? `/${this.routeName}?${search}` : `/${this.routeName}`; + } + + // Seam so tests can assert the navigation without a real hash location - + // Ember acceptance tests run with `location: 'none'`. + _navigateToReactRoute(url) { + window.location.hash = url; + } + model(params) { // Reset analytics cache every time we load the posts index to ensure fresh data if (this.settings.webAnalyticsEnabled || this.settings.membersTrackSources) { diff --git a/apps/ember-admin/app/services/feature.js b/apps/ember-admin/app/services/feature.js index b6676032660..76ac7cff9ad 100644 --- a/apps/ember-admin/app/services/feature.js +++ b/apps/ember-admin/app/services/feature.js @@ -87,6 +87,7 @@ export default class FeatureService extends Service { @feature('paywallImprovements') paywallImprovements; @feature('automations') automations; @feature('csvContentImporter') csvContentImporter; + @feature('postsListReact') postsListReact; _user = null; @computed('settings.labs') diff --git a/apps/ember-admin/tests/acceptance/posts-list-react-flag-test.js b/apps/ember-admin/tests/acceptance/posts-list-react-flag-test.js new file mode 100644 index 00000000000..95171c8ca5f --- /dev/null +++ b/apps/ember-admin/tests/acceptance/posts-list-react-flag-test.js @@ -0,0 +1,153 @@ +import sinon from 'sinon'; +import {afterEach, beforeEach, describe, it} from 'mocha'; +import {authenticateSession} from 'ember-simple-auth/test-support'; +import {enableLabsFlag} from '../helpers/labs-flag'; +import {expect} from 'chai'; +import {find, settled, visit} from '@ember/test-helpers'; +import {setupApplicationTest} from 'ember-mocha'; +import {setupMirage} from 'ember-cli-mirage/test-support'; + +// The `postsListReact` flag hands /posts and /pages to the React app. Ember's +// side of that handshake is PostsRoute#beforeModel: it aborts so the Ember +// subtree stays unrendered, and drives window.location.hash so navigations +// Ember itself starts still land somewhere (an aborted transition never +// reaches updateURL, and the two apps share the hash). + +// `visit()` rejects with TransitionAborted whenever the route aborts, which is +// the whole point of the flag being on. Swallow only that rejection so the +// assertions below can run; anything else still fails the test. +async function visitExpectingAbort(url) { + try { + await visit(url); + } catch (error) { + if (error?.message !== 'TransitionAborted' && error?.name !== 'TransitionAborted') { + throw error; + } + } + await settled(); +} + +describe('Acceptance: posts/pages React flag', function () { + let hooks = setupApplicationTest(); + setupMirage(hooks); + + beforeEach(async function () { + this.server.loadFixtures('configs'); + this.server.loadFixtures('settings'); + + let role = this.server.create('role', {name: 'Administrator'}); + this.server.create('user', {roles: [role]}); + + return await authenticateSession(); + }); + + afterEach(function () { + sinon.restore(); + }); + + describe('when the flag is off', function () { + it('renders the Ember posts list', async function () { + this.server.createList('post', 2); + + await visit('/posts'); + + expect(find('[data-testid="posts-list"]'), 'Ember posts list').to.exist; + }); + + it('renders the Ember pages list', async function () { + this.server.createList('page', 2); + + await visit('/pages'); + + expect(find('[data-testid="posts-list"]'), 'Ember pages list').to.exist; + }); + }); + + describe('when the flag is on', function () { + beforeEach(function () { + enableLabsFlag(this.server, 'postsListReact'); + }); + + it('does not render the Ember posts list', async function () { + this.server.createList('post', 2); + + await visitExpectingAbort('/posts'); + + expect(find('[data-testid="posts-list"]'), 'Ember posts list').to.not.exist; + expect(find('[data-testid="posts-filters"]'), 'Ember posts filters').to.not.exist; + }); + + it('does not render the Ember pages list', async function () { + this.server.createList('page', 2); + + await visitExpectingAbort('/pages'); + + expect(find('[data-testid="posts-list"]'), 'Ember pages list').to.not.exist; + }); + + it('does not fetch posts for a screen it will not render', async function () { + this.server.createList('post', 2); + + let postRequests = 0; + this.server.pretender.handledRequest = (verb, path) => { + if (verb === 'GET' && path === '/ghost/api/admin/posts/') { + postRequests += 1; + } + }; + + await visitExpectingAbort('/posts'); + + expect(postRequests, 'GET /posts/ requests').to.equal(0); + }); + + // The regression this guards: transitionTo('posts') from the publish + // flow, and the breadcrumbs on the debug and + // member screens, all abort. Without supplying a URL they are silent + // no-ops and the user is stranded on the previous screen. + it('navigates React when Ember initiates a transition into posts', async function () { + const route = this.owner.lookup('route:posts'); + const navigate = sinon.stub(route, '_navigateToReactRoute'); + + await visitExpectingAbort('/tags'); + this.owner.lookup('service:router').transitionTo('posts'); + await settled(); + + expect(navigate.calledOnce, '_navigateToReactRoute called once').to.be.true; + expect(navigate.firstCall.args[0], 'target url').to.equal('/posts'); + }); + + it('carries query params through an Ember-initiated transition', async function () { + const route = this.owner.lookup('route:posts'); + const navigate = sinon.stub(route, '_navigateToReactRoute'); + + await visitExpectingAbort('/tags'); + this.owner.lookup('service:router').transitionTo('posts', {queryParams: {type: 'draft'}}); + await settled(); + + expect(navigate.firstCall.args[0], 'target url').to.equal('/posts?type=draft'); + }); + + it('navigates React when Ember initiates a transition into pages', async function () { + const route = this.owner.lookup('route:pages'); + const navigate = sinon.stub(route, '_navigateToReactRoute'); + + await visitExpectingAbort('/tags'); + this.owner.lookup('service:router').transitionTo('pages'); + await settled(); + + expect(navigate.calledOnce, '_navigateToReactRoute called once').to.be.true; + expect(navigate.firstCall.args[0], 'target url').to.equal('/pages'); + }); + + // Query params are how saved views are addressed, so a URL that already + // points at this route must be left exactly as it is. + it('does not rewrite a URL-initiated navigation', async function () { + const route = this.owner.lookup('route:posts'); + const navigate = sinon.stub(route, '_navigateToReactRoute'); + + await visitExpectingAbort('/posts?type=draft'); + + expect(navigate.called, '_navigateToReactRoute called').to.be.false; + }); + }); +}); diff --git a/ghost/core/core/shared/labs.js b/ghost/core/core/shared/labs.js index 5f2cae04eff..bea4e435b1c 100644 --- a/ghost/core/core/shared/labs.js +++ b/ghost/core/core/shared/labs.js @@ -66,7 +66,8 @@ const PRIVATE_FEATURES = [ 'membersCustomFields', 'previewByTier', 'paywallImprovements', - 'giftSubCustomization' + 'giftSubCustomization', + 'postsListReact' ]; module.exports.GA_KEYS = [...GA_FEATURES]; diff --git a/ghost/core/test/e2e-api/admin/__snapshots__/config.test.js.snap b/ghost/core/test/e2e-api/admin/__snapshots__/config.test.js.snap index 5c63b84c5f3..f242c6635c4 100644 --- a/ghost/core/test/e2e-api/admin/__snapshots__/config.test.js.snap +++ b/ghost/core/test/e2e-api/admin/__snapshots__/config.test.js.snap @@ -38,6 +38,7 @@ Object { "membersCustomFields": true, "paywallImprovements": true, "pictureImageFormats": true, + "postsListReact": true, "previewByTier": true, "smarterCounts": true, "stripeAutomaticTax": true, From 362831fc32943e720cabaaef1f8c35c76bd6a690 Mon Sep 17 00:00:00 2001 From: Peter Zimon Date: Tue, 4 Aug 2026 11:17:34 +0200 Subject: [PATCH 02/75] Added acceptance coverage for the posts and pages list flag no ref Verifies the postsListReact swap in the real admin app, booted in a real browser against mocked APIs: the React screen serves /posts and /pages only when the flag is on, each route gets its own resource, and the Ember list's testids are absent so the two trees can never both be live. Written because verifying this by hand needed a working dev server and a logged-in session, which made it slow and unrepeatable - and it is exactly the kind of thing that should keep being checked in CI rather than once. The Ember half of the handshake is covered separately in the ember-admin acceptance suite, since there is no Ember app in this harness. Co-Authored-By: Claude Opus 5 --- .../posts/list/posts-list.acceptance.test.tsx | 69 +++++++++++++++++++ .../admin/src/posts/list/posts-list.screen.ts | 21 ++++++ 2 files changed, 90 insertions(+) create mode 100644 apps/admin/src/posts/list/posts-list.acceptance.test.tsx create mode 100644 apps/admin/src/posts/list/posts-list.screen.ts diff --git a/apps/admin/src/posts/list/posts-list.acceptance.test.tsx b/apps/admin/src/posts/list/posts-list.acceptance.test.tsx new file mode 100644 index 00000000000..82464af421a --- /dev/null +++ b/apps/admin/src/posts/list/posts-list.acceptance.test.tsx @@ -0,0 +1,69 @@ +import { describe, expect, it } from "vitest"; + +import { renderAdminApp } from "@test-utils/acceptance"; +import { postsListScreen } from "./posts-list.screen"; + +const FLAG_ON = { labs: { postsListReact: true } }; +const FLAG_OFF = { labs: { postsListReact: false } }; + +/** + * Proves the `postsListReact` flag swap end-to-end in the real admin app: the + * React screen appears only when the flag is on, and the Ember side of the URL + * is delegated to otherwise. + * + * There is no Ember app in this harness, so "Ember serves it" shows up as the + * React screen being absent rather than as an Ember list being present — the + * Ember half of the handshake (PostsRoute aborting its transition) is covered + * in apps/ember-admin/tests/acceptance/posts-list-react-flag-test.js. + */ +describe("Posts and pages list flag", () => { + describe.each([ + { resource: "posts", route: "/posts", title: "Posts", newLabel: "New post" }, + { resource: "pages", route: "/pages", title: "Pages", newLabel: "New page" } + ] as const)("$route", ({ resource, route, title, newLabel }) => { + it("renders the React screen when the flag is on", async () => { + await renderAdminApp(route, FLAG_ON); + + await expect.element(postsListScreen.page(resource)).toBeVisible(); + await expect.element(postsListScreen.title(resource, title)).toBeVisible(); + }); + + it("offers the primary create action", async () => { + await renderAdminApp(route, FLAG_ON); + + await expect.element(postsListScreen.newLink(resource, newLabel)).toBeVisible(); + }); + + // The Ember list must not exist alongside the React one, or the two + // trees fight over the same testids and Ember fetches for a screen + // nobody sees. + it("does not render the Ember list alongside it", async () => { + await renderAdminApp(route, FLAG_ON); + + await expect.element(postsListScreen.page(resource)).toBeVisible(); + await expect(postsListScreen.emberList()).toHaveCount(0); + await expect(postsListScreen.emberFilters()).toHaveCount(0); + }); + + it("defers to Ember when the flag is off", async () => { + await renderAdminApp(route, FLAG_OFF); + + await expect(postsListScreen.page(resource)).toHaveCount(0); + }); + + it("defers to Ember when the flag is absent entirely", async () => { + await renderAdminApp(route); + + await expect(postsListScreen.page(resource)).toHaveCount(0); + }); + }); + + // The two routes share one gate implementation, so a copy-paste slip would + // silently serve the wrong screen. + it("serves each route its own resource", async () => { + await renderAdminApp("/pages", FLAG_ON); + + await expect.element(postsListScreen.page("pages")).toBeVisible(); + await expect(postsListScreen.page("posts")).toHaveCount(0); + }); +}); diff --git a/apps/admin/src/posts/list/posts-list.screen.ts b/apps/admin/src/posts/list/posts-list.screen.ts new file mode 100644 index 00000000000..86a298f4da9 --- /dev/null +++ b/apps/admin/src/posts/list/posts-list.screen.ts @@ -0,0 +1,21 @@ +import { page } from "vitest/browser"; + +/** + * Locator vocabulary for the React posts and pages list screens. + * + * Page-scoped locators go through `page(resource)`: the admin sidebar carries + * its own "Create new post" link, so an unscoped role query matches twice. + * + * `emberList` deliberately targets the *Ember* list's testid: with the flag on + * it must not be in the DOM at all, which is the whole point of the Ember route + * aborting its transition. + */ +export const postsListScreen = { + page: (resource: "posts" | "pages") => page.getByTestId(`${resource}-page`), + title: (resource: "posts" | "pages", name: string) => + page.getByTestId(`${resource}-page`).getByRole("heading", { name }), + newLink: (resource: "posts" | "pages", name: string) => + page.getByTestId(`${resource}-page`).getByRole("link", { name }), + emberList: () => page.getByTestId("posts-list"), + emberFilters: () => page.getByTestId("posts-filters") +}; From c0ccf12d88f3adaa746717b41490dbf731b011bb Mon Sep 17 00:00:00 2001 From: Peter Zimon Date: Tue, 4 Aug 2026 11:27:01 +0200 Subject: [PATCH 03/75] Added the posts list query and filter param layer no ref Ports the filter-building half of apps/ember-admin/app/routes/posts.js: type to status mapping, the NQL builder, the three query buckets and their per-bucket default sorts. Two things here are load-bearing beyond "it fetches posts". The list is three queries, not one, drained scheduled then drafts then published - drafts sort by updated_at because they have no publish date. And buildAllFilter also feeds the inverted "select all" filter that bulk delete runs server-side against posts that were never loaded, so its exact output matters. The chip codec is deliberately separate from @/shared/filters' NQL engine. Members round-trips one ?filter= string; posts round-trips five discrete params because that is what sidebar saved views persist and what the Ember screen reads. Unknown values are carried through verbatim rather than dropped - a saved view can point at a since-renamed tag, and rewriting the URL under the user would corrupt their view. Co-Authored-By: Claude Opus 5 --- .../src/posts/list/post-filter-fields.test.ts | 65 +++++++ .../src/posts/list/post-filter-fields.ts | 66 +++++++ .../src/posts/list/post-filter-query.test.ts | 118 +++++++++++++ .../admin/src/posts/list/post-filter-query.ts | 91 ++++++++++ .../src/posts/list/post-query-params.test.ts | 159 +++++++++++++++++ .../admin/src/posts/list/post-query-params.ts | 167 ++++++++++++++++++ 6 files changed, 666 insertions(+) create mode 100644 apps/admin/src/posts/list/post-filter-fields.test.ts create mode 100644 apps/admin/src/posts/list/post-filter-fields.ts create mode 100644 apps/admin/src/posts/list/post-filter-query.test.ts create mode 100644 apps/admin/src/posts/list/post-filter-query.ts create mode 100644 apps/admin/src/posts/list/post-query-params.test.ts create mode 100644 apps/admin/src/posts/list/post-query-params.ts diff --git a/apps/admin/src/posts/list/post-filter-fields.test.ts b/apps/admin/src/posts/list/post-filter-fields.test.ts new file mode 100644 index 00000000000..d26baedf8b0 --- /dev/null +++ b/apps/admin/src/posts/list/post-filter-fields.test.ts @@ -0,0 +1,65 @@ +import {describe, expect, it} from 'vitest'; +import {ORDER_OPTIONS, VISIBILITY_OPTIONS, getOrderLabel, getTypeOptions} from './post-filter-fields'; +import {getStatusesForType} from './post-query-params'; + +describe('getTypeOptions', () => { + it('offers posts the five Ember types', () => { + expect(getTypeOptions('posts').map(option => option.value)) + .toEqual(['draft', 'published', 'sent', 'scheduled', 'featured']); + }); + + // Pages are never emailed. + it('drops "email only" for pages', () => { + expect(getTypeOptions('pages').map(option => option.value)) + .toEqual(['draft', 'published', 'scheduled', 'featured']); + }); + + it('labels the options for the resource', () => { + expect(getTypeOptions('posts')[0].label).toBe('Draft posts'); + expect(getTypeOptions('pages')[0].label).toBe('Draft pages'); + }); + + // If these drift apart, a filter the UI offers would resolve to the wrong + // statuses - or to all of them, silently. + it('only offers types the query layer understands', () => { + const known = ['draft', 'published', 'sent', 'scheduled']; + + getTypeOptions('posts').forEach((option) => { + if (option.value === 'featured') { + expect(getStatusesForType(option.value)).toHaveLength(4); + return; + } + + expect(known).toContain(option.value); + expect(getStatusesForType(option.value)).toEqual([option.value]); + }); + }); +}); + +describe('VISIBILITY_OPTIONS', () => { + it('carries the paid+tiers value as a single opaque string', () => { + expect(VISIBILITY_OPTIONS.map(option => option.value)) + .toEqual(['public', 'members', '[paid,tiers]']); + }); +}); + +describe('getOrderLabel', () => { + // "Newest first" is the absence of an order param, not a value. + it('names the default when no order is set', () => { + expect(getOrderLabel(null)).toBe('Newest first'); + expect(getOrderLabel(undefined)).toBe('Newest first'); + }); + + it('names the known orders', () => { + expect(getOrderLabel('published_at asc')).toBe('Oldest first'); + expect(getOrderLabel('updated_at desc')).toBe('Recently updated'); + }); + + it('shows an unrecognised order rather than hiding it', () => { + expect(getOrderLabel('title asc')).toBe('title asc'); + }); + + it('has an entry for every non-default order', () => { + expect(ORDER_OPTIONS).toHaveLength(2); + }); +}); diff --git a/apps/admin/src/posts/list/post-filter-fields.ts b/apps/admin/src/posts/list/post-filter-fields.ts new file mode 100644 index 00000000000..841e67b6f9e --- /dev/null +++ b/apps/admin/src/posts/list/post-filter-fields.ts @@ -0,0 +1,66 @@ +import type {PostResource} from './post-resource'; + +/** + * The values each filter and the sort can take, ported verbatim from + * `apps/ember-admin/app/controllers/posts.js` and `controllers/pages.js`. + * + * Data only - the Shade field config that renders these (icons, async value + * sources for author and tag) is built on top in the filters UI. + */ + +export interface PostFilterOption { + value: string; + label: string; +} + +/** + * `featured` sits in the same list as the statuses even though it isn't one - + * it means "every status, and featured". The URL schema can't express + * "draft AND featured", so splitting this into a status field plus a featured + * toggle would produce URLs the Ember screen renders as "Unknown". + */ +const POST_TYPE_OPTIONS: PostFilterOption[] = [ + {value: 'draft', label: 'Draft posts'}, + {value: 'published', label: 'Published posts'}, + {value: 'sent', label: 'Email only posts'}, + {value: 'scheduled', label: 'Scheduled posts'}, + {value: 'featured', label: 'Featured posts'} +]; + +/** Pages are never emailed, so they have no "Email only". */ +const PAGE_TYPE_OPTIONS: PostFilterOption[] = [ + {value: 'draft', label: 'Draft pages'}, + {value: 'published', label: 'Published pages'}, + {value: 'scheduled', label: 'Scheduled pages'}, + {value: 'featured', label: 'Featured pages'} +]; + +/** + * `[paid,tiers]` is an opaque option value, not structure - Ember interpolates + * it straight into the filter string. + */ +export const VISIBILITY_OPTIONS: PostFilterOption[] = [ + {value: 'public', label: 'Public'}, + {value: 'members', label: 'Members-only'}, + {value: '[paid,tiers]', label: 'Paid members-only'} +]; + +/** "Newest first" is the absence of an `order` param, so it has no entry. */ +export const ORDER_OPTIONS: PostFilterOption[] = [ + {value: 'published_at asc', label: 'Oldest first'}, + {value: 'updated_at desc', label: 'Recently updated'} +]; + +export const DEFAULT_ORDER_LABEL = 'Newest first'; + +export function getTypeOptions(resource: PostResource): PostFilterOption[] { + return resource === 'pages' ? PAGE_TYPE_OPTIONS : POST_TYPE_OPTIONS; +} + +export function getOrderLabel(order?: string | null): string { + if (!order) { + return DEFAULT_ORDER_LABEL; + } + + return ORDER_OPTIONS.find(option => option.value === order)?.label ?? order; +} diff --git a/apps/admin/src/posts/list/post-filter-query.test.ts b/apps/admin/src/posts/list/post-filter-query.test.ts new file mode 100644 index 00000000000..72febef298e --- /dev/null +++ b/apps/admin/src/posts/list/post-filter-query.test.ts @@ -0,0 +1,118 @@ +import {describe, expect, it} from 'vitest'; +import {POST_FILTER_PARAMS, parsePostFilters, serializePostFilters} from './post-filter-query'; +import type {Filter} from '@tryghost/shade/patterns'; + +/** Ids are asserted separately (they only have to be unique). */ +function withoutIds(filters: Filter[]): Array> { + return filters.map(({id: _id, ...rest}) => rest); +} + +// The posts screen is addressed by five discrete URL params rather than one NQL +// string, because sidebar saved views persist exactly that shape and must keep +// working across both the Ember and React implementations. These tests pin the +// round-trip. + +describe('POST_FILTER_PARAMS', () => { + // `order` is a sort, not a filter - it has no operator and would render as + // a nonsense chip ("Sort is Newest first"), so it lives outside this model. + it('covers the four filterable params and not order', () => { + expect(POST_FILTER_PARAMS).toEqual(['type', 'visibility', 'author', 'tag']); + }); +}); + +describe('parsePostFilters', () => { + it('returns nothing when no params are set', () => { + expect(parsePostFilters({})).toEqual([]); + expect(parsePostFilters({type: null, visibility: null, author: null, tag: null})).toEqual([]); + }); + + it('turns a param into a single-value "is" filter', () => { + expect(withoutIds(parsePostFilters({type: 'draft'}))).toEqual([ + {field: 'type', operator: 'is', values: ['draft']} + ]); + }); + + it('emits filters in a stable param order regardless of input order', () => { + const filters = parsePostFilters({tag: 'news', type: 'draft', author: 'jo', visibility: 'paid'}); + + expect(filters.map(filter => filter.field)).toEqual(['type', 'visibility', 'author', 'tag']); + }); + + it('gives every filter a distinct id', () => { + const filters = parsePostFilters({type: 'draft', tag: 'news'}); + const ids = filters.map(filter => filter.id); + + expect(new Set(ids).size).toBe(ids.length); + }); + + it('ignores empty strings', () => { + expect(parsePostFilters({type: ''})).toEqual([]); + }); + + // A saved view can point at a tag that was later renamed, or at a value a + // newer Ember build understands. Dropping it would silently rewrite the + // user's URL and corrupt their view. + it('keeps values it does not recognise', () => { + expect(withoutIds(parsePostFilters({type: 'nonsense', tag: 'deleted-tag'}))).toEqual([ + {field: 'type', operator: 'is', values: ['nonsense']}, + {field: 'tag', operator: 'is', values: ['deleted-tag']} + ]); + }); + + it('treats the paid+tiers visibility value as one opaque value', () => { + expect(withoutIds(parsePostFilters({visibility: '[paid,tiers]'}))).toEqual([ + {field: 'visibility', operator: 'is', values: ['[paid,tiers]']} + ]); + }); +}); + +describe('serializePostFilters', () => { + it('nulls every param when there are no filters', () => { + expect(serializePostFilters([])).toEqual({ + type: null, visibility: null, author: null, tag: null + }); + }); + + it('writes a filter value back to its param', () => { + expect(serializePostFilters([ + {id: 'type:1', field: 'type', operator: 'is', values: ['draft']} + ])).toEqual({type: 'draft', visibility: null, author: null, tag: null}); + }); + + it('nulls a param whose filter has no value yet', () => { + // Shade creates a filter as soon as a field is picked, before a value. + expect(serializePostFilters([ + {id: 'type:1', field: 'type', operator: 'is', values: []} + ])).toEqual({type: null, visibility: null, author: null, tag: null}); + }); + + it('ignores fields that are not URL params', () => { + expect(serializePostFilters([ + {id: 'order:1', field: 'order', operator: 'is', values: ['published_at asc']} + ])).toEqual({type: null, visibility: null, author: null, tag: null}); + }); + + it('takes the last value when a field somehow appears twice', () => { + expect(serializePostFilters([ + {id: 'type:1', field: 'type', operator: 'is', values: ['draft']}, + {id: 'type:2', field: 'type', operator: 'is', values: ['published']} + ])).toMatchObject({type: 'published'}); + }); +}); + +describe('round-tripping', () => { + it.each([ + {}, + {type: 'draft'}, + {type: 'featured'}, + {visibility: '[paid,tiers]'}, + {type: 'scheduled', visibility: 'members', author: 'jo', tag: 'news'}, + {type: 'nonsense', tag: 'deleted-tag'} + ])('survives parse then serialize: %j', (params) => { + const expected = { + type: null, visibility: null, author: null, tag: null, ...params + }; + + expect(serializePostFilters(parsePostFilters(params))).toEqual(expected); + }); +}); diff --git a/apps/admin/src/posts/list/post-filter-query.ts b/apps/admin/src/posts/list/post-filter-query.ts new file mode 100644 index 00000000000..d6b781670fa --- /dev/null +++ b/apps/admin/src/posts/list/post-filter-query.ts @@ -0,0 +1,91 @@ +import {stampPredicates} from '@/shared/filters'; +import type {Filter} from '@tryghost/shade/patterns'; +import type {PostListParams} from './post-query-params'; + +/** + * Bridges the posts/pages URL params and the Shade `Filters` chip model. + * + * Unlike members, which round-trips a single NQL `?filter=` string, posts are + * addressed by discrete params (`?type=draft&tag=news`). That shape is fixed: + * sidebar saved views persist exactly it, and the Ember and React screens have + * to agree on it while both exist. So this is a small dedicated codec rather + * than a use of `@/shared/filters`' NQL engine - only `stampPredicates` is + * shared. + * + * `order` is deliberately absent: it is a sort, not a filter, so it has no + * operator and would read as a nonsense chip. It is carried alongside these. + */ + +export const POST_FILTER_PARAMS = ['type', 'visibility', 'author', 'tag'] as const; + +export type PostFilterParam = (typeof POST_FILTER_PARAMS)[number]; + +export type PostFilterParamValues = Record; + +const EMPTY_PARAMS: PostFilterParamValues = { + type: null, + visibility: null, + author: null, + tag: null +}; + +/** These fields are single-select equality; Ember offers nothing else. */ +const OPERATOR = 'is'; + +function isFilterParam(field: string): field is PostFilterParam { + return (POST_FILTER_PARAMS as readonly string[]).includes(field); +} + +/** + * Values are carried through verbatim, including ones we don't recognise: a + * saved view may point at a since-renamed tag, or at a value only a newer + * build understands. Dropping it would silently rewrite the user's URL. + */ +export function parsePostFilters(params: PostListParams): Filter[] { + const predicates = POST_FILTER_PARAMS.flatMap((param) => { + const value = params[param]; + + if (value === null || value === undefined || value === '') { + return []; + } + + return [{field: param, operator: OPERATOR, values: [value]}]; + }); + + return stampPredicates(predicates); +} + +/** + * URL params are strings. Anything else a chip might carry is not + * representable in the URL, so it clears the param rather than serialising as + * "[object Object]". + */ +function toParamValue(value: unknown): string | null { + if (typeof value === 'string') { + return value === '' ? null : value; + } + + if (typeof value === 'number' || typeof value === 'boolean') { + return String(value); + } + + return null; +} + +/** + * The inverse. A filter with no value yet - Shade creates one as soon as a + * field is picked - clears its param rather than writing an empty one. + */ +export function serializePostFilters(filters: Filter[]): PostFilterParamValues { + const params: PostFilterParamValues = {...EMPTY_PARAMS}; + + filters.forEach((filter) => { + if (!isFilterParam(filter.field)) { + return; + } + + params[filter.field] = toParamValue(filter.values[0]); + }); + + return params; +} diff --git a/apps/admin/src/posts/list/post-query-params.test.ts b/apps/admin/src/posts/list/post-query-params.test.ts new file mode 100644 index 00000000000..0ce39696b37 --- /dev/null +++ b/apps/admin/src/posts/list/post-query-params.test.ts @@ -0,0 +1,159 @@ +import {describe, expect, it} from 'vitest'; +import { + BUCKET_ORDER, + buildAllFilter, + buildBucketFilter, + getActiveBuckets, + getBucketOrder, + getBucketSearchParams, + getStatusesForType +} from './post-query-params'; + +// Ported from apps/ember-admin/app/routes/posts.js. These strings go straight +// into API filters, and the same builder feeds the inverted "select all" filter +// that bulk delete runs against, so the exact output matters. + +describe('getStatusesForType', () => { + it('returns every status when no type is set', () => { + expect(getStatusesForType(null)).toEqual(['draft', 'scheduled', 'published', 'sent']); + expect(getStatusesForType(undefined)).toEqual(['draft', 'scheduled', 'published', 'sent']); + }); + + it.each([ + ['draft', ['draft']], + ['published', ['published']], + ['scheduled', ['scheduled']], + ['sent', ['sent']] + ])('maps type=%s to its own status', (type, expected) => { + expect(getStatusesForType(type)).toEqual(expected); + }); + + // `featured` is not a status - it is every status plus featured:true. + it('treats featured as every status', () => { + expect(getStatusesForType('featured')).toEqual(['draft', 'scheduled', 'published', 'sent']); + }); + + it('falls back to every status for an unrecognised type', () => { + expect(getStatusesForType('nonsense')).toEqual(['draft', 'scheduled', 'published', 'sent']); + }); +}); + +describe('buildAllFilter', () => { + it('filters by the full status set when nothing else is set', () => { + expect(buildAllFilter({})).toBe('status:[draft,scheduled,published,sent]'); + }); + + it('omits blank params rather than emitting empty clauses', () => { + expect(buildAllFilter({type: null, visibility: null, author: null, tag: null})) + .toBe('status:[draft,scheduled,published,sent]'); + }); + + // Key order is load-bearing only in that it must stay stable; this locks + // the order Ember produced so filters compare equal across the two apps. + it('orders clauses tag, visibility, status, featured, authors', () => { + expect(buildAllFilter({tag: 'news', visibility: 'paid', type: 'featured', author: 'jo'})) + .toBe('tag:news+visibility:paid+status:[draft,scheduled,published,sent]+featured:true+authors:jo'); + }); + + it('adds featured:true only for type=featured', () => { + expect(buildAllFilter({type: 'featured'})) + .toBe('status:[draft,scheduled,published,sent]+featured:true'); + expect(buildAllFilter({type: 'draft'})).toBe('status:draft'); + }); + + it('passes the paid+tiers visibility value through untouched', () => { + // Ember treats this as an opaque option value, not as structure. + expect(buildAllFilter({visibility: '[paid,tiers]'})) + .toBe('visibility:[paid,tiers]+status:[draft,scheduled,published,sent]'); + }); + + it('narrows to the current user for authors and contributors', () => { + expect(buildAllFilter({author: 'someone-else'}, {ownAuthorSlug: 'me'})) + .toBe('status:[draft,scheduled,published,sent]+authors:me'); + }); + + it('uses the author param when the user is not scoped to their own posts', () => { + expect(buildAllFilter({author: 'jo'}, {})) + .toBe('status:[draft,scheduled,published,sent]+authors:jo'); + }); +}); + +describe('getActiveBuckets', () => { + it('runs all three buckets in order when no type is set', () => { + expect(getActiveBuckets({})).toEqual(['scheduled', 'draft', 'publishedAndSent']); + }); + + it('matches the documented render order', () => { + expect(BUCKET_ORDER).toEqual(['scheduled', 'draft', 'publishedAndSent']); + }); + + it.each([ + ['draft', ['draft']], + ['scheduled', ['scheduled']], + ['published', ['publishedAndSent']], + ['sent', ['publishedAndSent']] + ])('runs a single bucket for type=%s', (type, expected) => { + expect(getActiveBuckets({type})).toEqual(expected); + }); + + it('runs all three for featured, which spans every status', () => { + expect(getActiveBuckets({type: 'featured'})).toEqual(['scheduled', 'draft', 'publishedAndSent']); + }); +}); + +describe('buildBucketFilter', () => { + it('replaces the status clause in place, keeping clause order', () => { + expect(buildBucketFilter('scheduled', {tag: 'news', author: 'jo'})) + .toBe('tag:news+status:scheduled+authors:jo'); + }); + + it('combines published and sent into one bucket', () => { + expect(buildBucketFilter('publishedAndSent', {})).toBe('status:[published,sent]'); + }); + + // With type=published only published is wanted, even though the bucket is + // shared with sent - otherwise filtering by Published would show emails. + it('narrows the shared bucket to just the requested status', () => { + expect(buildBucketFilter('publishedAndSent', {type: 'published'})).toBe('status:published'); + expect(buildBucketFilter('publishedAndSent', {type: 'sent'})).toBe('status:sent'); + }); + + it('keeps featured:true on every bucket', () => { + expect(buildBucketFilter('draft', {type: 'featured'})).toBe('status:draft+featured:true'); + }); +}); + +describe('getBucketOrder', () => { + // Drafts have no published_at, so they sort by when they were last touched. + it('defaults drafts to recently updated and the rest to publish date', () => { + expect(getBucketOrder('draft', null)).toBe('updated_at desc'); + expect(getBucketOrder('scheduled', null)).toBe('published_at desc'); + expect(getBucketOrder('publishedAndSent', null)).toBe('published_at desc'); + }); + + it('lets an explicit order override every bucket', () => { + expect(getBucketOrder('draft', 'published_at asc')).toBe('published_at asc'); + expect(getBucketOrder('scheduled', 'published_at asc')).toBe('published_at asc'); + expect(getBucketOrder('publishedAndSent', 'updated_at desc')).toBe('updated_at desc'); + }); +}); + +describe('getBucketSearchParams', () => { + it('requests 30 per page, matching Ember', () => { + expect(getBucketSearchParams('draft', {})).toMatchObject({limit: '30'}); + }); + + it('carries the bucket filter and order', () => { + expect(getBucketSearchParams('scheduled', {tag: 'news'})).toEqual({ + filter: 'tag:news+status:scheduled', + order: 'published_at desc', + limit: '30' + }); + }); + + // Ember sends formats=mobiledoc,lexical here, which drags whole post bodies + // into a 30-row list. Omitting it is invisible to the user. + it('does not request post content formats', () => { + expect(getBucketSearchParams('draft', {})).not.toHaveProperty('formats'); + }); +}); diff --git a/apps/admin/src/posts/list/post-query-params.ts b/apps/admin/src/posts/list/post-query-params.ts new file mode 100644 index 00000000000..6a50d8f66ba --- /dev/null +++ b/apps/admin/src/posts/list/post-query-params.ts @@ -0,0 +1,167 @@ +/** + * Turns the posts/pages URL params into the API queries that back the list. + * + * Ported from `apps/ember-admin/app/routes/posts.js`. Two things here are + * load-bearing beyond "it fetches posts": + * + * - The list is not one query but three, drained in order (scheduled, then + * drafts, then published/sent), each with its own default sort. Drafts have + * no `published_at`, so they sort by when they were last touched. + * - `buildAllFilter` also feeds the inverted "select all" filter that bulk + * edit and bulk delete run against server-side, including posts that were + * never loaded. Its exact output matters. + */ + +export type PostStatus = 'draft' | 'scheduled' | 'published' | 'sent'; + +/** The three queries the list is assembled from, in render order. */ +export type PostBucket = 'scheduled' | 'draft' | 'publishedAndSent'; + +export const BUCKET_ORDER: readonly PostBucket[] = ['scheduled', 'draft', 'publishedAndSent']; + +const ALL_STATUSES: readonly PostStatus[] = ['draft', 'scheduled', 'published', 'sent']; + +const TYPE_TO_STATUSES: Record = { + draft: ['draft'], + published: ['published'], + scheduled: ['scheduled'], + sent: ['sent'] +}; + +/** Rows per request. Matches Ember; also decides when a bucket "opens". */ +export const POSTS_PER_PAGE = 30; + +/** + * The five URL params the screen is addressed by. This shape is the source of + * truth: it is what the URL carries and what sidebar saved views persist, so + * it must round-trip byte-identically between the Ember and React screens. + */ +export interface PostListParams { + type?: string | null; + visibility?: string | null; + author?: string | null; + tag?: string | null; + order?: string | null; +} + +export interface PostFilterContext { + /** + * Set for authors and contributors, who may only ever see their own posts. + * When set it wins over the `author` param entirely. + */ + ownAuthorSlug?: string | null; +} + +/** + * `featured` is not a status - it means every status *and* `featured:true`. + * An unrecognised type falls back to everything, matching Ember's `switch`. + */ +export function getStatusesForType(type?: string | null): PostStatus[] { + return [...(TYPE_TO_STATUSES[type ?? ''] ?? ALL_STATUSES)]; +} + +function statusClause(statuses: PostStatus[]): string { + return statuses.length === 1 ? statuses[0] : `[${statuses.join(',')}]`; +} + +/** + * Joins `key:value` pairs with `+`, dropping blanks. Values are interpolated + * verbatim - `visibility=[paid,tiers]` is an opaque option value, not + * structure to be parsed. + */ +function toFilterString(clauses: Array<[string, string | null | undefined]>): string { + return clauses + .filter((entry): entry is [string, string] => { + const value = entry[1]; + return value !== null && value !== undefined && value !== ''; + }) + .map(([key, value]) => `${key}:${value}`) + .join('+'); +} + +/** + * Clause order is fixed (tag, visibility, status, featured, authors) so filters + * built here compare equal to the ones Ember builds. + */ +function filterClauses( + params: PostListParams, + statuses: PostStatus[], + {ownAuthorSlug}: PostFilterContext +): Array<[string, string | null | undefined]> { + return [ + ['tag', params.tag], + ['visibility', params.visibility], + ['status', statusClause(statuses)], + ['featured', params.type === 'featured' ? 'true' : null], + ['authors', ownAuthorSlug || params.author] + ]; +} + +/** + * The filter for everything matching the current params, across all statuses. + * Used as the parent filter for bulk actions on an inverted selection. + */ +export function buildAllFilter(params: PostListParams, context: PostFilterContext = {}): string { + return toFilterString(filterClauses(params, getStatusesForType(params.type), context)); +} + +/** Which of the three queries the current params need, in render order. */ +export function getActiveBuckets(params: PostListParams): PostBucket[] { + const statuses = getStatusesForType(params.type); + + return BUCKET_ORDER.filter((bucket) => { + if (bucket === 'publishedAndSent') { + return statuses.includes('published') || statuses.includes('sent'); + } + return statuses.includes(bucket); + }); +} + +function bucketStatuses(bucket: PostBucket, params: PostListParams): PostStatus[] { + if (bucket !== 'publishedAndSent') { + return [bucket]; + } + + // The bucket is shared, but filtering by Published must not return emails. + return getStatusesForType(params.type).filter( + (status): status is PostStatus => status === 'published' || status === 'sent' + ); +} + +export function buildBucketFilter( + bucket: PostBucket, + params: PostListParams, + context: PostFilterContext = {} +): string { + return toFilterString(filterClauses(params, bucketStatuses(bucket, params), context)); +} + +/** + * An explicit `order` param overrides every bucket. Otherwise drafts sort by + * `updated_at` (they have no publish date) and the rest by `published_at`. + */ +export function getBucketOrder(bucket: PostBucket, order?: string | null): string { + if (order) { + return order; + } + + return bucket === 'draft' ? 'updated_at desc' : 'published_at desc'; +} + +/** + * Search params for one bucket's request. Deliberately omits `include` and + * `formats`: the server's default relations already attach tags, authors, + * email, tiers and click counts, and Ember's `formats=mobiledoc,lexical` + * drags entire post bodies into a 30-row list for no visible benefit. + */ +export function getBucketSearchParams( + bucket: PostBucket, + params: PostListParams, + context: PostFilterContext = {} +): Record { + return { + filter: buildBucketFilter(bucket, params, context), + order: getBucketOrder(bucket, params.order), + limit: String(POSTS_PER_PAGE) + }; +} From 2b445f6a892ff4cbe95dc0bc477b9e9acb1f513a Mon Sep 17 00:00:00 2001 From: Peter Zimon Date: Tue, 4 Aug 2026 11:46:13 +0200 Subject: [PATCH 04/75] Added the posts and pages list data layer no ref The React list now fetches the right posts for any URL. Still bare titles - this is about the data being right, not the design. The list is three queries, not one: scheduled, drafts, published+sent, each with its own default sort because drafts have no published_at and sort by when they were last touched. All three fire at once; what is sequenced is rendering, so a bucket only appears once every earlier one has loaded every page. That rule is a pure function so it can be tested with plain data instead of mocked queries - including the case that actually matters day to day, where a site has nothing scheduled and drafts must appear immediately rather than waiting. usePostsList calls both resource hooks per bucket and gates them with `enabled` rather than picking one, since a hook chosen at runtime breaks the rules of hooks. The URL is never rewritten on hydration, which is a deliberate difference from the members equivalent: a posts URL *is* a saved view's identity, so canonicalising one we merely parsed would corrupt the view and desync from the Ember screen reading the same params. Unrecognised values are carried through for the same reason. Dropped formats=mobiledoc,lexical from the list request. Ember sends it, which pulls whole post bodies into a 30-row list; the server's default relations already attach what the list renders. Co-Authored-By: Claude Opus 5 --- apps/admin-x-framework/src/api/pages.ts | 10 +- apps/admin-x-framework/src/api/posts.ts | 36 +++- .../posts/list/compose-post-buckets.test.ts | 161 ++++++++++++++++ .../src/posts/list/compose-post-buckets.ts | 77 ++++++++ .../hooks/use-posts-filter-state.test.tsx | 177 ++++++++++++++++++ .../list/hooks/use-posts-filter-state.ts | 100 ++++++++++ .../src/posts/list/hooks/use-posts-list.ts | 93 +++++++++ .../list/posts-list-data.acceptance.test.tsx | 141 ++++++++++++++ .../src/posts/list/posts-list-screen.tsx | 35 +++- .../posts/list/posts-list.acceptance.test.tsx | 25 +-- .../admin/src/posts/list/posts-list.screen.ts | 11 +- apps/admin/test-utils/acceptance/index.ts | 2 +- apps/admin/test-utils/acceptance/resources.ts | 8 + 13 files changed, 852 insertions(+), 24 deletions(-) create mode 100644 apps/admin/src/posts/list/compose-post-buckets.test.ts create mode 100644 apps/admin/src/posts/list/compose-post-buckets.ts create mode 100644 apps/admin/src/posts/list/hooks/use-posts-filter-state.test.tsx create mode 100644 apps/admin/src/posts/list/hooks/use-posts-filter-state.ts create mode 100644 apps/admin/src/posts/list/hooks/use-posts-list.ts create mode 100644 apps/admin/src/posts/list/posts-list-data.acceptance.test.tsx diff --git a/apps/admin-x-framework/src/api/pages.ts b/apps/admin-x-framework/src/api/pages.ts index 501115bdec5..570f0be2760 100644 --- a/apps/admin-x-framework/src/api/pages.ts +++ b/apps/admin-x-framework/src/api/pages.ts @@ -1,6 +1,9 @@ import {InfiniteData} from '@tanstack/react-query'; import {Meta, createInfiniteQuery, createQuery, createQueryWithId} from '../utils/api/hooks'; +import type {Email, PostListFields} from './posts'; +// A page is a post with `displayName: 'page'` server-side, so the list screens +// read the same fields off both. export type Page = { id: string; title: string; @@ -10,7 +13,12 @@ export type Page = { published_at?: string; visibility?: string; uuid?: string; -}; + feature_image?: string; + email?: Email; + count?: { + clicks?: number; + }; +} & PostListFields; export interface PagesResponseType { meta?: Meta diff --git a/apps/admin-x-framework/src/api/posts.ts b/apps/admin-x-framework/src/api/posts.ts index 2f2f13fcbe7..b494ef8f8c5 100644 --- a/apps/admin-x-framework/src/api/posts.ts +++ b/apps/admin-x-framework/src/api/posts.ts @@ -5,6 +5,40 @@ export type Email = { opened_count: number; email_count: number; status?: string; + track_opens?: boolean; + track_clicks?: boolean; +}; + +export type PostAuthor = { + id: string; + name?: string; + email?: string; + slug?: string; +}; + +export type PostTag = { + id: string; + name?: string; + slug?: string; + visibility?: string; +}; + +/** + * Fields the list screens need on top of the analytics-shaped core. All + * optional: the analytics endpoints don't return them, and the list gets them + * from the server's default relations rather than an explicit `include`. + */ +export type PostListFields = { + featured?: boolean; + updated_at?: string; + created_at?: string; + excerpt?: string; + custom_excerpt?: string; + authors?: PostAuthor[]; + primary_author?: PostAuthor | null; + tags?: PostTag[]; + primary_tag?: PostTag | null; + tiers?: Array<{id: string; name?: string}>; }; export type Post = { @@ -30,7 +64,7 @@ export type Post = { email_recipient_filter?: string; send_email_when_published?: boolean; email_stats?: object; -}; +} & PostListFields; export interface PostsResponseType { meta?: Meta diff --git a/apps/admin/src/posts/list/compose-post-buckets.test.ts b/apps/admin/src/posts/list/compose-post-buckets.test.ts new file mode 100644 index 00000000000..aedb108c6b6 --- /dev/null +++ b/apps/admin/src/posts/list/compose-post-buckets.test.ts @@ -0,0 +1,161 @@ +import {describe, expect, it} from 'vitest'; +import {composePostBuckets, type PostBucketResult} from './compose-post-buckets'; + +interface Item { + id: string; +} + +function bucketResult(overrides: Partial> = {}): PostBucketResult { + return { + bucket: 'scheduled', + items: [], + total: 0, + hasNextPage: false, + isLoading: false, + isFetchingNextPage: false, + isError: false, + fetchNextPage: () => {}, + ...overrides + }; +} + +const item = (id: string): Item => ({id}); + +describe('composePostBuckets', () => { + it('is empty with no buckets', () => { + const result = composePostBuckets([]); + + expect(result.items).toEqual([]); + expect(result.totalItems).toBe(0); + expect(result.hasNextPage).toBe(false); + expect(result.isLoading).toBe(false); + }); + + // Until every bucket's first page has landed we can't know which are + // visible - showing what we have would flash drafts in above scheduled. + it('reports loading while any bucket is still on its first page', () => { + const result = composePostBuckets([ + bucketResult({bucket: 'scheduled', items: [item('a')]}), + bucketResult({bucket: 'draft', isLoading: true}) + ]); + + expect(result.isLoading).toBe(true); + expect(result.items).toEqual([]); + }); + + it('concatenates buckets in order once everything has loaded', () => { + const result = composePostBuckets([ + bucketResult({bucket: 'scheduled', items: [item('s1')], total: 1}), + bucketResult({bucket: 'draft', items: [item('d1')], total: 1}), + bucketResult({bucket: 'publishedAndSent', items: [item('p1')], total: 1}) + ]); + + expect(result.items.map(entry => entry.id)).toEqual(['s1', 'd1', 'p1']); + expect(result.totalItems).toBe(3); + expect(result.isLoading).toBe(false); + }); + + // Ember drains each bucket fully before the next one renders. + it('hides later buckets until the earlier ones are exhausted', () => { + const result = composePostBuckets([ + bucketResult({bucket: 'scheduled', items: [item('s1')], total: 40, hasNextPage: true}), + bucketResult({bucket: 'draft', items: [item('d1')], total: 5}), + bucketResult({bucket: 'publishedAndSent', items: [item('p1')], total: 5}) + ]); + + expect(result.items.map(entry => entry.id)).toEqual(['s1']); + }); + + it('opens the next bucket once the one before it is exhausted', () => { + const result = composePostBuckets([ + bucketResult({bucket: 'scheduled', items: [item('s1')], total: 1}), + bucketResult({bucket: 'draft', items: [item('d1')], total: 40, hasNextPage: true}), + bucketResult({bucket: 'publishedAndSent', items: [item('p1')], total: 5}) + ]); + + expect(result.items.map(entry => entry.id)).toEqual(['s1', 'd1']); + }); + + // The common case: most sites have nothing scheduled, so that bucket + // reports "no more pages" on its first response and drafts show at once. + it('skips straight past an empty bucket', () => { + const result = composePostBuckets([ + bucketResult({bucket: 'scheduled', items: [], total: 0}), + bucketResult({bucket: 'draft', items: [item('d1')], total: 1}), + bucketResult({bucket: 'publishedAndSent', items: [item('p1')], total: 1}) + ]); + + expect(result.items.map(entry => entry.id)).toEqual(['d1', 'p1']); + }); + + it('counts every bucket, including ones not yet visible', () => { + const result = composePostBuckets([ + bucketResult({bucket: 'scheduled', items: [item('s1')], total: 40, hasNextPage: true}), + bucketResult({bucket: 'draft', items: [], total: 12}), + bucketResult({bucket: 'publishedAndSent', items: [], total: 100}) + ]); + + expect(result.totalItems).toBe(152); + }); + + describe('paging', () => { + it('has a next page while any bucket does', () => { + const result = composePostBuckets([ + bucketResult({bucket: 'scheduled', total: 1}), + bucketResult({bucket: 'draft', total: 40, hasNextPage: true}) + ]); + + expect(result.hasNextPage).toBe(true); + }); + + it('pages the earliest bucket that still has more', () => { + let scheduledFetched = 0; + let draftFetched = 0; + + const result = composePostBuckets([ + bucketResult({ + bucket: 'scheduled', total: 40, hasNextPage: true, fetchNextPage: () => { + scheduledFetched += 1; + } + }), + bucketResult({ + bucket: 'draft', total: 40, hasNextPage: true, fetchNextPage: () => { + draftFetched += 1; + } + }) + ]); + + result.fetchNextPage(); + + expect(scheduledFetched).toBe(1); + expect(draftFetched).toBe(0); + }); + + it('does nothing when everything is loaded', () => { + const result = composePostBuckets([bucketResult({bucket: 'draft', total: 1})]); + + expect(() => { + result.fetchNextPage(); + }).not.toThrow(); + expect(result.hasNextPage).toBe(false); + }); + + it('reports fetching only for the bucket currently paging', () => { + const result = composePostBuckets([ + bucketResult({bucket: 'scheduled', total: 40, hasNextPage: true, isFetchingNextPage: true}), + bucketResult({bucket: 'draft', total: 40, hasNextPage: true}) + ]); + + expect(result.isFetchingNextPage).toBe(true); + }); + }); + + it('reports an error if any bucket failed', () => { + const result = composePostBuckets([ + bucketResult({bucket: 'scheduled'}), + bucketResult({bucket: 'draft', isError: true}) + ]); + + expect(result.isError).toBe(true); + }); +}); diff --git a/apps/admin/src/posts/list/compose-post-buckets.ts b/apps/admin/src/posts/list/compose-post-buckets.ts new file mode 100644 index 00000000000..4197812d47d --- /dev/null +++ b/apps/admin/src/posts/list/compose-post-buckets.ts @@ -0,0 +1,77 @@ +import type {PostBucket} from './post-query-params'; + +/** + * Assembles the three per-status queries into the single list the screen + * renders. + * + * Ported from the sequenced infinity loaders in + * `apps/ember-admin/app/templates/posts.hbs`. All three queries run from the + * start; what is sequenced is *rendering*. A bucket only becomes visible once + * every earlier bucket has loaded every page, so the list reads scheduled, + * then drafts, then published/sent - with each bucket internally sorted by its + * own default (drafts by `updated_at`, the rest by `published_at`). + * + * Pure so the ordering rules can be tested without mocking queries. + */ + +export interface PostBucketResult { + bucket: PostBucket; + items: TItem[]; + /** Server-reported total for this bucket, including unloaded pages. */ + total: number; + hasNextPage: boolean; + isLoading: boolean; + isFetchingNextPage: boolean; + isError: boolean; + fetchNextPage: () => void; +} + +export interface ComposedPostList { + items: TItem[]; + totalItems: number; + hasNextPage: boolean; + isFetchingNextPage: boolean; + isLoading: boolean; + isError: boolean; + fetchNextPage: () => void; +} + +const noop = () => {}; + +export function composePostBuckets(results: PostBucketResult[]): ComposedPostList { + const totalItems = results.reduce((total, result) => total + result.total, 0); + const isError = results.some(result => result.isError); + + // Nothing can be placed until every bucket's first page has landed: a + // bucket that turns out to be empty lets the next one open immediately, + // so rendering early would flash drafts in above scheduled. + const isLoading = results.some(result => result.isLoading); + + if (isLoading) { + return { + items: [], + totalItems, + hasNextPage: false, + isFetchingNextPage: false, + isLoading: true, + isError, + fetchNextPage: noop + }; + } + + // The first bucket that still has pages is the one currently paging; + // everything after it stays hidden until it drains. + const pagingIndex = results.findIndex(result => result.hasNextPage); + const visible = pagingIndex === -1 ? results : results.slice(0, pagingIndex + 1); + const paging = pagingIndex === -1 ? undefined : results[pagingIndex]; + + return { + items: visible.flatMap(result => result.items), + totalItems, + hasNextPage: Boolean(paging), + isFetchingNextPage: paging?.isFetchingNextPage ?? false, + isLoading: false, + isError, + fetchNextPage: paging?.fetchNextPage ?? noop + }; +} diff --git a/apps/admin/src/posts/list/hooks/use-posts-filter-state.test.tsx b/apps/admin/src/posts/list/hooks/use-posts-filter-state.test.tsx new file mode 100644 index 00000000000..291a0eb9b95 --- /dev/null +++ b/apps/admin/src/posts/list/hooks/use-posts-filter-state.test.tsx @@ -0,0 +1,177 @@ +import {MemoryRouter, useSearchParams} from 'react-router'; +import {act, renderHook, waitFor} from '@testing-library/react'; +import {describe, expect, it} from 'vitest'; +import {usePostsFilterState} from './use-posts-filter-state'; +import type {ReactNode} from 'react'; + +function createWrapper(initialEntry: string) { + return function Wrapper({children}: {children: ReactNode}) { + return {children}; + }; +} + +function renderState(initialEntry: string) { + return renderHook(() => { + const state = usePostsFilterState(); + const [searchParams] = useSearchParams(); + + return {...state, query: searchParams.toString()}; + }, {wrapper: createWrapper(initialEntry)}); +} + +describe('usePostsFilterState', () => { + it('starts empty with no params', () => { + const {result} = renderState('/posts'); + + expect(result.current.filters).toEqual([]); + // `params` carries order too - the query layer needs it to resolve each + // bucket's sort - even though it is not part of the chip model. + expect(result.current.params).toEqual({ + type: null, visibility: null, author: null, tag: null, order: null + }); + expect(result.current.order).toBeNull(); + expect(result.current.hasFilters).toBe(false); + }); + + it('hydrates filters from the URL', () => { + const {result} = renderState('/posts?type=draft&tag=news'); + + expect(result.current.filters.map(filter => filter.field)).toEqual(['type', 'tag']); + expect(result.current.params).toMatchObject({type: 'draft', tag: 'news'}); + expect(result.current.hasFilters).toBe(true); + }); + + it('reads order separately from the filters', () => { + const {result} = renderState('/posts?order=updated_at%20desc'); + + expect(result.current.order).toBe('updated_at desc'); + expect(result.current.filters).toEqual([]); + // Sorting is not filtering - it must not trigger the "no posts match + // the current filter" empty state. + expect(result.current.hasFilters).toBe(false); + }); + + // A URL is a saved view's identity. Rewriting it on load - even + // canonicalising it - would silently corrupt the user's view, and the + // Ember screen would then read something different. + it('never rewrites the URL on hydration', async () => { + const {result} = renderState('/posts?type=draft&tag=news&order=updated_at+desc'); + const initial = result.current.query; + + await waitFor(() => { + expect(result.current.filters).toHaveLength(2); + }); + + expect(result.current.query).toBe(initial); + }); + + it('keeps params it does not recognise', async () => { + const {result} = renderState('/posts?type=nonsense&tag=deleted-tag'); + + await waitFor(() => { + expect(result.current.filters).toHaveLength(2); + }); + + expect(result.current.query).toContain('type=nonsense'); + expect(result.current.query).toContain('tag=deleted-tag'); + }); + + it('writes filter changes back to the URL', async () => { + const {result} = renderState('/posts'); + + act(() => { + result.current.setFilters([ + {id: 'type:1', field: 'type', operator: 'is', values: ['draft']} + ]); + }); + + await waitFor(() => { + expect(result.current.query).toBe('type=draft'); + }); + expect(result.current.params).toMatchObject({type: 'draft'}); + }); + + it('removes a param entirely rather than leaving it empty', async () => { + const {result} = renderState('/posts?type=draft'); + + act(() => { + result.current.setFilters([]); + }); + + await waitFor(() => { + expect(result.current.query).toBe(''); + }); + }); + + it('changes the sort without touching the filters', async () => { + const {result} = renderState('/posts?type=draft'); + + act(() => { + result.current.setOrder('published_at asc'); + }); + + await waitFor(() => { + expect(result.current.order).toBe('published_at asc'); + }); + expect(result.current.query).toContain('type=draft'); + expect(result.current.params).toMatchObject({type: 'draft'}); + }); + + it('drops the order param when returning to the default sort', async () => { + const {result} = renderState('/posts?order=published_at+asc'); + + act(() => { + result.current.setOrder(null); + }); + + await waitFor(() => { + expect(result.current.query).toBe(''); + }); + }); + + // "Show all posts" in the filtered empty state. + it('clears filters and sort together', async () => { + const {result} = renderState('/posts?type=draft&tag=news&order=published_at+asc'); + + act(() => { + result.current.clearAll(); + }); + + await waitFor(() => { + expect(result.current.query).toBe(''); + }); + expect(result.current.filters).toEqual([]); + expect(result.current.order).toBeNull(); + }); + + it('leaves unrelated query params alone', async () => { + const {result} = renderState('/posts?type=draft&somethingElse=keepme'); + + act(() => { + result.current.setFilters([]); + }); + + await waitFor(() => { + expect(result.current.query).toBe('somethingElse=keepme'); + }); + }); + + // Back/forward must re-hydrate rather than replay the last write. + it('follows external URL changes', async () => { + const {result, rerender} = renderHook(() => { + const state = usePostsFilterState(); + const [searchParams, setSearchParams] = useSearchParams(); + + return {...state, query: searchParams.toString(), setSearchParams}; + }, {wrapper: createWrapper('/posts?type=draft')}); + + act(() => { + result.current.setSearchParams(new URLSearchParams('type=scheduled')); + }); + rerender(); + + await waitFor(() => { + expect(result.current.params).toMatchObject({type: 'scheduled'}); + }); + }); +}); diff --git a/apps/admin/src/posts/list/hooks/use-posts-filter-state.ts b/apps/admin/src/posts/list/hooks/use-posts-filter-state.ts new file mode 100644 index 00000000000..48d64164ab2 --- /dev/null +++ b/apps/admin/src/posts/list/hooks/use-posts-filter-state.ts @@ -0,0 +1,100 @@ +import {POST_FILTER_PARAMS, parsePostFilters, serializePostFilters} from '@/posts/list/post-filter-query'; +import {useCallback, useMemo} from 'react'; +import {useSearchParams} from 'react-router'; +import type {Filter} from '@tryghost/shade/patterns'; +import type {PostListParams} from '@/posts/list/post-query-params'; + +/** + * Owns the posts/pages screen state that lives in the URL. + * + * The URL is the source of truth, and this hook is deliberately quieter than + * the members equivalent: it never writes on hydration. A posts URL is a saved + * view's identity - the sidebar persists `{type, visibility, author, tag, + * order}` records and compares them verbatim - so canonicalising a URL just + * because we parsed it would silently corrupt the user's view, and the Ember + * screen would then read something different. Values we don't recognise are + * carried through untouched for the same reason. + * + * `order` is kept out of the chip model because it is a sort, not a filter. + */ + +const ORDER_PARAM = 'order'; + +interface SetOptions { + /** Filter changes replace history by default, matching Ember. */ + replace?: boolean; +} + +export interface UsePostsFilterStateReturn { + /** Chip model for the Shade `Filters` component. */ + filters: Filter[]; + /** The raw param record, for building API queries and matching saved views. */ + params: PostListParams; + order: string | null; + setFilters: (filters: Filter[], options?: SetOptions) => void; + setOrder: (order: string | null, options?: SetOptions) => void; + clearAll: (options?: SetOptions) => void; + /** Whether any *filter* is active. Sorting deliberately doesn't count. */ + hasFilters: boolean; +} + +function readParams(searchParams: URLSearchParams): PostListParams { + const params: PostListParams = {}; + + POST_FILTER_PARAMS.forEach((param) => { + params[param] = searchParams.get(param); + }); + + params.order = searchParams.get(ORDER_PARAM); + + return params; +} + +/** Applies a param record to a copy of the URL, leaving other params alone. */ +function writeParams( + searchParams: URLSearchParams, + values: Partial> +): URLSearchParams { + const next = new URLSearchParams(searchParams); + + Object.entries(values).forEach(([key, value]) => { + if (value === null || value === undefined || value === '') { + next.delete(key); + } else { + next.set(key, value); + } + }); + + return next; +} + +export function usePostsFilterState(): UsePostsFilterStateReturn { + const [searchParams, setSearchParams] = useSearchParams(); + + const params = useMemo(() => readParams(searchParams), [searchParams]); + const filters = useMemo(() => parsePostFilters(params), [params]); + const order = params.order ?? null; + + const apply = useCallback(( + values: Partial>, + {replace = true}: SetOptions = {} + ) => { + setSearchParams(current => writeParams(current, values), {replace}); + }, [setSearchParams]); + + const setFilters = useCallback((nextFilters: Filter[], options?: SetOptions) => { + apply(serializePostFilters(nextFilters), options); + }, [apply]); + + const setOrder = useCallback((nextOrder: string | null, options?: SetOptions) => { + apply({[ORDER_PARAM]: nextOrder}, options); + }, [apply]); + + const clearAll = useCallback((options?: SetOptions) => { + apply({...serializePostFilters([]), [ORDER_PARAM]: null}, options); + }, [apply]); + + const hasFilters = POST_FILTER_PARAMS.some(param => Boolean(params[param])); + + return {filters, params, order, setFilters, setOrder, clearAll, hasFilters}; +} diff --git a/apps/admin/src/posts/list/hooks/use-posts-list.ts b/apps/admin/src/posts/list/hooks/use-posts-list.ts new file mode 100644 index 00000000000..4f83203cf27 --- /dev/null +++ b/apps/admin/src/posts/list/hooks/use-posts-list.ts @@ -0,0 +1,93 @@ +import {BUCKET_ORDER, getActiveBuckets, getBucketSearchParams} from '@/posts/list/post-query-params'; +import {composePostBuckets, type ComposedPostList, type PostBucketResult} from '@/posts/list/compose-post-buckets'; +import {keepPreviousData} from '@tanstack/react-query'; +import {useBrowsePagesInfinite} from '@tryghost/admin-x-framework/api/pages'; +import {useBrowsePostsInfinite} from '@tryghost/admin-x-framework/api/posts'; +import type {Page} from '@tryghost/admin-x-framework/api/pages'; +import type {Post} from '@tryghost/admin-x-framework/api/posts'; +import type {PostBucket, PostFilterContext, PostListParams} from '@/posts/list/post-query-params'; +import type {PostResource} from '@/posts/list/post-resource'; + +/** A row in the list. Pages are posts with a different `displayName`. */ +export type PostListItem = Post | Page; + +export interface UsePostsListOptions { + resource: PostResource; + params: PostListParams; + context?: PostFilterContext; +} + +export type UsePostsListReturn = ComposedPostList; + +/** + * Runs one bucket's query. + * + * Both resource hooks are called on every render and gated by `enabled`, + * rather than picking one - a hook chosen at runtime would break the rules of + * hooks. The disabled one never fetches. + */ +function useBucketQuery( + bucket: PostBucket, + {resource, params, context}: UsePostsListOptions, + enabled: boolean +): PostBucketResult { + const searchParams = getBucketSearchParams(bucket, params, context); + + // keepPreviousData so changing a filter doesn't blank the list first. + const postsQuery = useBrowsePostsInfinite({ + searchParams, + enabled: enabled && resource === 'posts', + placeholderData: keepPreviousData + }); + + const pagesQuery = useBrowsePagesInfinite({ + searchParams, + enabled: enabled && resource === 'pages', + placeholderData: keepPreviousData + }); + + const query = resource === 'pages' ? pagesQuery : postsQuery; + const items: PostListItem[] = (resource === 'pages' + ? pagesQuery.data?.pages + : postsQuery.data?.posts) ?? []; + + return { + bucket, + items, + total: query.data?.meta?.pagination.total ?? 0, + hasNextPage: query.hasNextPage, + // A disabled bucket is not loading, it is simply not wanted; treating + // it as loading would hold the whole list forever. + isLoading: enabled && query.isLoading, + isFetchingNextPage: query.isFetchingNextPage, + isError: query.isError, + fetchNextPage: () => { + void query.fetchNextPage(); + } + }; +} + +/** + * The posts/pages list, assembled from up to three per-status queries. + * + * See `compose-post-buckets.ts` for why there are three and how they sequence. + */ +export function usePostsList(options: UsePostsListOptions): UsePostsListReturn { + const activeBuckets = getActiveBuckets(options.params); + + // Hook order has to be stable, so every bucket is queried and the ones the + // current filter doesn't need are disabled. + const scheduled = useBucketQuery('scheduled', options, activeBuckets.includes('scheduled')); + const draft = useBucketQuery('draft', options, activeBuckets.includes('draft')); + const publishedAndSent = useBucketQuery('publishedAndSent', options, activeBuckets.includes('publishedAndSent')); + + const byBucket: Record> = { + scheduled, + draft, + publishedAndSent + }; + + return composePostBuckets( + BUCKET_ORDER.filter(bucket => activeBuckets.includes(bucket)).map(bucket => byBucket[bucket]) + ); +} diff --git a/apps/admin/src/posts/list/posts-list-data.acceptance.test.tsx b/apps/admin/src/posts/list/posts-list-data.acceptance.test.tsx new file mode 100644 index 00000000000..a621489d245 --- /dev/null +++ b/apps/admin/src/posts/list/posts-list-data.acceptance.test.tsx @@ -0,0 +1,141 @@ +import { describe, expect, it } from "vitest"; + +import { fakePages, fakePosts, post, renderAdminApp } from "@test-utils/acceptance"; +import { postsListScreen } from "./posts-list.screen"; + +const FLAG_ON = { labs: { postsListReact: true } }; + +/** + * The list is three queries, not one — scheduled, then drafts, then + * published/sent — each with its own default sort, drained in order. This + * covers the whole data path: URL params in, three correctly-filtered requests + * out, rows rendered in bucket order. + * + * The fakes don't implement NQL (see THE RULE in test-utils), so each bucket is + * served by declaring a response as a function of the outgoing filter. + */ + +const SCHEDULED = post({ title: "Scheduled one", status: "scheduled" }); +const DRAFT = post({ title: "Draft one", status: "draft" }); +const PUBLISHED = post({ title: "Published one", status: "published" }); + +function byBucket(filter: string | undefined) { + if (filter?.includes("status:scheduled")) { + return [SCHEDULED]; + } + if (filter?.includes("status:draft")) { + return [DRAFT]; + } + return [PUBLISHED]; +} + +describe("Posts list data", () => { + it("runs one query per status bucket", async () => { + const postsApi = fakePosts(query => byBucket(query.filter)); + await renderAdminApp("/posts", FLAG_ON); + + await expect.element(postsListScreen.listItems().first()).toBeVisible(); + + const filters = postsApi.requests.map(request => request.filter); + expect(filters).toContain("status:scheduled"); + expect(filters).toContain("status:draft"); + expect(filters).toContain("status:[published,sent]"); + }); + + it("renders buckets in order: scheduled, then drafts, then published", async () => { + fakePosts(query => byBucket(query.filter)); + await renderAdminApp("/posts", FLAG_ON); + + await expect.element(postsListScreen.listItems().nth(2)).toBeVisible(); + await expect(postsListScreen.listItems()).toHaveCount(3); + + await expect.element(postsListScreen.listItems().nth(0)).toHaveTextContent("Scheduled one"); + await expect.element(postsListScreen.listItems().nth(1)).toHaveTextContent("Draft one"); + await expect.element(postsListScreen.listItems().nth(2)).toHaveTextContent("Published one"); + }); + + it("sorts drafts by recently updated and the rest by publish date", async () => { + const postsApi = fakePosts(query => byBucket(query.filter)); + await renderAdminApp("/posts", FLAG_ON); + + await expect.element(postsListScreen.listItems().first()).toBeVisible(); + + const orderFor = (status: string) => postsApi.requests + .find(request => request.filter?.includes(status)) + ?.order; + + // Drafts have no published_at, so they sort by when they were touched. + expect(orderFor("status:draft")).toBe("updated_at desc"); + expect(orderFor("status:scheduled")).toBe("published_at desc"); + expect(orderFor("status:[published,sent]")).toBe("published_at desc"); + }); + + it("runs a single query when the type filter picks one status", async () => { + const postsApi = fakePosts(query => byBucket(query.filter)); + await renderAdminApp("/posts?type=draft", FLAG_ON); + + await expect.element(postsListScreen.listItems().first()).toBeVisible(); + + expect(postsApi.requests.map(request => request.filter)).toEqual(["status:draft"]); + }); + + it("carries the other filter params into every bucket", async () => { + const postsApi = fakePosts(query => byBucket(query.filter)); + await renderAdminApp("/posts?tag=news&visibility=public", FLAG_ON); + + await expect.element(postsListScreen.listItems().first()).toBeVisible(); + + postsApi.requests.forEach((request) => { + expect(request.filter).toContain("tag:news"); + expect(request.filter).toContain("visibility:public"); + }); + }); + + // `featured` is not a status — it means every status, and featured. + it("treats type=featured as every bucket plus featured:true", async () => { + const postsApi = fakePosts(query => byBucket(query.filter)); + await renderAdminApp("/posts?type=featured", FLAG_ON); + + await expect.element(postsListScreen.listItems().first()).toBeVisible(); + + expect(postsApi.requests).toHaveLength(3); + postsApi.requests.forEach((request) => { + expect(request.filter).toContain("featured:true"); + }); + }); + + it("lets an explicit sort override every bucket", async () => { + const postsApi = fakePosts(query => byBucket(query.filter)); + await renderAdminApp("/posts?order=published_at%20asc", FLAG_ON); + + await expect.element(postsListScreen.listItems().first()).toBeVisible(); + + postsApi.requests.forEach((request) => { + expect(request.order).toBe("published_at asc"); + }); + }); + + // A posts URL is a saved view's identity; rewriting it would corrupt the + // view and desync from the Ember screen, which reads the same params. + it("leaves the URL exactly as it was given", async () => { + fakePosts(query => byBucket(query.filter)); + await renderAdminApp("/posts?type=draft&tag=news&order=updated_at+desc", FLAG_ON); + + await expect.element(postsListScreen.listItems().first()).toBeVisible(); + + expect(window.location.hash).toContain("type=draft"); + expect(window.location.hash).toContain("tag=news"); + expect(window.location.hash).toContain("order=updated_at"); + }); + + it("queries the pages endpoint for the pages screen", async () => { + const pagesApi = fakePages(query => byBucket(query.filter)); + const postsApi = fakePosts([]); + await renderAdminApp("/pages", FLAG_ON); + + await expect.element(postsListScreen.listItems().first()).toBeVisible(); + + expect(pagesApi.requests.length).toBeGreaterThan(0); + expect(postsApi.requests).toHaveLength(0); + }); +}); diff --git a/apps/admin/src/posts/list/posts-list-screen.tsx b/apps/admin/src/posts/list/posts-list-screen.tsx index fafd05900eb..01fa000021b 100644 --- a/apps/admin/src/posts/list/posts-list-screen.tsx +++ b/apps/admin/src/posts/list/posts-list-screen.tsx @@ -1,16 +1,23 @@ -import {Box, Container, Stack} from '@tryghost/shade/primitives'; +import {Box, Container, Stack, Text} from '@tryghost/shade/primitives'; import {Button, LoadingIndicator} from '@tryghost/shade/components'; import {ListPage} from '@tryghost/shade/page-templates'; import {LucideIcon} from '@tryghost/shade/utils'; import {PageHeader} from '@tryghost/shade/patterns'; import {type PostResource, getPostResourceCopy} from './post-resource'; +import {usePostsFilterState} from './hooks/use-posts-filter-state'; +import {usePostsList} from './hooks/use-posts-list'; /** * The React posts and pages list screens, served behind the `postsListReact` * Labs flag. One implementation, two resources — see `post-resource.ts`. + * + * Currently renders bare titles: this phase is about the data layer being + * right (three sequenced queries, URL round-tripping), not the design. */ export function PostsListScreen({resource}: {resource: PostResource}) { const copy = getPostResourceCopy(resource); + const {params} = usePostsFilterState(); + const {items, isLoading, isError} = usePostsList({resource, params}); return ( @@ -34,9 +41,29 @@ export function PostsListScreen({resource}: {resource: PostResource}) { - - - + {isLoading ? ( + + + + ) : isError ? ( + + Error loading {copy.title.toLowerCase()} + + ) : ( + // Deliberately the same testids the Ember list uses + // — including on pages, which shares the Ember + // component — so the e2e page objects and + // visual-regression baselines work against both + // implementations. They can never collide: the + // Ember route aborts when this screen renders. +
    + {items.map(item => ( +
  • + {item.title} +
  • + ))} +
+ )}
diff --git a/apps/admin/src/posts/list/posts-list.acceptance.test.tsx b/apps/admin/src/posts/list/posts-list.acceptance.test.tsx index 82464af421a..376dd6c953e 100644 --- a/apps/admin/src/posts/list/posts-list.acceptance.test.tsx +++ b/apps/admin/src/posts/list/posts-list.acceptance.test.tsx @@ -1,6 +1,6 @@ -import { describe, expect, it } from "vitest"; +import { beforeEach, describe, expect, it } from "vitest"; -import { renderAdminApp } from "@test-utils/acceptance"; +import { fakePages, fakePosts, renderAdminApp } from "@test-utils/acceptance"; import { postsListScreen } from "./posts-list.screen"; const FLAG_ON = { labs: { postsListReact: true } }; @@ -17,6 +17,14 @@ const FLAG_OFF = { labs: { postsListReact: false } }; * in apps/ember-admin/tests/acceptance/posts-list-react-flag-test.js. */ describe("Posts and pages list flag", () => { + // The screen queries once per status bucket as soon as it mounts; the + // content is irrelevant here, this file is only about which implementation + // serves the route. + beforeEach(() => { + fakePosts([]); + fakePages([]); + }); + describe.each([ { resource: "posts", route: "/posts", title: "Posts", newLabel: "New post" }, { resource: "pages", route: "/pages", title: "Pages", newLabel: "New page" } @@ -34,16 +42,9 @@ describe("Posts and pages list flag", () => { await expect.element(postsListScreen.newLink(resource, newLabel)).toBeVisible(); }); - // The Ember list must not exist alongside the React one, or the two - // trees fight over the same testids and Ember fetches for a screen - // nobody sees. - it("does not render the Ember list alongside it", async () => { - await renderAdminApp(route, FLAG_ON); - - await expect.element(postsListScreen.page(resource)).toBeVisible(); - await expect(postsListScreen.emberList()).toHaveCount(0); - await expect(postsListScreen.emberFilters()).toHaveCount(0); - }); + // That the *Ember* list isn't mounted alongside this one is asserted in + // apps/ember-admin/tests/acceptance/posts-list-react-flag-test.js — + // there is no Ember app in this harness, so it can't be checked here. it("defers to Ember when the flag is off", async () => { await renderAdminApp(route, FLAG_OFF); diff --git a/apps/admin/src/posts/list/posts-list.screen.ts b/apps/admin/src/posts/list/posts-list.screen.ts index 86a298f4da9..8c956ef88d0 100644 --- a/apps/admin/src/posts/list/posts-list.screen.ts +++ b/apps/admin/src/posts/list/posts-list.screen.ts @@ -6,9 +6,11 @@ import { page } from "vitest/browser"; * Page-scoped locators go through `page(resource)`: the admin sidebar carries * its own "Create new post" link, so an unscoped role query matches twice. * - * `emberList` deliberately targets the *Ember* list's testid: with the flag on - * it must not be in the DOM at all, which is the whole point of the Ember route - * aborting its transition. + * `listItems` uses the same testid the Ember list does, on both resources — the + * e2e page objects and visual-regression baselines are written against it, and + * the two implementations can never both be mounted (the Ember route aborts). + * Which implementation is serving a route is asserted via `page(resource)`, + * which only the React screen renders. */ export const postsListScreen = { page: (resource: "posts" | "pages") => page.getByTestId(`${resource}-page`), @@ -16,6 +18,5 @@ export const postsListScreen = { page.getByTestId(`${resource}-page`).getByRole("heading", { name }), newLink: (resource: "posts" | "pages", name: string) => page.getByTestId(`${resource}-page`).getByRole("link", { name }), - emberList: () => page.getByTestId("posts-list"), - emberFilters: () => page.getByTestId("posts-filters") + listItems: () => page.getByTestId("posts-list-item") }; diff --git a/apps/admin/test-utils/acceptance/index.ts b/apps/admin/test-utils/acceptance/index.ts index 6c3211db4a1..b6825160678 100644 --- a/apps/admin/test-utils/acceptance/index.ts +++ b/apps/admin/test-utils/acceptance/index.ts @@ -1,7 +1,7 @@ /** Acceptance-harness public surface — see README.md for the spec anatomy. */ export { currentRoute, renderAdminApp } from "./render-admin-app"; export type { RenderAdminAppOptions } from "./render-admin-app"; -export { defineResource, fakeActions, fakeAutomations, fakeComments, fakeEditSettings, fakeIntegrations, fakeInvites, fakeLabels, fakeMembers, fakeNewsletters, fakeOffers, fakePosts, fakeRoles, fakeSettingsScreens, fakeTags, fakeThemes, fakeTiers, fakeUsers } from "./resources"; +export { defineResource, fakeActions, fakeAutomations, fakeComments, fakeEditSettings, fakeIntegrations, fakeInvites, fakeLabels, fakeMembers, fakeNewsletters, fakeOffers, fakePages, fakePosts, fakeRoles, fakeSettingsScreens, fakeTags, fakeThemes, fakeTiers, fakeUsers } from "./resources"; export type { BrowseQuery, EditSettingsCapture, FakeMembersOptions, ResourceCapture, ResourceOptions, ResourceSemantics, RespondWith } from "./resources"; export { allowUnhandledRequests, fakeAdminEndpoint, fakeEndpoint, fakeSitePreview } from "./worker"; export type { CapturedEndpointRequest, EndpointCapture, FakeAdminEndpointResponse, FakeEndpointOptions, SitePreviewCapture, SitePreviewRequest } from "./worker"; diff --git a/apps/admin/test-utils/acceptance/resources.ts b/apps/admin/test-utils/acceptance/resources.ts index c81b0773979..dff8e8177d9 100644 --- a/apps/admin/test-utils/acceptance/resources.ts +++ b/apps/admin/test-utils/acceptance/resources.ts @@ -219,6 +219,14 @@ const newslettersResource = defineResource({ resource: "newsletters" */ export const fakePosts = defineResource({ resource: "posts", semantics: { kind: "passthrough" } }); +/** + * Pages list fake (passthrough). The pages list screen browses this endpoint + * once per status bucket, exactly as the posts one does — declare the response + * (a function of the query, if a test needs each bucket to differ) and assert + * the outgoing filters. + */ +export const fakePages = defineResource({ resource: "pages", semantics: { kind: "passthrough" } }); + /** Tiers list fake (passthrough): serves the declared tiers and captures every browse request. */ export const fakeTiers = defineResource({ resource: "tiers", semantics: { kind: "passthrough" } }); From 7df6f29582b447a6e36377443c654311e9cc0738 Mon Sep 17 00:00:00 2001 From: Peter Zimon Date: Tue, 4 Aug 2026 11:49:04 +0200 Subject: [PATCH 05/75] Fixed an incorrect claim about the posts list request params no ref I claimed omitting formats=mobiledoc,lexical avoids pulling whole post bodies into a 30-row list. It does not: defaultFormat in the posts input serializer fills the same value in server-side when the client leaves it out, so the request is byte-identical to Ember's either way. Omitting `include` is still right, and now says why: defaultRelations attaches exactly what the list renders, but only while neither include nor columns is set - so reaching for `columns` to trim the payload would silently drop tags, authors, email and click counts. Trimming the bodies out is still worth doing, but it needs an explicit narrower formats, which is a separate change. Co-Authored-By: Claude Opus 5 --- .../src/posts/list/post-query-params.test.ts | 13 +++++++++---- apps/admin/src/posts/list/post-query-params.ts | 16 ++++++++++++---- 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/apps/admin/src/posts/list/post-query-params.test.ts b/apps/admin/src/posts/list/post-query-params.test.ts index 0ce39696b37..9b48a6773e3 100644 --- a/apps/admin/src/posts/list/post-query-params.test.ts +++ b/apps/admin/src/posts/list/post-query-params.test.ts @@ -151,9 +151,14 @@ describe('getBucketSearchParams', () => { }); }); - // Ember sends formats=mobiledoc,lexical here, which drags whole post bodies - // into a 30-row list. Omitting it is invisible to the user. - it('does not request post content formats', () => { - expect(getBucketSearchParams('draft', {})).not.toHaveProperty('formats'); + // Omitting these is not an optimisation - the server fills both in + // (defaultFormat, defaultRelations). Sending `columns` would actively hurt: + // it suppresses the default relations the list needs. + it('sends neither formats nor include, leaving the server defaults', () => { + const params = getBucketSearchParams('draft', {}); + + expect(params).not.toHaveProperty('formats'); + expect(params).not.toHaveProperty('include'); + expect(params).not.toHaveProperty('columns'); }); }); diff --git a/apps/admin/src/posts/list/post-query-params.ts b/apps/admin/src/posts/list/post-query-params.ts index 6a50d8f66ba..c9f27a04234 100644 --- a/apps/admin/src/posts/list/post-query-params.ts +++ b/apps/admin/src/posts/list/post-query-params.ts @@ -149,10 +149,18 @@ export function getBucketOrder(bucket: PostBucket, order?: string | null): strin } /** - * Search params for one bucket's request. Deliberately omits `include` and - * `formats`: the server's default relations already attach tags, authors, - * email, tiers and click counts, and Ember's `formats=mobiledoc,lexical` - * drags entire post bodies into a 30-row list for no visible benefit. + * Search params for one bucket's request. + * + * `include` is omitted on purpose: with neither `include` nor `columns` set, + * the server's `defaultRelations` attaches exactly what the list renders - + * tags, authors, authors.roles, email, tiers, newsletter, count.clicks + * (`ghost/core/.../serializers/input/posts.js:81`). Sending `columns` would + * *disable* that, so don't. + * + * `formats` is omitted because it makes no difference: `defaultFormat` fills + * in `mobiledoc,lexical` server-side when the client leaves it out, so this + * matches Ember byte for byte. Trimming the post bodies out of a 30-row list + * would need an explicit narrower `formats`, which is a separate change. */ export function getBucketSearchParams( bucket: PostBucket, From 3a0be4aac9e1c01ad80a958ad78e89b6cb22761b Mon Sep 17 00:00:00 2001 From: Peter Zimon Date: Tue, 4 Aug 2026 11:57:01 +0200 Subject: [PATCH 06/75] Fixed sequencing, author scoping and paging in the posts list data layer no ref Five issues a review pass found, all in the phase just committed: The composer held the entire list until every bucket had answered, so one slow query hid everything and the list could sit in a loading state indefinitely. Only *later* buckets depend on earlier ones, so it now walks in order and shows each bucket as soon as it has answered, stopping at the first that is still loading or still has pages. A bucket that errored no longer counts as drained either - treating it as exhausted let the next bucket silently take its place. Authors and contributors were not scoped to their own posts: the plumbing existed but the screen never passed the current user, so the author URL param won instead. Ember forces the signed-in user's slug for those roles. Nothing drove pagination, so a site with more than 30 scheduled posts showed one page and never reached its drafts. Wired up a plain load-more button; the virtualised scroll replaces it next phase. Blank handling diverged from Ember's isBlank on whitespace-only values, so ?tag=%20%20 produced `tag: ` here and no clause there. These strings are compared against saved views and run server-side by bulk delete, so they have to agree exactly. Co-Authored-By: Claude Opus 5 --- .../posts/list/compose-post-buckets.test.ts | 41 +++++++++++++-- .../src/posts/list/compose-post-buckets.ts | 47 +++++++++-------- .../src/posts/list/post-query-params.test.ts | 7 +++ .../admin/src/posts/list/post-query-params.ts | 7 ++- .../list/posts-list-data.acceptance.test.tsx | 51 ++++++++++++++++++- .../src/posts/list/posts-list-screen.tsx | 48 ++++++++++++++--- 6 files changed, 166 insertions(+), 35 deletions(-) diff --git a/apps/admin/src/posts/list/compose-post-buckets.test.ts b/apps/admin/src/posts/list/compose-post-buckets.test.ts index aedb108c6b6..e16e38b1968 100644 --- a/apps/admin/src/posts/list/compose-post-buckets.test.ts +++ b/apps/admin/src/posts/list/compose-post-buckets.test.ts @@ -31,11 +31,9 @@ describe('composePostBuckets', () => { expect(result.isLoading).toBe(false); }); - // Until every bucket's first page has landed we can't know which are - // visible - showing what we have would flash drafts in above scheduled. - it('reports loading while any bucket is still on its first page', () => { + it('reports loading only while nothing can be shown yet', () => { const result = composePostBuckets([ - bucketResult({bucket: 'scheduled', items: [item('a')]}), + bucketResult({bucket: 'scheduled', isLoading: true}), bucketResult({bucket: 'draft', isLoading: true}) ]); @@ -43,6 +41,30 @@ describe('composePostBuckets', () => { expect(result.items).toEqual([]); }); + // Only *later* buckets depend on earlier ones. Holding the whole list until + // every bucket has answered would let one slow query hide everything. + it('shows an earlier bucket while a later one is still loading', () => { + const result = composePostBuckets([ + bucketResult({bucket: 'scheduled', items: [item('s1')], total: 1}), + bucketResult({bucket: 'draft', isLoading: true}) + ]); + + expect(result.isLoading).toBe(false); + expect(result.items.map(entry => entry.id)).toEqual(['s1']); + }); + + // ...but a later bucket must never jump ahead of one that hasn't answered, + // or drafts flash in above scheduled. + it('hides a later bucket while an earlier one is still loading', () => { + const result = composePostBuckets([ + bucketResult({bucket: 'scheduled', isLoading: true}), + bucketResult({bucket: 'draft', items: [item('d1')], total: 1}) + ]); + + expect(result.items).toEqual([]); + expect(result.isLoading).toBe(true); + }); + it('concatenates buckets in order once everything has loaded', () => { const result = composePostBuckets([ bucketResult({bucket: 'scheduled', items: [item('s1')], total: 1}), @@ -158,4 +180,15 @@ describe('composePostBuckets', () => { expect(result.isError).toBe(true); }); + + // A failed bucket never drained, so treating it as exhausted would let the + // next one silently take its place in the list. + it('does not open a later bucket behind a failed one', () => { + const result = composePostBuckets([ + bucketResult({bucket: 'scheduled', isError: true}), + bucketResult({bucket: 'draft', items: [item('d1')], total: 1}) + ]); + + expect(result.items).toEqual([]); + }); }); diff --git a/apps/admin/src/posts/list/compose-post-buckets.ts b/apps/admin/src/posts/list/compose-post-buckets.ts index 4197812d47d..767794159a4 100644 --- a/apps/admin/src/posts/list/compose-post-buckets.ts +++ b/apps/admin/src/posts/list/compose-post-buckets.ts @@ -42,35 +42,40 @@ export function composePostBuckets(results: PostBucketResult[]): C const totalItems = results.reduce((total, result) => total + result.total, 0); const isError = results.some(result => result.isError); - // Nothing can be placed until every bucket's first page has landed: a - // bucket that turns out to be empty lets the next one open immediately, - // so rendering early would flash drafts in above scheduled. - const isLoading = results.some(result => result.isLoading); + // Walk in order, taking buckets until one isn't finished. Only *later* + // buckets depend on earlier ones, so an earlier bucket shows as soon as it + // has answered - holding the list until every bucket replies would let one + // slow query hide everything. Conversely a bucket whose predecessor hasn't + // answered stays hidden, or drafts flash in above scheduled. + const visible: PostBucketResult[] = []; + let paging: PostBucketResult | undefined; - if (isLoading) { - return { - items: [], - totalItems, - hasNextPage: false, - isFetchingNextPage: false, - isLoading: true, - isError, - fetchNextPage: noop - }; - } + for (const result of results) { + if (result.isLoading) { + break; + } + + visible.push(result); - // The first bucket that still has pages is the one currently paging; - // everything after it stays hidden until it drains. - const pagingIndex = results.findIndex(result => result.hasNextPage); - const visible = pagingIndex === -1 ? results : results.slice(0, pagingIndex + 1); - const paging = pagingIndex === -1 ? undefined : results[pagingIndex]; + // A bucket that failed never drained, so nothing after it may open - + // otherwise a transient error silently reorders the list. + if (result.isError) { + break; + } + + if (result.hasNextPage) { + paging = result; + break; + } + } return { items: visible.flatMap(result => result.items), totalItems, hasNextPage: Boolean(paging), isFetchingNextPage: paging?.isFetchingNextPage ?? false, - isLoading: false, + // Only "loading" while there is genuinely nothing to show yet. + isLoading: visible.length === 0 && results.some(result => result.isLoading), isError, fetchNextPage: paging?.fetchNextPage ?? noop }; diff --git a/apps/admin/src/posts/list/post-query-params.test.ts b/apps/admin/src/posts/list/post-query-params.test.ts index 9b48a6773e3..eb0b38e0f79 100644 --- a/apps/admin/src/posts/list/post-query-params.test.ts +++ b/apps/admin/src/posts/list/post-query-params.test.ts @@ -48,6 +48,13 @@ describe('buildAllFilter', () => { .toBe('status:[draft,scheduled,published,sent]'); }); + // Ember's isBlank counts whitespace-only strings, so `?tag=%20%20` has to + // produce no clause here too or the strings stop matching. + it('treats a whitespace-only value as blank, like Ember', () => { + expect(buildAllFilter({tag: ' ', author: ' '})) + .toBe('status:[draft,scheduled,published,sent]'); + }); + // Key order is load-bearing only in that it must stay stable; this locks // the order Ember produced so filters compare equal across the two apps. it('orders clauses tag, visibility, status, featured, authors', () => { diff --git a/apps/admin/src/posts/list/post-query-params.ts b/apps/admin/src/posts/list/post-query-params.ts index c9f27a04234..8d3778c1725 100644 --- a/apps/admin/src/posts/list/post-query-params.ts +++ b/apps/admin/src/posts/list/post-query-params.ts @@ -68,12 +68,17 @@ function statusClause(statuses: PostStatus[]): string { * Joins `key:value` pairs with `+`, dropping blanks. Values are interpolated * verbatim - `visibility=[paid,tiers]` is an opaque option value, not * structure to be parsed. + * + * "Blank" matches Ember's `isBlank`, which counts whitespace-only strings, so + * `?tag=%20%20` produces no clause in either implementation. These strings are + * compared against saved views and run server-side by bulk delete, so they have + * to agree exactly. */ function toFilterString(clauses: Array<[string, string | null | undefined]>): string { return clauses .filter((entry): entry is [string, string] => { const value = entry[1]; - return value !== null && value !== undefined && value !== ''; + return value !== null && value !== undefined && value.trim() !== ''; }) .map(([key, value]) => `${key}:${value}`) .join('+'); diff --git a/apps/admin/src/posts/list/posts-list-data.acceptance.test.tsx b/apps/admin/src/posts/list/posts-list-data.acceptance.test.tsx index a621489d245..dd868d316ea 100644 --- a/apps/admin/src/posts/list/posts-list-data.acceptance.test.tsx +++ b/apps/admin/src/posts/list/posts-list-data.acceptance.test.tsx @@ -1,10 +1,18 @@ import { describe, expect, it } from "vitest"; -import { fakePages, fakePosts, post, renderAdminApp } from "@test-utils/acceptance"; +import { currentUserResponse, fakePages, fakePosts, post, renderAdminApp, staffRole } from "@test-utils/acceptance"; import { postsListScreen } from "./posts-list.screen"; +import type { StaffRoleName } from "@tryghost/test-data"; const FLAG_ON = { labs: { postsListReact: true } }; +function asRole(name: StaffRoleName, slug: string) { + const me = currentUserResponse(); + me.users[0].roles = [staffRole({ name })]; + me.users[0].slug = slug; + return { ...FLAG_ON, boot: { browseMe: { response: me } } }; +} + /** * The list is three queries, not one — scheduled, then drafts, then * published/sent — each with its own default sort, drained in order. This @@ -128,6 +136,47 @@ describe("Posts list data", () => { expect(window.location.hash).toContain("order=updated_at"); }); + // Ember forces authors and contributors onto their own posts regardless of + // the author param. Without this they'd see everyone's. + describe.each([ + { role: "Author" as const }, + { role: "Contributor" as const } + ])("as $role", ({ role }) => { + it("scopes every bucket to the signed-in user's own posts", async () => { + const postsApi = fakePosts(query => byBucket(query.filter)); + await renderAdminApp("/posts", asRole(role, "just-me")); + + await expect.element(postsListScreen.listItems().first()).toBeVisible(); + + postsApi.requests.forEach((request) => { + expect(request.filter).toContain("authors:just-me"); + }); + }); + + it("ignores an author param pointing at someone else", async () => { + const postsApi = fakePosts(query => byBucket(query.filter)); + await renderAdminApp("/posts?author=someone-else", asRole(role, "just-me")); + + await expect.element(postsListScreen.listItems().first()).toBeVisible(); + + postsApi.requests.forEach((request) => { + expect(request.filter).toContain("authors:just-me"); + expect(request.filter).not.toContain("someone-else"); + }); + }); + }); + + it("honours the author param for roles that see everything", async () => { + const postsApi = fakePosts(query => byBucket(query.filter)); + await renderAdminApp("/posts?author=someone-else", asRole("Administrator", "admin-user")); + + await expect.element(postsListScreen.listItems().first()).toBeVisible(); + + postsApi.requests.forEach((request) => { + expect(request.filter).toContain("authors:someone-else"); + }); + }); + it("queries the pages endpoint for the pages screen", async () => { const pagesApi = fakePages(query => byBucket(query.filter)); const postsApi = fakePosts([]); diff --git a/apps/admin/src/posts/list/posts-list-screen.tsx b/apps/admin/src/posts/list/posts-list-screen.tsx index 01fa000021b..a470501c38f 100644 --- a/apps/admin/src/posts/list/posts-list-screen.tsx +++ b/apps/admin/src/posts/list/posts-list-screen.tsx @@ -1,9 +1,12 @@ import {Box, Container, Stack, Text} from '@tryghost/shade/primitives'; import {Button, LoadingIndicator} from '@tryghost/shade/components'; import {ListPage} from '@tryghost/shade/page-templates'; +import {LoadMoreButton} from '@/shared/virtual-list'; import {LucideIcon} from '@tryghost/shade/utils'; import {PageHeader} from '@tryghost/shade/patterns'; +import {isAuthorOrContributor} from '@tryghost/admin-x-framework/api/users'; import {type PostResource, getPostResourceCopy} from './post-resource'; +import {useCurrentUser} from '@tryghost/admin-x-framework/api/current-user'; import {usePostsFilterState} from './hooks/use-posts-filter-state'; import {usePostsList} from './hooks/use-posts-list'; @@ -17,7 +20,22 @@ import {usePostsList} from './hooks/use-posts-list'; export function PostsListScreen({resource}: {resource: PostResource}) { const copy = getPostResourceCopy(resource); const {params} = usePostsFilterState(); - const {items, isLoading, isError} = usePostsList({resource, params}); + const {data: currentUser} = useCurrentUser(); + + // Authors and contributors only ever see their own posts, whatever the + // `author` param says — matching PostsRoute#model in the Ember app. + const ownAuthorSlug = currentUser && isAuthorOrContributor(currentUser) + ? currentUser.slug + : null; + + const { + items, + isLoading, + isError, + hasNextPage, + isFetchingNextPage, + fetchNextPage + } = usePostsList({resource, params, context: {ownAuthorSlug}}); return ( @@ -56,13 +74,27 @@ export function PostsListScreen({resource}: {resource: PostResource}) { // visual-regression baselines work against both // implementations. They can never collide: the // Ember route aborts when this screen renders. -
    - {items.map(item => ( -
  • - {item.title} -
  • - ))} -
+ +
    + {items.map(item => ( +
  • + {item.title} +
  • + ))} +
+ {/* Placeholder pager. Phase 2 replaces this + with the virtualised infinite scroll the + members list uses; without something here + a site with 30+ scheduled posts would show + only the first page and never reach its + drafts. */} + {hasNextPage && ( + + )} +
)} From a21ee4dd278a08353d8f9b85d59d109562a02816 Mon Sep 17 00:00:00 2001 From: Peter Zimon Date: Tue, 4 Aug 2026 12:01:44 +0200 Subject: [PATCH 07/75] Reverted premature rendering of partially loaded post buckets no ref The previous commit made the composer release as soon as the first bucket answered. That was wrong, and wrong in a way that bites almost everywhere: most sites have zero scheduled posts, so that bucket answers first and instantly, and the list was declared loaded and complete with two queries still in flight. Today that renders an empty list; once the real empty state lands it would flash "Start creating content" on nearly every page load, and any infinite scroll driven off hasNextPage would be told there is nothing more to fetch. Ember waits for all three: the route returns RSVP.hash of the three models and shows a skeleton until they resolve. Restored that, and wrote down why, since releasing earlier is a tempting change to make twice. The sequential-drain rule and the fix for errored buckets are unaffected - they now apply once everything has answered. Also corrected a comment that claimed the shared testids already make the e2e page object work against both implementations. They do not yet: getPostByTitle matches an h3 the React row has not got, and waitForPageToFullyLoad expects the list element in the empty state. Co-Authored-By: Claude Opus 5 --- .../posts/list/compose-post-buckets.test.ts | 32 +++++++++++---- .../src/posts/list/compose-post-buckets.ts | 39 +++++++++++++------ .../src/posts/list/posts-list-screen.tsx | 20 +++++++--- 3 files changed, 66 insertions(+), 25 deletions(-) diff --git a/apps/admin/src/posts/list/compose-post-buckets.test.ts b/apps/admin/src/posts/list/compose-post-buckets.test.ts index e16e38b1968..da0681532a3 100644 --- a/apps/admin/src/posts/list/compose-post-buckets.test.ts +++ b/apps/admin/src/posts/list/compose-post-buckets.test.ts @@ -31,7 +31,7 @@ describe('composePostBuckets', () => { expect(result.isLoading).toBe(false); }); - it('reports loading only while nothing can be shown yet', () => { + it('reports loading while any bucket is still on its first page', () => { const result = composePostBuckets([ bucketResult({bucket: 'scheduled', isLoading: true}), bucketResult({bucket: 'draft', isLoading: true}) @@ -41,20 +41,36 @@ describe('composePostBuckets', () => { expect(result.items).toEqual([]); }); - // Only *later* buckets depend on earlier ones. Holding the whole list until - // every bucket has answered would let one slow query hide everything. - it('shows an earlier bucket while a later one is still loading', () => { + // Ember's route returns RSVP.hash of all three models, so its template + // doesn't render until every first page has landed - it shows a skeleton + // instead. Matching that matters most in the common case below. + it('keeps loading when an earlier bucket has answered but a later one has not', () => { const result = composePostBuckets([ bucketResult({bucket: 'scheduled', items: [item('s1')], total: 1}), bucketResult({bucket: 'draft', isLoading: true}) ]); - expect(result.isLoading).toBe(false); - expect(result.items.map(entry => entry.id)).toEqual(['s1']); + expect(result.isLoading).toBe(true); + expect(result.items).toEqual([]); + }); + + // The regression this guards, and why it matters: almost every site has + // zero scheduled posts, so that bucket answers first and instantly. If the + // composer called the list settled at that point, the screen would render + // an empty list - and, once Phase 2 lands the real empty state, flash + // "Start creating content" on nearly every page load. + it('does not claim to be complete while a bucket is still in flight', () => { + const result = composePostBuckets([ + bucketResult({bucket: 'scheduled', items: [], total: 0}), + bucketResult({bucket: 'draft', isLoading: true}), + bucketResult({bucket: 'publishedAndSent', isLoading: true}) + ]); + + expect(result.isLoading).toBe(true); + expect(result.items).toEqual([]); + expect(result.hasNextPage).toBe(false); }); - // ...but a later bucket must never jump ahead of one that hasn't answered, - // or drafts flash in above scheduled. it('hides a later bucket while an earlier one is still loading', () => { const result = composePostBuckets([ bucketResult({bucket: 'scheduled', isLoading: true}), diff --git a/apps/admin/src/posts/list/compose-post-buckets.ts b/apps/admin/src/posts/list/compose-post-buckets.ts index 767794159a4..4df78d15072 100644 --- a/apps/admin/src/posts/list/compose-post-buckets.ts +++ b/apps/admin/src/posts/list/compose-post-buckets.ts @@ -42,19 +42,37 @@ export function composePostBuckets(results: PostBucketResult[]): C const totalItems = results.reduce((total, result) => total + result.total, 0); const isError = results.some(result => result.isError); - // Walk in order, taking buckets until one isn't finished. Only *later* - // buckets depend on earlier ones, so an earlier bucket shows as soon as it - // has answered - holding the list until every bucket replies would let one - // slow query hide everything. Conversely a bucket whose predecessor hasn't - // answered stays hidden, or drafts flash in above scheduled. + // Nothing renders until every bucket's first page has landed. This mirrors + // Ember, whose route returns `RSVP.hash` of all three models and shows a + // skeleton until they all resolve (`routes/posts.js:177`, + // `templates/posts-loading.hbs`). + // + // Releasing earlier looks tempting - one slow query then can't hide the + // rest - but it is wrong in a way that bites on nearly every site: most + // have zero scheduled posts, so that bucket answers first and instantly. + // Releasing there renders an empty list, and once the real empty state + // exists it would flash "Start creating content" on almost every page + // load, while also reporting the list complete with two queries still in + // flight. Progressive rendering would need a "settled" signal distinct + // from "complete", not an earlier release here. + if (results.some(result => result.isLoading)) { + return { + items: [], + totalItems, + hasNextPage: false, + isFetchingNextPage: false, + isLoading: true, + isError, + fetchNextPage: noop + }; + } + + // Everything has answered; now apply the sequential-drain rule - a bucket + // only opens once every earlier one has loaded all of its pages. const visible: PostBucketResult[] = []; let paging: PostBucketResult | undefined; for (const result of results) { - if (result.isLoading) { - break; - } - visible.push(result); // A bucket that failed never drained, so nothing after it may open - @@ -74,8 +92,7 @@ export function composePostBuckets(results: PostBucketResult[]): C totalItems, hasNextPage: Boolean(paging), isFetchingNextPage: paging?.isFetchingNextPage ?? false, - // Only "loading" while there is genuinely nothing to show yet. - isLoading: visible.length === 0 && results.some(result => result.isLoading), + isLoading: false, isError, fetchNextPage: paging?.fetchNextPage ?? noop }; diff --git a/apps/admin/src/posts/list/posts-list-screen.tsx b/apps/admin/src/posts/list/posts-list-screen.tsx index a470501c38f..fd26baf8b11 100644 --- a/apps/admin/src/posts/list/posts-list-screen.tsx +++ b/apps/admin/src/posts/list/posts-list-screen.tsx @@ -68,12 +68,20 @@ export function PostsListScreen({resource}: {resource: PostResource}) { Error loading {copy.title.toLowerCase()} ) : ( - // Deliberately the same testids the Ember list uses - // — including on pages, which shares the Ember - // component — so the e2e page objects and - // visual-regression baselines work against both - // implementations. They can never collide: the - // Ember route aborts when this screen renders. + // Deliberately the same testids the Ember list + // uses — including on pages, which shares the + // Ember component — so the e2e page objects can + // eventually target both implementations. They + // can never collide: the Ember route aborts when + // this screen renders. + // + // Not yet interchangeable, though: PostsPage's + // getPostByTitle matches an h3 inside the row, and + // waitForPageToFullyLoad expects `posts-list` to + // exist in the empty state too (Ember renders it + // unconditionally). Phase 2 brings the real row + // markup; Phase 10 reconciles the page object and + // re-baselines the visual-regression shots.
    {items.map(item => ( From 667f1325d24a87ce07f6d6decfeed622711b716e Mon Sep 17 00:00:00 2001 From: Peter Zimon Date: Tue, 4 Aug 2026 12:07:37 +0200 Subject: [PATCH 08/75] Added the post row copy as pure functions no ref Every string a post row renders, ported from the Ember row template and its helpers: the byline and primary tag, which date field applies, the status label, and the detail Ember reveals on hover. Kept out of the component deliberately. This is where parity actually lives - the wording and the conditions behind it are far easier to get subtly wrong than the layout, and far harder to eyeball. A few that would not survive a visual check: an email-only post that failed says "Failed to send newsletter" rather than "Sent"; a scheduled email-only post is never described as "published"; drafts and scheduled posts show when they were last touched because they have no publish date. formatPostTime is its own module because the branches are order-dependent and the order is load-bearing - anything within twelve hours either way reads as relative and beats every absolute format, and "yesterday" is checked before "tomorrow" because published posts vastly outnumber scheduled ones. `now` is injectable so those branches can be tested without freezing the clock; writing the tests immediately caught that from midday, nothing later the same day is more than twelve hours away. Co-Authored-By: Claude Opus 5 --- apps/admin-x-framework/src/api/pages.ts | 5 + .../list/humanize-recipient-filter.test.ts | 44 +++++ .../posts/list/humanize-recipient-filter.ts | 59 ++++++ .../src/posts/list/post-row-copy.test.ts | 180 ++++++++++++++++++ apps/admin/src/posts/list/post-row-copy.ts | 121 ++++++++++++ apps/admin/src/posts/list/post-time.test.ts | 103 ++++++++++ apps/admin/src/posts/list/post-time.ts | 79 ++++++++ 7 files changed, 591 insertions(+) create mode 100644 apps/admin/src/posts/list/humanize-recipient-filter.test.ts create mode 100644 apps/admin/src/posts/list/humanize-recipient-filter.ts create mode 100644 apps/admin/src/posts/list/post-row-copy.test.ts create mode 100644 apps/admin/src/posts/list/post-row-copy.ts create mode 100644 apps/admin/src/posts/list/post-time.test.ts create mode 100644 apps/admin/src/posts/list/post-time.ts diff --git a/apps/admin-x-framework/src/api/pages.ts b/apps/admin-x-framework/src/api/pages.ts index 570f0be2760..dabd064e3b9 100644 --- a/apps/admin-x-framework/src/api/pages.ts +++ b/apps/admin-x-framework/src/api/pages.ts @@ -18,6 +18,11 @@ export type Page = { count?: { clicks?: number; }; + // Pages are never emailed, but the list reads these off both resources + // through one type, so they have to be addressable here too. + email_only?: boolean; + email_segment?: string; + newsletter?: object; } & PostListFields; export interface PagesResponseType { diff --git a/apps/admin/src/posts/list/humanize-recipient-filter.test.ts b/apps/admin/src/posts/list/humanize-recipient-filter.test.ts new file mode 100644 index 00000000000..1754fdcf368 --- /dev/null +++ b/apps/admin/src/posts/list/humanize-recipient-filter.test.ts @@ -0,0 +1,44 @@ +import {describe, expect, it} from 'vitest'; +import {humanizeRecipientFilter} from './humanize-recipient-filter'; + +// Ported from apps/ember-admin/app/helpers/humanize-recipient-filter.js. + +describe('humanizeRecipientFilter', () => { + it('names both statuses together as everyone', () => { + expect(humanizeRecipientFilter('status:free,status:-free')).toBe('All subscribers'); + }); + + it('names a single status', () => { + expect(humanizeRecipientFilter('status:free')).toBe('Free subscribers'); + expect(humanizeRecipientFilter('status:-free')).toBe('Paid subscribers'); + }); + + it('lists labels, capitalised', () => { + expect(humanizeRecipientFilter('labels:[vip,founder]')).toBe('Labels: Vip, Founder'); + }); + + it('uses the singular for one label', () => { + expect(humanizeRecipientFilter('labels:[vip]')).toBe('Label: Vip'); + expect(humanizeRecipientFilter('label:vip')).toBe('Label: Vip'); + }); + + it('lists products', () => { + expect(humanizeRecipientFilter('products:[gold,silver]')).toBe('Products: Gold, Silver'); + }); + + it('joins a status and a label with an ampersand', () => { + expect(humanizeRecipientFilter('status:free,labels:[vip]')) + .toBe('Free subscribers & Label: Vip'); + }); + + // The helper only understands what the publishing UI can produce; showing + // the raw filter beats guessing wrong. + it('falls back to the raw filter for anything it does not understand', () => { + expect(humanizeRecipientFilter('some:nonsense')).toBe('some:nonsense'); + }); + + it('is empty for an empty filter', () => { + expect(humanizeRecipientFilter('')).toBe(''); + expect(humanizeRecipientFilter()).toBe(''); + }); +}); diff --git a/apps/admin/src/posts/list/humanize-recipient-filter.ts b/apps/admin/src/posts/list/humanize-recipient-filter.ts new file mode 100644 index 00000000000..fc1647c82b9 --- /dev/null +++ b/apps/admin/src/posts/list/humanize-recipient-filter.ts @@ -0,0 +1,59 @@ +/** + * Turns an email segment NQL filter into the phrase Ghost shows a user, e.g. + * "All subscribers", "Paid subscribers", "Labels: VIP, Founder". + * + * Ported from `apps/ember-admin/app/helpers/humanize-recipient-filter.js`. + * Like the original, this only understands the limited set of filters the + * publishing UI can produce, and falls back to the raw filter for anything + * else rather than guessing. + */ + +function capitalize(value: string): string { + return value.charAt(0).toUpperCase() + value.slice(1); +} + +function pluralLabel(word: string, count: number): string { + return count === 1 ? word : `${word}s`; +} + +function extractList(filter: string, key: string): string[] | null { + const arrayMatch = new RegExp(`${key}s:\\[(.*?)\\]`).exec(filter); + + if (arrayMatch) { + return arrayMatch[1].split(','); + } + + const singleMatches = [...filter.matchAll(new RegExp(`${key}:(.*?)(?:,|$)`, 'g'))] + .map(([, value]) => value) + .filter(Boolean); + + return singleMatches.length ? singleMatches : null; +} + +export function humanizeRecipientFilter(filter = ''): string { + const parts = filter.split(','); + + if (parts.includes('status:free') && parts.includes('status:-free')) { + return 'All subscribers'; + } + + const output: string[] = []; + + if (parts.includes('status:free')) { + output.push('Free subscribers'); + } else if (parts.includes('status:-free')) { + output.push('Paid subscribers'); + } + + const labels = extractList(filter, 'label'); + if (labels) { + output.push(`${pluralLabel('Label', labels.length)}: ${labels.map(capitalize).join(', ')}`); + } + + const products = extractList(filter, 'product'); + if (products) { + output.push(`${pluralLabel('Product', products.length)}: ${products.map(capitalize).join(', ')}`); + } + + return output.length ? output.join(' & ') : filter; +} diff --git a/apps/admin/src/posts/list/post-row-copy.test.ts b/apps/admin/src/posts/list/post-row-copy.test.ts new file mode 100644 index 00000000000..7a040791b8c --- /dev/null +++ b/apps/admin/src/posts/list/post-row-copy.test.ts @@ -0,0 +1,180 @@ +import {describe, expect, it} from 'vitest'; +import { + getPostAuthorNames, + getPostDateField, + getPostStatusLabel, + getPostStatusDetail, + getPostMetaLine +} from './post-row-copy'; +import type {PostListItem} from './hooks/use-posts-list'; + +// Every string a row renders, as pure functions. Ported from +// apps/ember-admin/app/components/posts-list/list-item-analytics.hbs and its +// helpers. Parity lives here, and it is the part hand-testing is worst at. + +const post = (overrides: Partial = {}): PostListItem => ({ + id: 'p1', + uuid: 'u1', + url: 'https://example.com/p1', + slug: 'p1', + title: 'A post', + status: 'published', + ...overrides +}); + +describe('getPostAuthorNames', () => { + it('joins author names with commas', () => { + expect(getPostAuthorNames(post({ + authors: [{id: '1', name: 'Ada'}, {id: '2', name: 'Grace'}] + }))).toBe('Ada, Grace'); + }); + + // Invited-but-not-yet-named staff have an email and no name. + it('falls back to the email when an author has no name', () => { + expect(getPostAuthorNames(post({ + authors: [{id: '1', email: 'ada@example.com'}] + }))).toBe('ada@example.com'); + }); + + it('is empty when there are no authors', () => { + expect(getPostAuthorNames(post())).toBe(''); + expect(getPostAuthorNames(post({authors: []}))).toBe(''); + }); +}); + +describe('getPostDateField', () => { + // Drafts and scheduled posts have no meaningful published_at, so Ember + // shows when they were last touched instead. + it.each([ + ['draft', 'updated_at'], + ['scheduled', 'updated_at'], + ['published', 'published_at'], + ['sent', 'published_at'] + ] as const)('uses %s -> %s', (status, field) => { + expect(getPostDateField(post({status}))).toBe(field); + }); +}); + +describe('getPostMetaLine', () => { + it('reads "By "', () => { + expect(getPostMetaLine(post({authors: [{id: '1', name: 'Ada'}]}))) + .toEqual({byline: 'By Ada', primaryTagName: null}); + }); + + it('adds the primary tag when there is one', () => { + expect(getPostMetaLine(post({ + authors: [{id: '1', name: 'Ada'}], + primary_tag: {id: 't1', name: 'News'} + }))).toEqual({byline: 'By Ada', primaryTagName: 'News'}); + }); + + it('omits the byline entirely when there are no authors', () => { + expect(getPostMetaLine(post()).byline).toBeNull(); + }); +}); + +describe('getPostStatusLabel', () => { + it.each([ + ['draft', 'Draft'], + ['scheduled', 'Scheduled'], + ['published', 'Published'], + ['sent', 'Sent'] + ] as const)('labels %s as "%s"', (status, label) => { + expect(getPostStatusLabel(post({status}))).toBe(label); + }); + + it('reports a failed newsletter on a published post', () => { + expect(getPostStatusLabel(post({ + status: 'published', + email: {status: 'failed', email_count: 10, opened_count: 0} + }))).toBe('Published but failed to send newsletter'); + }); + + // An email-only post that failed doesn't say "Sent" at all. + it('reports a failed newsletter on an email-only post', () => { + expect(getPostStatusLabel(post({ + status: 'sent', + email: {status: 'failed', email_count: 10, opened_count: 0} + }))).toBe('Failed to send newsletter'); + }); + + it('notes that a published post was also emailed', () => { + expect(getPostStatusLabel(post({ + status: 'published', + email: {status: 'submitted', email_count: 10, opened_count: 0} + }))).toBe('Published and sent'); + }); +}); + +describe('getPostStatusDetail', () => { + const timezone = 'UTC'; + + it('has no detail for a draft', () => { + expect(getPostStatusDetail(post({status: 'draft'}), {timezone})).toBeNull(); + }); + + // Revealed on hover in Ember. + it('names the recipient count for a post that was emailed', () => { + expect(getPostStatusDetail(post({ + status: 'published', + email: {status: 'submitted', email_count: 1200, opened_count: 0} + }), {timezone})).toBe('to 1,200 members'); + }); + + it('uses the singular for a single recipient', () => { + expect(getPostStatusDetail(post({ + status: 'sent', + email: {status: 'submitted', email_count: 1, opened_count: 0} + }), {timezone})).toBe('to 1 member'); + }); + + it('has no detail for a published post that was never emailed', () => { + expect(getPostStatusDetail(post({status: 'published'}), {timezone})).toBeNull(); + }); + + it('has no detail for a post whose newsletter failed', () => { + expect(getPostStatusDetail(post({ + status: 'published', + email: {status: 'failed', email_count: 10, opened_count: 0} + }), {timezone})).toBeNull(); + }); + + describe('scheduled posts', () => { + const publishedAt = '2026-08-05T09:00:00.000Z'; + + it('says when it will be published', () => { + const detail = getPostStatusDetail(post({ + status: 'scheduled', + published_at: publishedAt + }), {timezone, now: new Date('2026-08-04T09:00:00.000Z')}); + + expect(detail).toContain('to be published'); + expect(detail).toContain('tomorrow'); + }); + + it('says "and sent" and names the segment when a newsletter is attached', () => { + const detail = getPostStatusDetail(post({ + status: 'scheduled', + published_at: publishedAt, + newsletter: {id: 'n1'}, + email_segment: 'status:free' + }), {timezone, now: new Date('2026-08-04T09:00:00.000Z')}); + + expect(detail).toContain('to be published and sent'); + expect(detail).toContain('to Free subscribers'); + }); + + // Email-only posts are never "published". + it('says "to be sent" for an email-only post', () => { + const detail = getPostStatusDetail(post({ + status: 'scheduled', + published_at: publishedAt, + email_only: true, + email_segment: 'all' + }), {timezone, now: new Date('2026-08-04T09:00:00.000Z')}); + + expect(detail).toContain('to be sent'); + expect(detail).not.toContain('to be published'); + }); + }); +}); diff --git a/apps/admin/src/posts/list/post-row-copy.ts b/apps/admin/src/posts/list/post-row-copy.ts new file mode 100644 index 00000000000..5018b2cfaef --- /dev/null +++ b/apps/admin/src/posts/list/post-row-copy.ts @@ -0,0 +1,121 @@ +import {formatNumber} from '@tryghost/shade/utils'; +import {formatPostTime} from '@/posts/list/post-time'; +import {humanizeRecipientFilter} from '@/posts/list/humanize-recipient-filter'; +import type {PostListItem} from '@/posts/list/hooks/use-posts-list'; + +/** + * Every string a post row renders, as pure functions. + * + * Ported from `apps/ember-admin/app/components/posts-list/list-item-analytics.hbs` + * and its helpers. Kept out of the component because this is where parity + * actually lives — the wording and the conditions behind it are far easier to + * get subtly wrong than the layout, and far harder to eyeball. + */ + +type PostStatus = 'draft' | 'scheduled' | 'published' | 'sent'; + +function statusOf(post: PostListItem): PostStatus { + return (post.status ?? 'draft') as PostStatus; +} + +function didEmailFail(post: PostListItem): boolean { + return post.email?.status === 'failed'; +} + +function wasEmailed(post: PostListItem): boolean { + return Boolean(post.email) && !didEmailFail(post); +} + +/** Comma-joined author names, falling back to the email for un-named staff. */ +export function getPostAuthorNames(post: PostListItem): string { + return (post.authors ?? []) + .map(author => author.name || author.email) + .filter(Boolean) + .join(', '); +} + +/** + * Drafts and scheduled posts have no meaningful publish date, so the list + * shows when they were last touched instead. + */ +export function getPostDateField(post: PostListItem): 'updated_at' | 'published_at' { + const status = statusOf(post); + + return status === 'draft' || status === 'scheduled' ? 'updated_at' : 'published_at'; +} + +export function getPostDate(post: PostListItem): string | undefined { + return getPostDateField(post) === 'updated_at' ? post.updated_at : post.published_at; +} + +export interface PostMetaLine { + /** "By Ada, Grace" — null when the post has no authors at all. */ + byline: string | null; + primaryTagName: string | null; +} + +export function getPostMetaLine(post: PostListItem): PostMetaLine { + const authors = getPostAuthorNames(post); + + return { + byline: authors ? `By ${authors}` : null, + primaryTagName: post.primary_tag?.name ?? null + }; +} + +/** The always-visible status text. */ +export function getPostStatusLabel(post: PostListItem): string { + switch (statusOf(post)) { + case 'scheduled': + return 'Scheduled'; + case 'published': + if (didEmailFail(post)) { + return 'Published but failed to send newsletter'; + } + return wasEmailed(post) ? 'Published and sent' : 'Published'; + case 'sent': + return didEmailFail(post) ? 'Failed to send newsletter' : 'Sent'; + default: + return 'Draft'; + } +} + +export interface PostStatusDetailOptions { + timezone?: string; + now?: Date; +} + +/** + * The extra text Ember reveals on hover: who a scheduled post will go to, or + * how many members already received it. `null` when there is nothing to add. + */ +export function getPostStatusDetail( + post: PostListItem, + {timezone, now}: PostStatusDetailOptions = {} +): string | null { + const status = statusOf(post); + + if (status === 'scheduled') { + const when = formatPostTime(post.published_at, {timezone, scheduled: true, now}); + const segment = post.email_segment + ? ` to ${humanizeRecipientFilter(post.email_segment)}` + : ''; + + // Email-only posts are never "published". + if (post.email_only) { + return `to be sent ${when}${segment}`.trim(); + } + + const andSent = post.newsletter ? ' and sent' : ''; + const recipients = post.newsletter ? segment : ''; + + return `to be published${andSent} ${when}${recipients}`.trim(); + } + + if ((status === 'published' || status === 'sent') && wasEmailed(post)) { + const count = post.email?.email_count ?? 0; + return `to ${formatNumber(count)} ${count === 1 ? 'member' : 'members'}`; + } + + return null; +} diff --git a/apps/admin/src/posts/list/post-time.test.ts b/apps/admin/src/posts/list/post-time.test.ts new file mode 100644 index 00000000000..b859735993e --- /dev/null +++ b/apps/admin/src/posts/list/post-time.test.ts @@ -0,0 +1,103 @@ +import {describe, expect, it} from 'vitest'; +import {formatPostTime} from './post-time'; + +// Ported from apps/ember-admin/app/helpers/gh-format-post-time.js. The rules +// are order-dependent (the <=12h relative window wins over everything, and +// "yesterday" is checked before "tomorrow"), so each branch is pinned. + +const TZ = 'UTC'; +const NOW = new Date('2026-08-04T12:00:00.000Z'); + +describe('formatPostTime', () => { + describe('within 12 hours either way', () => { + // Relative wins over every absolute format, in both directions. + it('reads as relative for a recent past time', () => { + expect(formatPostTime('2026-08-04T10:00:00.000Z', {timezone: TZ, now: NOW})) + .toBe('2 hours ago'); + }); + + it('reads as relative for a near-future time', () => { + expect(formatPostTime('2026-08-04T14:00:00.000Z', {timezone: TZ, now: NOW})) + .toBe('in 2 hours'); + }); + }); + + describe('same day, more than 12 hours away', () => { + // Reaching this branch needs the reference early in the day: from + // midday, nothing later the same day is more than 12 hours off, so the + // relative window above would win. + const EARLY = new Date('2026-08-04T01:00:00.000Z'); + + it('shows the time and "Today"', () => { + expect(formatPostTime('2026-08-04T23:30:00.000Z', {timezone: TZ, now: EARLY})) + .toBe('23:30 (UTC) Today'); + }); + + it('prefixes "at" when scheduled', () => { + expect(formatPostTime('2026-08-04T23:30:00.000Z', {timezone: TZ, now: EARLY, scheduled: true})) + .toBe('at 23:30 (UTC) Today'); + }); + }); + + describe('yesterday', () => { + it('shows the time and "yesterday"', () => { + expect(formatPostTime('2026-08-03T09:00:00.000Z', {timezone: TZ, now: NOW, absolute: true})) + .toBe('09:00 (UTC) yesterday'); + }); + + it('drops the time in short form', () => { + expect(formatPostTime('2026-08-03T09:00:00.000Z', {timezone: TZ, now: NOW, absolute: true, short: true})) + .toBe('Yesterday'); + }); + }); + + it('shows the time and "tomorrow" when scheduled for tomorrow', () => { + expect(formatPostTime('2026-08-05T09:00:00.000Z', {timezone: TZ, now: NOW, scheduled: true})) + .toBe('at 09:00 (UTC) tomorrow'); + }); + + describe('further away', () => { + it('shows just the date in short form', () => { + expect(formatPostTime('2026-07-01T09:00:00.000Z', {timezone: TZ, now: NOW, absolute: true, short: true})) + .toBe('01 Jul 2026'); + }); + + it('shows time and date in long form', () => { + expect(formatPostTime('2026-07-01T09:00:00.000Z', {timezone: TZ, now: NOW, absolute: true})) + .toBe('09:00 (UTC) 01 Jul 2026'); + }); + + it('reads as a sentence when scheduled', () => { + expect(formatPostTime('2026-09-01T09:00:00.000Z', {timezone: TZ, now: NOW, scheduled: true})) + .toBe('at 09:00 (UTC) on 01 Sep 2026'); + }); + }); + + describe('timezone offsets', () => { + it('writes a bare (UTC) with no offset', () => { + expect(formatPostTime('2026-07-01T09:00:00.000Z', {timezone: 'UTC', now: NOW, absolute: true})) + .toContain('(UTC)'); + }); + + // The helper trims a leading zero and the :00 minutes: +02:00 -> +2. + it('trims a whole-hour offset', () => { + expect(formatPostTime('2026-07-01T09:00:00.000Z', {timezone: 'Europe/Berlin', now: NOW, absolute: true})) + .toContain('(UTC+2)'); + }); + + it('keeps the minutes on a half-hour offset', () => { + expect(formatPostTime('2026-07-01T09:00:00.000Z', {timezone: 'Asia/Kolkata', now: NOW, absolute: true})) + .toContain('(UTC+5:30)'); + }); + + it('renders the time in the given zone, not UTC', () => { + expect(formatPostTime('2026-07-01T09:00:00.000Z', {timezone: 'Europe/Berlin', now: NOW, absolute: true})) + .toBe('11:00 (UTC+2) 01 Jul 2026'); + }); + }); + + it('returns empty for a missing time rather than "Invalid date"', () => { + expect(formatPostTime(null, {timezone: TZ, now: NOW})).toBe(''); + expect(formatPostTime(undefined, {timezone: TZ, now: NOW})).toBe(''); + }); +}); diff --git a/apps/admin/src/posts/list/post-time.ts b/apps/admin/src/posts/list/post-time.ts new file mode 100644 index 00000000000..856bc5826bb --- /dev/null +++ b/apps/admin/src/posts/list/post-time.ts @@ -0,0 +1,79 @@ +import moment from 'moment-timezone'; + +/** + * How a post's date reads in the list. + * + * Ported from `apps/ember-admin/app/helpers/gh-format-post-time.js`. The + * branches are order-dependent and the order is load-bearing: + * + * - anything within 12 hours either way reads as relative ("2 hours ago", + * "in 2 hours"), which beats every absolute format; + * - "yesterday" is checked before "tomorrow", because published posts vastly + * outnumber scheduled ones. + * + * `now` is injectable so the branches can be tested without freezing time. + */ +export interface FormatPostTimeOptions { + timezone?: string; + /** Renders as a sentence fragment: "at 09:00 (UTC) on 01 Sep 2026". */ + scheduled?: boolean; + /** Enables the "yesterday" branch. */ + absolute?: boolean; + /** Date only, no time. */ + short?: boolean; + now?: Date; +} + +function utcOffsetLabel(time: moment.Moment): string { + if (time.utcOffset() === 0) { + return '(UTC)'; + } + + // +02:00 -> +2, but +05:30 keeps its minutes. + const offset = time.format('Z').replace(/([+-])0/, '$1').replace(/:00/, ''); + + return `(UTC${offset})`; +} + +export function formatPostTime( + time: string | null | undefined, + {timezone = 'etc/UTC', scheduled, absolute, short, now}: FormatPostTimeOptions = {} +): string { + if (!time) { + return ''; + } + + const target = moment.tz(time, timezone); + const reference = moment.tz(now ?? moment.utc(), timezone); + + if (!target.isValid()) { + return ''; + } + + const offset = utcOffsetLabel(target); + + // A draft edited, a post published, or a post scheduled within 12 hours. + if (Math.abs(reference.diff(target, 'hours')) <= 12) { + return target.from(reference); + } + + if (target.isSame(reference, 'day')) { + const formatted = target.format(`HH:mm [${offset}] [Today]`); + return scheduled ? `at ${formatted}` : formatted; + } + + // Before the scheduled/tomorrow branch on purpose - see the note above. + if (absolute && target.isSame(reference.clone().subtract(1, 'days').startOf('day'), 'day')) { + return short ? target.format('[Yesterday]') : target.format(`HH:mm [${offset}] [yesterday]`); + } + + if (scheduled && target.isSame(reference.clone().add(1, 'days').startOf('day'), 'day')) { + return target.format(`[at] HH:mm [${offset}] [tomorrow]`); + } + + if (scheduled) { + return target.format(`[at] HH:mm [${offset}] [on] DD MMM YYYY`); + } + + return short ? target.format('DD MMM YYYY') : target.format(`HH:mm [${offset}] DD MMM YYYY`); +} From 4b94eca53ebdc19616a1d580212f41e69bec876b Mon Sep 17 00:00:00 2001 From: Peter Zimon Date: Tue, 4 Aug 2026 12:13:59 +0200 Subject: [PATCH 09/75] Added post rows and the two empty states no ref The list now looks like a list: feature image or placeholder, featured star, title, "By in - ", and the status line, with the detail Ember reveals on hover done as a group-hover so it needs no JS state. Contributors get a link out to the live post for published posts they can no longer edit, matching Ember. Both empty states are ported: the cold start invites you to write, the filtered one offers a way back and clears every param. Sorting deliberately does not count as filtering - Ember excludes `order` from that check, so re-sorting an empty list still offers "write your first post" rather than "clear your filters". Writing the tests turned up two locator traps worth noting: role-name matching is substring-based, so "New post" also matched the empty state's "Write a new post"; and because the fakes do not implement NQL, an unfiltered render serves the same posts to all three status queries, so any count assertion has to scope itself to one bucket. Co-Authored-By: Claude Opus 5 --- .../posts/list/components/post-list-row.tsx | 121 ++++++++++++++++ .../list/components/posts-empty-state.tsx | 54 ++++++++ apps/admin/src/posts/list/post-resource.ts | 18 ++- .../list/posts-list-rows.acceptance.test.tsx | 130 ++++++++++++++++++ .../src/posts/list/posts-list-screen.tsx | 58 +++++--- .../admin/src/posts/list/posts-list.screen.ts | 10 +- 6 files changed, 366 insertions(+), 25 deletions(-) create mode 100644 apps/admin/src/posts/list/components/post-list-row.tsx create mode 100644 apps/admin/src/posts/list/components/posts-empty-state.tsx create mode 100644 apps/admin/src/posts/list/posts-list-rows.acceptance.test.tsx diff --git a/apps/admin/src/posts/list/components/post-list-row.tsx b/apps/admin/src/posts/list/components/post-list-row.tsx new file mode 100644 index 00000000000..95179f7ff70 --- /dev/null +++ b/apps/admin/src/posts/list/components/post-list-row.tsx @@ -0,0 +1,121 @@ +import {Inline, Stack, Text} from '@tryghost/shade/primitives'; +import {LucideIcon} from '@tryghost/shade/utils'; +import { + getPostDate, + getPostMetaLine, + getPostStatusDetail, + getPostStatusLabel +} from '@/posts/list/post-row-copy'; +import {formatPostTime} from '@/posts/list/post-time'; +import type {PostListItem} from '@/posts/list/hooks/use-posts-list'; +import type {PostResource} from '@/posts/list/post-resource'; + +interface PostListRowProps { + post: PostListItem; + resource: PostResource; + timezone?: string; + /** + * Contributors get a link out to the live post instead of the editor, for + * published posts they can no longer edit. + */ + isContributor?: boolean; +} + +/** Status colour follows Ember: drafts pink, scheduled green, failures red. */ +function statusTone(post: PostListItem): string { + if (post.email?.status === 'failed') { + return 'text-red'; + } + + switch (post.status) { + case 'draft': + return 'text-pink'; + case 'scheduled': + return 'text-green'; + default: + return 'text-green'; + } +} + +function FeatureImage({post}: {post: PostListItem}) { + if (post.feature_image) { + return ( +
    + ); + } + + return ( + + + + ); +} + +export function PostListRow({post, resource, timezone, isContributor}: PostListRowProps) { + const {byline, primaryTagName} = getPostMetaLine(post); + const date = getPostDate(post); + const statusLabel = getPostStatusLabel(post); + const statusDetail = getPostStatusDetail(post, {timezone}); + + const isPublished = post.status === 'published' || post.status === 'sent'; + const editorType = resource === 'pages' ? 'page' : 'post'; + const href = isContributor && isPublished + ? post.url + : `#/editor/${editorType}/${post.id}`; + + return ( +
  • + + + + + {post.featured && ( + + )} + + {post.title} + + + + + {byline && {byline}} + {primaryTagName && in {primaryTagName}} + {date && ( + – {formatPostTime(date, {timezone, absolute: true, short: true})} + )} + + + + {statusLabel} + {/* Ember reveals this on hover; same idea, done with a + group-hover so it needs no JS state. */} + {statusDetail && ( + + {' '}{statusDetail} + + )} + + + +
  • + ); +} diff --git a/apps/admin/src/posts/list/components/posts-empty-state.tsx b/apps/admin/src/posts/list/components/posts-empty-state.tsx new file mode 100644 index 00000000000..108319af25b --- /dev/null +++ b/apps/admin/src/posts/list/components/posts-empty-state.tsx @@ -0,0 +1,54 @@ +import {Button, EmptyIndicator} from '@tryghost/shade/components'; +import {LucideIcon} from '@tryghost/shade/utils'; +import {type PostResource, getPostResourceCopy} from '@/posts/list/post-resource'; + +interface PostsEmptyStateProps { + resource: PostResource; + /** + * Whether any filter is active. Sorting deliberately doesn't count — Ember + * excludes `order` from this check, so re-sorting an empty list still + * offers "write your first post" rather than "clear your filters". + */ + hasFilters: boolean; + onClearFilters: () => void; +} + +/** + * The two empty states from `apps/ember-admin/app/templates/posts.hbs`: a cold + * start with a call to action, and a filtered-to-nothing state offering a way + * back. + */ +export function PostsEmptyState({resource, hasFilters, onClearFilters}: PostsEmptyStateProps) { + const copy = getPostResourceCopy(resource); + + if (hasFilters) { + return ( + + Show all {copy.plural} + + } + data-testid='posts-empty-filtered' + title={`No ${copy.plural} match the current filter`} + > + + + ); + } + + return ( + + {copy.emptyAction} + + } + data-testid='posts-empty-cold' + description={copy.emptyDescription} + title={copy.emptyTitle} + > + + + ); +} diff --git a/apps/admin/src/posts/list/post-resource.ts b/apps/admin/src/posts/list/post-resource.ts index b79c76c44b5..289192df06a 100644 --- a/apps/admin/src/posts/list/post-resource.ts +++ b/apps/admin/src/posts/list/post-resource.ts @@ -9,21 +9,35 @@ export type PostResource = 'posts' | 'pages'; interface PostResourceCopy { /** Screen title. */ title: string; + /** Lowercase plural, for sentences like "No posts match the current filter". */ + plural: string; /** Label and href for the primary "new" action in the page header. */ newLabel: string; newHref: string; + /** Cold-start empty state, from the Ember templates. */ + emptyTitle: string; + emptyDescription: string; + emptyAction: string; } const COPY: Record = { posts: { title: 'Posts', + plural: 'posts', newLabel: 'New post', - newHref: '#/editor/post' + newHref: '#/editor/post', + emptyTitle: 'Start creating content', + emptyDescription: 'Get started by writing your first post.', + emptyAction: 'Write a new post' }, pages: { title: 'Pages', + plural: 'pages', newLabel: 'New page', - newHref: '#/editor/page' + newHref: '#/editor/page', + emptyTitle: 'Tell the world about yourself', + emptyDescription: 'Create a page to share more about your publication.', + emptyAction: 'Create a new page' } }; diff --git a/apps/admin/src/posts/list/posts-list-rows.acceptance.test.tsx b/apps/admin/src/posts/list/posts-list-rows.acceptance.test.tsx new file mode 100644 index 00000000000..b42812e283c --- /dev/null +++ b/apps/admin/src/posts/list/posts-list-rows.acceptance.test.tsx @@ -0,0 +1,130 @@ +import { describe, expect, it } from "vitest"; + +import { currentRoute, fakePages, fakePosts, post, renderAdminApp, tag } from "@test-utils/acceptance"; +import { postsListScreen } from "./posts-list.screen"; + +const FLAG_ON = { labs: { postsListReact: true } }; + +/** + * What a row says, and the two empty states — the parity-critical surface of + * the list. The strings themselves are unit-tested in post-row-copy.test.ts; + * these check they reach the screen and that the states switch correctly. + */ +describe("Posts list rows", () => { + it("shows the title, byline, primary tag and status", async () => { + fakePosts([post({ + title: "A published post", + status: "published", + authors: [{ id: "a1", name: "Ada Lovelace" }], + primary_tag: tag({ name: "Engineering" }) + })]); + await renderAdminApp("/posts", FLAG_ON); + + const row = postsListScreen.listItems().first(); + await expect.element(row).toBeVisible(); + await expect.element(row).toHaveTextContent("A published post"); + await expect.element(row).toHaveTextContent("By Ada Lovelace"); + await expect.element(row).toHaveTextContent("Engineering"); + await expect.element(row).toHaveTextContent("Published"); + }); + + // Scoped to one bucket: the fake doesn't implement NQL, so an unfiltered + // render would serve these same posts to all three status queries. + it("marks a featured post", async () => { + fakePosts([ + post({ title: "Featured one", status: "published", featured: true }), + post({ title: "Ordinary one", status: "published", featured: false }) + ]); + await renderAdminApp("/posts?type=published", FLAG_ON); + + await expect(postsListScreen.listItems()).toHaveCount(2); + await expect(postsListScreen.featuredMarkers()).toHaveCount(1); + }); + + // The wording that would not survive a visual check. + it("says a published post's newsletter failed", async () => { + fakePosts([post({ + title: "Failed send", + status: "published", + email: { status: "failed", email_count: 10, opened_count: 0 } + })]); + await renderAdminApp("/posts", FLAG_ON); + + await expect.element(postsListScreen.listItems().first()) + .toHaveTextContent("Published but failed to send newsletter"); + }); + + it("does not say 'Sent' for an email-only post that failed", async () => { + fakePosts([post({ + title: "Failed email", + status: "sent", + email: { status: "failed", email_count: 10, opened_count: 0 } + })]); + await renderAdminApp("/posts", FLAG_ON); + + await expect.element(postsListScreen.listItems().first()) + .toHaveTextContent("Failed to send newsletter"); + }); + + it("links a row to the editor", async () => { + const target = post({ title: "Editable", status: "draft" }); + fakePosts([target]); + await renderAdminApp("/posts", FLAG_ON); + + await expect.element(postsListScreen.listItems().first().getByRole("link")) + .toHaveAttribute("href", `#/editor/post/${target.id}`); + }); + + it("links a page row to the page editor", async () => { + const target = post({ title: "A page", status: "draft" }); + fakePages([target]); + await renderAdminApp("/pages", FLAG_ON); + + await expect.element(postsListScreen.listItems().first().getByRole("link")) + .toHaveAttribute("href", `#/editor/page/${target.id}`); + }); +}); + +describe("Posts list empty states", () => { + it("invites you to write when there is nothing at all", async () => { + fakePosts([]); + await renderAdminApp("/posts", FLAG_ON); + + await expect.element(postsListScreen.emptyCold()).toBeVisible(); + await expect.element(postsListScreen.emptyCold()).toHaveTextContent("Start creating content"); + }); + + it("uses the page wording on the pages screen", async () => { + fakePages([]); + await renderAdminApp("/pages", FLAG_ON); + + await expect.element(postsListScreen.emptyCold()).toHaveTextContent("Tell the world about yourself"); + }); + + it("offers a way back when a filter matched nothing", async () => { + fakePosts([]); + await renderAdminApp("/posts?type=draft", FLAG_ON); + + await expect.element(postsListScreen.emptyFiltered()).toBeVisible(); + await expect.element(postsListScreen.emptyFiltered()) + .toHaveTextContent("No posts match the current filter"); + }); + + it("clears every filter from the URL when taking that way back", async () => { + fakePosts([]); + await renderAdminApp("/posts?type=draft&tag=news&order=published_at+asc", FLAG_ON); + + await postsListScreen.showAllButton("posts").click(); + + await expect.poll(currentRoute).toBe("/posts"); + }); + + // Sorting is not filtering: Ember excludes `order` from this check, so + // re-sorting an empty list still offers "write your first post". + it("treats a sort-only URL as unfiltered", async () => { + fakePosts([]); + await renderAdminApp("/posts?order=published_at+asc", FLAG_ON); + + await expect.element(postsListScreen.emptyCold()).toBeVisible(); + }); +}); diff --git a/apps/admin/src/posts/list/posts-list-screen.tsx b/apps/admin/src/posts/list/posts-list-screen.tsx index fd26baf8b11..66e082af1b7 100644 --- a/apps/admin/src/posts/list/posts-list-screen.tsx +++ b/apps/admin/src/posts/list/posts-list-screen.tsx @@ -4,7 +4,10 @@ import {ListPage} from '@tryghost/shade/page-templates'; import {LoadMoreButton} from '@/shared/virtual-list'; import {LucideIcon} from '@tryghost/shade/utils'; import {PageHeader} from '@tryghost/shade/patterns'; -import {isAuthorOrContributor} from '@tryghost/admin-x-framework/api/users'; +import {PostListRow} from './components/post-list-row'; +import {PostsEmptyState} from './components/posts-empty-state'; +import {getSettingValue, useBrowseSettings} from '@tryghost/admin-x-framework/api/settings'; +import {isAuthorOrContributor, isContributorUser} from '@tryghost/admin-x-framework/api/users'; import {type PostResource, getPostResourceCopy} from './post-resource'; import {useCurrentUser} from '@tryghost/admin-x-framework/api/current-user'; import {usePostsFilterState} from './hooks/use-posts-filter-state'; @@ -19,8 +22,13 @@ import {usePostsList} from './hooks/use-posts-list'; */ export function PostsListScreen({resource}: {resource: PostResource}) { const copy = getPostResourceCopy(resource); - const {params} = usePostsFilterState(); + const {params, hasFilters, clearAll} = usePostsFilterState(); const {data: currentUser} = useCurrentUser(); + const {data: settingsData} = useBrowseSettings(); + + // Scheduled times read in the site's timezone, not the browser's. + const timezone = getSettingValue(settingsData?.settings, 'timezone') ?? undefined; + const isContributor = Boolean(currentUser && isContributorUser(currentUser)); // Authors and contributors only ever see their own posts, whatever the // `author` param says — matching PostsRoute#model in the Ember app. @@ -67,35 +75,43 @@ export function PostsListScreen({resource}: {resource: PostResource}) { Error loading {copy.title.toLowerCase()} + ) : items.length === 0 ? ( + + + ) : ( // Deliberately the same testids the Ember list // uses — including on pages, which shares the // Ember component — so the e2e page objects can - // eventually target both implementations. They - // can never collide: the Ember route aborts when - // this screen renders. + // eventually target both implementations. They can + // never collide: the Ember route aborts when this + // screen renders. // - // Not yet interchangeable, though: PostsPage's - // getPostByTitle matches an h3 inside the row, and - // waitForPageToFullyLoad expects `posts-list` to - // exist in the empty state too (Ember renders it - // unconditionally). Phase 2 brings the real row - // markup; Phase 10 reconciles the page object and - // re-baselines the visual-regression shots. + // Ember renders `posts-list` even when empty, and + // its rows are still richer than these; Phase 10 + // reconciles the page object and re-baselines the + // visual-regression shots.
      {items.map(item => ( -
    • - {item.title} -
    • + ))}
    - {/* Placeholder pager. Phase 2 replaces this - with the virtualised infinite scroll the - members list uses; without something here - a site with 30+ scheduled posts would show - only the first page and never reach its - drafts. */} + {/* Plain pager for now. Phase 5 adds the + metrics columns and Phase 10 checks + performance on large sites; the virtualised + scroll the members list uses lands with + whichever of those needs it first. */} {hasNextPage && ( page.getByTestId(`${resource}-page`), title: (resource: "posts" | "pages", name: string) => page.getByTestId(`${resource}-page`).getByRole("heading", { name }), + // `exact` matters: the cold empty state also offers "Write a new post", + // which a substring match on "New post" would pick up too. newLink: (resource: "posts" | "pages", name: string) => - page.getByTestId(`${resource}-page`).getByRole("link", { name }), - listItems: () => page.getByTestId("posts-list-item") + page.getByTestId(`${resource}-page`).getByRole("link", { name, exact: true }), + listItems: () => page.getByTestId("posts-list-item"), + featuredMarkers: () => page.getByTestId("post-featured"), + emptyCold: () => page.getByTestId("posts-empty-cold"), + emptyFiltered: () => page.getByTestId("posts-empty-filtered"), + showAllButton: (plural: string) => page.getByRole("button", { name: `Show all ${plural}` }) }; From f41cd1fb3cbd4b6e100aa4168c0a49b7641afaab Mon Sep 17 00:00:00 2001 From: Peter Zimon Date: Tue, 4 Aug 2026 12:18:14 +0200 Subject: [PATCH 10/75] Changed post status colours to Shade's semantic state tokens no ref text-green and text-red were raw palette aliases; Shade registers --color-state-success and --color-state-danger for exactly this, and they resolve to the same green-500 and red-500 Ember's CSS uses. Draft keeps the pink alias: it is not success, warning or danger, so there is no semantic token for it, and pink is what Ember shows. Co-Authored-By: Claude Opus 5 --- .../posts/list/components/post-list-row.tsx | 21 ++++++++++--------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/apps/admin/src/posts/list/components/post-list-row.tsx b/apps/admin/src/posts/list/components/post-list-row.tsx index 95179f7ff70..ee6b44dede0 100644 --- a/apps/admin/src/posts/list/components/post-list-row.tsx +++ b/apps/admin/src/posts/list/components/post-list-row.tsx @@ -21,20 +21,21 @@ interface PostListRowProps { isContributor?: boolean; } -/** Status colour follows Ember: drafts pink, scheduled green, failures red. */ +/** + * Status colour follows Ember (`app/styles/layouts/content.css`): drafts pink, + * everything live green, failures red. + * + * Green and red go through Shade's semantic state tokens. Draft-pink has no + * semantic equivalent — it isn't success, warning or danger — so it uses the + * `pink` alias, which resolves to the same `pink-500` Ember's `var(--pink)` + * does. + */ function statusTone(post: PostListItem): string { if (post.email?.status === 'failed') { - return 'text-red'; + return 'text-state-danger'; } - switch (post.status) { - case 'draft': - return 'text-pink'; - case 'scheduled': - return 'text-green'; - default: - return 'text-green'; - } + return post.status === 'draft' ? 'text-pink' : 'text-state-success'; } function FeatureImage({post}: {post: PostListItem}) { From eebb1f37f0c790bbcb3958ac8e44cb6202c21453 Mon Sep 17 00:00:00 2001 From: Peter Zimon Date: Tue, 4 Aug 2026 12:40:29 +0200 Subject: [PATCH 11/75] Fixed post row parity issues found in review no ref Published and sent rows were green. Ember colours exactly three states - draft pink, scheduled green, error red - and published/sent have no rule at all, so they inherit the muted grey of .gh-content-entry-status. That is most rows on a real site, so painting them green changed the whole feel of the screen. I had cited that stylesheet as saying the opposite. Returning from the editor left you with no sidebar. Aborting a transition means the route you came FROM never deactivates, so the editor's teardown - which clears full-screen mode, the thing the React shell reads to decide whether to show the sidebar - never ran. The hover detail was rendered always and merely faded with opacity, so it stayed in the accessibility tree: a screen reader read every scheduled row's full dispatch details aloud on every row. Now mounted only while hovered, as Ember does. "Show all posts" cleared the sort as well as the filters; Ember's link deliberately leaves `order` alone. The acceptance test asserted the wrong behaviour, so it was locking the bug in. Also: a failed email no longer reddens a draft (un-publishing leaves the email record attached, and Ember gates on status); pages can no longer be described as sent; empty-state copy is verbatim from the Ember templates, terminal full stops included, with the invented descriptions removed; the date tooltip regained its "Updated"/"Published" prefix; the meta separator is a hyphen, not an en dash; and the featured star uses a semantic token. Co-Authored-By: Claude Opus 5 --- .../posts/list/components/post-list-row.tsx | 103 +++++++++++------- .../list/components/posts-empty-state.tsx | 1 - .../hooks/use-posts-filter-state.test.tsx | 14 ++- .../list/hooks/use-posts-filter-state.ts | 17 ++- apps/admin/src/posts/list/post-resource.ts | 13 ++- .../src/posts/list/post-row-copy.test.ts | 53 ++++++++- apps/admin/src/posts/list/post-row-copy.ts | 91 +++++++++++++--- .../list/posts-list-rows.acceptance.test.tsx | 59 +++++++++- .../src/posts/list/posts-list-screen.tsx | 4 +- apps/ember-admin/app/routes/posts.js | 8 ++ .../acceptance/posts-list-react-flag-test.js | 23 ++++ 11 files changed, 304 insertions(+), 82 deletions(-) diff --git a/apps/admin/src/posts/list/components/post-list-row.tsx b/apps/admin/src/posts/list/components/post-list-row.tsx index ee6b44dede0..366fcdc342e 100644 --- a/apps/admin/src/posts/list/components/post-list-row.tsx +++ b/apps/admin/src/posts/list/components/post-list-row.tsx @@ -1,12 +1,13 @@ import {Inline, Stack, Text} from '@tryghost/shade/primitives'; import {LucideIcon} from '@tryghost/shade/utils'; import { - getPostDate, - getPostMetaLine, + didPostEmailFail, + getPostDateTooltip, + getPostMetaParts, getPostStatusDetail, getPostStatusLabel } from '@/posts/list/post-row-copy'; -import {formatPostTime} from '@/posts/list/post-time'; +import {useState} from 'react'; import type {PostListItem} from '@/posts/list/hooks/use-posts-list'; import type {PostResource} from '@/posts/list/post-resource'; @@ -22,20 +23,31 @@ interface PostListRowProps { } /** - * Status colour follows Ember (`app/styles/layouts/content.css`): drafts pink, - * everything live green, failures red. + * Status colour, following `app/styles/layouts/content.css`. Only three states + * are coloured there — `.draft` pink (985), `.scheduled` green (992), `.error` + * red (1017). Published and sent have **no** rule, so they inherit the muted + * grey of `.gh-content-entry-status` (#99a3ad, ≈ `muted-foreground`). That is + * most rows on a real site, so colouring them would change the whole feel of + * the screen. * - * Green and red go through Shade's semantic state tokens. Draft-pink has no - * semantic equivalent — it isn't success, warning or danger — so it uses the - * `pink` alias, which resolves to the same `pink-500` Ember's `var(--pink)` - * does. + * Red uses Shade's semantic danger token; pink and green have no semantic + * equivalent (a draft is not a warning, a schedule is not a success) so they + * use the aliases that resolve to the same values Ember's `var(--pink)` and + * `var(--green)` do. */ -function statusTone(post: PostListItem): string { - if (post.email?.status === 'failed') { +function statusTone(post: PostListItem, isFailed: boolean): string { + if (isFailed) { return 'text-state-danger'; } - return post.status === 'draft' ? 'text-pink' : 'text-state-success'; + switch (post.status) { + case 'draft': + return 'text-pink'; + case 'scheduled': + return 'text-green'; + default: + return 'text-muted-foreground'; + } } function FeatureImage({post}: {post: PostListItem}) { @@ -61,24 +73,37 @@ function FeatureImage({post}: {post: PostListItem}) { } export function PostListRow({post, resource, timezone, isContributor}: PostListRowProps) { - const {byline, primaryTagName} = getPostMetaLine(post); - const date = getPostDate(post); - const statusLabel = getPostStatusLabel(post); - const statusDetail = getPostStatusDetail(post, {timezone}); + const [isHovered, setIsHovered] = useState(false); + + const metaParts = getPostMetaParts(post, {timezone}); + const dateTooltip = getPostDateTooltip(post, {timezone}); + const statusLabel = getPostStatusLabel(post, resource); + const statusDetail = getPostStatusDetail(post, {timezone, resource}); + const isFailed = didPostEmailFail(post, resource); - const isPublished = post.status === 'published' || post.status === 'sent'; + // Strictly `published`, matching Ember's `isPublished`. An email-only + // `sent` post still opens in the editor for a contributor. + const isPublished = post.status === 'published'; const editorType = resource === 'pages' ? 'page' : 'post'; - const href = isContributor && isPublished - ? post.url - : `#/editor/${editorType}/${post.id}`; + const linksOffsite = Boolean(isContributor && isPublished); + const href = linksOffsite ? post.url : `#/editor/${editorType}/${post.id}`; return ( -
  • +
  • { + setIsHovered(true); + }} + onMouseLeave={() => { + setIsHovered(false); + }} + > @@ -86,7 +111,7 @@ export function PostListRow({post, resource, timezone, isContributor}: PostListR {post.featured && ( )} @@ -95,25 +120,21 @@ export function PostListRow({post, resource, timezone, isContributor}: PostListR - - {byline && {byline}} - {primaryTagName && in {primaryTagName}} - {date && ( - – {formatPostTime(date, {timezone, absolute: true, short: true})} - )} - + {metaParts.length > 0 && ( + // Joined from parts so a missing piece takes its + // separator with it — no dangling " – date". + + {metaParts.join(' - ')} + + )} - + {statusLabel} - {/* Ember reveals this on hover; same idea, done with a - group-hover so it needs no JS state. */} - {statusDetail && ( - - {' '}{statusDetail} - - )} + {/* Mounted only while hovered, as Ember does. A CSS + opacity fade would keep it in the DOM, so a screen + reader would read every scheduled row's full + dispatch details aloud, always. */} + {isHovered && statusDetail && {statusDetail}} diff --git a/apps/admin/src/posts/list/components/posts-empty-state.tsx b/apps/admin/src/posts/list/components/posts-empty-state.tsx index 108319af25b..4000fa88ba8 100644 --- a/apps/admin/src/posts/list/components/posts-empty-state.tsx +++ b/apps/admin/src/posts/list/components/posts-empty-state.tsx @@ -45,7 +45,6 @@ export function PostsEmptyState({resource, hasFilters, onClearFilters}: PostsEmp } data-testid='posts-empty-cold' - description={copy.emptyDescription} title={copy.emptyTitle} > diff --git a/apps/admin/src/posts/list/hooks/use-posts-filter-state.test.tsx b/apps/admin/src/posts/list/hooks/use-posts-filter-state.test.tsx index 291a0eb9b95..bfee10147b7 100644 --- a/apps/admin/src/posts/list/hooks/use-posts-filter-state.test.tsx +++ b/apps/admin/src/posts/list/hooks/use-posts-filter-state.test.tsx @@ -129,19 +129,21 @@ describe('usePostsFilterState', () => { }); }); - // "Show all posts" in the filtered empty state. - it('clears filters and sort together', async () => { + // "Show all posts" in the filtered empty state. Ember's link resets + // type/author/tag/visibility but deliberately NOT order, so a chosen sort + // survives clearing the filters. + it('clears the filters but keeps the sort', async () => { const {result} = renderState('/posts?type=draft&tag=news&order=published_at+asc'); act(() => { - result.current.clearAll(); + result.current.clearFilters(); }); await waitFor(() => { - expect(result.current.query).toBe(''); + expect(result.current.filters).toEqual([]); }); - expect(result.current.filters).toEqual([]); - expect(result.current.order).toBeNull(); + expect(result.current.query).toBe('order=published_at+asc'); + expect(result.current.order).toBe('published_at asc'); }); it('leaves unrelated query params alone', async () => { diff --git a/apps/admin/src/posts/list/hooks/use-posts-filter-state.ts b/apps/admin/src/posts/list/hooks/use-posts-filter-state.ts index 48d64164ab2..459e2ef6841 100644 --- a/apps/admin/src/posts/list/hooks/use-posts-filter-state.ts +++ b/apps/admin/src/posts/list/hooks/use-posts-filter-state.ts @@ -33,7 +33,8 @@ export interface UsePostsFilterStateReturn { order: string | null; setFilters: (filters: Filter[], options?: SetOptions) => void; setOrder: (order: string | null, options?: SetOptions) => void; - clearAll: (options?: SetOptions) => void; + /** Clears the filters but keeps the sort, matching Ember. */ + clearFilters: (options?: SetOptions) => void; /** Whether any *filter* is active. Sorting deliberately doesn't count. */ hasFilters: boolean; } @@ -90,11 +91,19 @@ export function usePostsFilterState(): UsePostsFilterStateReturn { apply({[ORDER_PARAM]: nextOrder}, options); }, [apply]); - const clearAll = useCallback((options?: SetOptions) => { - apply({...serializePostFilters([]), [ORDER_PARAM]: null}, options); + /** + * Clears the filters and leaves the sort alone — Ember's "Show all posts" + * link resets `type`, `author`, `tag` and `visibility` but deliberately + * not `order` (`templates/posts.hbs:51`), so a chosen sort survives. + * + * Pushes a history entry rather than replacing, so back returns to the + * filtered view the way Ember's `LinkTo` does. + */ + const clearFilters = useCallback((options?: SetOptions) => { + apply(serializePostFilters([]), {replace: false, ...options}); }, [apply]); const hasFilters = POST_FILTER_PARAMS.some(param => Boolean(params[param])); - return {filters, params, order, setFilters, setOrder, clearAll, hasFilters}; + return {filters, params, order, setFilters, setOrder, clearFilters, hasFilters}; } diff --git a/apps/admin/src/posts/list/post-resource.ts b/apps/admin/src/posts/list/post-resource.ts index 289192df06a..203c04e9739 100644 --- a/apps/admin/src/posts/list/post-resource.ts +++ b/apps/admin/src/posts/list/post-resource.ts @@ -14,9 +14,12 @@ interface PostResourceCopy { /** Label and href for the primary "new" action in the page header. */ newLabel: string; newHref: string; - /** Cold-start empty state, from the Ember templates. */ + /** + * Cold-start empty state. Wording is verbatim from the Ember templates, + * terminal full stops included — Ember shows a heading and a button with + * no supporting description. + */ emptyTitle: string; - emptyDescription: string; emptyAction: string; } @@ -26,8 +29,7 @@ const COPY: Record = { plural: 'posts', newLabel: 'New post', newHref: '#/editor/post', - emptyTitle: 'Start creating content', - emptyDescription: 'Get started by writing your first post.', + emptyTitle: 'Start creating content.', emptyAction: 'Write a new post' }, pages: { @@ -35,8 +37,7 @@ const COPY: Record = { plural: 'pages', newLabel: 'New page', newHref: '#/editor/page', - emptyTitle: 'Tell the world about yourself', - emptyDescription: 'Create a page to share more about your publication.', + emptyTitle: 'Tell the world about yourself.', emptyAction: 'Create a new page' } }; diff --git a/apps/admin/src/posts/list/post-row-copy.test.ts b/apps/admin/src/posts/list/post-row-copy.test.ts index 7a040791b8c..20b09444470 100644 --- a/apps/admin/src/posts/list/post-row-copy.test.ts +++ b/apps/admin/src/posts/list/post-row-copy.test.ts @@ -2,9 +2,11 @@ import {describe, expect, it} from 'vitest'; import { getPostAuthorNames, getPostDateField, - getPostStatusLabel, + getPostDateTooltip, + getPostMetaLine, + getPostMetaParts, getPostStatusDetail, - getPostMetaLine + getPostStatusLabel } from './post-row-copy'; import type {PostListItem} from './hooks/use-posts-list'; @@ -73,6 +75,53 @@ describe('getPostMetaLine', () => { }); }); +describe('getPostMetaParts', () => { + // Joined by the row, so a missing piece must drop its separator too - + // otherwise a post with no authors reads " - 13 Jul 2026". + it('joins byline, tag and date', () => { + expect(getPostMetaParts(post({ + authors: [{id: '1', name: 'Ada'}], + primary_tag: {id: 't1', name: 'News'}, + published_at: '2026-07-13T09:00:00.000Z' + }), {timezone: 'UTC', now: new Date('2026-08-04T09:00:00.000Z')})) + .toEqual(['By Ada', 'in News', '13 Jul 2026']); + }); + + it('drops the byline and its separator when there are no authors', () => { + expect(getPostMetaParts(post({ + published_at: '2026-07-13T09:00:00.000Z' + }), {timezone: 'UTC', now: new Date('2026-08-04T09:00:00.000Z')})) + .toEqual(['13 Jul 2026']); + }); + + it('is empty when there is nothing to say', () => { + expect(getPostMetaParts(post({status: 'draft'}), {timezone: 'UTC'})).toEqual([]); + }); +}); + +describe('getPostDateTooltip', () => { + // Ember prefixes the title attribute so the date has context. + it('says "Updated" for a draft', () => { + expect(getPostDateTooltip(post({ + status: 'draft', + updated_at: '2026-07-13T09:00:00.000Z' + }), {timezone: 'UTC', now: new Date('2026-08-04T09:00:00.000Z')})) + .toBe('Updated 09:00 (UTC) 13 Jul 2026'); + }); + + it('says "Published" for a published post', () => { + expect(getPostDateTooltip(post({ + status: 'published', + published_at: '2026-07-13T09:00:00.000Z' + }), {timezone: 'UTC', now: new Date('2026-08-04T09:00:00.000Z')})) + .toContain('Published '); + }); + + it('is undefined with no date', () => { + expect(getPostDateTooltip(post({status: 'draft'}), {timezone: 'UTC'})).toBeUndefined(); + }); +}); + describe('getPostStatusLabel', () => { it.each([ ['draft', 'Draft'], diff --git a/apps/admin/src/posts/list/post-row-copy.ts b/apps/admin/src/posts/list/post-row-copy.ts index 5018b2cfaef..38993710f8d 100644 --- a/apps/admin/src/posts/list/post-row-copy.ts +++ b/apps/admin/src/posts/list/post-row-copy.ts @@ -2,6 +2,7 @@ import {formatNumber} from '@tryghost/shade/utils'; import {formatPostTime} from '@/posts/list/post-time'; import {humanizeRecipientFilter} from '@/posts/list/humanize-recipient-filter'; import type {PostListItem} from '@/posts/list/hooks/use-posts-list'; +import type {PostResource} from '@/posts/list/post-resource'; /** * Every string a post row renders, as pure functions. @@ -18,12 +19,35 @@ function statusOf(post: PostListItem): PostStatus { return (post.status ?? 'draft') as PostStatus; } +/** + * Ember's `didEmailFail`: a *post*, live, whose email failed. The status gate + * matters — un-publishing a post whose newsletter failed leaves the email + * record attached, and without it that draft would render as an error. + */ +export function didPostEmailFail(post: PostListItem, resource: PostResource = 'posts'): boolean { + const status = statusOf(post); + + return resource === 'posts' + && (status === 'published' || status === 'sent') + && post.email?.status === 'failed'; +} + function didEmailFail(post: PostListItem): boolean { return post.email?.status === 'failed'; } -function wasEmailed(post: PostListItem): boolean { - return Boolean(post.email) && !didEmailFail(post); +/** + * Ember's `hasBeenEmailed`: a *post* (never a page), live, with a non-failed + * email. The page guard matters because a page carrying stray email data would + * otherwise be described as sent. + */ +function wasEmailed(post: PostListItem, resource: PostResource = 'posts'): boolean { + const status = statusOf(post); + + return resource === 'posts' + && (status === 'published' || status === 'sent') + && Boolean(post.email) + && !didEmailFail(post); } /** Comma-joined author names, falling back to the email for un-named staff. */ @@ -63,8 +87,43 @@ export function getPostMetaLine(post: PostListItem): PostMetaLine { }; } +/** + * The meta line as separable parts, so the row can join them without emitting + * a dangling separator — a post with no authors would otherwise read + * " – 13 Jul 2026". + */ +export function getPostMetaParts( + post: PostListItem, + {timezone, now}: PostStatusDetailOptions = {} +): string[] { + const {byline, primaryTagName} = getPostMetaLine(post); + const date = getPostDate(post); + + return [ + byline, + primaryTagName ? `in ${primaryTagName}` : null, + date ? formatPostTime(date, {timezone, absolute: true, short: true, now}) : null + ].filter((part): part is string => Boolean(part)); +} + +/** Ember prefixes the date's title attribute so it has context. */ +export function getPostDateTooltip( + post: PostListItem, + {timezone, now}: PostStatusDetailOptions = {} +): string | undefined { + const date = getPostDate(post); + + if (!date) { + return undefined; + } + + const prefix = getPostDateField(post) === 'updated_at' ? 'Updated' : 'Published'; + + return `${prefix} ${formatPostTime(date, {timezone, absolute: true, now})}`; +} + /** The always-visible status text. */ -export function getPostStatusLabel(post: PostListItem): string { +export function getPostStatusLabel(post: PostListItem, resource: PostResource = 'posts'): string { switch (statusOf(post)) { case 'scheduled': return 'Scheduled'; @@ -72,7 +131,7 @@ export function getPostStatusLabel(post: PostListItem): string { if (didEmailFail(post)) { return 'Published but failed to send newsletter'; } - return wasEmailed(post) ? 'Published and sent' : 'Published'; + return wasEmailed(post, resource) ? 'Published and sent' : 'Published'; case 'sent': return didEmailFail(post) ? 'Failed to send newsletter' : 'Sent'; default: @@ -83,6 +142,7 @@ export function getPostStatusLabel(post: PostListItem): string { export interface PostStatusDetailOptions { timezone?: string; now?: Date; + resource?: PostResource; } /** @@ -91,28 +151,31 @@ export interface PostStatusDetailOptions { */ export function getPostStatusDetail( post: PostListItem, - {timezone, now}: PostStatusDetailOptions = {} + {timezone, now, resource = 'posts'}: PostStatusDetailOptions = {} ): string | null { const status = statusOf(post); if (status === 'scheduled') { + // Joined rather than interpolated: a post with no publish date yields + // an empty `when`, which interpolation would leave as a double space. const when = formatPostTime(post.published_at, {timezone, scheduled: true, now}); const segment = post.email_segment - ? ` to ${humanizeRecipientFilter(post.email_segment)}` - : ''; + ? `to ${humanizeRecipientFilter(post.email_segment)}` + : null; // Email-only posts are never "published". - if (post.email_only) { - return `to be sent ${when}${segment}`.trim(); - } + const lead = post.email_only + ? 'to be sent' + : `to be published${post.newsletter ? ' and sent' : ''}`; - const andSent = post.newsletter ? ' and sent' : ''; - const recipients = post.newsletter ? segment : ''; + const showSegment = post.email_only || post.newsletter; - return `to be published${andSent} ${when}${recipients}`.trim(); + return [lead, when, showSegment ? segment : null] + .filter(Boolean) + .join(' '); } - if ((status === 'published' || status === 'sent') && wasEmailed(post)) { + if (wasEmailed(post, resource)) { const count = post.email?.email_count ?? 0; return `to ${formatNumber(count)} ${count === 1 ? 'member' : 'members'}`; } diff --git a/apps/admin/src/posts/list/posts-list-rows.acceptance.test.tsx b/apps/admin/src/posts/list/posts-list-rows.acceptance.test.tsx index b42812e283c..c1b8d3d94b7 100644 --- a/apps/admin/src/posts/list/posts-list-rows.acceptance.test.tsx +++ b/apps/admin/src/posts/list/posts-list-rows.acceptance.test.tsx @@ -1,6 +1,6 @@ import { describe, expect, it } from "vitest"; -import { currentRoute, fakePages, fakePosts, post, renderAdminApp, tag } from "@test-utils/acceptance"; +import { currentRoute, currentUserResponse, fakePages, fakePosts, post, renderAdminApp, staffRole, tag } from "@test-utils/acceptance"; import { postsListScreen } from "./posts-list.screen"; const FLAG_ON = { labs: { postsListReact: true } }; @@ -60,10 +60,12 @@ describe("Posts list rows", () => { status: "sent", email: { status: "failed", email_count: 10, opened_count: 0 } })]); - await renderAdminApp("/posts", FLAG_ON); + await renderAdminApp("/posts?type=sent", FLAG_ON); - await expect.element(postsListScreen.listItems().first()) - .toHaveTextContent("Failed to send newsletter"); + const row = postsListScreen.listItems().first(); + await expect.element(row).toHaveTextContent("Failed to send newsletter"); + // A substring check alone would pass against "Sent - Failed to ...". + await expect.element(row).not.toHaveTextContent(/(^|[^-])\bSent\b/); }); it("links a row to the editor", async () => { @@ -75,6 +77,49 @@ describe("Posts list rows", () => { .toHaveAttribute("href", `#/editor/post/${target.id}`); }); + describe("as a Contributor", () => { + const asContributor = () => { + const me = currentUserResponse(); + me.users[0].roles = [staffRole({ name: "Contributor" })]; + me.users[0].slug = "contrib"; + return { ...FLAG_ON, boot: { browseMe: { response: me } } }; + }; + + it("links a published post out to the site instead of the editor", async () => { + const target = post({ + title: "Live post", + status: "published", + url: "https://example.com/live-post/" + }); + fakePosts([target]); + await renderAdminApp("/posts?type=published", asContributor()); + + const link = postsListScreen.listItems().first().getByRole("link"); + await expect.element(link).toHaveAttribute("href", "https://example.com/live-post/"); + await expect.element(link).toHaveAttribute("target", "_blank"); + }); + + // Ember's isPublished is strictly status === 'published', so an + // email-only post still opens in the editor. + it("still links an email-only post to the editor", async () => { + const target = post({ title: "Email only", status: "sent" }); + fakePosts([target]); + await renderAdminApp("/posts?type=sent", asContributor()); + + await expect.element(postsListScreen.listItems().first().getByRole("link")) + .toHaveAttribute("href", `#/editor/post/${target.id}`); + }); + + it("links a draft to the editor", async () => { + const target = post({ title: "My draft", status: "draft" }); + fakePosts([target]); + await renderAdminApp("/posts?type=draft", asContributor()); + + await expect.element(postsListScreen.listItems().first().getByRole("link")) + .toHaveAttribute("href", `#/editor/post/${target.id}`); + }); + }); + it("links a page row to the page editor", async () => { const target = post({ title: "A page", status: "draft" }); fakePages([target]); @@ -110,13 +155,15 @@ describe("Posts list empty states", () => { .toHaveTextContent("No posts match the current filter"); }); - it("clears every filter from the URL when taking that way back", async () => { + // Ember's "Show all posts" resets the filters but deliberately not the + // sort, so a chosen order survives. + it("clears the filters but keeps the sort when taking that way back", async () => { fakePosts([]); await renderAdminApp("/posts?type=draft&tag=news&order=published_at+asc", FLAG_ON); await postsListScreen.showAllButton("posts").click(); - await expect.poll(currentRoute).toBe("/posts"); + await expect.poll(currentRoute).toBe("/posts?order=published_at+asc"); }); // Sorting is not filtering: Ember excludes `order` from this check, so diff --git a/apps/admin/src/posts/list/posts-list-screen.tsx b/apps/admin/src/posts/list/posts-list-screen.tsx index 66e082af1b7..01bc89fe14c 100644 --- a/apps/admin/src/posts/list/posts-list-screen.tsx +++ b/apps/admin/src/posts/list/posts-list-screen.tsx @@ -22,7 +22,7 @@ import {usePostsList} from './hooks/use-posts-list'; */ export function PostsListScreen({resource}: {resource: PostResource}) { const copy = getPostResourceCopy(resource); - const {params, hasFilters, clearAll} = usePostsFilterState(); + const {params, hasFilters, clearFilters} = usePostsFilterState(); const {data: currentUser} = useCurrentUser(); const {data: settingsData} = useBrowseSettings(); @@ -80,7 +80,7 @@ export function PostsListScreen({resource}: {resource: PostResource}) { ) : ( diff --git a/apps/ember-admin/app/routes/posts.js b/apps/ember-admin/app/routes/posts.js index 5f4b4f354b5..1c4eb5403e3 100644 --- a/apps/ember-admin/app/routes/posts.js +++ b/apps/ember-admin/app/routes/posts.js @@ -41,6 +41,7 @@ export default class PostsRoute extends AuthenticatedRoute { @service feature; @service postAnalytics; @service settings; + @service ui; queryParams = { type: {refreshModel: true}, @@ -83,6 +84,13 @@ export default class PostsRoute extends AuthenticatedRoute { transition.abort(); + // Aborting means the route we came FROM never deactivates, so any UI + // state its teardown would have cleared stays set. The editor's + // `deactivate` clears full-screen mode, and the React shell reads that + // to decide whether to show the sidebar - so without this, returning + // from the editor leaves you looking at a sidebar-less screen. + this.ui.set('isFullScreen', false); + // Ember and React share window.location.hash, and an aborted // transition never reaches updateURL - so a navigation Ember itself // started would be a silent no-op without writing the URL ourselves. diff --git a/apps/ember-admin/tests/acceptance/posts-list-react-flag-test.js b/apps/ember-admin/tests/acceptance/posts-list-react-flag-test.js index 95171c8ca5f..4e8638980a7 100644 --- a/apps/ember-admin/tests/acceptance/posts-list-react-flag-test.js +++ b/apps/ember-admin/tests/acceptance/posts-list-react-flag-test.js @@ -139,6 +139,29 @@ describe('Acceptance: posts/pages React flag', function () { expect(navigate.firstCall.args[0], 'target url').to.equal('/pages'); }); + // Aborting means the route we came FROM never deactivates, so any UI + // state its teardown would have cleared stays set. The editor's + // teardown is the one that shows: it clears full-screen mode, which is + // what the React shell reads to decide whether to show the sidebar. + // Without this, returning from the editor leaves you with no sidebar. + it('leaves full-screen mode when it aborts', async function () { + const ui = this.owner.lookup('service:ui'); + ui.set('isFullScreen', true); + + await visitExpectingAbort('/posts'); + + expect(ui.isFullScreen, 'isFullScreen after aborting into posts').to.be.false; + }); + + it('leaves full-screen mode when it aborts into pages', async function () { + const ui = this.owner.lookup('service:ui'); + ui.set('isFullScreen', true); + + await visitExpectingAbort('/pages'); + + expect(ui.isFullScreen, 'isFullScreen after aborting into pages').to.be.false; + }); + // Query params are how saved views are addressed, so a URL that already // points at this route must be left exactly as it is. it('does not rewrite a URL-initiated navigation', async function () { From 7034b8c88587c72a4e7ea724f96c87e405863e6e Mon Sep 17 00:00:00 2001 From: Peter Zimon Date: Tue, 4 Aug 2026 12:52:10 +0200 Subject: [PATCH 12/75] Added the posts and pages filter bar and sort control no ref Filtering now uses the same Shade Filters pattern as the Members list, driving the same five URL params the Ember screen reads and sidebar saved views persist. The awkward part is that the URL carries slugs but a chip has to read as a name. Author and tag use createGhostBrowseValueSource, whose hydrate step exists for exactly this: opening a saved view whose tag is not in the first page of results, where the chip would otherwise show a bare slug. A slug that resolves to nothing keeps showing the slug rather than being dropped - a saved view can point at a since-renamed tag, and quietly rewriting the URL would corrupt it. allowMultiple is off because each field maps to one URL param, so a second chip on the same field would be unrepresentable. Sort is its own dropdown, not a chip. It has no operator, so "Sort is Newest first" would read as nonsense, and order also feeds each status bucket's default ordering, which is data plumbing rather than filtering. "Newest first" is the absence of the param, not a value. Contributors get only the type filter and authors lose the author filter, since both are already scoped to their own posts. Co-Authored-By: Claude Opus 5 --- .../posts/list/components/posts-filters.tsx | 41 +++++ .../posts/list/components/posts-sort-menu.tsx | 47 +++++ .../list/posts-list-data.acceptance.test.tsx | 13 +- .../posts-list-filters.acceptance.test.tsx | 163 ++++++++++++++++++ .../list/posts-list-rows.acceptance.test.tsx | 22 ++- .../src/posts/list/posts-list-screen.tsx | 15 +- .../admin/src/posts/list/posts-list.screen.ts | 8 +- .../posts/list/use-post-filter-fields.test.ts | 74 ++++++++ .../src/posts/list/use-post-filter-fields.tsx | 108 ++++++++++++ .../use-post-author-value-source.ts | 53 ++++++ .../use-post-tag-value-source.ts | 59 +++++++ 11 files changed, 596 insertions(+), 7 deletions(-) create mode 100644 apps/admin/src/posts/list/components/posts-filters.tsx create mode 100644 apps/admin/src/posts/list/components/posts-sort-menu.tsx create mode 100644 apps/admin/src/posts/list/posts-list-filters.acceptance.test.tsx create mode 100644 apps/admin/src/posts/list/use-post-filter-fields.test.ts create mode 100644 apps/admin/src/posts/list/use-post-filter-fields.tsx create mode 100644 apps/admin/src/shared/filter-sources/use-post-author-value-source.ts create mode 100644 apps/admin/src/shared/filter-sources/use-post-tag-value-source.ts diff --git a/apps/admin/src/posts/list/components/posts-filters.tsx b/apps/admin/src/posts/list/components/posts-filters.tsx new file mode 100644 index 00000000000..293c4d33f5a --- /dev/null +++ b/apps/admin/src/posts/list/components/posts-filters.tsx @@ -0,0 +1,41 @@ +import {type Filter, Filters} from '@tryghost/shade/patterns'; +import {Inline} from '@tryghost/shade/primitives'; +import {LucideIcon} from '@tryghost/shade/utils'; +import {usePostFilterFields} from '@/posts/list/use-post-filter-fields'; +import type {PostResource} from '@/posts/list/post-resource'; +import type {User} from '@tryghost/admin-x-framework/api/users'; + +interface PostsFiltersProps { + resource: PostResource; + filters: Filter[]; + currentUser?: User; + onFiltersChange: (filters: Filter[]) => void; +} + +/** + * The filter chips, using the same Shade `Filters` pattern as the Members list. + * + * `allowMultiple` is off: each field maps to one URL param, which can only hold + * one value, so a second chip on the same field would be unrepresentable — and + * saved views compare those params verbatim across both implementations. + */ +export function PostsFilters({resource, filters, currentUser, onFiltersChange}: PostsFiltersProps) { + const fields = usePostFilterFields(resource, currentUser); + + return ( + // The testid sits on the wrapper, as it does in Ember (on the + // `view-actions` section) — `Filters` doesn't forward arbitrary props. + + } + addButtonText='Filter' + fields={fields} + filters={filters} + keyboardShortcut='f' + popoverAlign='start' + showClearButton={filters.length > 0} + onChange={onFiltersChange} + /> + + ); +} diff --git a/apps/admin/src/posts/list/components/posts-sort-menu.tsx b/apps/admin/src/posts/list/components/posts-sort-menu.tsx new file mode 100644 index 00000000000..5b13c524ead --- /dev/null +++ b/apps/admin/src/posts/list/components/posts-sort-menu.tsx @@ -0,0 +1,47 @@ +import {Button, DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger} from '@tryghost/shade/components'; +import {DEFAULT_ORDER_LABEL, ORDER_OPTIONS, getOrderLabel} from '@/posts/list/post-filter-fields'; +import {LucideIcon} from '@tryghost/shade/utils'; + +interface PostsSortMenuProps { + order: string | null; + onOrderChange: (order: string | null) => void; +} + +/** + * The sort control, separate from the filter chips. + * + * A sort has no operator, so "Sort is Newest first" would be a nonsense chip — + * and `order` also feeds each status bucket's default ordering, which is data + * plumbing rather than filtering. Ember shows it as its own dropdown too. + * + * "Newest first" is the *absence* of an `order` param, not a value. + */ +export function PostsSortMenu({order, onOrderChange}: PostsSortMenuProps) { + return ( + + + + + + { + onOrderChange(null); + }}> + {DEFAULT_ORDER_LABEL} + + {ORDER_OPTIONS.map(option => ( + { + onOrderChange(option.value); + }} + > + {option.label} + + ))} + + + ); +} diff --git a/apps/admin/src/posts/list/posts-list-data.acceptance.test.tsx b/apps/admin/src/posts/list/posts-list-data.acceptance.test.tsx index dd868d316ea..3b15dd0c868 100644 --- a/apps/admin/src/posts/list/posts-list-data.acceptance.test.tsx +++ b/apps/admin/src/posts/list/posts-list-data.acceptance.test.tsx @@ -1,6 +1,6 @@ -import { describe, expect, it } from "vitest"; +import { beforeEach, describe, expect, it } from "vitest"; -import { currentUserResponse, fakePages, fakePosts, post, renderAdminApp, staffRole } from "@test-utils/acceptance"; +import { currentUserResponse, fakeAdminEndpoint, fakePages, fakePosts, fakeTags, fakeUsers, post, renderAdminApp, staffRole } from "@test-utils/acceptance"; import { postsListScreen } from "./posts-list.screen"; import type { StaffRoleName } from "@tryghost/test-data"; @@ -38,6 +38,15 @@ function byBucket(filter: string | undefined) { } describe("Posts list data", () => { + // The filter bar mounts with the screen and probes these to resolve any + // author/tag slug in the URL into a name. + beforeEach(() => { + fakeTags([]); + fakeUsers([]); + fakeAdminEndpoint("GET", /^\/tags\/\?.*slug/, { tags: [] }); + fakeAdminEndpoint("GET", /^\/users\/\?.*slug/, { users: [] }); + }); + it("runs one query per status bucket", async () => { const postsApi = fakePosts(query => byBucket(query.filter)); await renderAdminApp("/posts", FLAG_ON); diff --git a/apps/admin/src/posts/list/posts-list-filters.acceptance.test.tsx b/apps/admin/src/posts/list/posts-list-filters.acceptance.test.tsx new file mode 100644 index 00000000000..ab0c8f31387 --- /dev/null +++ b/apps/admin/src/posts/list/posts-list-filters.acceptance.test.tsx @@ -0,0 +1,163 @@ +import { beforeEach, describe, expect, it } from "vitest"; + +import { + currentRoute, + currentUserResponse, + fakePosts, + fakeTags, + fakeAdminEndpoint, + fakeUsers, + post, + renderAdminApp, + staffRole, + staffUser, + tag +} from "@test-utils/acceptance"; +import { postsListScreen } from "./posts-list.screen"; + +const FLAG_ON = { labs: { postsListReact: true } }; + +function asRole(name: Parameters[0] extends { name: infer N } ? N : never) { + const me = currentUserResponse(); + me.users[0].roles = [staffRole({ name })]; + return { ...FLAG_ON, boot: { browseMe: { response: me } } }; +} + +/** + * The filter bar. What matters most is that chips and the URL stay in lockstep: + * the five params are what sidebar saved views persist, and the Ember screen + * reads the same ones while both implementations exist. + */ +describe("Posts list filters", () => { + // The author and tag fields hydrate their selected values as soon as the + // bar mounts, so both endpoints are probed on every render here. + beforeEach(() => { + fakeTags([]); + fakeUsers([]); + }); + + it("hydrates a chip from the URL", async () => { + fakePosts([post({ title: "A draft", status: "draft" })]); + await renderAdminApp("/posts?type=draft", FLAG_ON); + + await expect.element(postsListScreen.filterBar()).toBeVisible(); + await expect.element(postsListScreen.filterBar()).toHaveTextContent("Draft posts"); + }); + + // The slug-to-name lookup is its own request, and `fakeTags` only declares + // semantics for `visibility` filters — so declare this one explicitly + // rather than teaching a fake to run NQL. + it("resolves a tag slug in the URL to its name", async () => { + fakePosts([post({ title: "Tagged", status: "published" })]); + fakeAdminEndpoint("GET", /^\/tags\/\?.*slug/, { + tags: [tag({ name: "Engineering", slug: "engineering" })] + }); + await renderAdminApp("/posts?tag=engineering", FLAG_ON); + + // The URL carries a slug; the chip has to read as the tag's name. + await expect.element(postsListScreen.filterBar()).toHaveTextContent("Engineering"); + }); + + it("resolves an author slug in the URL to their name", async () => { + fakePosts([post({ title: "Authored", status: "published" })]); + fakeUsers([staffUser({ name: "Ada Lovelace", slug: "ada" })]); + await renderAdminApp("/posts?author=ada", FLAG_ON); + + await expect.element(postsListScreen.filterBar()).toHaveTextContent("Ada Lovelace"); + }); + + // A saved view can point at a tag that was later renamed or deleted. + // Dropping it would silently rewrite the user's URL. + it("keeps an unresolvable slug rather than dropping the filter", async () => { + fakePosts([]); + fakeAdminEndpoint("GET", /^\/tags\/\?.*slug/, { tags: [] }); + await renderAdminApp("/posts?tag=deleted-tag", FLAG_ON); + + await expect.element(postsListScreen.filterBar()).toBeVisible(); + await expect.poll(currentRoute).toBe("/posts?tag=deleted-tag"); + }); + + describe("the sort control", () => { + it("shows the default when no order is set", async () => { + fakePosts([post({ title: "One", status: "published" })]); + await renderAdminApp("/posts", FLAG_ON); + + await expect.element(postsListScreen.sortButton()).toHaveTextContent("Newest first"); + }); + + it("names the order from the URL", async () => { + fakePosts([post({ title: "One", status: "published" })]); + await renderAdminApp("/posts?order=updated_at+desc", FLAG_ON); + + await expect.element(postsListScreen.sortButton()).toHaveTextContent("Recently updated"); + }); + + it("writes the chosen order to the URL", async () => { + fakePosts([post({ title: "One", status: "published" })]); + await renderAdminApp("/posts", FLAG_ON); + + await postsListScreen.sortButton().click(); + await postsListScreen.sortOption("Oldest first").click(); + + await expect.poll(currentRoute).toBe("/posts?order=published_at+asc"); + }); + + // "Newest first" is the absence of the param, not a value. + it("drops the param when returning to the default", async () => { + fakePosts([post({ title: "One", status: "published" })]); + await renderAdminApp("/posts?order=published_at+asc", FLAG_ON); + + await postsListScreen.sortButton().click(); + await postsListScreen.sortOption("Newest first").click(); + + await expect.poll(currentRoute).toBe("/posts"); + }); + + it("leaves the filters alone when the sort changes", async () => { + fakePosts([post({ title: "One", status: "draft" })]); + await renderAdminApp("/posts?type=draft", FLAG_ON); + + await postsListScreen.sortButton().click(); + await postsListScreen.sortOption("Oldest first").click(); + + await expect.poll(currentRoute).toBe("/posts?type=draft&order=published_at+asc"); + }); + }); + + // Ember hides these for roles that can only see their own posts. + describe("role restrictions", () => { + it("offers only the type filter to a contributor", async () => { + fakePosts([]); + await renderAdminApp("/posts", asRole("Contributor")); + + await postsListScreen.addFilterButton().click(); + + await expect.element(postsListScreen.filterFieldOption("Post type")).toBeVisible(); + await expect(postsListScreen.filterFieldOption("Author")).toHaveCount(0); + await expect(postsListScreen.filterFieldOption("Access")).toHaveCount(0); + await expect(postsListScreen.filterFieldOption("Tag")).toHaveCount(0); + }); + + it("hides the author filter from an author", async () => { + fakePosts([]); + await renderAdminApp("/posts", asRole("Author")); + + await postsListScreen.addFilterButton().click(); + + await expect.element(postsListScreen.filterFieldOption("Tag")).toBeVisible(); + await expect(postsListScreen.filterFieldOption("Author")).toHaveCount(0); + }); + + it("offers all four to an administrator", async () => { + fakePosts([]); + await renderAdminApp("/posts", asRole("Administrator")); + + await postsListScreen.addFilterButton().click(); + + await expect.element(postsListScreen.filterFieldOption("Post type")).toBeVisible(); + await expect.element(postsListScreen.filterFieldOption("Access")).toBeVisible(); + await expect.element(postsListScreen.filterFieldOption("Author")).toBeVisible(); + await expect.element(postsListScreen.filterFieldOption("Tag")).toBeVisible(); + }); + }); +}); diff --git a/apps/admin/src/posts/list/posts-list-rows.acceptance.test.tsx b/apps/admin/src/posts/list/posts-list-rows.acceptance.test.tsx index c1b8d3d94b7..c1ed52605d4 100644 --- a/apps/admin/src/posts/list/posts-list-rows.acceptance.test.tsx +++ b/apps/admin/src/posts/list/posts-list-rows.acceptance.test.tsx @@ -1,6 +1,6 @@ -import { describe, expect, it } from "vitest"; +import { beforeEach, describe, expect, it } from "vitest"; -import { currentRoute, currentUserResponse, fakePages, fakePosts, post, renderAdminApp, staffRole, tag } from "@test-utils/acceptance"; +import { currentRoute, currentUserResponse, fakeAdminEndpoint, fakePages, fakePosts, fakeTags, fakeUsers, post, renderAdminApp, staffRole, tag } from "@test-utils/acceptance"; import { postsListScreen } from "./posts-list.screen"; const FLAG_ON = { labs: { postsListReact: true } }; @@ -11,6 +11,15 @@ const FLAG_ON = { labs: { postsListReact: true } }; * these check they reach the screen and that the states switch correctly. */ describe("Posts list rows", () => { + // The filter bar mounts with the screen and probes these to resolve any + // author/tag slug in the URL into a name. + beforeEach(() => { + fakeTags([]); + fakeUsers([]); + fakeAdminEndpoint("GET", /^\/tags\/\?.*slug/, { tags: [] }); + fakeAdminEndpoint("GET", /^\/users\/\?.*slug/, { users: [] }); + }); + it("shows the title, byline, primary tag and status", async () => { fakePosts([post({ title: "A published post", @@ -131,6 +140,15 @@ describe("Posts list rows", () => { }); describe("Posts list empty states", () => { + // The filter bar mounts with the screen and probes these to resolve any + // author/tag slug in the URL into a name. + beforeEach(() => { + fakeTags([]); + fakeUsers([]); + fakeAdminEndpoint("GET", /^\/tags\/\?.*slug/, { tags: [] }); + fakeAdminEndpoint("GET", /^\/users\/\?.*slug/, { users: [] }); + }); + it("invites you to write when there is nothing at all", async () => { fakePosts([]); await renderAdminApp("/posts", FLAG_ON); diff --git a/apps/admin/src/posts/list/posts-list-screen.tsx b/apps/admin/src/posts/list/posts-list-screen.tsx index 01bc89fe14c..eca68cf50c8 100644 --- a/apps/admin/src/posts/list/posts-list-screen.tsx +++ b/apps/admin/src/posts/list/posts-list-screen.tsx @@ -3,9 +3,11 @@ import {Button, LoadingIndicator} from '@tryghost/shade/components'; import {ListPage} from '@tryghost/shade/page-templates'; import {LoadMoreButton} from '@/shared/virtual-list'; import {LucideIcon} from '@tryghost/shade/utils'; -import {PageHeader} from '@tryghost/shade/patterns'; +import {FilterBar, PageHeader} from '@tryghost/shade/patterns'; import {PostListRow} from './components/post-list-row'; import {PostsEmptyState} from './components/posts-empty-state'; +import {PostsFilters} from './components/posts-filters'; +import {PostsSortMenu} from './components/posts-sort-menu'; import {getSettingValue, useBrowseSettings} from '@tryghost/admin-x-framework/api/settings'; import {isAuthorOrContributor, isContributorUser} from '@tryghost/admin-x-framework/api/users'; import {type PostResource, getPostResourceCopy} from './post-resource'; @@ -22,7 +24,7 @@ import {usePostsList} from './hooks/use-posts-list'; */ export function PostsListScreen({resource}: {resource: PostResource}) { const copy = getPostResourceCopy(resource); - const {params, hasFilters, clearFilters} = usePostsFilterState(); + const {params, filters, order, setFilters, setOrder, hasFilters, clearFilters} = usePostsFilterState(); const {data: currentUser} = useCurrentUser(); const {data: settingsData} = useBrowseSettings(); @@ -65,6 +67,15 @@ export function PostsListScreen({resource}: {resource: PostResource}) { + + + + {isLoading ? ( diff --git a/apps/admin/src/posts/list/posts-list.screen.ts b/apps/admin/src/posts/list/posts-list.screen.ts index c7ee624436f..ed2d3fa664c 100644 --- a/apps/admin/src/posts/list/posts-list.screen.ts +++ b/apps/admin/src/posts/list/posts-list.screen.ts @@ -24,5 +24,11 @@ export const postsListScreen = { featuredMarkers: () => page.getByTestId("post-featured"), emptyCold: () => page.getByTestId("posts-empty-cold"), emptyFiltered: () => page.getByTestId("posts-empty-filtered"), - showAllButton: (plural: string) => page.getByRole("button", { name: `Show all ${plural}` }) + showAllButton: (plural: string) => page.getByRole("button", { name: `Show all ${plural}` }), + filterBar: () => page.getByTestId("posts-filters"), + addFilterButton: () => page.getByTestId("posts-filters").getByRole("button", { name: "Filter" }), + /** A field in the add-filter popover, which renders into a portal. */ + filterFieldOption: (label: string) => page.getByRole("option", { name: label, exact: true }), + sortButton: () => page.getByRole("button", { name: "Sort" }), + sortOption: (label: string) => page.getByRole("menuitem", { name: label, exact: true }) }; diff --git a/apps/admin/src/posts/list/use-post-filter-fields.test.ts b/apps/admin/src/posts/list/use-post-filter-fields.test.ts new file mode 100644 index 00000000000..b4324b7c2e7 --- /dev/null +++ b/apps/admin/src/posts/list/use-post-filter-fields.test.ts @@ -0,0 +1,74 @@ +import {describe, expect, it} from 'vitest'; +import {buildPostFilterFields} from './use-post-filter-fields'; +import type {ValueSource} from '@tryghost/shade/patterns'; + +const stubSource = {id: 'stub', useOptions: () => ({ + options: [], isInitialLoad: false, isSearching: false, isLoadingMore: false, hasMore: false, loadMore: () => {} +})} as ValueSource; + +function build(overrides: Parameters[0] extends infer T + ? Partial : never = {}) { + return buildPostFilterFields({ + resource: 'posts', + authorValueSource: stubSource, + tagValueSource: stubSource, + ...overrides + }); +} + +const keysOf = (fields: ReturnType) => fields.map(field => field.key); + +describe('buildPostFilterFields', () => { + it('offers the four filterable params, in Ember order', () => { + expect(keysOf(build())).toEqual(['type', 'visibility', 'author', 'tag']); + }); + + // Sorting is not a filter — it has no operator and belongs in its own + // control, so it must never appear as a chip. + it('never offers order as a filter', () => { + expect(keysOf(build())).not.toContain('order'); + }); + + it('labels the type field for the resource', () => { + expect(build().find(field => field.key === 'type')?.label).toBe('Post type'); + expect(build({resource: 'pages'}).find(field => field.key === 'type')?.label).toBe('Page type'); + }); + + it('drops "email only" from the type options on pages', () => { + const values = (fields: ReturnType) => + fields.find(field => field.key === 'type')?.options?.map(option => option.value); + + expect(values(build())).toContain('sent'); + expect(values(build({resource: 'pages'}))).not.toContain('sent'); + }); + + // Ember hides visibility, author and tag for contributors, and author for + // authors too — they only ever see their own posts. + it('hides visibility, author and tag from contributors', () => { + expect(keysOf(build({isContributor: true}))).toEqual(['type']); + }); + + it('hides the author filter from authors', () => { + expect(keysOf(build({isAuthorOrContributor: true}))).toEqual(['type', 'visibility', 'tag']); + }); + + it('uses single-select equality throughout', () => { + build().forEach((field) => { + expect(field.operators?.map(operator => operator.value)).toEqual(['is']); + }); + }); + + it('gives author and tag async value sources rather than fixed options', () => { + const author = build().find(field => field.key === 'author'); + const tag = build().find(field => field.key === 'tag'); + + expect(author?.valueSource).toBe(stubSource); + expect(tag?.valueSource).toBe(stubSource); + expect(author?.options).toBeUndefined(); + }); + + it('carries the paid+tiers visibility value as one opaque option', () => { + expect(build().find(field => field.key === 'visibility')?.options?.map(option => option.value)) + .toEqual(['public', 'members', '[paid,tiers]']); + }); +}); diff --git a/apps/admin/src/posts/list/use-post-filter-fields.tsx b/apps/admin/src/posts/list/use-post-filter-fields.tsx new file mode 100644 index 00000000000..462a9af4fca --- /dev/null +++ b/apps/admin/src/posts/list/use-post-filter-fields.tsx @@ -0,0 +1,108 @@ +import {LucideIcon} from '@tryghost/shade/utils'; +import {VISIBILITY_OPTIONS, getTypeOptions} from '@/posts/list/post-filter-fields'; +import {isAuthorOrContributor, isContributorUser} from '@tryghost/admin-x-framework/api/users'; +import {usePostAuthorValueSource} from '@/shared/filter-sources/use-post-author-value-source'; +import {usePostTagValueSource} from '@/shared/filter-sources/use-post-tag-value-source'; +import type {FilterFieldConfig, ValueSource} from '@tryghost/shade/patterns'; +import type {PostResource} from '@/posts/list/post-resource'; +import type {User} from '@tryghost/admin-x-framework/api/users'; + +/** + * The Shade field config for the posts/pages filter bar. + * + * All four fields are single-select equality — Ember offers nothing else, and + * the URL can only hold one value per param, so anything richer would produce + * URLs the Ember screen renders as "Unknown". + * + * `order` is deliberately absent: it is a sort, not a filter, and lives in its + * own control. + */ + +export interface BuildPostFilterFieldsOptions { + resource: PostResource; + authorValueSource: ValueSource; + tagValueSource: ValueSource; + /** Contributors see only their own posts, so only the type filter. */ + isContributor?: boolean; + /** Authors are scoped to themselves, so the author filter is meaningless. */ + isAuthorOrContributor?: boolean; +} + +const IS_ONLY = [{value: 'is', label: 'is'}]; + +export function buildPostFilterFields({ + resource, + authorValueSource, + tagValueSource, + isContributor = false, + isAuthorOrContributor: authorScoped = false +}: BuildPostFilterFieldsOptions): FilterFieldConfig[] { + const noun = resource === 'pages' ? 'Page' : 'Post'; + + const typeField: FilterFieldConfig = { + key: 'type', + label: `${noun} type`, + type: 'select', + icon: , + operators: IS_ONLY, + options: getTypeOptions(resource) + }; + + if (isContributor) { + return [typeField]; + } + + const fields: FilterFieldConfig[] = [ + typeField, + { + key: 'visibility', + label: 'Access', + type: 'select', + icon: , + operators: IS_ONLY, + options: VISIBILITY_OPTIONS + } + ]; + + if (!authorScoped) { + fields.push({ + key: 'author', + label: 'Author', + type: 'select', + icon: , + operators: IS_ONLY, + searchable: true, + placeholder: 'Search authors', + valueSource: authorValueSource + }); + } + + fields.push({ + key: 'tag', + label: 'Tag', + type: 'select', + icon: , + operators: IS_ONLY, + searchable: true, + placeholder: 'Search tags', + valueSource: tagValueSource + }); + + return fields; +} + +export function usePostFilterFields( + resource: PostResource, + currentUser?: User +): FilterFieldConfig[] { + const authorValueSource = usePostAuthorValueSource(); + const tagValueSource = usePostTagValueSource(); + + return buildPostFilterFields({ + resource, + authorValueSource, + tagValueSource, + isContributor: Boolean(currentUser && isContributorUser(currentUser)), + isAuthorOrContributor: Boolean(currentUser && isAuthorOrContributor(currentUser)) + }); +} diff --git a/apps/admin/src/shared/filter-sources/use-post-author-value-source.ts b/apps/admin/src/shared/filter-sources/use-post-author-value-source.ts new file mode 100644 index 00000000000..e2c64016e1b --- /dev/null +++ b/apps/admin/src/shared/filter-sources/use-post-author-value-source.ts @@ -0,0 +1,53 @@ +import {type User, type UsersResponseType, useBrowseUsers} from '@tryghost/admin-x-framework/api/users'; +import {type ValueSource} from '@tryghost/shade/patterns'; +import {buildQuotedListFilter} from './utils'; +import {createGhostBrowseValueSource} from './create-ghost-browse-value-source'; +import {escapeNqlString} from '@/shared/filters/filter-normalization'; +import {keepPreviousData} from '@tanstack/react-query'; + +/** + * Staff users for the posts/pages author filter. + * + * Value is the **slug**, matching the `?author=` URL param and saved views. + * Falls back to the email for staff who were invited but never set a name, as + * Ember's `post-author-names` helper does. + * + * Search matches Ember's `name:~` (`controllers/posts.js:146`). + */ +const AUTHOR_PAGE_LIMIT = '100'; + +function toAuthorOption(user: User) { + return { + value: user.slug, + label: user.name || user.email, + metadata: {id: user.id} + }; +} + +const usePostAuthorBrowseValueSource = createGhostBrowseValueSource({ + id: 'posts.authors', + buildBrowseSearchParams: query => ({ + limit: AUTHOR_PAGE_LIMIT, + order: 'name asc', + ...(query ? {filter: `name:~${escapeNqlString(query)}`} : {}) + }), + buildHydrateFilter: selectedValues => buildQuotedListFilter('slug', selectedValues), + buildHydrateSearchParams: selectedFilter => ({ + filter: selectedFilter, + order: 'name asc' + }), + selectItems: data => data?.users, + useQuery: ({enabled, searchParams}) => { + return useBrowseUsers({ + enabled, + placeholderData: keepPreviousData, + searchParams + }); + }, + toOption: toAuthorOption, + debounceMs: 250 +}); + +export function usePostAuthorValueSource(): ValueSource { + return usePostAuthorBrowseValueSource(); +} diff --git a/apps/admin/src/shared/filter-sources/use-post-tag-value-source.ts b/apps/admin/src/shared/filter-sources/use-post-tag-value-source.ts new file mode 100644 index 00000000000..1fcde6dc28b --- /dev/null +++ b/apps/admin/src/shared/filter-sources/use-post-tag-value-source.ts @@ -0,0 +1,59 @@ +import {type Tag, type TagsResponseType, useBrowseTags} from '@tryghost/admin-x-framework/api/tags'; +import {type ValueSource} from '@tryghost/shade/patterns'; +import {buildQuotedListFilter} from './utils'; +import {createGhostBrowseValueSource} from './create-ghost-browse-value-source'; +import {escapeNqlString} from '@/shared/filters/filter-normalization'; +import {keepPreviousData} from '@tanstack/react-query'; + +/** + * Tags for the posts/pages tag filter. + * + * The value is the **slug**, because that is what the `?tag=` URL param and + * sidebar saved views carry — but the chip has to read as the tag's name. The + * hydrate step covers the case that makes this necessary: opening a saved view + * whose tag isn't in the first page of results, where the chip would otherwise + * show a bare slug. + * + * Search matches Ember's `tags.name:~` (`controllers/posts.js:131`). + */ +const TAG_PAGE_LIMIT = '100'; + +function toTagOption(tag: Tag) { + return { + value: tag.slug, + label: tag.name, + metadata: {id: tag.id} + }; +} + +const usePostTagBrowseValueSource = createGhostBrowseValueSource({ + id: 'posts.tags', + buildBrowseSearchParams: query => ({ + limit: TAG_PAGE_LIMIT, + order: 'name asc', + ...(query ? {filter: `tags.name:~${escapeNqlString(query)}`} : {}) + }), + buildHydrateFilter: selectedValues => buildQuotedListFilter('slug', selectedValues), + buildHydrateSearchParams: selectedFilter => ({ + filter: selectedFilter, + order: 'name asc' + }), + selectItems: data => data?.tags, + useQuery: ({enabled, searchParams}) => { + // `useBrowseTags` builds its own comma-joined filter from the `filter` + // object; passing an empty one and overriding via searchParams keeps + // the NQL we want. + return useBrowseTags({ + filter: {}, + enabled, + placeholderData: keepPreviousData, + searchParams + }); + }, + toOption: toTagOption, + debounceMs: 250 +}); + +export function usePostTagValueSource(): ValueSource { + return usePostTagBrowseValueSource(); +} From 6844fffe3dae04b51d9058a2ceab6499d9762a86 Mon Sep 17 00:00:00 2001 From: Peter Zimon Date: Tue, 4 Aug 2026 12:59:31 +0200 Subject: [PATCH 13/75] Fixed duplicate filter chips on the posts list no ref The comment said allowMultiple was off; the prop was never passed, and Shade defaults it to true. Each field here maps to one URL param holding one value, and the serializer keeps the last - so a user could sit looking at two "Post type" chips while only one of them was in the URL, and a saved view built from that would silently lose the other. Co-Authored-By: Claude Opus 5 --- .../src/posts/list/components/posts-filters.tsx | 5 +++++ .../list/posts-list-filters.acceptance.test.tsx | 14 ++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/apps/admin/src/posts/list/components/posts-filters.tsx b/apps/admin/src/posts/list/components/posts-filters.tsx index 293c4d33f5a..d99a6622ce6 100644 --- a/apps/admin/src/posts/list/components/posts-filters.tsx +++ b/apps/admin/src/posts/list/components/posts-filters.tsx @@ -29,6 +29,11 @@ export function PostsFilters({resource, filters, currentUser, onFiltersChange}: } addButtonText='Filter' + // Shade defaults this to true. Each field here maps to one URL + // param holding one value, and the serializer keeps the last — + // so leaving it on would let someone sit looking at two "Post + // type" chips while only one was in the URL or a saved view. + allowMultiple={false} fields={fields} filters={filters} keyboardShortcut='f' diff --git a/apps/admin/src/posts/list/posts-list-filters.acceptance.test.tsx b/apps/admin/src/posts/list/posts-list-filters.acceptance.test.tsx index ab0c8f31387..d20a0f5ad7f 100644 --- a/apps/admin/src/posts/list/posts-list-filters.acceptance.test.tsx +++ b/apps/admin/src/posts/list/posts-list-filters.acceptance.test.tsx @@ -77,6 +77,20 @@ describe("Posts list filters", () => { await expect.poll(currentRoute).toBe("/posts?tag=deleted-tag"); }); + // Each field maps to one URL param, which holds one value. Shade defaults + // to allowing several chips per field, and the serializer keeps the last — + // so without allowMultiple={false} a user could sit looking at two "Post + // type" chips while only one of them was in the URL or a saved view. + it("does not offer a field that already has a chip", async () => { + fakePosts([]); + await renderAdminApp("/posts?type=draft", FLAG_ON); + + await postsListScreen.addFilterButton().click(); + + await expect.element(postsListScreen.filterFieldOption("Tag")).toBeVisible(); + await expect(postsListScreen.filterFieldOption("Post type")).toHaveCount(0); + }); + describe("the sort control", () => { it("shows the default when no order is set", async () => { fakePosts([post({ title: "One", status: "published" })]); From 3a587e971184153a1e85bd93b452a555363767ff Mon Sep 17 00:00:00 2001 From: Peter Zimon Date: Tue, 4 Aug 2026 13:12:05 +0200 Subject: [PATCH 14/75] Fixed unknown filter values, author paging and typing on the posts list MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit no ref A filter value that resolves to nothing rendered as "Select…" - the value disappeared from the UI while staying in the URL, so a saved view pointing at a deleted tag showed an empty list with no indication why. Now shows "Unknown tag" / "Unknown author" / "Unknown type" as Ember does. The test that was meant to cover this only asserted the URL survived, never that anything was shown, so it passed against the broken behaviour; a failure screenshot from the review is what caught it. The Author dropdown had a permanent "Load more" that refetched page one forever: useBrowseUsers returned a next-page param unconditionally, so hasNextPage was always true. Every other resource guards on pagination.next - this one didn't, and the author filter is its first consumer to route through the value-source machinery. The sort menu used a bare aria-label of "Sort", which overrides the button text so assistive tech never heard which sort was active, and its items carried no selected state. Now radio items with the value in the label. "Show all posts" pushed a history entry. Ember forces replace for any posts-to-posts transition, so back should leave the screen rather than return to the filtered view - and the FilterBar's own Clear button was already replacing, so the two were inconsistent. Also four TypeScript errors that `tsc --noEmit -p tsconfig.json` missed but `tsc -b` catches, which is the command the build actually runs; and the author hydration test passed with hydration removed, because the passthrough fake served the same user from the plain browse. Co-Authored-By: Claude Opus 5 --- apps/admin-x-framework/src/api/users.ts | 17 ++++++-- .../posts/list/components/posts-filters.tsx | 9 +++-- .../posts/list/components/posts-sort-menu.tsx | 40 +++++++++++-------- .../list/hooks/use-posts-filter-state.ts | 15 ++++--- .../admin/src/posts/list/post-filter-query.ts | 13 +++--- .../posts-list-filters.acceptance.test.tsx | 27 ++++++++++--- .../src/posts/list/posts-list-screen.tsx | 1 + .../admin/src/posts/list/posts-list.screen.ts | 5 ++- .../src/posts/list/use-post-filter-fields.tsx | 34 +++++++++++++--- .../use-post-author-value-source.ts | 6 +++ .../use-post-tag-value-source.ts | 7 ++++ .../testing/test-data/src/builders/post.ts | 2 + 12 files changed, 125 insertions(+), 51 deletions(-) diff --git a/apps/admin-x-framework/src/api/users.ts b/apps/admin-x-framework/src/api/users.ts index 3131326e57b..fcd209a09b7 100644 --- a/apps/admin-x-framework/src/api/users.ts +++ b/apps/admin-x-framework/src/api/users.ts @@ -83,10 +83,19 @@ export const useBrowseUsers = createInfiniteQuery ({ - ...otherParams, - page: (lastPage.meta?.pagination.next || 1).toString() - }), + defaultNextPageParams: (lastPage, otherParams) => { + // Returning a param unconditionally makes TanStack report hasNextPage + // forever, so consumers render a "Load more" that refetches page 1. + // Every other resource here guards the same way. + if (!lastPage.meta?.pagination.next) { + return undefined; + } + + return { + ...otherParams, + page: lastPage.meta.pagination.next.toString() + }; + }, returnData: (originalData) => { const {pages} = originalData as InfiniteData; const users = pages.flatMap(page => page.users); diff --git a/apps/admin/src/posts/list/components/posts-filters.tsx b/apps/admin/src/posts/list/components/posts-filters.tsx index d99a6622ce6..618f4b39bab 100644 --- a/apps/admin/src/posts/list/components/posts-filters.tsx +++ b/apps/admin/src/posts/list/components/posts-filters.tsx @@ -7,9 +7,10 @@ import type {User} from '@tryghost/admin-x-framework/api/users'; interface PostsFiltersProps { resource: PostResource; - filters: Filter[]; + filters: Filter[]; + params?: Parameters[2]; currentUser?: User; - onFiltersChange: (filters: Filter[]) => void; + onFiltersChange: (filters: Filter[]) => void; } /** @@ -19,8 +20,8 @@ interface PostsFiltersProps { * one value, so a second chip on the same field would be unrepresentable — and * saved views compare those params verbatim across both implementations. */ -export function PostsFilters({resource, filters, currentUser, onFiltersChange}: PostsFiltersProps) { - const fields = usePostFilterFields(resource, currentUser); +export function PostsFilters({resource, filters, params, currentUser, onFiltersChange}: PostsFiltersProps) { + const fields = usePostFilterFields(resource, currentUser, params); return ( // The testid sits on the wrapper, as it does in Ember (on the diff --git a/apps/admin/src/posts/list/components/posts-sort-menu.tsx b/apps/admin/src/posts/list/components/posts-sort-menu.tsx index 5b13c524ead..96822b92183 100644 --- a/apps/admin/src/posts/list/components/posts-sort-menu.tsx +++ b/apps/admin/src/posts/list/components/posts-sort-menu.tsx @@ -1,4 +1,4 @@ -import {Button, DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger} from '@tryghost/shade/components'; +import {Button, DropdownMenu, DropdownMenuContent, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuTrigger} from '@tryghost/shade/components'; import {DEFAULT_ORDER_LABEL, ORDER_OPTIONS, getOrderLabel} from '@/posts/list/post-filter-fields'; import {LucideIcon} from '@tryghost/shade/utils'; @@ -20,27 +20,33 @@ export function PostsSortMenu({order, onOrderChange}: PostsSortMenuProps) { return ( - - { - onOrderChange(null); - }}> - {DEFAULT_ORDER_LABEL} - - {ORDER_OPTIONS.map(option => ( - { - onOrderChange(option.value); - }} - > - {option.label} - - ))} + {/* Radio items so the active sort is announced, and visible. */} + { + onOrderChange(value || null); + }} + > + + {DEFAULT_ORDER_LABEL} + + {ORDER_OPTIONS.map(option => ( + + {option.label} + + ))} + ); diff --git a/apps/admin/src/posts/list/hooks/use-posts-filter-state.ts b/apps/admin/src/posts/list/hooks/use-posts-filter-state.ts index 459e2ef6841..f4f80945a1b 100644 --- a/apps/admin/src/posts/list/hooks/use-posts-filter-state.ts +++ b/apps/admin/src/posts/list/hooks/use-posts-filter-state.ts @@ -27,11 +27,11 @@ interface SetOptions { export interface UsePostsFilterStateReturn { /** Chip model for the Shade `Filters` component. */ - filters: Filter[]; + filters: Filter[]; /** The raw param record, for building API queries and matching saved views. */ params: PostListParams; order: string | null; - setFilters: (filters: Filter[], options?: SetOptions) => void; + setFilters: (filters: Filter[], options?: SetOptions) => void; setOrder: (order: string | null, options?: SetOptions) => void; /** Clears the filters but keeps the sort, matching Ember. */ clearFilters: (options?: SetOptions) => void; @@ -83,7 +83,7 @@ export function usePostsFilterState(): UsePostsFilterStateReturn { setSearchParams(current => writeParams(current, values), {replace}); }, [setSearchParams]); - const setFilters = useCallback((nextFilters: Filter[], options?: SetOptions) => { + const setFilters = useCallback((nextFilters: Filter[], options?: SetOptions) => { apply(serializePostFilters(nextFilters), options); }, [apply]); @@ -96,11 +96,14 @@ export function usePostsFilterState(): UsePostsFilterStateReturn { * link resets `type`, `author`, `tag` and `visibility` but deliberately * not `order` (`templates/posts.hbs:51`), so a chosen sort survives. * - * Pushes a history entry rather than replacing, so back returns to the - * filtered view the way Ember's `LinkTo` does. + * Replaces rather than pushes, like every other filter change here: the + * Ember route forces `transition.method('replace')` for any posts→posts + * transition (`routes/posts.js:60-70`, added for TryGhost/Ghost#11057) so + * filter changes don't pile up history entries — and "Show all posts" is + * one of those transitions. */ const clearFilters = useCallback((options?: SetOptions) => { - apply(serializePostFilters([]), {replace: false, ...options}); + apply(serializePostFilters([]), options); }, [apply]); const hasFilters = POST_FILTER_PARAMS.some(param => Boolean(params[param])); diff --git a/apps/admin/src/posts/list/post-filter-query.ts b/apps/admin/src/posts/list/post-filter-query.ts index d6b781670fa..0706c6d4c3a 100644 --- a/apps/admin/src/posts/list/post-filter-query.ts +++ b/apps/admin/src/posts/list/post-filter-query.ts @@ -1,4 +1,3 @@ -import {stampPredicates} from '@/shared/filters'; import type {Filter} from '@tryghost/shade/patterns'; import type {PostListParams} from './post-query-params'; @@ -41,18 +40,18 @@ function isFilterParam(field: string): field is PostFilterParam { * saved view may point at a since-renamed tag, or at a value only a newer * build understands. Dropping it would silently rewrite the user's URL. */ -export function parsePostFilters(params: PostListParams): Filter[] { - const predicates = POST_FILTER_PARAMS.flatMap((param) => { +export function parsePostFilters(params: PostListParams): Filter[] { + return POST_FILTER_PARAMS.flatMap((param, index) => { const value = params[param]; if (value === null || value === undefined || value === '') { return []; } - return [{field: param, operator: OPERATOR, values: [value]}]; + // Ids only have to be unique and stable for a given params record; + // the param name already is. + return [{id: `${param}:${index + 1}`, field: param, operator: OPERATOR, values: [value]}]; }); - - return stampPredicates(predicates); } /** @@ -76,7 +75,7 @@ function toParamValue(value: unknown): string | null { * The inverse. A filter with no value yet - Shade creates one as soon as a * field is picked - clears its param rather than writing an empty one. */ -export function serializePostFilters(filters: Filter[]): PostFilterParamValues { +export function serializePostFilters(filters: Filter[]): PostFilterParamValues { const params: PostFilterParamValues = {...EMPTY_PARAMS}; filters.forEach((filter) => { diff --git a/apps/admin/src/posts/list/posts-list-filters.acceptance.test.tsx b/apps/admin/src/posts/list/posts-list-filters.acceptance.test.tsx index d20a0f5ad7f..7c33bcc1762 100644 --- a/apps/admin/src/posts/list/posts-list-filters.acceptance.test.tsx +++ b/apps/admin/src/posts/list/posts-list-filters.acceptance.test.tsx @@ -14,10 +14,11 @@ import { tag } from "@test-utils/acceptance"; import { postsListScreen } from "./posts-list.screen"; +import type { StaffRoleName } from "@tryghost/test-data"; const FLAG_ON = { labs: { postsListReact: true } }; -function asRole(name: Parameters[0] extends { name: infer N } ? N : never) { +function asRole(name: StaffRoleName) { const me = currentUserResponse(); me.users[0].roles = [staffRole({ name })]; return { ...FLAG_ON, boot: { browseMe: { response: me } } }; @@ -58,25 +59,41 @@ describe("Posts list filters", () => { await expect.element(postsListScreen.filterBar()).toHaveTextContent("Engineering"); }); + // Isolated behind a slug-matching endpoint like the tag case: `fakeUsers` + // is passthrough, so serving Ada from the plain browse too would let this + // pass with hydration removed entirely. it("resolves an author slug in the URL to their name", async () => { fakePosts([post({ title: "Authored", status: "published" })]); - fakeUsers([staffUser({ name: "Ada Lovelace", slug: "ada" })]); + fakeAdminEndpoint("GET", /^\/users\/\?.*slug/, { + users: [staffUser({ name: "Ada Lovelace", slug: "ada" })] + }); await renderAdminApp("/posts?author=ada", FLAG_ON); await expect.element(postsListScreen.filterBar()).toHaveTextContent("Ada Lovelace"); }); // A saved view can point at a tag that was later renamed or deleted. - // Dropping it would silently rewrite the user's URL. - it("keeps an unresolvable slug rather than dropping the filter", async () => { + // The chip has to say *something* — without a fallback option Shade shows + // "Select…", so the filter vanishes from the UI while staying in the URL + // and the list looks empty for no visible reason. + it("shows an unknown-value chip rather than an empty one", async () => { fakePosts([]); fakeAdminEndpoint("GET", /^\/tags\/\?.*slug/, { tags: [] }); await renderAdminApp("/posts?tag=deleted-tag", FLAG_ON); - await expect.element(postsListScreen.filterBar()).toBeVisible(); + await expect.element(postsListScreen.filterBar()).toHaveTextContent("Unknown tag"); + await expect.element(postsListScreen.filterBar()).not.toHaveTextContent("Select"); await expect.poll(currentRoute).toBe("/posts?tag=deleted-tag"); }); + it("shows an unknown-value chip for an unrecognised type", async () => { + fakePosts([]); + await renderAdminApp("/posts?type=bogus", FLAG_ON); + + await expect.element(postsListScreen.filterBar()).toHaveTextContent("Unknown type"); + await expect.poll(currentRoute).toBe("/posts?type=bogus"); + }); + // Each field maps to one URL param, which holds one value. Shade defaults // to allowing several chips per field, and the serializer keeps the last — // so without allowMultiple={false} a user could sit looking at two "Post diff --git a/apps/admin/src/posts/list/posts-list-screen.tsx b/apps/admin/src/posts/list/posts-list-screen.tsx index eca68cf50c8..6bbc6ae8b36 100644 --- a/apps/admin/src/posts/list/posts-list-screen.tsx +++ b/apps/admin/src/posts/list/posts-list-screen.tsx @@ -71,6 +71,7 @@ export function PostsListScreen({resource}: {resource: PostResource}) { diff --git a/apps/admin/src/posts/list/posts-list.screen.ts b/apps/admin/src/posts/list/posts-list.screen.ts index ed2d3fa664c..1ea99b9365c 100644 --- a/apps/admin/src/posts/list/posts-list.screen.ts +++ b/apps/admin/src/posts/list/posts-list.screen.ts @@ -29,6 +29,7 @@ export const postsListScreen = { addFilterButton: () => page.getByTestId("posts-filters").getByRole("button", { name: "Filter" }), /** A field in the add-filter popover, which renders into a portal. */ filterFieldOption: (label: string) => page.getByRole("option", { name: label, exact: true }), - sortButton: () => page.getByRole("button", { name: "Sort" }), - sortOption: (label: string) => page.getByRole("menuitem", { name: label, exact: true }) + sortButton: () => page.getByTestId("posts-sort"), + /** Radio items, so the active sort is announced and visibly checked. */ + sortOption: (label: string) => page.getByRole("menuitemradio", { name: label, exact: true }) }; diff --git a/apps/admin/src/posts/list/use-post-filter-fields.tsx b/apps/admin/src/posts/list/use-post-filter-fields.tsx index 462a9af4fca..b1ab77ec223 100644 --- a/apps/admin/src/posts/list/use-post-filter-fields.tsx +++ b/apps/admin/src/posts/list/use-post-filter-fields.tsx @@ -1,5 +1,5 @@ import {LucideIcon} from '@tryghost/shade/utils'; -import {VISIBILITY_OPTIONS, getTypeOptions} from '@/posts/list/post-filter-fields'; +import {type PostFilterOption, VISIBILITY_OPTIONS, getTypeOptions} from '@/posts/list/post-filter-fields'; import {isAuthorOrContributor, isContributorUser} from '@tryghost/admin-x-framework/api/users'; import {usePostAuthorValueSource} from '@/shared/filter-sources/use-post-author-value-source'; import {usePostTagValueSource} from '@/shared/filter-sources/use-post-tag-value-source'; @@ -26,16 +26,36 @@ export interface BuildPostFilterFieldsOptions { isContributor?: boolean; /** Authors are scoped to themselves, so the author filter is meaningless. */ isAuthorOrContributor?: boolean; + /** + * The params currently in the URL. A value that isn't a known option gets + * an "Unknown" entry so the chip still shows something — otherwise Shade + * falls back to "Select…" and the filter vanishes from the UI while + * staying in the URL. Ember shows a red "Unknown type" for the same case. + */ + params?: Partial>; } const IS_ONLY = [{value: 'is', label: 'is'}]; +function withUnknownOption( + options: PostFilterOption[], + value: string | null | undefined, + noun: string +): PostFilterOption[] { + if (!value || options.some(option => option.value === value)) { + return options; + } + + return [...options, {value, label: `Unknown ${noun}`}]; +} + export function buildPostFilterFields({ resource, authorValueSource, tagValueSource, isContributor = false, - isAuthorOrContributor: authorScoped = false + isAuthorOrContributor: authorScoped = false, + params = {} }: BuildPostFilterFieldsOptions): FilterFieldConfig[] { const noun = resource === 'pages' ? 'Page' : 'Post'; @@ -45,7 +65,7 @@ export function buildPostFilterFields({ type: 'select', icon: , operators: IS_ONLY, - options: getTypeOptions(resource) + options: withUnknownOption(getTypeOptions(resource), params.type, 'type') }; if (isContributor) { @@ -60,7 +80,7 @@ export function buildPostFilterFields({ type: 'select', icon: , operators: IS_ONLY, - options: VISIBILITY_OPTIONS + options: withUnknownOption(VISIBILITY_OPTIONS, params.visibility, 'access') } ]; @@ -93,7 +113,8 @@ export function buildPostFilterFields({ export function usePostFilterFields( resource: PostResource, - currentUser?: User + currentUser?: User, + params?: BuildPostFilterFieldsOptions['params'] ): FilterFieldConfig[] { const authorValueSource = usePostAuthorValueSource(); const tagValueSource = usePostTagValueSource(); @@ -103,6 +124,7 @@ export function usePostFilterFields( authorValueSource, tagValueSource, isContributor: Boolean(currentUser && isContributorUser(currentUser)), - isAuthorOrContributor: Boolean(currentUser && isAuthorOrContributor(currentUser)) + isAuthorOrContributor: Boolean(currentUser && isAuthorOrContributor(currentUser)), + params }); } diff --git a/apps/admin/src/shared/filter-sources/use-post-author-value-source.ts b/apps/admin/src/shared/filter-sources/use-post-author-value-source.ts index e2c64016e1b..c6c6d680da7 100644 --- a/apps/admin/src/shared/filter-sources/use-post-author-value-source.ts +++ b/apps/admin/src/shared/filter-sources/use-post-author-value-source.ts @@ -36,6 +36,12 @@ const usePostAuthorBrowseValueSource = createGhostBrowseValueSource ({ + value, + label: 'Unknown author' + }), selectItems: data => data?.users, useQuery: ({enabled, searchParams}) => { return useBrowseUsers({ diff --git a/apps/admin/src/shared/filter-sources/use-post-tag-value-source.ts b/apps/admin/src/shared/filter-sources/use-post-tag-value-source.ts index 1fcde6dc28b..cd3b6caed86 100644 --- a/apps/admin/src/shared/filter-sources/use-post-tag-value-source.ts +++ b/apps/admin/src/shared/filter-sources/use-post-tag-value-source.ts @@ -38,6 +38,13 @@ const usePostTagBrowseValueSource = createGhostBrowseValueSource ({ + value, + label: 'Unknown tag' + }), selectItems: data => data?.tags, useQuery: ({enabled, searchParams}) => { // `useBrowseTags` builds its own comma-joined filter from the `filter` diff --git a/packages/testing/test-data/src/builders/post.ts b/packages/testing/test-data/src/builders/post.ts index 3be5a524069..21a4505b156 100644 --- a/packages/testing/test-data/src/builders/post.ts +++ b/packages/testing/test-data/src/builders/post.ts @@ -48,6 +48,8 @@ export interface Post { reading_time: number; url?: string; tags?: Tag[]; + /** The API returns this alongside `tags`; the list screens render it. */ + primary_tag?: Tag | null; tiers?: unknown[]; authors?: unknown[]; count?: {clicks: number; positive_feedback: number; negative_feedback: number}; From a954a262ee1dc847379936fe83bc983238446e0b Mon Sep 17 00:00:00 2001 From: Peter Zimon Date: Tue, 4 Aug 2026 13:39:39 +0200 Subject: [PATCH 15/75] Fixed sidebar highlighting for the React posts list no ref Turning the flag on killed every active state in the Posts nav - the item itself, Drafts, Scheduled, Published, and all saved views. Nothing errored; they just stopped highlighting. The sidebar derived active state from the Ember routing bridge, which reads Ember's current route name, and the Ember route aborts when React owns the URL, so that name is never "posts" any more. Active state now comes from React's own location when the flag is on, and from the bridge when it is off, so both implementations keep working. Both are computed every render and only the result is selected - hooks cannot be called conditionally and the flag can flip at runtime. A view matches only when all five params agree, as Ember's activeView does after dropping nulls: a view of {type: draft} is not active on ?type=draft&tag=news, that is a different view. Sort counts too. The parent item highlights only when no view underneath does. Co-Authored-By: Claude Opus 5 --- .../src/layout/app-sidebar/nav-content.tsx | 45 ++------ .../app-sidebar/post-sidebar-views.test.ts | 104 +++++++++++++++++ .../layout/app-sidebar/post-sidebar-views.ts | 83 ++++++++++++++ .../layout/app-sidebar/use-post-navigation.ts | 108 ++++++++++++++++++ apps/admin/src/posts/list/post-view-params.ts | 12 ++ 5 files changed, 318 insertions(+), 34 deletions(-) create mode 100644 apps/admin/src/layout/app-sidebar/post-sidebar-views.test.ts create mode 100644 apps/admin/src/layout/app-sidebar/post-sidebar-views.ts create mode 100644 apps/admin/src/layout/app-sidebar/use-post-navigation.ts create mode 100644 apps/admin/src/posts/list/post-view-params.ts diff --git a/apps/admin/src/layout/app-sidebar/nav-content.tsx b/apps/admin/src/layout/app-sidebar/nav-content.tsx index 71819d23abb..0a6c31985a7 100644 --- a/apps/admin/src/layout/app-sidebar/nav-content.tsx +++ b/apps/admin/src/layout/app-sidebar/nav-content.tsx @@ -8,10 +8,10 @@ import {getSettingValue, useBrowseSettings} from "@tryghost/admin-x-framework/ap import { canManageAutomations, canManageMembers, canManageTags } from "@tryghost/admin-x-framework/api/users"; import { NavMenuItem } from "./nav-menu-item"; import { useNavigationExpanded } from "./hooks/use-navigation-preferences"; -import { NavCustomViews } from "./nav-custom-views"; +import { NavSavedViews } from "./nav-saved-views"; import { NavMemberViews } from "./nav-member-views"; import { useMemberSidebarViews } from "./member-sidebar-views"; -import { useCustomSidebarViews } from "./use-custom-sidebar-views"; +import { usePostNavigation } from "./use-post-navigation"; import { useIsActiveLink } from "./use-is-active-link"; import { useEmberRouting } from "@/ember-bridge"; import { useFeatureFlag } from "@tryghost/admin-x-framework/hooks"; @@ -73,7 +73,8 @@ function NavContent({ ...props }: React.ComponentProps) { const {data: settingsData} = useBrowseSettings(); const [savedPostsExpanded, setPostsExpanded] = useNavigationExpanded('posts'); const [savedMembersExpanded, setMembersExpanded] = useNavigationExpanded('members'); - const postCustomViews = useCustomSidebarViews('posts'); + const postNavigation = usePostNavigation('posts'); + const pageNavigation = usePostNavigation('pages'); const memberViews = useMemberSidebarViews(); const hasMemberViews = memberViews.length > 0; const memberCount = useMemberCount(); @@ -86,19 +87,16 @@ function NavContent({ ...props }: React.ComponentProps) { const showAutomations = currentUser && canManageAutomations(currentUser); const commentsEnabled = getSettingValue(settingsData?.settings, 'comments_enabled'); const showComments = !!showMembers && commentsEnabled !== 'off'; - const isDraftPostsRouteActive = routing.isRouteActive('posts', {type: 'draft'}); - const isScheduledPostsRouteActive = routing.isRouteActive('posts', {type: 'scheduled'}); - const isPublishedPostsRouteActive = routing.isRouteActive('posts', {type: 'published'}); - const hasActivePostChild = isDraftPostsRouteActive || isScheduledPostsRouteActive || isPublishedPostsRouteActive || postCustomViews.some(view => view.isActive); + const postViews = [...postNavigation.defaultViews, ...postNavigation.customViews]; + const hasActivePostChild = postViews.some(view => view.isActive); const postsExpanded = savedPostsExpanded; const hasActiveMemberView = hasMemberViews && memberViews.some(view => view.isActive); const membersExpanded = savedMembersExpanded; const membersNavActive = isMembersRouteActive ? (!hasActiveMemberView || !membersExpanded) : routing.isRouteActive(LEGACY_MEMBERS_ACTIVE_ROUTES); - const postsRoute = routing.getRouteUrl('posts'); - const isPostsRouteActive = routing.isRouteActive('posts'); - const postsNavActive = isPostsRouteActive || (!postsExpanded && hasActivePostChild); + const postsRoute = postNavigation.mainUrl; + const postsNavActive = postNavigation.isMainActive || (!postsExpanded && hasActivePostChild); return ( @@ -116,35 +114,14 @@ function NavContent({ ...props }: React.ComponentProps) { - - Drafts - - - - Scheduled - - - - Published - - - + Pages diff --git a/apps/admin/src/layout/app-sidebar/post-sidebar-views.test.ts b/apps/admin/src/layout/app-sidebar/post-sidebar-views.test.ts new file mode 100644 index 00000000000..56323aada89 --- /dev/null +++ b/apps/admin/src/layout/app-sidebar/post-sidebar-views.test.ts @@ -0,0 +1,104 @@ +import {describe, expect, it} from 'vitest'; +import { + POST_DEFAULT_VIEWS, + buildPostViewUrl, + getDefaultPostViews, + isPostViewActive +} from './post-sidebar-views'; + +// Saved views are addressed by the same five params the list screen uses, and +// Ember compares them for exact equality after dropping nulls. Getting this +// wrong means the sidebar highlights the wrong thing, or nothing. + +describe('buildPostViewUrl', () => { + it('builds a bare route URL for an empty filter', () => { + expect(buildPostViewUrl('posts', {})).toBe('posts'); + }); + + it('includes the params that are set', () => { + expect(buildPostViewUrl('posts', {type: 'draft'})).toBe('posts?type=draft'); + }); + + it('drops nulls rather than emitting empty params', () => { + expect(buildPostViewUrl('posts', {type: 'draft', tag: null, author: null})) + .toBe('posts?type=draft'); + }); + + // Stable order regardless of the record's key order, so the same view + // always produces the same URL. + it('orders params consistently', () => { + const fromOneOrder = buildPostViewUrl('posts', {tag: 'news', type: 'draft'}); + const fromAnother = buildPostViewUrl('posts', {type: 'draft', tag: 'news'}); + + expect(fromOneOrder).toBe(fromAnother); + expect(fromOneOrder).toBe('posts?type=draft&tag=news'); + }); + + it('builds pages URLs too', () => { + expect(buildPostViewUrl('pages', {type: 'draft'})).toBe('pages?type=draft'); + }); +}); + +describe('isPostViewActive', () => { + const at = (search: string) => ({pathname: '/posts', search}); + + it('matches when every param agrees', () => { + expect(isPostViewActive(at('?type=draft'), 'posts', {type: 'draft'})).toBe(true); + }); + + it('does not match a different route', () => { + expect(isPostViewActive({pathname: '/pages', search: '?type=draft'}, 'posts', {type: 'draft'})) + .toBe(false); + }); + + // Ember compares the whole param set, so a view is not active merely + // because the URL is a superset of it. + it('does not match when the URL carries an extra param', () => { + expect(isPostViewActive(at('?type=draft&tag=news'), 'posts', {type: 'draft'})).toBe(false); + }); + + it('does not match when the URL is missing one of the view params', () => { + expect(isPostViewActive(at('?type=draft'), 'posts', {type: 'draft', tag: 'news'})).toBe(false); + }); + + it('treats a null in the view as absent from the URL', () => { + expect(isPostViewActive(at('?type=draft'), 'posts', {type: 'draft', tag: null})).toBe(true); + }); + + it('matches an empty view against a bare URL', () => { + expect(isPostViewActive(at(''), 'posts', {})).toBe(true); + expect(isPostViewActive(at('?type=draft'), 'posts', {})).toBe(false); + }); + + // Sort is part of a view's identity in Ember - it is one of the five + // params `reset-query-params` covers. + it('includes order in the comparison', () => { + expect(isPostViewActive(at('?type=draft'), 'posts', {type: 'draft', order: 'published_at asc'})) + .toBe(false); + expect(isPostViewActive(at('?type=draft&order=published_at+asc'), 'posts', { + type: 'draft', order: 'published_at asc' + })).toBe(true); + }); + + it('ignores params that are not part of a view', () => { + expect(isPostViewActive(at('?type=draft&somethingElse=x'), 'posts', {type: 'draft'})).toBe(true); + }); +}); + +describe('getDefaultPostViews', () => { + it('offers Drafts, Scheduled and Published, in that order', () => { + expect(getDefaultPostViews(false).map(view => view.name)) + .toEqual(['Drafts', 'Scheduled', 'Published']); + }); + + it('matches the Ember filters exactly', () => { + expect(POST_DEFAULT_VIEWS.map(view => view.filter)) + .toEqual([{type: 'draft'}, {type: 'scheduled'}, {type: 'published'}]); + }); + + // Contributors only ever see their own drafts, so status views are + // meaningless to them - Ember hides them. + it('offers none to a contributor', () => { + expect(getDefaultPostViews(true)).toEqual([]); + }); +}); diff --git a/apps/admin/src/layout/app-sidebar/post-sidebar-views.ts b/apps/admin/src/layout/app-sidebar/post-sidebar-views.ts new file mode 100644 index 00000000000..487e1570786 --- /dev/null +++ b/apps/admin/src/layout/app-sidebar/post-sidebar-views.ts @@ -0,0 +1,83 @@ +import {POST_VIEW_PARAMS} from '@/posts/list/post-view-params'; +import type {PostResource} from '@/posts/list/post-resource'; + +/** + * Sidebar saved views for posts and pages. + * + * Resolved from React's own location rather than the Ember routing bridge: + * once the `postsListReact` flag hands `/posts` to React, the Ember route + * aborts and its `currentRouteName` is never `posts`, so every bridge-derived + * active state silently goes dead. Modelled on `member-sidebar-views.ts`, + * which solved the same problem for members. + */ + +export type PostViewFilter = Record; + +export interface PostDefaultView { + name: string; + filter: PostViewFilter; +} + +/** + * Hardcoded in Ember too (`services/custom-views.js`), and always `route: + * 'posts'` — there are no default views for pages. + */ +export const POST_DEFAULT_VIEWS: PostDefaultView[] = [ + {name: 'Drafts', filter: {type: 'draft'}}, + {name: 'Scheduled', filter: {type: 'scheduled'}}, + {name: 'Published', filter: {type: 'published'}} +]; + +export function getDefaultPostViews(isContributor: boolean): PostDefaultView[] { + // Contributors only ever see their own drafts, so status views say nothing. + return isContributor ? [] : POST_DEFAULT_VIEWS; +} + +/** Params are emitted in a fixed order so one view always yields one URL. */ +export function buildPostViewUrl(route: PostResource, filter: PostViewFilter): string { + const params = new URLSearchParams(); + + POST_VIEW_PARAMS.forEach((param) => { + const value = filter[param]; + + if (value !== null && value !== undefined && value !== '') { + params.set(param, value); + } + }); + + const query = params.toString(); + + return query ? `${route}?${query}` : route; +} + +export interface ViewLocation { + pathname: string; + search: string; +} + +/** + * A view is active only when *every* one of the five params agrees, matching + * Ember's `activeView` (which compares the whole cleaned filter). So a view of + * `{type: 'draft'}` is not active on `?type=draft&tag=news` — that is a + * different view, or none. + * + * Params outside the five are ignored; they aren't part of a view's identity. + */ +export function isPostViewActive( + location: ViewLocation, + route: PostResource, + filter: PostViewFilter +): boolean { + if (location.pathname !== `/${route}`) { + return false; + } + + const current = new URLSearchParams(location.search); + + return POST_VIEW_PARAMS.every((param) => { + const expected = filter[param] ?? null; + const actual = current.get(param); + + return expected === (actual === '' ? null : actual); + }); +} diff --git a/apps/admin/src/layout/app-sidebar/use-post-navigation.ts b/apps/admin/src/layout/app-sidebar/use-post-navigation.ts new file mode 100644 index 00000000000..b2394f81e47 --- /dev/null +++ b/apps/admin/src/layout/app-sidebar/use-post-navigation.ts @@ -0,0 +1,108 @@ +import {buildPostViewUrl, getDefaultPostViews, isPostViewActive} from './post-sidebar-views'; +import {isContributorUser} from '@tryghost/admin-x-framework/api/users'; +import {type NavSavedView} from './nav-saved-views'; +import {useCurrentUser} from '@tryghost/admin-x-framework/api/current-user'; +import {useEmberRouting} from '@/ember-bridge'; +import {useFeatureFlag} from '@tryghost/admin-x-framework/hooks'; +import {useLocation} from '@tryghost/admin-x-framework'; +import {useMemo} from 'react'; +import {useSharedViews} from './shared-views'; +import type {PostResource} from '@/posts/list/post-resource'; + +/** + * Everything the sidebar needs for a posts/pages nav item, from whichever + * implementation currently owns the route. + * + * Both sources are computed on every render and only the result is chosen — + * hooks can't be called conditionally, and the flag can flip at runtime. + */ + +export interface PostNavigation { + /** Where the top-level item links to. */ + mainUrl: string; + /** Highlighted only when no view is active, matching Ember. */ + isMainActive: boolean; + defaultViews: NavSavedView[]; + customViews: NavSavedView[]; +} + +function useReactPostNavigation(route: PostResource): PostNavigation { + const location = useLocation(); + const sharedViews = useSharedViews(route); + const {data: currentUser} = useCurrentUser(); + const isContributor = Boolean(currentUser && isContributorUser(currentUser)); + + return useMemo(() => { + const toNavView = (name: string, filter: Record, color?: string): NavSavedView => ({ + key: buildPostViewUrl(route, filter), + name, + to: buildPostViewUrl(route, filter), + isActive: isPostViewActive(location, route, filter), + color + }); + + // Pages have no default views in Ember, only posts. + const defaultViews = route === 'posts' + ? getDefaultPostViews(isContributor).map(view => toNavView(view.name, view.filter)) + : []; + + const customViews = sharedViews.map(view => toNavView(view.name, view.filter, view.color)); + + return { + mainUrl: route, + // Ember highlights the parent only when no view underneath is. + isMainActive: location.pathname === `/${route}` + && ![...defaultViews, ...customViews].some(view => view.isActive), + defaultViews, + customViews + }; + }, [location, route, sharedViews, isContributor]); +} + +function useEmberPostNavigation(route: PostResource): PostNavigation { + const routing = useEmberRouting(); + const sharedViews = useSharedViews(route); + + return useMemo(() => { + const defaultViews = route === 'posts' + ? POST_DEFAULT_VIEW_LINKS.map(view => ({ + key: view.to, + name: view.name, + to: view.to, + isActive: routing.isRouteActive(route, view.filter) + })) + : []; + + return { + mainUrl: routing.getRouteUrl(route), + isMainActive: routing.isRouteActive(route), + defaultViews, + customViews: sharedViews.map((view) => { + const to = routing.getRouteUrl(route, view.filter); + + return { + key: to, + name: view.name, + to, + isActive: routing.isRouteActive(route, view.filter), + color: view.color + }; + }) + }; + }, [route, routing, sharedViews]); +} + +/** The Ember branch keeps its hardcoded links, as `nav-content` had them. */ +const POST_DEFAULT_VIEW_LINKS = [ + {name: 'Drafts', to: 'posts?type=draft', filter: {type: 'draft'}}, + {name: 'Scheduled', to: 'posts?type=scheduled', filter: {type: 'scheduled'}}, + {name: 'Published', to: 'posts?type=published', filter: {type: 'published'}} +]; + +export function usePostNavigation(route: PostResource = 'posts'): PostNavigation { + const reactOwnsList = useFeatureFlag('postsListReact'); + const reactNavigation = useReactPostNavigation(route); + const emberNavigation = useEmberPostNavigation(route); + + return reactOwnsList ? reactNavigation : emberNavigation; +} diff --git a/apps/admin/src/posts/list/post-view-params.ts b/apps/admin/src/posts/list/post-view-params.ts new file mode 100644 index 00000000000..820e376b7d1 --- /dev/null +++ b/apps/admin/src/posts/list/post-view-params.ts @@ -0,0 +1,12 @@ +/** + * The params that make up a posts/pages URL, and therefore a saved view's + * identity. `order` is included: Ember's `reset-query-params` covers all five, + * and its `activeView` compares all five, so two views differing only by sort + * are different views. + * + * Kept separate from `post-filter-query.ts` (which owns the four *filter* + * params) so the sidebar can import it without pulling in the chip model. + */ +export const POST_VIEW_PARAMS = ['type', 'visibility', 'author', 'tag', 'order'] as const; + +export type PostViewParam = (typeof POST_VIEW_PARAMS)[number]; From b208c057f0ff2e386432b2cf31e84f10cdf2c4c9 Mon Sep 17 00:00:00 2001 From: Peter Zimon Date: Tue, 4 Aug 2026 13:49:05 +0200 Subject: [PATCH 16/75] Added sticky filters to the React posts sidebar no ref Clicking Posts now returns you to the filters you last had, as it does in Ember. Three rules, ported from state-bridge's getRouteUrl: already on the route gives a bare URL, so a second click goes home; otherwise the last params for that route come back; unless those params are exactly a saved or default view, because then clicking Posts would silently drop you into whichever view you had open last. Ember reads this off its live controller query params. React has no equivalent long-lived controller, so the list screen reports its params as they change. Kept in module scope rather than sessionStorage - Ember's is in-memory and per-tab, so persisting it would be a behaviour change rather than a port. Co-Authored-By: Claude Opus 5 --- .../layout/app-sidebar/use-post-navigation.ts | 16 ++- .../src/posts/list/posts-list-screen.tsx | 10 ++ .../posts/list/posts-sticky-filters.test.ts | 70 ++++++++++++ .../src/posts/list/posts-sticky-filters.ts | 101 ++++++++++++++++++ 4 files changed, 195 insertions(+), 2 deletions(-) create mode 100644 apps/admin/src/posts/list/posts-sticky-filters.test.ts create mode 100644 apps/admin/src/posts/list/posts-sticky-filters.ts diff --git a/apps/admin/src/layout/app-sidebar/use-post-navigation.ts b/apps/admin/src/layout/app-sidebar/use-post-navigation.ts index b2394f81e47..9f65898c707 100644 --- a/apps/admin/src/layout/app-sidebar/use-post-navigation.ts +++ b/apps/admin/src/layout/app-sidebar/use-post-navigation.ts @@ -1,4 +1,5 @@ import {buildPostViewUrl, getDefaultPostViews, isPostViewActive} from './post-sidebar-views'; +import {getStickyPostFilterUrl} from '@/posts/list/posts-sticky-filters'; import {isContributorUser} from '@tryghost/admin-x-framework/api/users'; import {type NavSavedView} from './nav-saved-views'; import {useCurrentUser} from '@tryghost/admin-x-framework/api/current-user'; @@ -48,11 +49,22 @@ function useReactPostNavigation(route: PostResource): PostNavigation { const customViews = sharedViews.map(view => toNavView(view.name, view.filter, view.color)); + const allViews = [...defaultViews, ...customViews]; + return { - mainUrl: route, + // Sticky filters: returns you to the filters you last had, unless + // you are already here or those filters are just a view. + mainUrl: getStickyPostFilterUrl( + route, + location.pathname, + [ + ...getDefaultPostViews(isContributor).map(view => view.filter), + ...sharedViews.map(view => view.filter) + ] + ), // Ember highlights the parent only when no view underneath is. isMainActive: location.pathname === `/${route}` - && ![...defaultViews, ...customViews].some(view => view.isActive), + && !allViews.some(view => view.isActive), defaultViews, customViews }; diff --git a/apps/admin/src/posts/list/posts-list-screen.tsx b/apps/admin/src/posts/list/posts-list-screen.tsx index 6bbc6ae8b36..1d25b77c3fc 100644 --- a/apps/admin/src/posts/list/posts-list-screen.tsx +++ b/apps/admin/src/posts/list/posts-list-screen.tsx @@ -13,6 +13,9 @@ import {isAuthorOrContributor, isContributorUser} from '@tryghost/admin-x-framew import {type PostResource, getPostResourceCopy} from './post-resource'; import {useCurrentUser} from '@tryghost/admin-x-framework/api/current-user'; import {usePostsFilterState} from './hooks/use-posts-filter-state'; +import {rememberStickyPostFilters} from './posts-sticky-filters'; +import {useEffect} from 'react'; +import {useLocation} from '@tryghost/admin-x-framework'; import {usePostsList} from './hooks/use-posts-list'; /** @@ -28,6 +31,13 @@ export function PostsListScreen({resource}: {resource: PostResource}) { const {data: currentUser} = useCurrentUser(); const {data: settingsData} = useBrowseSettings(); + // Report the current filters so the sidebar's Posts link can return here. + const location = useLocation(); + + useEffect(() => { + rememberStickyPostFilters(resource, location.search); + }, [resource, location.search]); + // Scheduled times read in the site's timezone, not the browser's. const timezone = getSettingValue(settingsData?.settings, 'timezone') ?? undefined; const isContributor = Boolean(currentUser && isContributorUser(currentUser)); diff --git a/apps/admin/src/posts/list/posts-sticky-filters.test.ts b/apps/admin/src/posts/list/posts-sticky-filters.test.ts new file mode 100644 index 00000000000..af0fdf2b424 --- /dev/null +++ b/apps/admin/src/posts/list/posts-sticky-filters.test.ts @@ -0,0 +1,70 @@ +import {beforeEach, describe, expect, it} from 'vitest'; +import { + clearStickyPostFilters, + getStickyPostFilterUrl, + rememberStickyPostFilters +} from './posts-sticky-filters'; + +// Ported from state-bridge.js `getRouteUrl`. Three rules, in order: +// 1. already on the route -> bare URL ("click again to go home") +// 2. otherwise reuse the last params seen for that route +// 3. unless those match a saved view, or clicking "Posts" would silently +// drop you into whichever view you had open last + +const NO_VIEWS: Array> = []; + +describe('sticky post filters', () => { + beforeEach(() => { + clearStickyPostFilters(); + }); + + it('links to the bare route when nothing has been remembered', () => { + expect(getStickyPostFilterUrl('posts', '/members', NO_VIEWS)).toBe('posts'); + }); + + it('reuses the last params seen for the route', () => { + rememberStickyPostFilters('posts', '?tag=news'); + + expect(getStickyPostFilterUrl('posts', '/members', NO_VIEWS)).toBe('posts?tag=news'); + }); + + // The "click one more time to go home" behaviour. + it('links to the bare route while already on it', () => { + rememberStickyPostFilters('posts', '?tag=news'); + + expect(getStickyPostFilterUrl('posts', '/posts', NO_VIEWS)).toBe('posts'); + }); + + // Otherwise clicking "Posts" would silently take you into "Drafts". + it('links to the bare route when the remembered params are a saved view', () => { + rememberStickyPostFilters('posts', '?type=draft'); + + expect(getStickyPostFilterUrl('posts', '/members', [{type: 'draft'}])).toBe('posts'); + }); + + it('still reuses params that only partly overlap a view', () => { + rememberStickyPostFilters('posts', '?type=draft&tag=news'); + + expect(getStickyPostFilterUrl('posts', '/members', [{type: 'draft'}])) + .toBe('posts?type=draft&tag=news'); + }); + + it('keeps posts and pages apart', () => { + rememberStickyPostFilters('posts', '?tag=news'); + + expect(getStickyPostFilterUrl('pages', '/members', NO_VIEWS)).toBe('pages'); + }); + + it('ignores params that are not part of a view', () => { + rememberStickyPostFilters('posts', '?tag=news&somethingElse=x'); + + expect(getStickyPostFilterUrl('posts', '/members', NO_VIEWS)).toBe('posts?tag=news'); + }); + + it('forgets a route once its params are cleared', () => { + rememberStickyPostFilters('posts', '?tag=news'); + rememberStickyPostFilters('posts', ''); + + expect(getStickyPostFilterUrl('posts', '/members', NO_VIEWS)).toBe('posts'); + }); +}); diff --git a/apps/admin/src/posts/list/posts-sticky-filters.ts b/apps/admin/src/posts/list/posts-sticky-filters.ts new file mode 100644 index 00000000000..72b6f09700b --- /dev/null +++ b/apps/admin/src/posts/list/posts-sticky-filters.ts @@ -0,0 +1,101 @@ +import {POST_VIEW_PARAMS} from '@/posts/list/post-view-params'; +import type {PostResource} from '@/posts/list/post-resource'; + +/** + * "Sticky filters": clicking Posts in the sidebar returns you to the filters + * you last had, rather than a bare list. + * + * Ported from `state-bridge.js` `getRouteUrl`, which reads Ember's live + * controller query params. React has no equivalent long-lived controller, so + * the list screen reports its params here as they change. + * + * Module scope, deliberately not `sessionStorage`: Ember's is in-memory and + * per-tab, so persisting it would be a behaviour change rather than a port. + */ + +type ViewFilter = Record; + +const lastSeen = new Map(); + +/** Called by the list screen whenever its params change. */ +export function rememberStickyPostFilters(resource: PostResource, search: string): void { + const params = toViewParams(search); + + if (Object.keys(params).length === 0) { + lastSeen.delete(resource); + return; + } + + lastSeen.set(resource, buildQuery(params)); +} + +export function clearStickyPostFilters(): void { + lastSeen.clear(); +} + +/** Only the five params a view is made of; anything else isn't sticky. */ +function toViewParams(search: string): Record { + const source = new URLSearchParams(search); + const params: Record = {}; + + POST_VIEW_PARAMS.forEach((param) => { + const value = source.get(param); + + if (value !== null && value !== '') { + params[param] = value; + } + }); + + return params; +} + +function buildQuery(params: Record): string { + const search = new URLSearchParams(); + + POST_VIEW_PARAMS.forEach((param) => { + if (params[param] !== undefined) { + search.set(param, params[param]); + } + }); + + return search.toString(); +} + +function matchesView(params: Record, view: ViewFilter): boolean { + return POST_VIEW_PARAMS.every((param) => { + const expected = view[param] ?? null; + + return expected === (params[param] ?? null); + }); +} + +/** + * Where the sidebar's top-level item should link. + * + * @param currentPathname so being *on* the route yields a bare URL + * @param views the saved and default views, so remembered params that are just + * a view don't make "Posts" a shortcut back into that view + */ +export function getStickyPostFilterUrl( + resource: PostResource, + currentPathname: string, + views: ViewFilter[] +): string { + if (currentPathname === `/${resource}`) { + return resource; + } + + const remembered = lastSeen.get(resource); + + if (!remembered) { + return resource; + } + + const params = toViewParams(`?${remembered}`); + + if (views.some(view => matchesView(params, view))) { + return resource; + } + + return `${resource}?${remembered}`; +} From 65edcad67a6a320d596fb06bdace6868819a31f0 Mon Sep 17 00:00:00 2001 From: Peter Zimon Date: Tue, 4 Aug 2026 13:56:04 +0200 Subject: [PATCH 17/75] Added save-as-view to the React posts list no ref The bookmark button in the filter bar creates and edits saved views, gated as Ember gates it: admins only, posts only (never pages), not while a default view is active, and only with something actually filtered - where a sort on its own counts, unlike the empty state's "showing all" check. Records are written in exactly Ember's shape, so a view saved here appears in the Ember sidebar and vice versa while both implementations exist. Verified against a real save: {"name":"Blog posts","route":"posts","color":"orange", "filter":{"tag":"blog"}}. Views for every screen share one shared_views setting, so a save round-trips the whole list rather than just the posts entries - otherwise saving a post view would delete the member ones. Caught by hand while testing: the button never appeared for the site owner. Ember's isAdmin is or(isOwnerOnly, isAdminOnly), but the framework's isAdminUser is Administrator only. hasAdminAccess is the equivalent, and the owner is the most likely person to be saving views in the first place. Co-Authored-By: Claude Opus 5 --- .../components/manage-post-view-popover.tsx | 130 ++++++++++++++ .../src/posts/list/hooks/use-post-views.ts | 85 +++++++++ apps/admin/src/posts/list/post-views.test.ts | 162 ++++++++++++++++++ apps/admin/src/posts/list/post-views.ts | 137 +++++++++++++++ .../src/posts/list/posts-list-screen.tsx | 25 ++- 5 files changed, 538 insertions(+), 1 deletion(-) create mode 100644 apps/admin/src/posts/list/components/manage-post-view-popover.tsx create mode 100644 apps/admin/src/posts/list/hooks/use-post-views.ts create mode 100644 apps/admin/src/posts/list/post-views.test.ts create mode 100644 apps/admin/src/posts/list/post-views.ts diff --git a/apps/admin/src/posts/list/components/manage-post-view-popover.tsx b/apps/admin/src/posts/list/components/manage-post-view-popover.tsx new file mode 100644 index 00000000000..15fc96da088 --- /dev/null +++ b/apps/admin/src/posts/list/components/manage-post-view-popover.tsx @@ -0,0 +1,130 @@ +import {Button, Input, Popover, PopoverContent, PopoverTrigger} from '@tryghost/shade/components'; +import {Inline, Stack, Text} from '@tryghost/shade/primitives'; +import {LucideIcon} from '@tryghost/shade/utils'; +import {type PostViewColor, pickPostViewColor} from '@/posts/list/post-views'; +import {useDeletePostView, useSavePostView} from '@/posts/list/hooks/use-post-views'; +import {useState} from 'react'; +import type {PostListParams} from '@/posts/list/post-query-params'; +import type {SharedView} from '@/members/shared-views'; + +interface ManagePostViewPopoverProps { + params: PostListParams; + /** The saved view matching the current params, if the user is on one. */ + activeView?: SharedView; +} + +function PopoverBody({params, activeView, onClose}: ManagePostViewPopoverProps & {onClose: () => void}) { + const [name, setName] = useState(activeView?.name ?? ''); + const [error, setError] = useState(''); + const [busy, setBusy] = useState(false); + const savePostView = useSavePostView(); + const deletePostView = useDeletePostView(); + + const isEditing = Boolean(activeView); + + const handleSave = async () => { + const trimmed = name.trim(); + + if (!trimmed) { + setError('Please enter a name'); + return; + } + + setBusy(true); + + try { + // Editing keeps the view's colour; a new one gets a random one, as + // Ember does. + const color = (activeView?.color as PostViewColor | undefined) ?? pickPostViewColor(); + + await savePostView(trimmed, params, color, activeView); + onClose(); + } catch (saveError) { + setError(saveError instanceof Error ? saveError.message : 'Failed to save view'); + } finally { + setBusy(false); + } + }; + + const handleDelete = async () => { + if (!activeView) { + return; + } + + setBusy(true); + + try { + await deletePostView(activeView); + onClose(); + } catch (deleteError) { + setError(deleteError instanceof Error ? deleteError.message : 'Failed to delete view'); + } finally { + setBusy(false); + } + }; + + return ( + + { + setName(event.target.value); + setError(''); + }} + onKeyDown={(event) => { + if (event.key === 'Enter') { + void handleSave(); + } + }} + /> + {error && {error}} + + {isEditing && ( + + )} + + + + ); +} + +/** + * The save/edit-view affordance in the filter bar. Whether it shows at all is + * decided by `canSavePostView` — admins only, posts only, not on a default + * view, and something actually filtered. + */ +export function ManagePostViewPopover({params, activeView}: ManagePostViewPopoverProps) { + const [open, setOpen] = useState(false); + + return ( + + + + + + {/* Keyed so reopening starts from the current view's name. */} + { + setOpen(false); + }} + /> + + + ); +} diff --git a/apps/admin/src/posts/list/hooks/use-post-views.ts b/apps/admin/src/posts/list/hooks/use-post-views.ts new file mode 100644 index 00000000000..f2c8e6c4502 --- /dev/null +++ b/apps/admin/src/posts/list/hooks/use-post-views.ts @@ -0,0 +1,85 @@ +import {buildPostViewsForDelete, buildPostViewsForSave, type PostViewColor} from '@/posts/list/post-views'; +import {getSettingValue, useBrowseSettings, useEditSettings} from '@tryghost/admin-x-framework/api/settings'; +import {parseAllSharedViewsJSON, type SharedView} from '@/members/shared-views'; +import {useCallback} from 'react'; +import {useHandleError} from '@tryghost/admin-x-framework/hooks'; +import type {PostListParams} from '@/posts/list/post-query-params'; + +/** + * Reading and writing saved views for the posts list. + * + * Views for every screen share one `shared_views` setting, so a save has to + * round-trip the *whole* list — dropping the members' or pages' entries would + * delete them. + */ + +const SHARED_VIEWS_INVALID_ERROR = 'Saved views could not be read'; + +type SettingsData = {settings: Array<{key: string; value: string | boolean | null}>} | undefined; + +function getSharedViewsJSON(settingsData: SettingsData): string { + return getSettingValue(settingsData?.settings ?? null, 'shared_views') ?? '[]'; +} + +/** Just the posts views, for the filter bar's edit/save affordance. */ +export function usePostViews(): SharedView[] { + const {data: settingsData} = useBrowseSettings(); + const parsed = parseAllSharedViewsJSON(getSharedViewsJSON(settingsData)); + + return parsed.ok ? parsed.views.filter(view => view.route === 'posts') : []; +} + +export function useSavePostView() { + const {data: settingsData} = useBrowseSettings(); + const {mutateAsync: editSettings} = useEditSettings(); + const handleError = useHandleError(); + + return useCallback(async ( + name: string, + params: PostListParams, + color: PostViewColor, + originalView?: SharedView + ) => { + const parsed = parseAllSharedViewsJSON(getSharedViewsJSON(settingsData)); + + if (!parsed.ok) { + const error = new Error(SHARED_VIEWS_INVALID_ERROR, {cause: parsed.error}); + handleError(error, {withToast: false}); + throw error; + } + + const updatedViews = buildPostViewsForSave(parsed.views, name, params, color, originalView); + + try { + await editSettings([{key: 'shared_views', value: JSON.stringify(updatedViews)}]); + } catch (error) { + handleError(error, {withToast: false}); + throw error; + } + }, [settingsData, editSettings, handleError]); +} + +export function useDeletePostView() { + const {data: settingsData} = useBrowseSettings(); + const {mutateAsync: editSettings} = useEditSettings(); + const handleError = useHandleError(); + + return useCallback(async (view: SharedView) => { + const parsed = parseAllSharedViewsJSON(getSharedViewsJSON(settingsData)); + + if (!parsed.ok) { + const error = new Error(SHARED_VIEWS_INVALID_ERROR, {cause: parsed.error}); + handleError(error, {withToast: false}); + throw error; + } + + const updatedViews = buildPostViewsForDelete(parsed.views, view); + + try { + await editSettings([{key: 'shared_views', value: JSON.stringify(updatedViews)}]); + } catch (error) { + handleError(error, {withToast: false}); + throw error; + } + }, [settingsData, editSettings, handleError]); +} diff --git a/apps/admin/src/posts/list/post-views.test.ts b/apps/admin/src/posts/list/post-views.test.ts new file mode 100644 index 00000000000..ef8bad03d03 --- /dev/null +++ b/apps/admin/src/posts/list/post-views.test.ts @@ -0,0 +1,162 @@ +import {describe, expect, it} from 'vitest'; +import { + POST_VIEW_COLORS, + buildPostView, + buildPostViewsForDelete, + buildPostViewsForSave, + canSavePostView, + findActivePostView +} from './post-views'; +import {hasAdminAccess} from '@tryghost/admin-x-framework/api/users'; +import type {SharedView} from '@/members/shared-views'; + +const view = (name: string, filter: Record): SharedView => ({ + name, route: 'posts', filter, color: 'blue' +}); + +describe('canSavePostView', () => { + // Ember gates the save button on: admin, on the posts screen, not already + // on a default view, and at least one param set. + it('allows an admin with a filter set', () => { + expect(canSavePostView({ + isAdmin: true, resource: 'posts', params: {type: 'draft'}, isDefaultView: false + })).toBe(true); + }); + + it('refuses a non-admin', () => { + expect(canSavePostView({ + isAdmin: false, resource: 'posts', params: {type: 'draft'}, isDefaultView: false + })).toBe(false); + }); + + // Ember's `isAdmin` is `or(isOwnerOnly, isAdminOnly)`, so the Owner counts. + // The framework's `isAdminUser` is Administrator *only* — using it here + // hid the button from the site owner, who is the most likely person to be + // saving views. + it('is satisfied by hasAdminAccess, which includes the Owner', () => { + const owner = {roles: [{name: 'Owner'}]} as const; + const administrator = {roles: [{name: 'Administrator'}]} as const; + const editor = {roles: [{name: 'Editor'}]} as const; + + expect(hasAdminAccess(owner)).toBe(true); + expect(hasAdminAccess(administrator)).toBe(true); + expect(hasAdminAccess(editor)).toBe(false); + }); + + // The button is hardcoded to `currentRouteName === 'posts'` in Ember, so + // pages never offer it. + it('refuses on the pages screen', () => { + expect(canSavePostView({ + isAdmin: true, resource: 'pages', params: {type: 'draft'}, isDefaultView: false + })).toBe(false); + }); + + it('refuses with nothing filtered', () => { + expect(canSavePostView({ + isAdmin: true, resource: 'posts', params: {}, isDefaultView: false + })).toBe(false); + }); + + // Sorting counts here, unlike the empty state's "showingAll". + it('allows a sort on its own', () => { + expect(canSavePostView({ + isAdmin: true, resource: 'posts', params: {order: 'published_at asc'}, isDefaultView: false + })).toBe(true); + }); + + it('refuses while a default view is active', () => { + expect(canSavePostView({ + isAdmin: true, resource: 'posts', params: {type: 'draft'}, isDefaultView: true + })).toBe(false); + }); +}); + +describe('buildPostView', () => { + it('stores the params verbatim, so Ember reads the same view', () => { + expect(buildPostView('News', {type: 'draft', tag: 'news'}, 'blue')).toEqual({ + name: 'News', + route: 'posts', + color: 'blue', + filter: {type: 'draft', tag: 'news'} + }); + }); + + it('trims the name', () => { + expect(buildPostView(' News ', {type: 'draft'}, 'blue').name).toBe('News'); + }); + + it('drops empty params so the filter compares equal to a clean URL', () => { + expect(buildPostView('News', {type: 'draft', tag: null, order: ''}, 'blue').filter) + .toEqual({type: 'draft'}); + }); + + it('only uses colours Ember knows', () => { + POST_VIEW_COLORS.forEach((color) => { + expect(buildPostView('X', {type: 'draft'}, color).color).toBe(color); + }); + }); +}); + +describe('buildPostViewsForSave', () => { + it('appends a new view', () => { + const result = buildPostViewsForSave([], 'News', {type: 'draft'}, 'blue'); + + expect(result).toHaveLength(1); + expect(result[0].name).toBe('News'); + }); + + it('rejects a duplicate name on the same route', () => { + expect(() => buildPostViewsForSave( + [view('News', {type: 'draft'})], 'News', {tag: 'other'}, 'blue' + )).toThrow(/already exists/i); + }); + + // Views are per-route, so members and pages names don't collide. + it('allows the same name on another route', () => { + const existing: SharedView = {name: 'News', route: 'members', filter: {filter: 'x'}}; + + expect(buildPostViewsForSave([existing], 'News', {type: 'draft'}, 'blue')).toHaveLength(2); + }); + + it('replaces the original when editing', () => { + const original = view('News', {type: 'draft'}); + const result = buildPostViewsForSave([original], 'Renamed', {type: 'published'}, 'red', original); + + expect(result).toHaveLength(1); + expect(result[0]).toMatchObject({name: 'Renamed', filter: {type: 'published'}}); + }); + + it('leaves other views untouched when editing', () => { + const original = view('News', {type: 'draft'}); + const other = view('Other', {tag: 'x'}); + const result = buildPostViewsForSave([other, original], 'Renamed', {type: 'published'}, 'red', original); + + expect(result[0]).toEqual(other); + }); +}); + +describe('buildPostViewsForDelete', () => { + it('removes the view', () => { + const target = view('News', {type: 'draft'}); + + expect(buildPostViewsForDelete([target, view('Other', {tag: 'x'})], target)) + .toEqual([view('Other', {tag: 'x'})]); + }); + + it('throws when the view is gone', () => { + expect(() => buildPostViewsForDelete([], view('News', {type: 'draft'}))) + .toThrow(/could not be found/i); + }); +}); + +describe('findActivePostView', () => { + it('finds the view whose filter matches the URL exactly', () => { + const views = [view('News', {type: 'draft', tag: 'news'}), view('Drafts', {type: 'draft'})]; + + expect(findActivePostView(views, {type: 'draft'})?.name).toBe('Drafts'); + }); + + it('finds nothing when no view matches', () => { + expect(findActivePostView([view('Drafts', {type: 'draft'})], {tag: 'news'})).toBeUndefined(); + }); +}); diff --git a/apps/admin/src/posts/list/post-views.ts b/apps/admin/src/posts/list/post-views.ts new file mode 100644 index 00000000000..8d9aa247bc9 --- /dev/null +++ b/apps/admin/src/posts/list/post-views.ts @@ -0,0 +1,137 @@ +import {POST_VIEW_PARAMS} from '@/posts/list/post-view-params'; +import { + type SharedView, + findMatchingSharedViewIndexes, + hasSharedViewNameConflict +} from '@/members/shared-views'; +import type {PostListParams} from '@/posts/list/post-query-params'; +import type {PostResource} from '@/posts/list/post-resource'; + +/** + * Saved views for the posts list. + * + * Records are written in exactly Ember's shape — `{name, route, color, + * filter}` where `filter` is the five URL params — so a view saved here shows + * up correctly in the Ember sidebar and vice versa while both exist. + * + * The generic save/delete plumbing is shared with members via + * `@/members/shared-views`; only the filter shape differs. + */ + +/** Ember picks one of these at random for a new view. */ +export const POST_VIEW_COLORS = [ + 'midgrey', 'blue', 'green', 'red', 'teal', 'purple', 'yellow', 'orange', 'pink' +] as const; + +export type PostViewColor = (typeof POST_VIEW_COLORS)[number]; + +const VIEW_EXISTS_ERROR = 'A view with this name already exists'; +const VIEW_UPDATE_NOT_FOUND_ERROR = 'Saved view could not be found for update'; +const VIEW_DELETE_NOT_FOUND_ERROR = 'Saved view could not be found for delete'; + +export function pickPostViewColor(): PostViewColor { + return POST_VIEW_COLORS[Math.floor(Math.random() * POST_VIEW_COLORS.length)]; +} + +/** Only the five params, blanks dropped — so it compares equal to a clean URL. */ +function toViewFilter(params: PostListParams): Record { + const filter: Record = {}; + + POST_VIEW_PARAMS.forEach((param) => { + const value = params[param]; + + if (value !== null && value !== undefined && value !== '') { + filter[param] = value; + } + }); + + return filter; +} + +export function buildPostView( + name: string, + params: PostListParams, + color: PostViewColor +): SharedView { + return { + name: name.trim(), + route: 'posts', + color, + filter: toViewFilter(params) + }; +} + +export interface CanSavePostViewOptions { + isAdmin: boolean; + resource: PostResource; + params: PostListParams; + /** Default views (Drafts/Scheduled/Published) can't be edited or re-saved. */ + isDefaultView: boolean; +} + +/** + * Ember's `showCustomViewManagement`: admin, on the posts screen, not on a + * default view, and something actually filtered. Note that a sort alone counts + * here, unlike the empty state's "showing all" check. + */ +export function canSavePostView({ + isAdmin, resource, params, isDefaultView +}: CanSavePostViewOptions): boolean { + if (!isAdmin || resource !== 'posts' || isDefaultView) { + return false; + } + + return POST_VIEW_PARAMS.some(param => Boolean(params[param])); +} + +export function buildPostViewsForSave( + allViews: SharedView[], + name: string, + params: PostListParams, + color: PostViewColor, + originalView?: SharedView +): SharedView[] { + const nextView = buildPostView(name, params, color); + + if (originalView) { + const [targetIndex] = findMatchingSharedViewIndexes(allViews, originalView); + + if (targetIndex === undefined) { + throw new Error(VIEW_UPDATE_NOT_FOUND_ERROR); + } + + if (hasSharedViewNameConflict(allViews, nextView, targetIndex)) { + throw new Error(VIEW_EXISTS_ERROR); + } + + return allViews.map((view, index) => (index === targetIndex ? nextView : view)); + } + + if (hasSharedViewNameConflict(allViews, nextView)) { + throw new Error(VIEW_EXISTS_ERROR); + } + + return [...allViews, nextView]; +} + +export function buildPostViewsForDelete(allViews: SharedView[], view: SharedView): SharedView[] { + const [targetIndex] = findMatchingSharedViewIndexes(allViews, view); + + if (targetIndex === undefined) { + throw new Error(VIEW_DELETE_NOT_FOUND_ERROR); + } + + return allViews.filter((_, index) => index !== targetIndex); +} + +/** The saved view matching the current params exactly, if any. */ +export function findActivePostView( + views: SharedView[], + params: PostListParams +): SharedView | undefined { + const current = toViewFilter(params); + + return views.find(view => POST_VIEW_PARAMS.every( + param => (view.filter[param] ?? null) === (current[param] ?? null) + )); +} diff --git a/apps/admin/src/posts/list/posts-list-screen.tsx b/apps/admin/src/posts/list/posts-list-screen.tsx index 1d25b77c3fc..d8ef8f4b999 100644 --- a/apps/admin/src/posts/list/posts-list-screen.tsx +++ b/apps/admin/src/posts/list/posts-list-screen.tsx @@ -7,9 +7,14 @@ import {FilterBar, PageHeader} from '@tryghost/shade/patterns'; import {PostListRow} from './components/post-list-row'; import {PostsEmptyState} from './components/posts-empty-state'; import {PostsFilters} from './components/posts-filters'; +import {ManagePostViewPopover} from './components/manage-post-view-popover'; +import {POST_DEFAULT_VIEWS} from '@/layout/app-sidebar/post-sidebar-views'; import {PostsSortMenu} from './components/posts-sort-menu'; +import {canSavePostView, findActivePostView} from './post-views'; + +import {usePostViews} from './hooks/use-post-views'; import {getSettingValue, useBrowseSettings} from '@tryghost/admin-x-framework/api/settings'; -import {isAuthorOrContributor, isContributorUser} from '@tryghost/admin-x-framework/api/users'; +import {hasAdminAccess, isAuthorOrContributor, isContributorUser} from '@tryghost/admin-x-framework/api/users'; import {type PostResource, getPostResourceCopy} from './post-resource'; import {useCurrentUser} from '@tryghost/admin-x-framework/api/current-user'; import {usePostsFilterState} from './hooks/use-posts-filter-state'; @@ -42,6 +47,21 @@ export function PostsListScreen({resource}: {resource: PostResource}) { const timezone = getSettingValue(settingsData?.settings, 'timezone') ?? undefined; const isContributor = Boolean(currentUser && isContributorUser(currentUser)); + // The save/edit-view affordance: admins only, posts only, not while a + // default view is active, and only with something actually filtered. + const savedViews = usePostViews(); + const activeView = findActivePostView(savedViews, params); + const isOnDefaultView = POST_DEFAULT_VIEWS.some(view => findActivePostView([{ + ...view, route: 'posts' + }], params)); + const canManageView = canSavePostView({ + // hasAdminAccess, not isAdminUser: Ember's isAdmin includes the Owner. + isAdmin: Boolean(currentUser && hasAdminAccess(currentUser)), + resource, + params, + isDefaultView: isOnDefaultView + }); + // Authors and contributors only ever see their own posts, whatever the // `author` param says — matching PostsRoute#model in the Ember app. const ownAuthorSlug = currentUser && isAuthorOrContributor(currentUser) @@ -86,6 +106,9 @@ export function PostsListScreen({resource}: {resource: PostResource}) { onFiltersChange={setFilters} /> + {canManageView && ( + + )} From 5a9e41e159284d2c0159ecf236466df1c3f7fb0e Mon Sep 17 00:00:00 2001 From: Peter Zimon Date: Tue, 4 Aug 2026 14:19:08 +0200 Subject: [PATCH 18/75] Added the analytics metric columns to post rows no ref Rows now carry the right-hand metrics, each linking into its analytics tab. Which columns appear is a pure function with an exhaustive test table, because the rules are fiddly and invisible unless a site happens to be configured a particular way: Sent is a fallback, shown only when neither Opens nor Clicks is - so turning off both tracking settings makes a column appear rather than disappear. The email columns need tracking enabled both site-wide and on the individual email, since a post sent before the setting changed keeps the flags it was sent with. Visitors is strictly `published`, so an email-only post has none. Members is hidden on invite-only sites and for email-only posts, but not for pages, which are never email-only. Contributors see no metrics at all. Opens, Clicks and Sent come from the list payload and work now. Visitors and Members need two POST-with-body stats endpoints, which the framework's query factory doesn't support - that is a framework addition rather than wiring, so the counts are passed in as props and land separately. Ember fills these in reactively too, deliberately not awaiting them so a slow analytics service can't hold up the list. Co-Authored-By: Claude Opus 5 --- .../posts/list/components/post-list-row.tsx | 10 +- .../list/components/post-metrics-cells.tsx | 78 +++++++++ .../admin/src/posts/list/post-metrics.test.ts | 157 ++++++++++++++++++ apps/admin/src/posts/list/post-metrics.ts | 124 ++++++++++++++ .../src/posts/list/posts-list-screen.tsx | 12 ++ 5 files changed, 380 insertions(+), 1 deletion(-) create mode 100644 apps/admin/src/posts/list/components/post-metrics-cells.tsx create mode 100644 apps/admin/src/posts/list/post-metrics.test.ts create mode 100644 apps/admin/src/posts/list/post-metrics.ts diff --git a/apps/admin/src/posts/list/components/post-list-row.tsx b/apps/admin/src/posts/list/components/post-list-row.tsx index 366fcdc342e..4ba2b5b4c89 100644 --- a/apps/admin/src/posts/list/components/post-list-row.tsx +++ b/apps/admin/src/posts/list/components/post-list-row.tsx @@ -7,7 +7,9 @@ import { getPostStatusDetail, getPostStatusLabel } from '@/posts/list/post-row-copy'; +import {PostMetricsCells} from '@/posts/list/components/post-metrics-cells'; import {useState} from 'react'; +import type {PostMetricsSettings} from '@/posts/list/post-metrics'; import type {PostListItem} from '@/posts/list/hooks/use-posts-list'; import type {PostResource} from '@/posts/list/post-resource'; @@ -20,6 +22,7 @@ interface PostListRowProps { * published posts they can no longer edit. */ isContributor?: boolean; + metricsSettings: PostMetricsSettings; } /** @@ -72,7 +75,7 @@ function FeatureImage({post}: {post: PostListItem}) { ); } -export function PostListRow({post, resource, timezone, isContributor}: PostListRowProps) { +export function PostListRow({post, resource, timezone, isContributor, metricsSettings}: PostListRowProps) { const [isHovered, setIsHovered] = useState(false); const metaParts = getPostMetaParts(post, {timezone}); @@ -137,6 +140,11 @@ export function PostListRow({post, resource, timezone, isContributor}: PostListR {isHovered && statusDetail && {statusDetail}} +
  • ); diff --git a/apps/admin/src/posts/list/components/post-metrics-cells.tsx b/apps/admin/src/posts/list/components/post-metrics-cells.tsx new file mode 100644 index 00000000000..810d6d6f0fc --- /dev/null +++ b/apps/admin/src/posts/list/components/post-metrics-cells.tsx @@ -0,0 +1,78 @@ +import {Inline, Stack, Text} from '@tryghost/shade/primitives'; +import {getPostClickRate, getPostMetricColumns, getPostOpenRate, type PostMetricColumn, type PostMetricsSettings} from '@/posts/list/post-metrics'; +import {formatNumber} from '@tryghost/shade/utils'; +import type {PostListItem} from '@/posts/list/hooks/use-posts-list'; +import type {PostResource} from '@/posts/list/post-resource'; + +interface PostMetricsCellsProps { + post: PostListItem; + settings: PostMetricsSettings; + resource: PostResource; + /** + * Visitor and member counts, keyed by post uuid and id respectively. These + * arrive from separate batched requests and fill in after the row has + * rendered — as they do in Ember, where the loads are deliberately not + * awaited so a slow analytics service can't hold up the list. + */ + visitorCounts?: Record; + memberCounts?: Record; +} + +function metricValue( + column: PostMetricColumn, + post: PostListItem, + visitorCounts?: Record, + memberCounts?: Record +): string { + switch (column.key) { + case 'visitors': + return formatNumber(visitorCounts?.[post.uuid ?? ''] ?? 0); + case 'opens': + return `${getPostOpenRate(post)}%`; + case 'clicks': + return `${getPostClickRate(post)}%`; + case 'sent': + return formatNumber(post.email?.email_count ?? 0); + case 'members': { + const counts = memberCounts?.[post.id]; + return formatNumber((counts?.free ?? 0) + (counts?.paid ?? 0)); + } + default: + return ''; + } +} + +/** + * The right-hand metric columns. Which appear is decided by `post-metrics.ts`; + * each links into the matching analytics tab, as Ember's do. + */ +export function PostMetricsCells({ + post, settings, resource, visitorCounts, memberCounts +}: PostMetricsCellsProps) { + const columns = getPostMetricColumns(post, settings, resource); + + if (columns.length === 0) { + return null; + } + + return ( + + {columns.map(column => ( + + + + {metricValue(column, post, visitorCounts, memberCounts)} + + {column.label} + + + ))} + + ); +} diff --git a/apps/admin/src/posts/list/post-metrics.test.ts b/apps/admin/src/posts/list/post-metrics.test.ts new file mode 100644 index 00000000000..e27b277552e --- /dev/null +++ b/apps/admin/src/posts/list/post-metrics.test.ts @@ -0,0 +1,157 @@ +import {describe, expect, it} from 'vitest'; +import {getPostMetricColumns, type PostMetricsSettings} from './post-metrics'; +import type {PostListItem} from './hooks/use-posts-list'; + +/** + * Which metric columns a row shows. Ported from `list-item-analytics.hbs` and + * the `showEmail*Analytics` / `showAttributionAnalytics` computeds in + * `apps/ember-admin/app/models/post.js`. + * + * Genuinely fiddly, and invisible unless you happen to have a site configured + * the wrong way — hence the exhaustive table. + */ + +const settings = (overrides: Partial = {}): PostMetricsSettings => ({ + webAnalyticsEnabled: false, + membersTrackSources: false, + emailTrackOpens: false, + emailTrackClicks: false, + membersSignupAccess: 'all', + isMembersInviteOnly: false, + isContributor: false, + ...overrides +}); + +const post = (overrides: Partial = {}): PostListItem => ({ + id: 'p1', + uuid: 'u1', + url: 'https://example.com/p', + slug: 'p', + title: 'A post', + status: 'published', + ...overrides +}); + +const emailed = (over: Partial = {}) => post({ + email: {status: 'submitted', email_count: 100, opened_count: 40, track_opens: true, track_clicks: true}, + ...over +}); + +const keys = (...args: Parameters) => + getPostMetricColumns(...args).map(column => column.key); + +describe('the Visitors column', () => { + it('shows for a published post when web analytics is on', () => { + expect(keys(post(), settings({webAnalyticsEnabled: true}), 'posts')).toContain('visitors'); + }); + + it('hides when web analytics is off', () => { + expect(keys(post(), settings(), 'posts')).not.toContain('visitors'); + }); + + it('hides for a draft', () => { + expect(keys(post({status: 'draft'}), settings({webAnalyticsEnabled: true}), 'posts')) + .not.toContain('visitors'); + }); + + // Strictly `published`, so an email-only post has no web traffic column. + it('hides for an email-only post', () => { + expect(keys(post({status: 'sent'}), settings({webAnalyticsEnabled: true}), 'posts')) + .not.toContain('visitors'); + }); +}); + +describe('the email columns', () => { + it('shows Opens when both the post and the site track opens', () => { + expect(keys(emailed(), settings({emailTrackOpens: true}), 'posts')).toContain('opens'); + }); + + it('hides Opens when the site has tracking off', () => { + expect(keys(emailed(), settings(), 'posts')).not.toContain('opens'); + }); + + it('hides Opens when the post itself was sent without tracking', () => { + const untracked = emailed({ + email: {status: 'submitted', email_count: 100, opened_count: 0, track_opens: false, track_clicks: true} + }); + + expect(keys(untracked, settings({emailTrackOpens: true}), 'posts')).not.toContain('opens'); + }); + + it('shows Clicks under the same rules', () => { + expect(keys(emailed(), settings({emailTrackClicks: true}), 'posts')).toContain('clicks'); + expect(keys(emailed(), settings(), 'posts')).not.toContain('clicks'); + }); + + // The one that is easy to get wrong: Sent is a *fallback*, shown only when + // neither of the others is. + it('shows Sent only when neither Opens nor Clicks is shown', () => { + expect(keys(emailed(), settings(), 'posts')).toContain('sent'); + expect(keys(emailed(), settings({emailTrackOpens: true}), 'posts')).not.toContain('sent'); + expect(keys(emailed(), settings({emailTrackClicks: true}), 'posts')).not.toContain('sent'); + }); + + it('shows nothing email-related for a post that was never emailed', () => { + const shown = keys(post(), settings({emailTrackOpens: true, emailTrackClicks: true}), 'posts'); + + expect(shown).not.toContain('opens'); + expect(shown).not.toContain('clicks'); + expect(shown).not.toContain('sent'); + }); + + it('hides the tracked columns when members signup is switched off entirely', () => { + const shown = keys(emailed(), settings({ + emailTrackOpens: true, emailTrackClicks: true, membersSignupAccess: 'none' + }), 'posts'); + + expect(shown).not.toContain('opens'); + expect(shown).not.toContain('clicks'); + // ...but Sent still appears, since it only depends on there being an email. + expect(shown).toContain('sent'); + }); +}); + +describe('the Members column', () => { + it('shows for a published post when source tracking is on', () => { + expect(keys(post(), settings({membersTrackSources: true}), 'posts')).toContain('members'); + }); + + it('hides on an invite-only site', () => { + expect(keys(post(), settings({membersTrackSources: true, isMembersInviteOnly: true}), 'posts')) + .not.toContain('members'); + }); + + it('hides for an email-only post', () => { + expect(keys(post({status: 'sent', email_only: true}), settings({membersTrackSources: true}), 'posts')) + .not.toContain('members'); + }); + + // A page is never email-only, so the exclusion doesn't apply to it. + it('shows for a published page', () => { + expect(keys(post(), settings({membersTrackSources: true}), 'pages')).toContain('members'); + }); +}); + +describe('contributors', () => { + // Contributors see no analytics at all. + it('see no metric columns', () => { + expect(keys(emailed(), settings({ + webAnalyticsEnabled: true, + membersTrackSources: true, + emailTrackOpens: true, + emailTrackClicks: true, + isContributor: true + }), 'posts')).toEqual([]); + }); +}); + +describe('column order', () => { + it('reads visitors, opens, clicks, then members', () => { + expect(keys(emailed(), settings({ + webAnalyticsEnabled: true, + membersTrackSources: true, + emailTrackOpens: true, + emailTrackClicks: true + }), 'posts')).toEqual(['visitors', 'opens', 'clicks', 'members']); + }); +}); diff --git a/apps/admin/src/posts/list/post-metrics.ts b/apps/admin/src/posts/list/post-metrics.ts new file mode 100644 index 00000000000..253bdb009bd --- /dev/null +++ b/apps/admin/src/posts/list/post-metrics.ts @@ -0,0 +1,124 @@ +import type {PostListItem} from '@/posts/list/hooks/use-posts-list'; +import type {PostResource} from '@/posts/list/post-resource'; + +/** + * Which metric columns a row shows, and where each links. + * + * Ported from `list-item-analytics.hbs` plus the `showEmailOpenAnalytics`, + * `showEmailClickAnalytics` and `showAttributionAnalytics` computeds in + * `apps/ember-admin/app/models/post.js`. + * + * Two rules are easy to get wrong and invisible unless a site is configured a + * particular way: **Sent is a fallback**, shown only when neither Opens nor + * Clicks is; and the email columns need tracking enabled *both* site-wide and + * on the individual email, because a post sent before the setting changed + * carries its own flags. + */ + +export type PostMetricKey = 'visitors' | 'opens' | 'clicks' | 'sent' | 'members'; + +export interface PostMetricsSettings { + webAnalyticsEnabled: boolean; + membersTrackSources: boolean; + emailTrackOpens: boolean; + emailTrackClicks: boolean; + /** `'none'` means memberships are off, which hides email engagement. */ + membersSignupAccess: string; + isMembersInviteOnly: boolean; + isContributor: boolean; +} + +export interface PostMetricColumn { + key: PostMetricKey; + label: string; + /** Which analytics tab the column links to. */ + tab: 'web' | 'newsletter' | 'growth'; +} + +const COLUMNS: Record> = { + visitors: {label: 'Visitors', tab: 'web'}, + opens: {label: 'Opens', tab: 'newsletter'}, + clicks: {label: 'Clicks', tab: 'newsletter'}, + sent: {label: 'Sent', tab: 'newsletter'}, + members: {label: 'Members', tab: 'growth'} +}; + +function wasEmailed(post: PostListItem): boolean { + const status = post.status; + + return (status === 'published' || status === 'sent') + && Boolean(post.email) + && post.email?.status !== 'failed'; +} + +export function getPostMetricColumns( + post: PostListItem, + settings: PostMetricsSettings, + resource: PostResource +): PostMetricColumn[] { + // Contributors get no analytics at all. + if (settings.isContributor) { + return []; + } + + const keys: PostMetricKey[] = []; + const isPublished = post.status === 'published'; + const membersEnabled = settings.membersSignupAccess !== 'none'; + + if (settings.webAnalyticsEnabled && isPublished) { + keys.push('visitors'); + } + + if (wasEmailed(post)) { + // Both the site setting and the email's own flag, since an email sent + // before the setting changed keeps the flags it was sent with. + const showOpens = membersEnabled && settings.emailTrackOpens && post.email?.track_opens === true; + const showClicks = membersEnabled && settings.emailTrackClicks && post.email?.track_clicks === true; + + if (showOpens) { + keys.push('opens'); + } + + if (showClicks) { + keys.push('clicks'); + } + + // Fallback only — the raw count stands in when neither rate is shown. + if (!showOpens && !showClicks) { + keys.push('sent'); + } + } + + // Pages are never email-only, so that exclusion doesn't apply to them. + const notEmailOnly = resource === 'pages' || !post.email_only; + + if (settings.membersTrackSources && isPublished && notEmailOnly && !settings.isMembersInviteOnly) { + keys.push('members'); + } + + return keys.map(key => ({key, ...COLUMNS[key]})); +} + +/** `round(clicks / emailCount * 100)`, matching Ember's `clickRate`. */ +export function getPostClickRate(post: PostListItem): number { + const sent = post.email?.email_count; + const clicks = post.count?.clicks; + + if (!sent || !clicks) { + return 0; + } + + return Math.round((clicks / sent) * 100); +} + +/** Ember stores this as an already-computed percentage on the email. */ +export function getPostOpenRate(post: PostListItem): number { + const sent = post.email?.email_count; + const opened = post.email?.opened_count; + + if (!sent || !opened) { + return 0; + } + + return Math.round((opened / sent) * 100); +} diff --git a/apps/admin/src/posts/list/posts-list-screen.tsx b/apps/admin/src/posts/list/posts-list-screen.tsx index d8ef8f4b999..b4ff37d2074 100644 --- a/apps/admin/src/posts/list/posts-list-screen.tsx +++ b/apps/admin/src/posts/list/posts-list-screen.tsx @@ -47,6 +47,17 @@ export function PostsListScreen({resource}: {resource: PostResource}) { const timezone = getSettingValue(settingsData?.settings, 'timezone') ?? undefined; const isContributor = Boolean(currentUser && isContributorUser(currentUser)); + const settings = settingsData?.settings ?? null; + const metricsSettings = { + webAnalyticsEnabled: getSettingValue(settings, 'web_analytics_enabled') === true, + membersTrackSources: getSettingValue(settings, 'members_track_sources') === true, + emailTrackOpens: getSettingValue(settings, 'email_track_opens') === true, + emailTrackClicks: getSettingValue(settings, 'email_track_clicks') === true, + membersSignupAccess: getSettingValue(settings, 'members_signup_access') ?? 'all', + isMembersInviteOnly: getSettingValue(settings, 'members_signup_access') === 'invite', + isContributor + }; + // The save/edit-view affordance: admins only, posts only, not while a // default view is active, and only with something actually filtered. const savedViews = usePostViews(); @@ -146,6 +157,7 @@ export function PostsListScreen({resource}: {resource: PostResource}) { Date: Tue, 4 Aug 2026 14:27:31 +0200 Subject: [PATCH 19/75] Fixed data loss and regressions in posts saved views no ref Two reviews found the same critical bug: saving a post view could permanently delete other screens' saved views. Members, posts and pages share one shared_views setting, and the parser silently drops entries it can't validate while still reporting success - so the save wrote back only the valid subset. A non-array value was worse: it parsed as an empty list, so the next save replaced everything with just the new view. Saving before settings finished loading did the same, since undefined was coerced to "[]". Writes now work on the raw array and re-serialize only the entry they change, so an entry this build cannot understand - including one written by a future version - survives untouched. An unreadable value now refuses to write rather than treating it as empty, and a save before settings load throws instead. Sticky filters were broken on Pages for the three commonest filters: the posts default views were passed in as the "is this just a view?" list regardless of route, and every default view is route: posts. Pages also had its saved views computed but never rendered, so a view nobody could see suppressed the Pages highlight. The colour picker was missing entirely - Ember offers all nine on create and edit, and the colour shows as a dot in the sidebar, so a random assignment with no way to change it is a removed control, not a cosmetic gap. Deleting a view left you stranded on its URL watching the sidebar entry vanish, with the button flipping back to "Save as view" where saving would re-create it. Now navigates back to the clean route, as Ember does. Also: Enter bypassed the in-flight guard; save errors rendered as muted text with no alert role; two views sharing a filter collided on their React key; and a test named for the Owner-vs-Administrator distinction asserted the framework helper directly rather than the call the screen makes, so swapping the helper back would have kept it green. Co-Authored-By: Claude Opus 5 --- .../layout/app-sidebar/nav-custom-views.tsx | 12 -- .../layout/app-sidebar/use-post-navigation.ts | 25 ++-- .../components/manage-post-view-popover.tsx | 63 ++++++++-- .../src/posts/list/hooks/use-post-views.ts | 88 ++++++++------ .../src/posts/list/post-views-storage.test.ts | 114 ++++++++++++++++++ .../src/posts/list/post-views-storage.ts | 96 +++++++++++++++ apps/admin/src/posts/list/post-views.test.ts | 29 +++-- .../src/posts/list/posts-list-screen.tsx | 6 +- .../posts/list/posts-sticky-filters.test.ts | 9 ++ 9 files changed, 360 insertions(+), 82 deletions(-) delete mode 100644 apps/admin/src/layout/app-sidebar/nav-custom-views.tsx create mode 100644 apps/admin/src/posts/list/post-views-storage.test.ts create mode 100644 apps/admin/src/posts/list/post-views-storage.ts diff --git a/apps/admin/src/layout/app-sidebar/nav-custom-views.tsx b/apps/admin/src/layout/app-sidebar/nav-custom-views.tsx deleted file mode 100644 index 155af9da76c..00000000000 --- a/apps/admin/src/layout/app-sidebar/nav-custom-views.tsx +++ /dev/null @@ -1,12 +0,0 @@ -import { NavSavedViews } from './nav-saved-views'; -import { useCustomSidebarViews } from './use-custom-sidebar-views'; - -interface NavCustomViewsProps { - route?: 'posts' | 'pages'; -} - -export function NavCustomViews({ route = 'posts' }: NavCustomViewsProps) { - const customViews = useCustomSidebarViews(route); - - return ; -} diff --git a/apps/admin/src/layout/app-sidebar/use-post-navigation.ts b/apps/admin/src/layout/app-sidebar/use-post-navigation.ts index 9f65898c707..8f422f5bef6 100644 --- a/apps/admin/src/layout/app-sidebar/use-post-navigation.ts +++ b/apps/admin/src/layout/app-sidebar/use-post-navigation.ts @@ -35,19 +35,33 @@ function useReactPostNavigation(route: PostResource): PostNavigation { return useMemo(() => { const toNavView = (name: string, filter: Record, color?: string): NavSavedView => ({ - key: buildPostViewUrl(route, filter), + // Name included: a saved view whose filter equals a default + // view's would otherwise collide with it. + key: `${name}:${buildPostViewUrl(route, filter)}`, name, to: buildPostViewUrl(route, filter), isActive: isPostViewActive(location, route, filter), color }); - // Pages have no default views in Ember, only posts. + // Posts only, for both. Ember's sidebar shows no views under Pages — + // its save button is hardcoded to the posts route, so `forPages` is + // permanently empty. Surfacing them here would diverge, and worse, + // would let a view nobody can see suppress the Pages highlight. + const viewFilters = route === 'posts' + ? [ + ...getDefaultPostViews(isContributor).map(view => view.filter), + ...sharedViews.map(view => view.filter) + ] + : []; + const defaultViews = route === 'posts' ? getDefaultPostViews(isContributor).map(view => toNavView(view.name, view.filter)) : []; - const customViews = sharedViews.map(view => toNavView(view.name, view.filter, view.color)); + const customViews = route === 'posts' + ? sharedViews.map(view => toNavView(view.name, view.filter, view.color)) + : []; const allViews = [...defaultViews, ...customViews]; @@ -57,10 +71,7 @@ function useReactPostNavigation(route: PostResource): PostNavigation { mainUrl: getStickyPostFilterUrl( route, location.pathname, - [ - ...getDefaultPostViews(isContributor).map(view => view.filter), - ...sharedViews.map(view => view.filter) - ] + viewFilters ), // Ember highlights the parent only when no view underneath is. isMainActive: location.pathname === `/${route}` diff --git a/apps/admin/src/posts/list/components/manage-post-view-popover.tsx b/apps/admin/src/posts/list/components/manage-post-view-popover.tsx index 15fc96da088..bb94de327a6 100644 --- a/apps/admin/src/posts/list/components/manage-post-view-popover.tsx +++ b/apps/admin/src/posts/list/components/manage-post-view-popover.tsx @@ -1,28 +1,68 @@ import {Button, Input, Popover, PopoverContent, PopoverTrigger} from '@tryghost/shade/components'; import {Inline, Stack, Text} from '@tryghost/shade/primitives'; -import {LucideIcon} from '@tryghost/shade/utils'; -import {type PostViewColor, pickPostViewColor} from '@/posts/list/post-views'; +import {LucideIcon, cn} from '@tryghost/shade/utils'; +import {POST_VIEW_COLORS, type PostViewColor, pickPostViewColor} from '@/posts/list/post-views'; +import {getColorHex} from '@/layout/app-sidebar/shared-views'; import {useDeletePostView, useSavePostView} from '@/posts/list/hooks/use-post-views'; +import {useNavigate} from '@tryghost/admin-x-framework'; import {useState} from 'react'; import type {PostListParams} from '@/posts/list/post-query-params'; +import type {PostResource} from '@/posts/list/post-resource'; import type {SharedView} from '@/members/shared-views'; interface ManagePostViewPopoverProps { + resource: PostResource; params: PostListParams; /** The saved view matching the current params, if the user is on one. */ activeView?: SharedView; } -function PopoverBody({params, activeView, onClose}: ManagePostViewPopoverProps & {onClose: () => void}) { +function isPostViewColor(value: string | undefined): value is PostViewColor { + return POST_VIEW_COLORS.includes(value as PostViewColor); +} + +function ColorPicker({value, onChange}: {value: PostViewColor; onChange: (color: PostViewColor) => void}) { + return ( + + {POST_VIEW_COLORS.map(color => ( +
diff --git a/apps/admin/src/posts/list/posts-list.acceptance.test.tsx b/apps/admin/src/posts/list/posts-list.acceptance.test.tsx index 376dd6c953e..0ef2d9ff401 100644 --- a/apps/admin/src/posts/list/posts-list.acceptance.test.tsx +++ b/apps/admin/src/posts/list/posts-list.acceptance.test.tsx @@ -1,6 +1,6 @@ import { beforeEach, describe, expect, it } from "vitest"; -import { fakePages, fakePosts, renderAdminApp } from "@test-utils/acceptance"; +import { fakePages, fakePosts, renderAdminApp , fakeAdminEndpoint} from "@test-utils/acceptance"; import { postsListScreen } from "./posts-list.screen"; const FLAG_ON = { labs: { postsListReact: true } }; @@ -21,6 +21,9 @@ describe("Posts and pages list flag", () => { // content is irrelevant here, this file is only about which implementation // serves the route. beforeEach(() => { + // The metric columns batch these for the rows on screen. + fakeAdminEndpoint("POST", "/stats/posts-visitor-counts/", {stats: [{data: {visitor_counts: {}}}]}); + fakeAdminEndpoint("POST", "/stats/posts-member-counts/", {stats: [{data: {member_counts: {}}}]}); fakePosts([]); fakePages([]); }); From 8b91fbab027a16b5e71d5504800712764d86e39f Mon Sep 17 00:00:00 2001 From: Peter Zimon Date: Tue, 4 Aug 2026 16:48:35 +0200 Subject: [PATCH 21/75] Added metric hover panels and row actions to the React posts list MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ref DES-1343 Completes Phase 5 of the Ember→React posts/pages list port, behind the `postsListReact` flag. Two pieces were outstanding: the hover breakdowns Ember shows on each metric, and the trailing action button at the row's end. - the panels use Shade's `HoverCard`, not `Tooltip`: the tooltip is the small dark chip, so a labelled table inside it renders dark-on-dark. Ember's is a white elevated card, which is what `HoverCard` already is - one panel per *group*, matching Ember — the three email columns share a single trigger, so crossing from Opens to Clicks doesn't flash it - the panel shows raw counts where the column shows a rate, as Ember does. The test fixture uses numbers where the two differ so reusing the rate helper can't pass by coincidence again - `hasPostAnalyticsPage` is expressed from Ember's three `show*Analytics` predicates rather than from the column list. The two deliberately diverge: the Members column renders on an invite-only site and a failed send still shows its Sent count, while neither earns an analytics page. Deriving one from the other lost both columns - the row is no longer a single anchor. The metric links are anchors, and nesting them inside a row-wide one is invalid HTML; it is now a container with three anchor regions, as Ember's own markup is --- .../posts/list/components/post-list-row.tsx | 120 +++++++++++----- .../list/components/post-metric-tooltip.tsx | 50 +++++++ .../list/components/post-metrics-cells.tsx | 86 ++++++++--- .../posts/list/post-metric-tooltips.test.ts | 60 ++++++++ .../src/posts/list/post-metric-tooltips.ts | 67 +++++++++ .../admin/src/posts/list/post-metrics.test.ts | 111 +++++++++++++-- apps/admin/src/posts/list/post-metrics.ts | 102 +++++++++++--- .../list/posts-list-rows.acceptance.test.tsx | 133 +++++++++++++++++- .../src/posts/list/posts-list-screen.tsx | 9 +- .../admin/src/posts/list/posts-list.screen.ts | 8 ++ .../testing/test-data/src/builders/post.ts | 5 +- 11 files changed, 651 insertions(+), 100 deletions(-) create mode 100644 apps/admin/src/posts/list/components/post-metric-tooltip.tsx create mode 100644 apps/admin/src/posts/list/post-metric-tooltips.test.ts create mode 100644 apps/admin/src/posts/list/post-metric-tooltips.ts diff --git a/apps/admin/src/posts/list/components/post-list-row.tsx b/apps/admin/src/posts/list/components/post-list-row.tsx index 943a1afb425..052e93f9b5e 100644 --- a/apps/admin/src/posts/list/components/post-list-row.tsx +++ b/apps/admin/src/posts/list/components/post-list-row.tsx @@ -1,3 +1,4 @@ +import {Button} from '@tryghost/shade/components'; import {Inline, Stack, Text} from '@tryghost/shade/primitives'; import {LucideIcon} from '@tryghost/shade/utils'; import { @@ -7,9 +8,9 @@ import { getPostStatusDetail, getPostStatusLabel } from '@/posts/list/post-row-copy'; +import {hasPostAnalyticsPage, type PostMetricsSettings} from '@/posts/list/post-metrics'; import {PostMetricsCells} from '@/posts/list/components/post-metrics-cells'; import {useState} from 'react'; -import type {PostMetricsSettings} from '@/posts/list/post-metrics'; import type {PostListItem} from '@/posts/list/hooks/use-posts-list'; import type {PostResource} from '@/posts/list/post-resource'; @@ -22,6 +23,9 @@ interface PostListRowProps { * published posts they can no longer edit. */ isContributor?: boolean; + /** Owner or Administrator — the roles Ember's `isAdmin` covers. */ + hasAdminAccess?: boolean; + paidMembersEnabled?: boolean; metricsSettings: PostMetricsSettings; visitorCounts?: Record; memberCounts?: Record; @@ -77,7 +81,10 @@ function FeatureImage({post}: {post: PostListItem}) { ); } -export function PostListRow({post, resource, timezone, isContributor, metricsSettings, visitorCounts, memberCounts}: PostListRowProps) { +export function PostListRow({ + post, resource, timezone, isContributor, hasAdminAccess, paidMembersEnabled, + metricsSettings, visitorCounts, memberCounts +}: PostListRowProps) { const [isHovered, setIsHovered] = useState(false); const metaParts = getPostMetaParts(post, {timezone}); @@ -93,6 +100,15 @@ export function PostListRow({post, resource, timezone, isContributor, metricsSet const linksOffsite = Boolean(isContributor && isPublished); const href = linksOffsite ? post.url : `#/editor/${editorType}/${post.id}`; + const goesToAnalytics = hasPostAnalyticsPage(post, metricsSettings, resource, Boolean(hasAdminAccess)); + const action = goesToAnalytics + ? {href: `#/posts/analytics/${post.id}`, label: 'Go to Analytics', external: false, Icon: LucideIcon.ChartNoAxesColumn} + : linksOffsite + // "View post" on both resources, as Ember hardcodes it. Only ever + // reached by a contributor, who has no page access anyway. + ? {href: post.url, label: 'View post', external: true, Icon: LucideIcon.ArrowUpRight} + : {href, label: 'Go to Editor', external: false, Icon: LucideIcon.Pen}; + return (
  • - - - - - {post.featured && ( - + {/* `center`, not `start`: Ember centres everything on the right + against the 60px feature image. */} + + + + + + {post.featured && ( + + )} + + {post.title} + + + + {metaParts.length > 0 && ( + // Joined from parts so a missing piece takes its + // separator with it — no dangling " – date". + + {metaParts.join(' - ')} + )} - - {post.title} - - - {metaParts.length > 0 && ( - // Joined from parts so a missing piece takes its - // separator with it — no dangling " – date". - - {metaParts.join(' - ')} + + {statusLabel} + {/* Mounted only while hovered, as Ember does. A CSS + opacity fade would keep it in the DOM, so a screen + reader would read every scheduled row's full + dispatch details aloud, always. */} + {isHovered && statusDetail && {statusDetail}} - )} - - - {statusLabel} - {/* Mounted only while hovered, as Ember does. A CSS - opacity fade would keep it in the DOM, so a screen - reader would read every scheduled row's full - dispatch details aloud, always. */} - {isHovered && statusDetail && {statusDetail}} - - + + - + {/* Always visible, as in Ember: `.gh-post-list-cta` is a + bordered white button and `.is-hovered` only changes its + border colour. Revealing it on hover would make it + undiscoverable, and an invisible target on touch. */} + +
  • ); } diff --git a/apps/admin/src/posts/list/components/post-metric-tooltip.tsx b/apps/admin/src/posts/list/components/post-metric-tooltip.tsx new file mode 100644 index 00000000000..df366fd4eff --- /dev/null +++ b/apps/admin/src/posts/list/components/post-metric-tooltip.tsx @@ -0,0 +1,50 @@ +import {HoverCard, HoverCardContent, HoverCardTrigger} from '@tryghost/shade/components'; +import {Inline, Stack, Text} from '@tryghost/shade/primitives'; +import {formatNumber} from '@tryghost/shade/utils'; +import type {ReactNode} from 'react'; + +export interface MetricTooltipRow { + label: string; + value: number; +} + +interface PostMetricTooltipProps { + title: string; + rows: MetricTooltipRow[]; + children: ReactNode; +} + +/** + * The breakdown Ember reveals on hovering a metric — "Web traffic", "Newsletter + * performance", "New members". Ember positions and flips these by hand; + * Shade's Radix wrapper already does that. + * + * `HoverCard`, not `Tooltip`: Shade's tooltip is the small dark chip + * (`bg-primary` / `text-primary-foreground`), which is both the wrong shape for + * a labelled table and the wrong colour — the semantic text tones inside would + * be dark-on-dark. Ember's is a white elevated card, which is what `HoverCard` + * is. No delay, so it behaves like Ember's CSS-only hover. + */ +export function PostMetricTooltip({title, rows, children}: PostMetricTooltipProps) { + return ( + + {children} + {/* `pointer-events-none`, as Ember's tooltip is. Radix's default + keeps the card interactive, but it portals outside the row — so + moving onto it would fire the row's mouseleave and drop the row + hover, the visible CTA border and the status detail. Nothing in + the card is clickable, so nothing is lost. */} + + + {title} + {rows.map(row => ( + + {row.label} + {formatNumber(row.value)} + + ))} + + + + ); +} diff --git a/apps/admin/src/posts/list/components/post-metrics-cells.tsx b/apps/admin/src/posts/list/components/post-metrics-cells.tsx index 810d6d6f0fc..67c55d50559 100644 --- a/apps/admin/src/posts/list/components/post-metrics-cells.tsx +++ b/apps/admin/src/posts/list/components/post-metrics-cells.tsx @@ -1,6 +1,8 @@ import {Inline, Stack, Text} from '@tryghost/shade/primitives'; -import {getPostClickRate, getPostMetricColumns, getPostOpenRate, type PostMetricColumn, type PostMetricsSettings} from '@/posts/list/post-metrics'; -import {formatNumber} from '@tryghost/shade/utils'; +import {getPostClickRate, getPostMetricColumns, getPostOpenRate, type PostMetricColumn, type PostMetricKey, type PostMetricsSettings} from '@/posts/list/post-metrics'; +import {PostMetricTooltip} from '@/posts/list/components/post-metric-tooltip'; +import {cn, formatNumber} from '@tryghost/shade/utils'; +import {getPostMetricTooltip} from '@/posts/list/post-metric-tooltips'; import type {PostListItem} from '@/posts/list/hooks/use-posts-list'; import type {PostResource} from '@/posts/list/post-resource'; @@ -16,8 +18,12 @@ interface PostMetricsCellsProps { */ visitorCounts?: Record; memberCounts?: Record; + paidMembersEnabled?: boolean; + className?: string; } +const EMAIL_KEYS: PostMetricKey[] = ['opens', 'clicks', 'sent']; + function metricValue( column: PostMetricColumn, post: PostListItem, @@ -45,34 +51,74 @@ function metricValue( /** * The right-hand metric columns. Which appear is decided by `post-metrics.ts`; * each links into the matching analytics tab, as Ember's do. + * + * The columns are grouped before rendering because the hover panel belongs to + * the *group*, not the column: Ember hangs one "Newsletter performance" tooltip + * off the wrapper around Opens, Clicks and Sent. One trigger per column would + * flash the identical panel closed and open again as the pointer crossed from + * Opens to Clicks. */ export function PostMetricsCells({ - post, settings, resource, visitorCounts, memberCounts + post, settings, resource, visitorCounts, memberCounts, paidMembersEnabled, className }: PostMetricsCellsProps) { const columns = getPostMetricColumns(post, settings, resource); + const shown = new Set(columns.map(column => column.key)); + const members = memberCounts?.[post.id]; if (columns.length === 0) { return null; } + const groups: PostMetricColumn[][] = []; + + columns.forEach((column) => { + const previous = groups[groups.length - 1]; + const joinsPrevious = EMAIL_KEYS.includes(column.key) + && previous !== undefined + && EMAIL_KEYS.includes(previous[0].key); + + if (joinsPrevious) { + previous.push(column); + } else { + groups.push([column]); + } + }); + return ( - - {columns.map(column => ( - - - - {metricValue(column, post, visitorCounts, memberCounts)} - - {column.label} - - - ))} + + {groups.map((group) => { + const tooltip = getPostMetricTooltip(group[0].key, post, { + visitors: visitorCounts?.[post.uuid ?? ''], + freeMembers: members?.free, + paidMembers: members?.paid, + paidMembersEnabled, + showOpens: shown.has('opens'), + showClicks: shown.has('clicks') + }); + + return ( + + + {group.map(column => ( + + + + {metricValue(column, post, visitorCounts, memberCounts)} + + {column.label} + + + ))} + + + ); + })} ); } diff --git a/apps/admin/src/posts/list/post-metric-tooltips.test.ts b/apps/admin/src/posts/list/post-metric-tooltips.test.ts new file mode 100644 index 00000000000..2c4d87158b6 --- /dev/null +++ b/apps/admin/src/posts/list/post-metric-tooltips.test.ts @@ -0,0 +1,60 @@ +import {describe, expect, it} from 'vitest'; +import {getPostMetricTooltip} from './post-metric-tooltips'; +import type {PostListItem} from './hooks/use-posts-list'; + +const post = (overrides: Partial = {}): PostListItem => ({ + id: 'p1', uuid: 'u1', url: 'u', slug: 'p', title: 'A post', status: 'published', ...overrides +}); + +const emailed = post({ + email: {status: 'submitted', email_count: 200, opened_count: 100}, + count: {clicks: 20} +}); + +const base = {showOpens: true, showClicks: true}; + +describe('getPostMetricTooltip', () => { + it('titles the visitor tooltip "Web traffic"', () => { + expect(getPostMetricTooltip('visitors', post(), {...base, visitors: 42})).toEqual({ + title: 'Web traffic', + rows: [{label: 'Unique visitors', value: 42}] + }); + }); + + // All three email columns share one panel in Ember. + // + // The values are the raw counts, not the rates the columns show. The + // fixture is chosen so the two are distinguishable: the Opens column reads + // 50% while the panel reads 100, and Clicks reads 10% against 20. + it.each(['opens', 'clicks', 'sent'] as const)('shows the same newsletter panel for %s', (key) => { + expect(getPostMetricTooltip(key, emailed, base)).toEqual({ + title: 'Newsletter performance', + rows: [ + {label: 'Sent', value: 200}, + {label: 'Opens', value: 100}, + {label: 'Clicks', value: 20} + ] + }); + }); + + it('lists only what is being tracked', () => { + expect(getPostMetricTooltip('sent', emailed, {showOpens: false, showClicks: false}).rows) + .toEqual([{label: 'Sent', value: 200}]); + }); + + it('breaks new members into free and paid', () => { + expect(getPostMetricTooltip('members', post(), { + ...base, freeMembers: 69, paidMembers: 19, paidMembersEnabled: true + })).toEqual({ + title: 'New members', + rows: [{label: 'Free', value: 69}, {label: 'Paid', value: 19}] + }); + }); + + // Ember drops the row entirely rather than showing a zero. + it('omits paid when paid members are off', () => { + expect(getPostMetricTooltip('members', post(), { + ...base, freeMembers: 69, paidMembersEnabled: false + }).rows).toEqual([{label: 'Free', value: 69}]); + }); +}); diff --git a/apps/admin/src/posts/list/post-metric-tooltips.ts b/apps/admin/src/posts/list/post-metric-tooltips.ts new file mode 100644 index 00000000000..c63a4dd5fc0 --- /dev/null +++ b/apps/admin/src/posts/list/post-metric-tooltips.ts @@ -0,0 +1,67 @@ +import type {PostMetricKey} from '@/posts/list/post-metrics'; +import type {PostListItem} from '@/posts/list/hooks/use-posts-list'; + +/** + * The breakdown shown when hovering a metric column, ported from the tooltip + * markup in `list-item-analytics.hbs`. + * + * The three email columns share one tooltip — Ember shows the same "Newsletter + * performance" panel with Sent, Opens and Clicks whichever of them you hover, + * and it lists Opens/Clicks only when those are being tracked. + * + * The panel shows **raw counts**, not the rates the columns show: the Opens + * column reads "78%" while the panel underneath it reads "Opens 572". Showing + * the rate in both places would be a plausible-looking lie. + */ + +export interface PostMetricTooltipContent { + title: string; + rows: Array<{label: string; value: number}>; +} + +export interface TooltipInputs { + visitors?: number; + freeMembers?: number; + paidMembers?: number; + /** Whether the site shows paid figures at all. */ + paidMembersEnabled?: boolean; + showOpens: boolean; + showClicks: boolean; +} + +export function getPostMetricTooltip( + key: PostMetricKey, + post: PostListItem, + inputs: TooltipInputs +): PostMetricTooltipContent { + if (key === 'visitors') { + return { + title: 'Web traffic', + rows: [{label: 'Unique visitors', value: inputs.visitors ?? 0}] + }; + } + + if (key === 'opens' || key === 'clicks' || key === 'sent') { + const sent = post.email?.email_count ?? 0; + + return { + title: 'Newsletter performance', + rows: [ + {label: 'Sent', value: sent}, + ...(inputs.showOpens ? [{label: 'Opens', value: post.email?.opened_count ?? 0}] : []), + ...(inputs.showClicks ? [{label: 'Clicks', value: post.count?.clicks ?? 0}] : []) + ] + }; + } + + // `members` — and the only remaining key, so this is the total case rather + // than a branch with a null fallback. + return { + title: 'New members', + rows: [ + {label: 'Free', value: inputs.freeMembers ?? 0}, + // Ember hides the paid row entirely when paid members are off. + ...(inputs.paidMembersEnabled ? [{label: 'Paid', value: inputs.paidMembers ?? 0}] : []) + ] + }; +} diff --git a/apps/admin/src/posts/list/post-metrics.test.ts b/apps/admin/src/posts/list/post-metrics.test.ts index e27b277552e..aee3315e516 100644 --- a/apps/admin/src/posts/list/post-metrics.test.ts +++ b/apps/admin/src/posts/list/post-metrics.test.ts @@ -1,5 +1,5 @@ import {describe, expect, it} from 'vitest'; -import {getPostMetricColumns, type PostMetricsSettings} from './post-metrics'; +import {getPostMetricColumns, hasPostAnalyticsPage, type PostMetricsSettings} from './post-metrics'; import type {PostListItem} from './hooks/use-posts-list'; /** @@ -116,32 +116,62 @@ describe('the Members column', () => { expect(keys(post(), settings({membersTrackSources: true}), 'posts')).toContain('members'); }); - it('hides on an invite-only site', () => { - expect(keys(post(), settings({membersTrackSources: true, isMembersInviteOnly: true}), 'posts')) - .not.toContain('members'); + // The column's gate in the template is only "source tracking on, and + // published". The invite-only and email-only exclusions belong to + // `showAttributionAnalytics`, which decides the *trailing button*, not this + // column — Ember shows a Members number here on an invite-only site. + it('shows on an invite-only site, where the analytics button does not', () => { + const inviteOnly = settings({membersTrackSources: true, isMembersInviteOnly: true}); + + expect(keys(post(), inviteOnly, 'posts')).toContain('members'); + expect(hasPostAnalyticsPage(post(), inviteOnly, 'posts', true)).toBe(false); }); - it('hides for an email-only post', () => { - expect(keys(post({status: 'sent', email_only: true}), settings({membersTrackSources: true}), 'posts')) - .not.toContain('members'); + it('shows for an email-only post, where the analytics button does not', () => { + const emailOnly = post({status: 'published', email_only: true}); + const tracking = settings({membersTrackSources: true}); + + expect(keys(emailOnly, tracking, 'posts')).toContain('members'); + expect(hasPostAnalyticsPage(emailOnly, tracking, 'posts', true)).toBe(false); }); - // A page is never email-only, so the exclusion doesn't apply to it. it('shows for a published page', () => { expect(keys(post(), settings({membersTrackSources: true}), 'pages')).toContain('members'); }); + + it('hides for an unpublished post', () => { + expect(keys(post({status: 'draft'}), settings({membersTrackSources: true}), 'posts')) + .not.toContain('members'); + }); }); describe('contributors', () => { - // Contributors see no analytics at all. - it('see no metric columns', () => { - expect(keys(emailed(), settings({ + // Ember gates opens/clicks on `!isContributor` inside the computeds, but + // the Visitors and Members columns are gated in the template on the site + // settings alone — a contributor does see those on their own posts. + it('see no newsletter rates, but do see the site-level columns', () => { + const shown = keys(emailed(), settings({ + webAnalyticsEnabled: true, + membersTrackSources: true, + emailTrackOpens: true, + emailTrackClicks: true, + isContributor: true + }), 'posts'); + + expect(shown).not.toContain('opens'); + expect(shown).not.toContain('clicks'); + // Sent is the fallback, and it depends only on there being an email. + expect(shown).toEqual(['visitors', 'sent', 'members']); + }); + + it('never get an analytics page', () => { + expect(hasPostAnalyticsPage(emailed(), settings({ webAnalyticsEnabled: true, membersTrackSources: true, emailTrackOpens: true, emailTrackClicks: true, isContributor: true - }), 'posts')).toEqual([]); + }), 'posts', false)).toBe(false); }); }); @@ -155,3 +185,60 @@ describe('column order', () => { }), 'posts')).toEqual(['visitors', 'opens', 'clicks', 'members']); }); }); + +describe('hasPostAnalyticsPage', () => { + const emailedPost = { + id: '1', + status: 'published', + email: {opened_count: 5, email_count: 10, track_opens: true, track_clicks: true} + } as PostListItem; + + const tracked = settings({emailTrackOpens: true}); + + it('is true for an admin on a post with newsletter engagement', () => { + expect(hasPostAnalyticsPage(emailedPost, tracked, 'posts', true)).toBe(true); + }); + + it('is false for a non-admin, however the post is configured', () => { + expect(hasPostAnalyticsPage(emailedPost, tracked, 'posts', false)).toBe(false); + }); + + it('is false for pages, which have no analytics screen', () => { + expect(hasPostAnalyticsPage(emailedPost, tracked, 'pages', true)).toBe(false); + }); + + // The distinction the Ember computed makes and the columns don't: web + // analytics alone does not earn a post an analytics page. + it('is false when only the Visitors column shows', () => { + const webOnlyPost = {id: '1', status: 'published'} as PostListItem; + const onlyWeb = settings({webAnalyticsEnabled: true, membersTrackSources: false}); + + expect(getPostMetricColumns(webOnlyPost, onlyWeb, 'posts').map(column => column.key)).toEqual(['visitors']); + expect(hasPostAnalyticsPage(webOnlyPost, onlyWeb, 'posts', true)).toBe(false); + }); + + // The most common real configuration — source tracking on, newsletter + // tracking off — and the one the email-shaped cases above would miss. + it('is true on the attribution path alone, with no email at all', () => { + const published = {id: '1', status: 'published'} as PostListItem; + + expect(hasPostAnalyticsPage(published, settings({membersTrackSources: true}), 'posts', true)).toBe(true); + }); + + // An emailed post with tracking off shows a Sent column but earns no page. + it('is false when the only email column is the Sent fallback', () => { + const untracked = settings(); + + expect(getPostMetricColumns(emailedPost, untracked, 'posts').map(column => column.key)) + .toEqual(['sent']); + expect(hasPostAnalyticsPage(emailedPost, untracked, 'posts', true)).toBe(false); + }); + + it('is false for a contributor even where the settings would allow it', () => { + const asContributor = settings({ + emailTrackOpens: true, membersTrackSources: true, isContributor: true + }); + + expect(hasPostAnalyticsPage(emailedPost, asContributor, 'posts', true)).toBe(false); + }); +}); diff --git a/apps/admin/src/posts/list/post-metrics.ts b/apps/admin/src/posts/list/post-metrics.ts index 253bdb009bd..1356d6f2080 100644 --- a/apps/admin/src/posts/list/post-metrics.ts +++ b/apps/admin/src/posts/list/post-metrics.ts @@ -43,56 +43,91 @@ const COLUMNS: Record> = { members: {label: 'Members', tab: 'growth'} }; -function wasEmailed(post: PostListItem): boolean { - const status = post.status; - - return (status === 'published' || status === 'sent') +/** + * Ember's `hasBeenEmailed` — a post (never a page) that went out and didn't + * fail. Gates the *rate* columns; the Sent column has a weaker gate, below. + */ +function hasBeenEmailed(post: PostListItem, resource: PostResource): boolean { + return resource === 'posts' + && (post.status === 'published' || post.status === 'sent') && Boolean(post.email) && post.email?.status !== 'failed'; } +/** + * `showEmailOpenAnalytics` / `showEmailClickAnalytics`. Tracking must be on + * both site-wide and on the individual email, because an email sent before the + * setting changed keeps the flags it went out with. + */ +function showsOpens(post: PostListItem, settings: PostMetricsSettings, resource: PostResource): boolean { + return hasBeenEmailed(post, resource) + && !settings.isContributor + && settings.membersSignupAccess !== 'none' + && settings.emailTrackOpens + && post.email?.track_opens === true; +} + +function showsClicks(post: PostListItem, settings: PostMetricsSettings, resource: PostResource): boolean { + return hasBeenEmailed(post, resource) + && !settings.isContributor + && settings.membersSignupAccess !== 'none' + && settings.emailTrackClicks + && post.email?.track_clicks === true; +} + +/** `showAttributionAnalytics`. Note this is *not* the Members column's gate. */ +function showsAttribution(post: PostListItem, settings: PostMetricsSettings, resource: PostResource): boolean { + return (resource === 'pages' || !post.email_only) + && post.status === 'published' + && settings.membersTrackSources + && !settings.isMembersInviteOnly + && !settings.isContributor; +} + +/** + * Which columns a row shows. + * + * These conditions come from `list-item-analytics.hbs`, **not** from the + * `show*Analytics` computeds above — Ember deliberately renders two of the + * columns under weaker conditions than the computeds that gate the trailing + * button, and collapsing the two loses real columns: + * + * - the Members column asks only "is source tracking on and is this + * published?", so an invite-only site still gets it; + * - the email block renders whenever the post has an `email` at all, so a + * *failed* send still shows its Sent count. + */ export function getPostMetricColumns( post: PostListItem, settings: PostMetricsSettings, resource: PostResource ): PostMetricColumn[] { - // Contributors get no analytics at all. - if (settings.isContributor) { - return []; - } - const keys: PostMetricKey[] = []; const isPublished = post.status === 'published'; - const membersEnabled = settings.membersSignupAccess !== 'none'; if (settings.webAnalyticsEnabled && isPublished) { keys.push('visitors'); } - if (wasEmailed(post)) { - // Both the site setting and the email's own flag, since an email sent - // before the setting changed keeps the flags it was sent with. - const showOpens = membersEnabled && settings.emailTrackOpens && post.email?.track_opens === true; - const showClicks = membersEnabled && settings.emailTrackClicks && post.email?.track_clicks === true; + if (post.email) { + const opens = showsOpens(post, settings, resource); + const clicks = showsClicks(post, settings, resource); - if (showOpens) { + if (opens) { keys.push('opens'); } - if (showClicks) { + if (clicks) { keys.push('clicks'); } // Fallback only — the raw count stands in when neither rate is shown. - if (!showOpens && !showClicks) { + if (!opens && !clicks) { keys.push('sent'); } } - // Pages are never email-only, so that exclusion doesn't apply to them. - const notEmailOnly = resource === 'pages' || !post.email_only; - - if (settings.membersTrackSources && isPublished && notEmailOnly && !settings.isMembersInviteOnly) { + if (settings.membersTrackSources && isPublished) { keys.push('members'); } @@ -122,3 +157,26 @@ export function getPostOpenRate(post: PostListItem): number { return Math.round((opened / sent) * 100); } + +/** + * Whether the row's trailing button goes to the post's analytics screen, per + * `hasAnalyticsPage` in `apps/ember-admin/app/models/post.js`. + * + * Note what it is *not*: web analytics ("Visitors") does not count. A post can + * show a Visitors column and still have no analytics page — the button falls + * back to the editor. Pages never have one. + */ +export function hasPostAnalyticsPage( + post: PostListItem, + settings: PostMetricsSettings, + resource: PostResource, + isAdmin: boolean +): boolean { + if (resource !== 'posts' || !isAdmin) { + return false; + } + + return showsOpens(post, settings, resource) + || showsClicks(post, settings, resource) + || showsAttribution(post, settings, resource); +} diff --git a/apps/admin/src/posts/list/posts-list-rows.acceptance.test.tsx b/apps/admin/src/posts/list/posts-list-rows.acceptance.test.tsx index e7b13e2f2c6..5838a7a557c 100644 --- a/apps/admin/src/posts/list/posts-list-rows.acceptance.test.tsx +++ b/apps/admin/src/posts/list/posts-list-rows.acceptance.test.tsx @@ -85,7 +85,7 @@ describe("Posts list rows", () => { fakePosts([target]); await renderAdminApp("/posts", FLAG_ON); - await expect.element(postsListScreen.listItems().first().getByRole("link")) + await expect.element(postsListScreen.rowLink().first()) .toHaveAttribute("href", `#/editor/post/${target.id}`); }); @@ -106,7 +106,7 @@ describe("Posts list rows", () => { fakePosts([target]); await renderAdminApp("/posts?type=published", asContributor()); - const link = postsListScreen.listItems().first().getByRole("link"); + const link = postsListScreen.rowLink().first(); await expect.element(link).toHaveAttribute("href", "https://example.com/live-post/"); await expect.element(link).toHaveAttribute("target", "_blank"); }); @@ -118,7 +118,7 @@ describe("Posts list rows", () => { fakePosts([target]); await renderAdminApp("/posts?type=sent", asContributor()); - await expect.element(postsListScreen.listItems().first().getByRole("link")) + await expect.element(postsListScreen.rowLink().first()) .toHaveAttribute("href", `#/editor/post/${target.id}`); }); @@ -127,7 +127,7 @@ describe("Posts list rows", () => { fakePosts([target]); await renderAdminApp("/posts?type=draft", asContributor()); - await expect.element(postsListScreen.listItems().first().getByRole("link")) + await expect.element(postsListScreen.rowLink().first()) .toHaveAttribute("href", `#/editor/post/${target.id}`); }); }); @@ -137,7 +137,7 @@ describe("Posts list rows", () => { fakePages([target]); await renderAdminApp("/pages", FLAG_ON); - await expect.element(postsListScreen.listItems().first().getByRole("link")) + await expect.element(postsListScreen.rowLink().first()) .toHaveAttribute("href", `#/editor/page/${target.id}`); }); }); @@ -198,4 +198,127 @@ describe("Posts list empty states", () => { await expect.element(postsListScreen.emptyCold()).toBeVisible(); }); + + /** + * The trailing button. Which of the three it is depends on the post *and* + * the signed-in role, and getting it wrong sends people somewhere they + * can't act — a contributor into an editor they have no rights to, or an + * author to an analytics screen they can't open. + */ +}); + +describe("Posts list trailing action button", () => { + beforeEach(() => { + fakeAdminEndpoint("POST", "/stats/posts-visitor-counts/", {stats: [{data: {visitor_counts: {}}}]}); + fakeAdminEndpoint("POST", "/stats/posts-member-counts/", {stats: [{data: {member_counts: {}}}]}); + fakeTags([]); + fakeUsers([]); + fakeAdminEndpoint("GET", /^\/tags\/\?.*slug/, { tags: [] }); + fakeAdminEndpoint("GET", /^\/users\/\?.*slug/, { users: [] }); + }); + + const settingsWithTracking = { + settings: [ + { key: "email_track_opens", value: true }, + { key: "members_signup_access", value: "all" } + ] + }; + + const emailedPost = post({ + title: "A sent post", + status: "published", + email: { opened_count: 5, email_count: 10, track_opens: true, track_clicks: false } + }); + + function asRole(name: "Administrator" | "Author" | "Contributor", slug: string) { + const me = currentUserResponse(); + me.users[0].roles = [staffRole({ name })]; + me.users[0].slug = slug; + return { ...FLAG_ON, boot: { browseMe: { response: me } } }; + } + + it("goes to analytics for an admin on a post with newsletter engagement", async () => { + fakeAdminEndpoint("GET", /^\/settings\//, settingsWithTracking); + fakePosts([emailedPost]); + await renderAdminApp("/posts?type=published", asRole("Administrator", "admin-user")); + + const action = postsListScreen.rowAction().first(); + await expect.element(action).toHaveAccessibleName("Go to Analytics"); + await expect.element(action).toHaveAttribute("href", `#/posts/analytics/${emailedPost.id}`); + }); + + // Same post, lesser role: Ember gates the analytics screen on isAdmin. + it("falls back to the editor for an author", async () => { + fakeAdminEndpoint("GET", /^\/settings\//, settingsWithTracking); + fakePosts([emailedPost]); + await renderAdminApp("/posts?type=published", asRole("Author", "an-author")); + + const action = postsListScreen.rowAction().first(); + await expect.element(action).toHaveAccessibleName("Go to Editor"); + await expect.element(action).toHaveAttribute("href", `#/editor/post/${emailedPost.id}`); + }); + + it("links a contributor out to the live post", async () => { + const published = post({ title: "Live one", status: "published", url: "https://example.com/live/" }); + fakePosts([published]); + await renderAdminApp("/posts?type=published", asRole("Contributor", "a-contributor")); + + const action = postsListScreen.rowAction().first(); + await expect.element(action).toHaveAccessibleName("View post"); + await expect.element(action).toHaveAttribute("href", "https://example.com/live/"); + await expect.element(action).toHaveAttribute("target", "_blank"); + }); + + it("goes to the editor on a page, which has no analytics screen", async () => { + const page = post({ title: "About", status: "published" }); + fakePages([page]); + await renderAdminApp("/pages?type=published", asRole("Administrator", "admin-user")); + + const action = postsListScreen.rowAction().first(); + await expect.element(action).toHaveAccessibleName("Go to Editor"); + await expect.element(action).toHaveAttribute("href", `#/editor/page/${page.id}`); + }); +}); + +/** + * The hover panel is the whole visible half of the metrics feature, and until + * now nothing rendered it: the contents were asserted against the pure + * `getPostMetricTooltip`, so the trigger could have stopped cloning onto the + * anchor, or the portal could have broken, with every test still green. + */ +describe("Posts list metric hover panels", () => { + beforeEach(() => { + fakeAdminEndpoint("POST", "/stats/posts-visitor-counts/", {stats: [{data: {visitor_counts: {}}}]}); + fakeAdminEndpoint("POST", "/stats/posts-member-counts/", {stats: [{data: {member_counts: {}}}]}); + fakeTags([]); + fakeUsers([]); + fakeAdminEndpoint("GET", /^\/tags\/\?.*slug/, { tags: [] }); + fakeAdminEndpoint("GET", /^\/users\/\?.*slug/, { users: [] }); + }); + + it("opens the newsletter breakdown on hovering a metric", async () => { + fakeAdminEndpoint("GET", /^\/settings\//, { + settings: [ + { key: "email_track_opens", value: true }, + { key: "members_signup_access", value: "all" } + ] + }); + fakePosts([post({ + title: "A sent post", + status: "published", + email: { opened_count: 60, email_count: 200, track_opens: true, track_clicks: false } + })]); + await renderAdminApp("/posts?type=published", FLAG_ON); + + // The column shows the rate; the panel underneath shows raw counts. + await expect.element(postsListScreen.metricCell("Opens")).toHaveTextContent("30%"); + await postsListScreen.metricCell("Opens").hover(); + + const panel = postsListScreen.metricPanel(); + await expect.element(panel).toBeVisible(); + await expect.element(panel).toHaveTextContent("Newsletter performance"); + await expect.element(panel).toHaveTextContent("Sent"); + await expect.element(panel).toHaveTextContent("200"); + await expect.element(panel).toHaveTextContent("60"); + }); }); diff --git a/apps/admin/src/posts/list/posts-list-screen.tsx b/apps/admin/src/posts/list/posts-list-screen.tsx index 309d65b351c..8fb1fa630f6 100644 --- a/apps/admin/src/posts/list/posts-list-screen.tsx +++ b/apps/admin/src/posts/list/posts-list-screen.tsx @@ -47,6 +47,9 @@ export function PostsListScreen({resource}: {resource: PostResource}) { // Scheduled times read in the site's timezone, not the browser's. const timezone = getSettingValue(settingsData?.settings, 'timezone') ?? undefined; const isContributor = Boolean(currentUser && isContributorUser(currentUser)); + // Ember's `isAdmin` — Owner or Administrator. Decides whether a row's + // trailing button offers Analytics, and whether views can be saved. + const isAdmin = Boolean(currentUser && hasAdminAccess(currentUser)); const settings = settingsData?.settings ?? null; const metricsSettings = { @@ -58,6 +61,7 @@ export function PostsListScreen({resource}: {resource: PostResource}) { isMembersInviteOnly: getSettingValue(settings, 'members_signup_access') === 'invite', isContributor }; + const paidMembersEnabled = getSettingValue(settings, 'paid_members_enabled') === true; // The save/edit-view affordance: admins only, posts only, not while a // default view is active, and only with something actually filtered. @@ -69,8 +73,7 @@ export function PostsListScreen({resource}: {resource: PostResource}) { ...view, route: 'posts' }], params)); const canManageView = canSavePostView({ - // hasAdminAccess, not isAdminUser: Ember's isAdmin includes the Owner. - isAdmin: Boolean(currentUser && hasAdminAccess(currentUser)), + isAdmin, resource, params, isDefaultView: isOnDefaultView @@ -165,9 +168,11 @@ export function PostsListScreen({resource}: {resource: PostResource}) { {items.map(item => ( page.getByTestId(`${resource}-page`).getByRole("link", { name, exact: true }), listItems: () => page.getByTestId("posts-list-item"), + /** The row's main link — the image and title region. */ + rowLink: () => page.getByTestId("post-list-item-link"), + /** A metric column, found by its label ("Opens", "Members", …). */ + metricCell: (label: string) => page.getByTestId("posts-list-item").getByRole("link", { name: new RegExp(label) }).first(), + /** The hover breakdown, which Radix portals out of the row. */ + metricPanel: () => page.getByTestId("post-metric-panel"), + /** The trailing button at a row's end — Analytics, View, or Editor. */ + rowAction: () => page.getByTestId("post-list-item-action"), featuredMarkers: () => page.getByTestId("post-featured"), emptyCold: () => page.getByTestId("posts-empty-cold"), emptyFiltered: () => page.getByTestId("posts-empty-filtered"), diff --git a/packages/testing/test-data/src/builders/post.ts b/packages/testing/test-data/src/builders/post.ts index 21a4505b156..d078cceb2ac 100644 --- a/packages/testing/test-data/src/builders/post.ts +++ b/packages/testing/test-data/src/builders/post.ts @@ -54,7 +54,10 @@ export interface Post { authors?: unknown[]; count?: {clicks: number; positive_feedback: number; negative_feedback: number}; /** Only present when the request includes `email`; set for posts sent as an email. */ - email?: {email_count: number; opened_count: number; status?: string} | null; + // `track_opens`/`track_clicks` are per-email, not per-site: an email sent + // before the setting changed keeps the flags it went out with, and that is + // what decides whether the Opens/Clicks columns show. + email?: {email_count: number; opened_count: number; status?: string; track_opens?: boolean; track_clicks?: boolean} | null; /** Only present when the request includes `newsletter`; the newsletter the email went to. */ newsletter?: {id: string; feedback_enabled?: boolean} | null; created_at: string; From 70aa21988eaaaa161064d092e8926abdae020028 Mon Sep 17 00:00:00 2001 From: Peter Zimon Date: Tue, 4 Aug 2026 18:00:54 +0200 Subject: [PATCH 22/75] Added modifier-click selection to the React posts list MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ref DES-1343 Phase 6 of the Ember→React posts/pages list port, behind the `postsListReact` flag. No checkboxes, as in Ember: cmd-click, shift-click, Cmd+A, Escape, click-away, and a "select mode" while a modifier is held. The idea the whole phase turns on: after Cmd+A the selection is *inverted*, and `selectedIds` stops meaning "the rows chosen" and starts meaning "the rows taken out". That is what lets a bulk action cover posts that were never loaded — it sends a filter rather than 2,000 ids — and nearly every bug available here is a branch that only considered one of the two readings. - the selection is cleared whenever the list's filter changes, as Ember does on every model refresh. Without it, selecting all drafts and then clearing the type filter leaves an inverted selection re-bounded to *every post on the site*, which is what Phase 8 would hand to a bulk delete - the shift range reproduces Ember's asymmetry: forward excludes the anchor, backward includes it. It looks like an accident of Ember's loop, but the range is remembered so the next shift-click can undo it, and an anchor left out survives an undo that should have cleared it - deselecting a row only moves the shift anchor when that row *is* the anchor - click-away ignores clicks inside `role="alertdialog"` as well as `dialog`: Radix renders destructive confirmations as the former, so matching only the latter would clear the selection as the user clicked Delete Two deliberate divergences, both documented at their call sites: shift-clicking the anchor row selects nothing rather than running away to the end of the list, and Cmd+A does nothing for authors and contributors rather than building a phantom selection they have no actions for. --- .../posts/list/components/post-list-row.tsx | 21 +- .../posts/list/compute-shift-range.test.ts | 90 ++++++ .../src/posts/list/compute-shift-range.ts | 43 +++ .../posts/list/hooks/use-post-selection.ts | 235 +++++++++++++++ .../posts/list/post-selection-filter.test.ts | 81 +++++ .../src/posts/list/post-selection-filter.ts | 51 ++++ .../posts/list/post-selection-state.test.ts | 225 ++++++++++++++ .../src/posts/list/post-selection-state.ts | 162 ++++++++++ .../src/posts/list/posts-list-screen.tsx | 47 ++- .../posts-list-selection.acceptance.test.tsx | 280 ++++++++++++++++++ .../admin/src/posts/list/posts-list.screen.ts | 11 + 11 files changed, 1239 insertions(+), 7 deletions(-) create mode 100644 apps/admin/src/posts/list/compute-shift-range.test.ts create mode 100644 apps/admin/src/posts/list/compute-shift-range.ts create mode 100644 apps/admin/src/posts/list/hooks/use-post-selection.ts create mode 100644 apps/admin/src/posts/list/post-selection-filter.test.ts create mode 100644 apps/admin/src/posts/list/post-selection-filter.ts create mode 100644 apps/admin/src/posts/list/post-selection-state.test.ts create mode 100644 apps/admin/src/posts/list/post-selection-state.ts create mode 100644 apps/admin/src/posts/list/posts-list-selection.acceptance.test.tsx diff --git a/apps/admin/src/posts/list/components/post-list-row.tsx b/apps/admin/src/posts/list/components/post-list-row.tsx index 052e93f9b5e..47d18f0dcdf 100644 --- a/apps/admin/src/posts/list/components/post-list-row.tsx +++ b/apps/admin/src/posts/list/components/post-list-row.tsx @@ -1,6 +1,6 @@ import {Button} from '@tryghost/shade/components'; import {Inline, Stack, Text} from '@tryghost/shade/primitives'; -import {LucideIcon} from '@tryghost/shade/utils'; +import {cn, LucideIcon} from '@tryghost/shade/utils'; import { didPostEmailFail, getPostDateTooltip, @@ -11,6 +11,7 @@ import { import {hasPostAnalyticsPage, type PostMetricsSettings} from '@/posts/list/post-metrics'; import {PostMetricsCells} from '@/posts/list/components/post-metrics-cells'; import {useState} from 'react'; +import type {MouseEvent as ReactMouseEvent} from 'react'; import type {PostListItem} from '@/posts/list/hooks/use-posts-list'; import type {PostResource} from '@/posts/list/post-resource'; @@ -26,6 +27,10 @@ interface PostListRowProps { /** Owner or Administrator — the roles Ember's `isAdmin` covers. */ hasAdminAccess?: boolean; paidMembersEnabled?: boolean; + isSelected?: boolean; + /** Capture-phase, so it beats the row's own link. */ + onSelectMouseDown?: (event: ReactMouseEvent, id: string) => void; + onSelectClick?: (event: ReactMouseEvent) => void; metricsSettings: PostMetricsSettings; visitorCounts?: Record; memberCounts?: Record; @@ -83,6 +88,7 @@ function FeatureImage({post}: {post: PostListItem}) { export function PostListRow({ post, resource, timezone, isContributor, hasAdminAccess, paidMembersEnabled, + isSelected, onSelectMouseDown, onSelectClick, metricsSettings, visitorCounts, memberCounts }: PostListRowProps) { const [isHovered, setIsHovered] = useState(false); @@ -111,8 +117,19 @@ export function PostListRow({ return (
  • onSelectMouseDown?.(event, post.id)} onMouseEnter={() => { setIsHovered(true); }} diff --git a/apps/admin/src/posts/list/compute-shift-range.test.ts b/apps/admin/src/posts/list/compute-shift-range.test.ts new file mode 100644 index 00000000000..eedbfd44aad --- /dev/null +++ b/apps/admin/src/posts/list/compute-shift-range.test.ts @@ -0,0 +1,90 @@ +import {computeShiftRange} from './compute-shift-range'; +import {describe, expect, it} from 'vitest'; + +/** + * Shift-click selects everything between the last-clicked row and this one. + * + * In Ember this walks the three infinity models in bucket order as if they were + * one flat list. Our composed array already *is* that flat list, so the whole + * thing collapses to a slice between two indexes — which is why it gets its own + * pure function and its own tests rather than living inside the reducer. + * + * Ember's walk is **asymmetric**, and that asymmetry is load-bearing. Going + * forward it hits the anchor first, flips its `running` flag and `continue`s, + * so the anchor is skipped. Going backward it hits the *target* first, and + * there is no `continue` on that branch — so the target is taken, and when the + * walk later reaches the anchor it lands in the `else` and takes the anchor + * too. Forward excludes the anchor; backward includes it. + * + * That looks like an accident, but it is observable: the range is remembered so + * the next shift-click can undo it. Excluding the anchor going backward leaves + * it selected after an undo that should have cleared it. + */ + +const ids = ['a', 'b', 'c', 'd', 'e']; + +describe('computeShiftRange', () => { + it('covers the rows after the anchor, excluding it', () => { + expect(computeShiftRange(ids, 'b', 'd')).toEqual(['c', 'd']); + }); + + it('covers the rows before the anchor, including it', () => { + expect(computeShiftRange(ids, 'd', 'b')).toEqual(['b', 'c', 'd']); + }); + + it('covers a single row when the two are adjacent going forward', () => { + expect(computeShiftRange(ids, 'b', 'c')).toEqual(['c']); + }); + + it('covers both rows when the two are adjacent going backward', () => { + expect(computeShiftRange(ids, 'c', 'b')).toEqual(['b', 'c']); + }); + + /** + * A deliberate divergence, and the only one in this file. + * + * Ember's loop enters the endpoint branch, flips `running` on and + * `continue`s — and then never meets a second endpoint to turn it off + * again. Everything below the clicked row is selected, to the end of every + * bucket. Shift-clicking the row you are already anchored to therefore + * means "select to the end of the list" in Ember, which is plainly not + * what anyone intends and is about to be wired to a bulk delete. + * + * Selecting nothing is the conservative reading of an ambiguous gesture. + */ + it('selects nothing when shift-clicking the anchor itself', () => { + expect(computeShiftRange(ids, 'c', 'c')).toEqual([]); + }); + + it('spans the whole list from one end to the other', () => { + expect(computeShiftRange(ids, 'a', 'e')).toEqual(['b', 'c', 'd', 'e']); + }); + + // The composed array is bucket-ordered — scheduled, then drafts, then + // published — so a range spanning a bucket boundary is just a slice. This + // is the case the Ember implementation has to walk three models for. + it('spans a bucket boundary without noticing there was one', () => { + const buckets = ['sched-1', 'sched-2', 'draft-1', 'draft-2', 'pub-1']; + + expect(computeShiftRange(buckets, 'sched-2', 'pub-1')) + .toEqual(['draft-1', 'draft-2', 'pub-1']); + }); + + it('spans a bucket boundary backwards, taking the anchor with it', () => { + const buckets = ['sched-1', 'sched-2', 'draft-1', 'draft-2', 'pub-1']; + + expect(computeShiftRange(buckets, 'draft-2', 'sched-2')) + .toEqual(['sched-2', 'draft-1', 'draft-2']); + }); + + // A row can leave the list between clicks — a bulk edit prunes it, or a + // filter changes. Returning nothing beats throwing or selecting a + // half-range against a stale index. + it('is empty when the anchor is no longer in the list', () => { + expect(computeShiftRange(ids, 'gone', 'c')).toEqual([]); + }); + + it('is empty when the target is no longer in the list', () => { + expect(computeShiftRange(ids, 'c', 'gone')).toEqual([]); + }); +}); diff --git a/apps/admin/src/posts/list/compute-shift-range.ts b/apps/admin/src/posts/list/compute-shift-range.ts new file mode 100644 index 00000000000..d1dc8b9e240 --- /dev/null +++ b/apps/admin/src/posts/list/compute-shift-range.ts @@ -0,0 +1,43 @@ +/** + * The rows a shift-click adds to the selection: everything between the anchor + * (the last row clicked) and the row just clicked. + * + * Ember's version (`shiftItem` in `posts-list/selection-list.js`) walks the + * scheduled, draft and published models in order, flipping a `running` flag as + * it passes either endpoint. It has to, because it has three arrays. We compose + * the buckets into one ordered array upstream, so the same rule is a slice — + * and a slice can't get the boundary conditions subtly wrong. + * + * Ember's walk is asymmetric, and faithfully so. Going forward it meets the + * anchor first, flips `running` on and `continue`s past it — anchor excluded. + * Going backward it meets the *target* first, where there is no `continue`, so + * the target is taken and the anchor is later taken by the `else` branch — + * anchor included. + * + * That reads like an accident of the loop, but it is observable rather than + * cosmetic: the range is remembered so the next shift-click can undo it, and + * an anchor left out of the group survives an undo that should have cleared it. + */ +export function computeShiftRange(orderedIds: string[], anchorId: string, targetId: string): string[] { + const anchor = orderedIds.indexOf(anchorId); + const target = orderedIds.indexOf(targetId); + + // Either row can have left the list since it was clicked — pruned by a bulk + // edit, or filtered away. A stale index would select an arbitrary range. + if (anchor === -1 || target === -1) { + return []; + } + + if (target === anchor) { + // Ember flips `running` on here and never meets a second endpoint to + // turn it off, selecting every row to the end of every bucket. That is + // a runaway about to be wired to a bulk delete, so this is the one + // place the port deliberately differs: an ambiguous gesture selects + // nothing. + return []; + } + + return target > anchor + ? orderedIds.slice(anchor + 1, target + 1) + : orderedIds.slice(target, anchor + 1); +} diff --git a/apps/admin/src/posts/list/hooks/use-post-selection.ts b/apps/admin/src/posts/list/hooks/use-post-selection.ts new file mode 100644 index 00000000000..b76bea03f5a --- /dev/null +++ b/apps/admin/src/posts/list/hooks/use-post-selection.ts @@ -0,0 +1,235 @@ +import {getPostSelectionFilter} from '@/posts/list/post-selection-filter'; +import {initialPostSelection, isPostSelected, postSelectionReducer} from '@/posts/list/post-selection-state'; +import {useCallback, useEffect, useMemo, useReducer, useRef, useState} from 'react'; +import type {MouseEvent as ReactMouseEvent} from 'react'; + +/** + * Modifier-click selection for the posts list, ported from + * `apps/ember-admin/app/components/multi-list/list.js` and `item.js`. + * + * There are no checkboxes: cmd-click, shift-click, Cmd+A, Escape, and an + * unmodified click anywhere clears. That means window-level handlers, which is + * where most of the care here goes. + */ + +interface UsePostSelectionOptions { + /** The rows currently on screen, in display order — shift ranges over this. */ + orderedIds: string[]; + /** The filter bounding an inverted selection. */ + allFilter: string; + /** Off for authors and contributors, who cannot bulk-edit anything. */ + enabled: boolean; +} + +/** + * A modifier-click leaves a text selection behind across the rows it dragged + * over, which looks broken. Ember clears it the same way. + */ +function clearTextSelection() { + const selection = window.getSelection(); + + if (!selection) { + return; + } + + if (selection.empty) { + selection.empty(); + } else if (selection.removeAllRanges) { + selection.removeAllRanges(); + } +} + +export function usePostSelection({orderedIds, allFilter, enabled}: UsePostSelectionOptions) { + const [state, dispatch] = useReducer(postSelectionReducer, initialPostSelection); + + /** + * Whether a modifier is being held right now — Ember's `actionKeyPressed`. + * It puts the list into "select mode": the cursor stops being a pointer and + * the rows stop behaving like links, so what a click is about to do is + * visible before the click happens. + * + * Derived from the event's own modifier flags rather than tracked per key. + * `keydown` and `keyup` both report the state *after* the event, so one + * boolean is enough where Ember keeps three. + */ + const [modifierHeld, setModifierHeld] = useState(false); + + // Read by the window handlers, which are registered once. Keeping these in + // a ref rather than in the dependency list means the listeners aren't torn + // down and rebuilt on every keystroke in the filter bar. + const latest = useRef({orderedIds, enabled}); + latest.current = {orderedIds, enabled}; + + /** + * Ember clears the selection on every model refresh — `clearSelection()` in + * `PostsRoute#setupController`, reached whenever one of the five + * `refreshModel: true` query params changes. + * + * This is not tidiness. After Cmd+A the selection is *inverted* and bounded + * by `allFilter`, which is rebuilt from the URL: select all drafts, drop + * the type filter, and the very same selection now means "every post on the + * site". Carrying it across would hand that to a bulk delete. + */ + const previousFilter = useRef(allFilter); + + useEffect(() => { + if (previousFilter.current !== allFilter) { + previousFilter.current = allFilter; + dispatch({type: 'clear'}); + } + }, [allFilter]); + + useEffect(() => { + function onKeyDown(event: KeyboardEvent) { + if (!latest.current.enabled) { + return; + } + + // Cmd+A belongs to whatever is being typed into. Ember has the + // same flaw against its power-select search boxes, but the + // save-view popover is a React-only surface, so this would be a + // new way to lose what you were typing. + const target = event.target as HTMLElement | null; + const isTyping = target instanceof HTMLInputElement + || target instanceof HTMLTextAreaElement + || target?.isContentEditable === true; + + if (isTyping) { + return; + } + + if ((event.metaKey || event.ctrlKey) && !event.shiftKey && event.key === 'a') { + dispatch({type: 'selectAll'}); + // Otherwise the browser selects every word on the page too. + event.preventDefault(); + return; + } + + if (event.key === 'Escape') { + dispatch({type: 'clear'}); + } + } + + function syncModifier(event: KeyboardEvent | MouseEvent) { + setModifierHeld(event.metaKey || event.ctrlKey || event.shiftKey); + } + + // A keyup that never arrives — Cmd+Tab away mid-chord — would otherwise + // leave the list stuck in select mode with nothing clickable. + function onWindowBlur() { + setModifierHeld(false); + } + + function onWindowClick(event: MouseEvent) { + if (!latest.current.enabled) { + return; + } + + // A click inside an open menu or dialog is not "clicking away" — + // without this, confirming "Delete 12 posts?" would clear the very + // selection the confirm handler is about to read. + // + // `alertdialog` is listed separately because Radix's AlertDialog — + // which is exactly what a destructive confirmation uses — renders + // that role and *not* `dialog`, so matching only `dialog` would + // miss the one case that matters most. + // + // Ember has no target check at all here; it freezes the selection + // list while its menu is open instead. Scoping by role is the same + // guarantee without the freeze/unfreeze machinery. + const target = event.target as HTMLElement | null; + + if (target?.closest('[role="menu"], [role="dialog"], [role="alertdialog"], [role="listbox"]')) { + return; + } + + if (!event.metaKey && !event.ctrlKey) { + dispatch({type: 'clear'}); + } + } + + window.addEventListener('keydown', onKeyDown); + window.addEventListener('keydown', syncModifier); + window.addEventListener('keyup', syncModifier); + window.addEventListener('click', onWindowClick); + window.addEventListener('click', syncModifier); + window.addEventListener('blur', onWindowBlur); + + return () => { + window.removeEventListener('keydown', onKeyDown); + window.removeEventListener('keydown', syncModifier); + window.removeEventListener('keyup', syncModifier); + window.removeEventListener('click', onWindowClick); + window.removeEventListener('click', syncModifier); + window.removeEventListener('blur', onWindowBlur); + }; + }, []); + + /** + * Bound to each row's `mousedown` in the **capture** phase. Mousedown + * rather than click because only mousedown can `preventDefault()` the + * browser's own text selection; capture because it has to win against the + * row's link before the browser starts navigating. + */ + const onRowMouseDown = useCallback((event: ReactMouseEvent, id: string) => { + if (!latest.current.enabled) { + return; + } + + // The metric links and the trailing action button opt out — a + // cmd-click there should follow the link, not select the row. + if ((event.target as HTMLElement).closest('[data-ignore-select]')) { + return; + } + + const useCtrl = event.ctrlKey || event.metaKey; + + if (useCtrl) { + dispatch({type: 'toggle', id}); + } else if (event.shiftKey) { + dispatch({type: 'shift', id, orderedIds: latest.current.orderedIds}); + } else { + return; + } + + event.preventDefault(); + event.stopPropagation(); + clearTextSelection(); + }, []); + + /** + * The matching capture-phase `click`. Its whole job is to stop a modifier + * click from navigating, and to stop it reaching the window handler that + * would immediately clear what was just selected. + */ + const onRowClick = useCallback((event: ReactMouseEvent) => { + if (!latest.current.enabled) { + return; + } + + if ((event.target as HTMLElement).closest('[data-ignore-select]')) { + return; + } + + if (!event.ctrlKey && !event.metaKey && !event.shiftKey) { + return; + } + + event.preventDefault(); + event.stopPropagation(); + clearTextSelection(); + }, []); + + const filter = useMemo(() => getPostSelectionFilter(state, allFilter), [state, allFilter]); + + return { + state, + filter, + modifierHeld: enabled && modifierHeld, + isSelected: useCallback((id: string) => enabled && isPostSelected(state, id), [enabled, state]), + selectAll: useCallback(() => dispatch({type: 'selectAll'}), []), + clear: useCallback(() => dispatch({type: 'clear'}), []), + onRowMouseDown, + onRowClick + }; +} diff --git a/apps/admin/src/posts/list/post-selection-filter.test.ts b/apps/admin/src/posts/list/post-selection-filter.test.ts new file mode 100644 index 00000000000..5adb1b38371 --- /dev/null +++ b/apps/admin/src/posts/list/post-selection-filter.test.ts @@ -0,0 +1,81 @@ +import {describe, expect, it} from 'vitest'; +import {getPostSelectionFilter, type PostSelection} from './post-selection-filter'; + +/** + * The highest-stakes string in the port: this is what gets appended to + * `DELETE /posts/?filter=` and `PUT /posts/bulk?filter=`. A wrong branch here + * doesn't misrender something — it edits or deletes the wrong posts. + * + * Ported branch-for-branch from the `filter` getter in + * `apps/ember-admin/app/components/posts-list/selection-list.js`. + */ + +const selection = (overrides: Partial = {}): PostSelection => ({ + selectedIds: new Set(), + inverted: false, + ...overrides +}); + +describe('getPostSelectionFilter', () => { + // Not the empty string: an empty filter means "everything", so getting this + // branch wrong turns "delete nothing" into "delete the whole site". + it('matches nothing when nothing is selected', () => { + expect(getPostSelectionFilter(selection(), '')).toBe('id:nothing'); + }); + + it('still matches nothing when a filter is active but nothing is selected', () => { + expect(getPostSelectionFilter(selection(), 'status:draft')).toBe('id:nothing'); + }); + + it('lists the ids of an ordinary selection', () => { + expect(getPostSelectionFilter(selection({selectedIds: new Set(['a', 'b'])}), '')) + .toBe('id:[\'a\',\'b\']'); + }); + + // An ordinary selection ignores the list's filter entirely — the ids are + // already the complete answer. + it('ignores the active filter for an ordinary selection', () => { + expect(getPostSelectionFilter(selection({selectedIds: new Set(['a'])}), 'status:draft')) + .toBe('id:[\'a\']'); + }); + + describe('after Select All', () => { + // Empty means unbounded, which is exactly right here and exactly wrong + // in the "nothing selected" case above. + it('matches everything when the list is unfiltered', () => { + expect(getPostSelectionFilter(selection({inverted: true}), '')).toBe(''); + }); + + it('matches the list filter when one is active', () => { + expect(getPostSelectionFilter(selection({inverted: true}), 'status:draft')) + .toBe('status:draft'); + }); + + // The parenthesis matters: without it the `+` would bind against the + // last term of the filter rather than the whole of it. + it('subtracts deselected ids from the list filter', () => { + expect(getPostSelectionFilter( + selection({inverted: true, selectedIds: new Set(['a', 'b'])}), + 'status:draft' + )).toBe('(status:draft)+id:-[\'a\',\'b\']'); + }); + + it('subtracts deselected ids with no filter to intersect', () => { + expect(getPostSelectionFilter( + selection({inverted: true, selectedIds: new Set(['a'])}), + '' + )).toBe('id:-[\'a\']'); + }); + }); + + // Insertion order, as Ember's Set does — so the string is stable across + // renders and a request can be compared against an expectation. + it('emits ids in the order they were selected', () => { + const ids = new Set(); + ids.add('c'); + ids.add('a'); + ids.add('b'); + + expect(getPostSelectionFilter(selection({selectedIds: ids}), '')).toBe('id:[\'c\',\'a\',\'b\']'); + }); +}); diff --git a/apps/admin/src/posts/list/post-selection-filter.ts b/apps/admin/src/posts/list/post-selection-filter.ts new file mode 100644 index 00000000000..65fdfc52dec --- /dev/null +++ b/apps/admin/src/posts/list/post-selection-filter.ts @@ -0,0 +1,51 @@ +/** + * The NQL filter describing the current selection. + * + * This is what bulk actions send to the server — `DELETE /posts/?filter=…` and + * `PUT /posts/bulk?filter=…` — so it is the string with the largest blast + * radius in the whole screen. Ported branch-for-branch from the `filter` getter + * in `apps/ember-admin/app/components/posts-list/selection-list.js`. + * + * The reason it isn't just a list of ids: after Cmd+A the selection is + * *inverted* — "everything matching the list's filter, except these" — and may + * cover posts that were never loaded into the browser. Enumerating ids would + * silently act on only the first few pages. + */ + +export interface PostSelection { + /** + * While `inverted`, these are the ids the user has taken *out* of the + * selection rather than put into it. + */ + selectedIds: Set; + inverted: boolean; +} + +function idList(ids: Set): string { + return `'${[...ids].join('\',\'')}'`; +} + +/** + * @param allFilter the filter describing the list the user is looking at, which + * bounds an inverted selection. Empty means an unfiltered list. + */ +export function getPostSelectionFilter(selection: PostSelection, allFilter: string): string { + const {selectedIds, inverted} = selection; + + if (inverted) { + if (allFilter) { + // Parenthesised: `+` binds tighter than the filter's own operators, + // so without them the subtraction would apply to its last term. + return selectedIds.size === 0 + ? allFilter + : `(${allFilter})+id:-[${idList(selectedIds)}]`; + } + + // No bound and nothing removed: everything. An empty filter is the only + // way to say that, which is why the branch below can't share it. + return selectedIds.size === 0 ? '' : `id:-[${idList(selectedIds)}]`; + } + + // Deliberately not `''` — that would mean "everything" to the server. + return selectedIds.size === 0 ? 'id:nothing' : `id:[${idList(selectedIds)}]`; +} diff --git a/apps/admin/src/posts/list/post-selection-state.test.ts b/apps/admin/src/posts/list/post-selection-state.test.ts new file mode 100644 index 00000000000..2c795b68055 --- /dev/null +++ b/apps/admin/src/posts/list/post-selection-state.test.ts @@ -0,0 +1,225 @@ +import {describe, expect, it} from 'vitest'; +import { + getPostSelectionCount, + initialPostSelection, + isPostSelected, + isSinglePostSelected, + postSelectionReducer, + type PostSelectionAction, + type PostSelectionState +} from './post-selection-state'; + +/** + * Selection semantics, ported from `posts-list/selection-list.js`. + * + * The load-bearing idea: after Select All the selection is *inverted*, and + * `selectedIds` flips meaning from "the chosen rows" to "the rows taken out". + * Every operation has to read correctly in both modes, and most of the bugs + * available here are a branch that only considered one of them. + */ + +const ids = ['a', 'b', 'c', 'd', 'e']; + +function run(actions: PostSelectionAction[], from: PostSelectionState = initialPostSelection): PostSelectionState { + return actions.reduce(postSelectionReducer, from); +} + +const selected = (state: PostSelectionState) => ids.filter(id => isPostSelected(state, id)); + +describe('postSelectionReducer', () => { + describe('toggle', () => { + it('selects an unselected row', () => { + expect(selected(run([{type: 'toggle', id: 'b'}]))).toEqual(['b']); + }); + + it('deselects a selected row', () => { + expect(selected(run([{type: 'toggle', id: 'b'}, {type: 'toggle', id: 'b'}]))).toEqual([]); + }); + + it('anchors the next shift-click on the row just toggled', () => { + expect(run([{type: 'toggle', id: 'b'}]).lastSelectedId).toBe('b'); + }); + + // Otherwise a shift-click after deselecting would range from a row the + // user just took out of the selection. + it('drops the anchor when the anchored row is deselected', () => { + expect(run([{type: 'toggle', id: 'b'}, {type: 'toggle', id: 'b'}]).lastSelectedId).toBeNull(); + }); + + // Ember only clears the anchor when the row being deselected *is* the + // anchor; deselecting any other row leaves it where it was. Moving the + // anchor onto a just-deselected row would make the next shift-click + // range from somewhere the user did not choose. + it('leaves the anchor alone when a different row is deselected', () => { + const state = run([ + {type: 'toggle', id: 'c'}, + {type: 'toggle', id: 'a'}, + {type: 'toggle', id: 'c'} + ]); + + expect(state.lastSelectedId).toBe('a'); + }); + + it('ranges from the untouched anchor on the shift-click that follows', () => { + const state = run([ + {type: 'toggle', id: 'c'}, + {type: 'toggle', id: 'a'}, + {type: 'toggle', id: 'c'}, + {type: 'shift', id: 'e', orderedIds: ids} + ]); + + expect(selected(state)).toEqual(['a', 'b', 'c', 'd', 'e']); + }); + + it('takes a row out of an inverted selection', () => { + const state = run([{type: 'selectAll'}, {type: 'toggle', id: 'b'}]); + + expect(state.inverted).toBe(true); + expect(selected(state)).toEqual(['a', 'c', 'd', 'e']); + }); + }); + + describe('shift', () => { + it('falls back to a plain toggle with no anchor', () => { + expect(selected(run([{type: 'shift', id: 'c', orderedIds: ids}]))).toEqual(['c']); + }); + + it('selects the range from the anchor', () => { + const state = run([{type: 'toggle', id: 'b'}, {type: 'shift', id: 'd', orderedIds: ids}]); + + expect(selected(state)).toEqual(['b', 'c', 'd']); + }); + + // The anchor does not move — Ember's `shiftItem` never reassigns it — + // so a second shift-click re-ranges from the original click. + it('re-ranges from the same anchor and undoes the previous range', () => { + const state = run([ + {type: 'toggle', id: 'b'}, + {type: 'shift', id: 'e', orderedIds: ids}, + {type: 'shift', id: 'c', orderedIds: ids} + ]); + + expect(state.lastSelectedId).toBe('b'); + expect(selected(state)).toEqual(['b', 'c']); + }); + + // A row selected by hand before the shift must survive the undo, which + // is why the previous range is remembered rather than recomputed. + it('leaves rows selected outside the previous range alone', () => { + const state = run([ + {type: 'toggle', id: 'e'}, + {type: 'toggle', id: 'a'}, + {type: 'shift', id: 'c', orderedIds: ids}, + {type: 'shift', id: 'b', orderedIds: ids} + ]); + + expect(selected(state)).toEqual(['a', 'b', 'e']); + }); + + /** + * Inverted shift puts the range *back into* the selection rather than + * taking it out — the opposite of what toggle does in the same mode. + * + * That reads like a bug, and Ember's own source says so: `toggleItem` + * carries a `// Shift behaviour in inverted mode needs a review` + * comment, and no Ember test covers it. It is ported as-is anyway. + * "This looks wrong to me" is not the same as "this diverges from the + * thing we are porting", and fixing it here would make the two + * implementations disagree while the flag is still switchable. + * + * Worth raising as its own issue, then changing in both at once. + */ + it('re-selects the range when inverted, as Ember does', () => { + const state = run([ + {type: 'selectAll'}, + {type: 'toggle', id: 'c'}, + {type: 'toggle', id: 'd'}, + {type: 'shift', id: 'b', orderedIds: ids} + ]); + + // c and d were taken out; the backward range from the d anchor is + // b, c *and* d, and inverted mode puts each of them back — so the + // shift-click undoes both deselections and everything is selected + // again. + expect(selected(state)).toEqual(['a', 'b', 'c', 'd', 'e']); + }); + }); + + describe('selectAll', () => { + it('inverts rather than enumerating, so unloaded rows are covered', () => { + const state = run([{type: 'selectAll'}]); + + expect(state.inverted).toBe(true); + expect(state.selectedIds.size).toBe(0); + expect(selected(state)).toEqual(ids); + }); + + it('toggles back off when pressed again', () => { + expect(run([{type: 'selectAll'}, {type: 'selectAll'}]).inverted).toBe(false); + }); + + // Ember discards the ids on select-all, so a row deselected before it + // doesn't come back as a row deselected after it. + it('discards the previous selection', () => { + const state = run([{type: 'toggle', id: 'b'}, {type: 'selectAll'}]); + + expect(selected(state)).toEqual(ids); + expect(state.lastSelectedId).toBeNull(); + }); + }); + + describe('clear', () => { + it('resets an ordinary selection', () => { + expect(selected(run([{type: 'toggle', id: 'b'}, {type: 'clear'}]))).toEqual([]); + }); + + it('resets an inverted selection rather than leaving everything selected', () => { + const state = run([{type: 'selectAll'}, {type: 'clear'}]); + + expect(state.inverted).toBe(false); + expect(selected(state)).toEqual([]); + }); + }); +}); + +describe('getPostSelectionCount', () => { + it('counts the selected rows', () => { + expect(getPostSelectionCount(run([{type: 'toggle', id: 'b'}]), 100)).toBe(1); + }); + + // Inverted counts against the server's total, not the rows in memory — + // Cmd+A on a 2,000-post site reads 2,000, not the 30 that are loaded. + it('counts everything on the server when inverted', () => { + expect(getPostSelectionCount(run([{type: 'selectAll'}]), 2000)).toBe(2000); + }); + + it('subtracts deselected rows from the total', () => { + const state = run([{type: 'selectAll'}, {type: 'toggle', id: 'b'}, {type: 'toggle', id: 'c'}]); + + expect(getPostSelectionCount(state, 2000)).toBe(1998); + }); + + // Ember floors this at 1. The total lags behind while pages load, so the + // subtraction can otherwise go negative and read "-3 posts selected". + it('never reads below one while inverted', () => { + const state = run([{type: 'selectAll'}, {type: 'toggle', id: 'a'}, {type: 'toggle', id: 'b'}]); + + expect(getPostSelectionCount(state, 1)).toBe(1); + }); +}); + +describe('isSinglePostSelected', () => { + it('is true for exactly one row', () => { + expect(isSinglePostSelected(run([{type: 'toggle', id: 'b'}]))).toBe(true); + }); + + it('is false for two rows', () => { + expect(isSinglePostSelected(run([{type: 'toggle', id: 'b'}, {type: 'toggle', id: 'c'}]))).toBe(false); + }); + + // One *deselected* row is not one selected row — this decides whether the + // context menu offers its single-post actions in Phase 7. + it('is false when inverted, whatever the id count', () => { + expect(isSinglePostSelected(run([{type: 'selectAll'}, {type: 'toggle', id: 'b'}]))).toBe(false); + }); +}); diff --git a/apps/admin/src/posts/list/post-selection-state.ts b/apps/admin/src/posts/list/post-selection-state.ts new file mode 100644 index 00000000000..5149ee87fe3 --- /dev/null +++ b/apps/admin/src/posts/list/post-selection-state.ts @@ -0,0 +1,162 @@ +import {computeShiftRange} from '@/posts/list/compute-shift-range'; + +/** + * Selection state for the posts list, ported from `SelectionList` in + * `apps/ember-admin/app/components/posts-list/selection-list.js`. + * + * A plain reducer rather than a hook so the semantics can be tested as data. + * The freeze/unfreeze machinery Ember uses to hold a selection open while its + * context menu is up is not here — that is a Phase 7 concern, and Radix keeps + * the menu's own state, so it becomes a single "transient" flag instead. + */ + +export interface PostSelectionState { + /** + * While `inverted`, this holds the rows taken *out* of the selection, not + * the rows put into it. Every reader has to account for both meanings. + */ + selectedIds: Set; + inverted: boolean; + /** Where the next shift-click ranges from. */ + lastSelectedId: string | null; + /** + * The rows the previous shift-click added, so the next one can undo them. + * Recomputing the range instead would wrongly undo rows the user had + * selected by hand before shift-clicking. + */ + lastShiftGroup: Set; +} + +export type PostSelectionAction = + | {type: 'toggle'; id: string} + | {type: 'shift'; id: string; orderedIds: string[]} + | {type: 'selectAll'} + | {type: 'clear'}; + +export function createPostSelection(): PostSelectionState { + return { + selectedIds: new Set(), + inverted: false, + lastSelectedId: null, + lastShiftGroup: new Set() + }; +} + +export const initialPostSelection: PostSelectionState = createPostSelection(); + +export function isPostSelected(state: PostSelectionState, id: string): boolean { + return state.inverted ? !state.selectedIds.has(id) : state.selectedIds.has(id); +} + +/** Whether exactly one post is selected — an inverted selection never is. */ +export function isSinglePostSelected(state: PostSelectionState): boolean { + return !state.inverted && state.selectedIds.size === 1; +} + +/** + * @param total the server's count for the current filter. Inverted selections + * cover rows that were never loaded, so the count can't come from the array. + */ +export function getPostSelectionCount(state: PostSelectionState, total: number): number { + if (!state.inverted) { + return state.selectedIds.size; + } + + // Floored at 1, as Ember does: `total` lags behind while pages load, so the + // subtraction can otherwise go negative and read "-3 posts selected". + return Math.max(total - state.selectedIds.size, 1); +} + +function toggle(state: PostSelectionState, id: string): PostSelectionState { + const selectedIds = new Set(state.selectedIds); + const wasPresent = selectedIds.delete(id); + + if (!wasPresent) { + selectedIds.add(id); + } + + // Three outcomes, not two. Selecting a row always anchors it. Deselecting + // only clears the anchor when the row *is* the anchor — deselecting some + // other row leaves the anchor where the user put it. Inverted mode anchors + // on every touch, since there "deselect" is the primary gesture. + let lastSelectedId = state.lastSelectedId; + + if (!wasPresent || state.inverted) { + lastSelectedId = id; + } else if (state.lastSelectedId === id) { + lastSelectedId = null; + } + + return { + selectedIds, + inverted: state.inverted, + lastSelectedId, + lastShiftGroup: new Set() + }; +} + +function shift(state: PostSelectionState, id: string, orderedIds: string[]): PostSelectionState { + if (state.lastSelectedId === null) { + return toggle(state, id); + } + + const selectedIds = new Set(state.selectedIds); + + // Undo the previous range first. In inverted mode "selected" means absent + // from the set, so adding and removing swap over throughout. + state.lastShiftGroup.forEach((previous) => { + if (state.inverted) { + selectedIds.add(previous); + } else { + selectedIds.delete(previous); + } + }); + + const range = computeShiftRange(orderedIds, state.lastSelectedId, id); + + range.forEach((rangeId) => { + if (state.inverted) { + selectedIds.delete(rangeId); + } else { + selectedIds.add(rangeId); + } + }); + + return { + selectedIds, + inverted: state.inverted, + // The anchor deliberately does not move, so a second shift-click + // re-ranges from the original click rather than chaining off the last. + lastSelectedId: state.lastSelectedId, + lastShiftGroup: new Set(range) + }; +} + +export function postSelectionReducer( + state: PostSelectionState, + action: PostSelectionAction +): PostSelectionState { + switch (action.type) { + case 'toggle': + return toggle(state, action.id); + case 'shift': + return shift(state, action.id, action.orderedIds); + case 'selectAll': + // Inverting rather than enumerating is the whole point: it covers rows + // that were never loaded, so a bulk action on a 2,000-post site sends a + // filter instead of 2,000 ids. + return { + selectedIds: new Set(), + inverted: !state.inverted, + lastSelectedId: null, + lastShiftGroup: new Set() + }; + case 'clear': + // A fresh object rather than the shared constant: handing out the same + // Sets everywhere means one stray in-place mutation would corrupt the + // module-level value for the lifetime of the app. + return createPostSelection(); + default: + return state; + } +} diff --git a/apps/admin/src/posts/list/posts-list-screen.tsx b/apps/admin/src/posts/list/posts-list-screen.tsx index 8fb1fa630f6..c1a78877521 100644 --- a/apps/admin/src/posts/list/posts-list-screen.tsx +++ b/apps/admin/src/posts/list/posts-list-screen.tsx @@ -2,7 +2,7 @@ import {Box, Container, Stack, Text} from '@tryghost/shade/primitives'; import {Button, LoadingIndicator} from '@tryghost/shade/components'; import {ListPage} from '@tryghost/shade/page-templates'; import {LoadMoreButton} from '@/shared/virtual-list'; -import {LucideIcon} from '@tryghost/shade/utils'; +import {cn, LucideIcon} from '@tryghost/shade/utils'; import {FilterBar, PageHeader} from '@tryghost/shade/patterns'; import {PostListRow} from './components/post-list-row'; import {PostsEmptyState} from './components/posts-empty-state'; @@ -10,11 +10,13 @@ import {PostsFilters} from './components/posts-filters'; import {ManagePostViewPopover} from './components/manage-post-view-popover'; import {POST_DEFAULT_VIEWS} from '@/layout/app-sidebar/post-sidebar-views'; import {PostsSortMenu} from './components/posts-sort-menu'; +import {buildAllFilter} from './post-query-params'; import {canSavePostView, findActivePostView} from './post-views'; import {usePostViews} from './hooks/use-post-views'; import {getSettingValue, useBrowseSettings} from '@tryghost/admin-x-framework/api/settings'; import {hasAdminAccess, isAuthorOrContributor, isContributorUser} from '@tryghost/admin-x-framework/api/users'; +import {usePostSelection} from './hooks/use-post-selection'; import {type PostResource, getPostResourceCopy} from './post-resource'; import {useCurrentUser} from '@tryghost/admin-x-framework/api/current-user'; import {usePostsFilterState} from './hooks/use-posts-filter-state'; @@ -81,9 +83,8 @@ export function PostsListScreen({resource}: {resource: PostResource}) { // Authors and contributors only ever see their own posts, whatever the // `author` param says — matching PostsRoute#model in the Ember app. - const ownAuthorSlug = currentUser && isAuthorOrContributor(currentUser) - ? currentUser.slug - : null; + const isRestrictedAuthor = Boolean(currentUser && isAuthorOrContributor(currentUser)); + const ownAuthorSlug = currentUser && isRestrictedAuthor ? currentUser.slug : null; const { items, @@ -94,6 +95,16 @@ export function PostsListScreen({resource}: {resource: PostResource}) { fetchNextPage } = usePostsList({resource, params, context: {ownAuthorSlug}}); + // Selection is a bulk-edit affordance, and authors and contributors have no + // bulk actions — Ember disables the whole SelectionList for them. + const selection = usePostSelection({ + orderedIds: items.map(item => item.id), + // Bounds an inverted selection: after Cmd+A a bulk action sends this + // filter rather than every id, so it covers rows never loaded. + allFilter: buildAllFilter(params, {ownAuthorSlug}), + enabled: Boolean(currentUser) && !isRestrictedAuthor + }); + const {visitorCounts, memberCounts} = usePostAnalyticsCounts({ items, webAnalyticsEnabled: metricsSettings.webAnalyticsEnabled, @@ -164,12 +175,36 @@ export function PostsListScreen({resource}: {resource: PostResource}) { // reconciles the page object and re-baselines the // visual-regression shots. - {/* Plain pager for now. Phase 5 adds the From 2fa3e59be0edf8de761438db6bf59d5c8fd2d727 Mon Sep 17 00:00:00 2001 From: Peter Zimon Date: Thu, 6 Aug 2026 09:18:19 +0200 Subject: [PATCH 41/75] Added selection and context menu coverage to the dual e2e suite MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ref DES-1343 Seven behaviours now run against both implementations — 18 tests, all green: the list renders, filtering narrows it, applying a filter writes the URL, a saved view's URL survives a load, the empty state appears, modifier-click selects a row, and right-click opens a menu describing it. The last two took three false starts, every one of which blamed Ember's gesture. The gesture was fine; the helpers were wrong, and each cause was found by probing the real DOM rather than reasoning about it: - Ember writes `data-selected` with an empty value. Glimmer renders `data-selected={{true}}` as a bare attribute and omits it entirely when false, so matching `[data-selected="true"]` made Ember's selection invisible. - Ember's menu carries no menu roles at all — a plain list of `\n \n \n )}\n {showCommentCta && (\n \n )}\n
  • \n \n )}\n\n {/* Latest posts */}\n {showLatestPosts && (\n
    \n

    Keep reading

    \n
    \n
    \n The three latest posts published on your site\n

    Posts sent as an email only will never be shown here.

    \n
    \n
    \n \"Latest\n
    \n
    \n
    \n
    \n Displayed at the bottom of each newsletter\n

    Giving your readers one more place to discover your stories.

    \n
    \n
    \n \"Latest\n
    \n
    \n
    \n
    \n To keep your work front and center\n

    Making sure that your audience stays engaged.

    \n
    \n
    \n \"Latest\n
    \n
    \n
    \n )}\n\n {/* Subscription details */}\n {showSubscriptionDetails && (\n
    \n

    Subscription details

    \n

    You are receiving this because you are a paid subscriber to {siteTitle}. Your subscription will renew on 17 Jul 2024.

    \n
    \n
    \n

    Name: Jamie Larson

    \n

    Email: jamie@example.com

    \n

    Member since: 17 July 2023

    \n
    \n \n Manage subscription\n \n
    \n
    \n )}\n\n {/* Footer */}\n
    \n
    \n\n
    \n {siteTitle} © {currentYear} — \n Unsubscribe\n
    \n\n {showBadge && (\n
    \n \n \n Powered by Ghost\n \n
    \n )}\n
    \n
    \n \n \n \n \n );\n};\n\nexport default NewsletterPreviewContent;\n","import {type Config, hasSendingDomain, isManagedEmail} from '@tryghost/admin-x-framework/api/config';\nimport {type Newsletter} from '@tryghost/admin-x-framework/api/newsletters';\n\nexport const renderSenderEmail = (newsletter: Newsletter, config: Config, defaultEmailAddress: string|undefined) => {\n if (isManagedEmail(config) && !hasSendingDomain(config) && defaultEmailAddress) {\n // Not changeable: sender_email is ignored\n return defaultEmailAddress;\n }\n\n return newsletter.sender_email || defaultEmailAddress || '';\n};\n\nexport const renderReplyToEmail = (newsletter: Newsletter, config: Config, supportEmailAddress: string|undefined, defaultEmailAddress: string|undefined) => {\n if (newsletter.sender_reply_to === 'newsletter') {\n if (isManagedEmail(config)) {\n // No reply-to set\n // sender_reply_to currently doesn't allow empty values, we need to set it to 'newsletter'\n return '';\n }\n return renderSenderEmail(newsletter, config, defaultEmailAddress);\n }\n\n if (newsletter.sender_reply_to === 'support') {\n return supportEmailAddress || defaultEmailAddress || '';\n }\n\n return newsletter.sender_reply_to;\n};\n","import NewsletterPreviewContent from './newsletter-preview-content';\nimport React from 'react';\nimport {type Newsletter} from '@tryghost/admin-x-framework/api/newsletters';\nimport {getSettingValues} from '@tryghost/admin-x-framework/api/settings';\nimport {renderReplyToEmail, renderSenderEmail} from '../../../../utils/newsletter-emails';\nimport {textColorForBackgroundColor} from '@tryghost/color-utils';\nimport {useGlobalData} from '../../../providers/global-data-provider';\n\nconst NewsletterPreview: React.FC<{newsletter: Newsletter}> = ({newsletter}) => {\n const {currentUser, settings, siteData, config} = useGlobalData();\n const [title, icon, commentsEnabled, supportEmailAddress, defaultEmailAddress] = getSettingValues(settings, ['title', 'icon', 'comments_enabled', 'support_email_address', 'default_email_address']);\n\n let headerTitle: string | null = null;\n if (newsletter.show_header_title) {\n headerTitle = title || null;\n } else if (newsletter.show_header_name) {\n headerTitle = newsletter.name;\n }\n\n const headerSubtitle = (newsletter.show_header_title && newsletter.show_header_name) ? newsletter.name : undefined;\n\n const showCommentCta = newsletter.show_comment_cta && commentsEnabled !== 'off';\n const showFeedback = newsletter.feedback_enabled && config.labs.audienceFeedback;\n\n const backgroundColor = () => {\n const value = newsletter.background_color;\n\n const validHex = /#([0-9a-f]{3}){1,2}$/i;\n\n if (validHex.test(value)) {\n return value;\n }\n\n return '#ffffff';\n };\n\n const headerBackgroundColor = () => {\n const value = newsletter.header_background_color;\n\n if (!value || value === 'transparent') {\n return 'transparent';\n }\n\n const validHex = /#([0-9a-f]{3}){1,2}$/i;\n\n if (validHex.test(value)) {\n return value;\n }\n\n return 'transparent';\n };\n\n const buttonColor = () => {\n const value = newsletter.button_color;\n\n const validHex = /#([0-9a-f]{3}){1,2}$/i;\n\n if (validHex.test(value || '')) {\n return value;\n }\n\n if (value === null) {\n const bg = backgroundColor();\n return textColorForBackgroundColor(bg).hex();\n }\n\n return siteData.accent_color;\n };\n\n const buttonTextColor = () => {\n const buttonStyle = newsletter.button_style;\n const calcButtonColor = buttonColor();\n\n if (calcButtonColor && buttonStyle === 'fill') {\n return textColorForBackgroundColor(calcButtonColor).hex();\n }\n\n return undefined;\n };\n\n const linkColor = () => {\n const value = newsletter.link_color === undefined ? 'accent' : newsletter.link_color;\n\n const validHex = /#([0-9a-f]{3}){1,2}$/i;\n\n if (value === 'accent') {\n return siteData.accent_color;\n }\n\n if (validHex.test(value || '')) {\n return value;\n }\n\n return textColorForBackgroundColor(backgroundColor()).hex();\n };\n\n const postTitleColor = () => {\n const value = newsletter.post_title_color;\n\n const validHex = /#([0-9a-f]{3}){1,2}$/i;\n\n if (validHex.test(value || '')) {\n return value;\n }\n\n if (value === 'accent') {\n return siteData.accent_color;\n }\n\n const headerBgColor = headerBackgroundColor();\n const bgColor = headerBgColor === 'transparent' ? backgroundColor() : headerBgColor;\n\n return textColorForBackgroundColor(bgColor).hex();\n };\n\n const sectionTitleColor = () => {\n const value = newsletter.section_title_color;\n\n const validHex = /#([0-9a-f]{3}){1,2}$/i;\n\n if (validHex.test(value || '')) {\n return value;\n }\n\n if (value === 'accent') {\n return siteData.accent_color;\n }\n\n return textColorForBackgroundColor(backgroundColor()).hex();\n };\n\n const dividerColor = () => {\n const value = newsletter.divider_color;\n\n const validHex = /#([0-9a-f]{3}){1,2}$/i;\n\n if (validHex.test(value || '')) {\n return value;\n }\n\n if (value === 'accent') {\n return siteData.accent_color;\n }\n\n return '#e0e7eb';\n };\n\n const textColor = textColorForBackgroundColor(backgroundColor()).hex();\n const secondaryTextColor = textColorForBackgroundColor(backgroundColor()).alpha(0.5).toString();\n\n const headerTextColor = headerBackgroundColor() === 'transparent' ? textColor : textColorForBackgroundColor(headerBackgroundColor()).hex();\n const secondaryHeaderTextColor = headerBackgroundColor() === 'transparent' ? secondaryTextColor : textColorForBackgroundColor(headerBackgroundColor()).alpha(0.5).toString();\n\n type Colors = {\n backgroundColor?: string;\n headerBackgroundColor?: string;\n postTitleColor?: string;\n sectionTitleColor?: string;\n buttonColor?: string;\n buttonTextColor?: string;\n linkColor?: string;\n dividerColor?: string;\n textColor?: string;\n secondaryTextColor?: string;\n headerTextColor?: string;\n secondaryHeaderTextColor?: string;\n }\n\n const colors: Colors = {\n backgroundColor: backgroundColor(),\n headerBackgroundColor: headerBackgroundColor(),\n postTitleColor: postTitleColor() || undefined,\n sectionTitleColor: sectionTitleColor() || undefined,\n buttonColor: buttonColor() || undefined,\n buttonTextColor: buttonTextColor() || undefined,\n linkColor: linkColor() || undefined,\n dividerColor: dividerColor() || undefined,\n textColor,\n secondaryTextColor,\n headerTextColor,\n secondaryHeaderTextColor\n };\n\n return ;\n};\n\nexport default NewsletterPreview;\n","import NewsletterPreview from './newsletter-preview';\nimport NiceModal from '@ebay/nice-modal-react';\nimport React, {useCallback, useEffect, useState} from 'react';\nimport useSettingGroup from '../../../../hooks/use-setting-group';\nimport validator from 'validator';\nimport {Button, ButtonGroup, ColorPickerField, ConfirmationModal, Form, Heading, Hint, HtmlField, Icon, ImageUpload, LimitModal, PreviewModalContent, Select, type SelectOption, Separator, type Tab, TabView, TextArea, TextField, Toggle, ToggleGroup, showToast} from '@tryghost/admin-x-design-system';\nimport {type ErrorMessages, useForm, useHandleError} from '@tryghost/admin-x-framework/hooks';\nimport {HostLimitError, useLimiter} from '../../../../hooks/use-limiter';\nimport {type Newsletter, useBrowseNewsletters, useEditNewsletter} from '@tryghost/admin-x-framework/api/newsletters';\nimport {type RoutingModalProps, useRouting} from '@tryghost/admin-x-framework/routing';\nimport {getImageUrl, useUploadImage} from '@tryghost/admin-x-framework/api/images';\nimport {getSettingValue, getSettingValues} from '@tryghost/admin-x-framework/api/settings';\nimport {hasSendingDomain, isManagedEmail, sendingDomain} from '@tryghost/admin-x-framework/api/config';\nimport {renderReplyToEmail, renderSenderEmail} from '../../../../utils/newsletter-emails';\nimport {textColorForBackgroundColor} from '@tryghost/color-utils';\nimport {useGlobalData} from '../../../providers/global-data-provider';\n\nconst ReplyToEmailField: React.FC<{\n newsletter: Newsletter;\n updateNewsletter: (fields: Partial) => void;\n errors: ErrorMessages;\n validate: () => void;\n clearError: (field: string) => void;\n}> = ({newsletter, updateNewsletter, errors, clearError}) => {\n const {settings, config} = useGlobalData();\n const [defaultEmailAddress, supportEmailAddress] = getSettingValues(settings, ['default_email_address', 'support_email_address']);\n\n // When editing the senderReplyTo, we use a state, so we don't cause jumps when the 'rendering' method decides to change the value\n // Because 'newsletter' 'support' or an empty value can be mapped to a default value, we don't want those changes to happen when entering text\n const [senderReplyTo, setSenderReplyTo] = useState(renderReplyToEmail(newsletter, config, supportEmailAddress, defaultEmailAddress) || '');\n\n let newsletterAddress = renderSenderEmail(newsletter, config, defaultEmailAddress);\n\n const onChange = useCallback((e: React.ChangeEvent) => {\n setSenderReplyTo(e.target.value);\n updateNewsletter({sender_reply_to: e.target.value || 'newsletter'});\n }, [updateNewsletter, setSenderReplyTo]);\n\n const onBlur = () => {\n // Update the senderReplyTo to the rendered value again\n const rendered = renderReplyToEmail(newsletter, config, supportEmailAddress, defaultEmailAddress) || '';\n setSenderReplyTo(rendered);\n };\n\n // Pro users without custom sending domains\n return (\n clearError('sender_reply_to')}\n />\n );\n};\n\nconst Sidebar: React.FC<{\n newsletter: Newsletter;\n onlyOne: boolean;\n updateNewsletter: (fields: Partial) => void;\n validate: () => void;\n errors: ErrorMessages;\n clearError: (field: string) => void;\n}> = ({newsletter, onlyOne, updateNewsletter, validate, errors, clearError}) => {\n const {updateRoute} = useRouting();\n const {mutateAsync: editNewsletter} = useEditNewsletter();\n const limiter = useLimiter();\n const {settings, config, siteData} = useGlobalData();\n const [icon, defaultEmailAddress] = getSettingValues(settings, ['icon', 'default_email_address']);\n const {mutateAsync: uploadImage} = useUploadImage();\n const [selectedTab, setSelectedTab] = useState('generalSettings');\n const {localSettings} = useSettingGroup();\n const [siteTitle] = getSettingValues(localSettings, ['title']) as string[];\n const handleError = useHandleError();\n const {data: {newsletters: apiNewsletters} = {}} = useBrowseNewsletters();\n const commentsEnabled = ['all', 'paid'].includes(getSettingValue(settings, 'comments_enabled') || '');\n\n let newsletterAddress = renderSenderEmail(newsletter, config, defaultEmailAddress);\n const [newsletters, setNewsletters] = useState(apiNewsletters || []);\n const activeNewsletters = newsletters.filter(n => n.status === 'active');\n\n useEffect(() => {\n setNewsletters(apiNewsletters || []);\n }, [apiNewsletters]);\n\n const fontOptions: SelectOption[] = [\n {value: 'serif', label: 'Elegant serif', className: 'font-serif'},\n {value: 'sans_serif', label: 'Clean sans-serif'}\n ];\n\n const fontWeightOptions: Record}> = {\n sans_serif: {\n options: [\n {value: 'normal', label: 'Regular', className: 'font-normal'},\n {value: 'medium', label: 'Medium', className: 'font-medium'},\n {value: 'semibold', label: 'Semi-bold', className: 'font-semibold'},\n {value: 'bold', label: 'Bold', className: 'font-bold'}\n ]\n },\n serif: {\n options: [\n {value: 'normal', label: 'Regular', className: 'font-normal'},\n {value: 'bold', label: 'Bold', className: 'font-bold'}\n ],\n map: {\n medium: 'normal',\n semibold: 'bold'\n }\n }\n };\n\n const backgroundColorIsDark = () => {\n if (newsletter.background_color === 'light') {\n return false;\n }\n return textColorForBackgroundColor(newsletter.background_color).hex().toLowerCase() === '#ffffff';\n };\n\n const confirmStatusChange = async () => {\n if (newsletter.status === 'active') {\n NiceModal.show(ConfirmationModal, {\n title: 'Archive newsletter',\n prompt: <>\n
    Your newsletter {newsletter.name} will no longer be visible to members or available as an option when publishing new posts.
    \n
    Existing posts previously sent as this newsletter will remain unchanged.
    \n ,\n okLabel: 'Archive',\n okColor: 'red',\n onOk: async (modal) => {\n try {\n await editNewsletter({...newsletter, status: 'archived'});\n modal?.remove();\n showToast({\n type: 'success',\n message: 'Newsletter archived'\n });\n } catch (e) {\n handleError(e);\n }\n }\n });\n } else {\n try {\n await limiter?.errorIfWouldGoOverLimit('newsletters');\n } catch (error) {\n if (error instanceof HostLimitError) {\n NiceModal.show(LimitModal, {\n prompt: error.message || `Your current plan doesn't support more newsletters.`,\n onOk: () => updateRoute({route: '/pro', isExternal: true})\n });\n return;\n } else {\n throw error;\n }\n }\n\n NiceModal.show(ConfirmationModal, {\n title: 'Reactivate newsletter',\n prompt: <>\n Reactivating {newsletter.name} will immediately make it visible to members and re-enable it as an option when publishing new posts.\n ,\n okLabel: 'Reactivate',\n onOk: async (modal) => {\n await editNewsletter({...newsletter, status: 'active'});\n modal?.remove();\n showToast({\n type: 'success',\n message: 'Newsletter reactivated'\n });\n }\n });\n }\n };\n\n const renderSenderEmailField = () => {\n // Self-hosters\n if (!isManagedEmail(config)) {\n return (\n updateNewsletter({sender_email: e.target.value})}\n onKeyDown={() => clearError('sender_email')}\n />\n );\n }\n\n // Pro users with custom sending domains\n if (hasSendingDomain(config)) {\n return (\n {\n updateNewsletter({sender_email: e.target.value});\n }}\n onKeyDown={() => clearError('sender_email')}\n />\n );\n }\n\n // Pro users without custom sending domains\n // We're not showing the field since it's not editable\n };\n\n const headingFontWeightOptions = fontWeightOptions[newsletter.title_font_category || 'sans_serif'].options;\n\n // not all weights will be available for all fonts, if it doesn't exist find the closest match\n const getSelectedFontWeightOption = () => {\n const category = newsletter.title_font_category || 'sans_serif';\n const fontWeight = newsletter.title_font_weight;\n const weightMap = fontWeightOptions[category].map;\n const mappedWeight = weightMap ? (weightMap[fontWeight] || fontWeight) : fontWeight;\n const option = headingFontWeightOptions.find(o => o.value === mappedWeight);\n return option || headingFontWeightOptions[0];\n };\n // changing font category changes available weights so we may need to map to the closest match\n const changeSelectedTitleFont = (option: SelectOption | null) => {\n const categoryValue = option?.value || 'sans_serif';\n\n // ensure the weight is valid for the new font by switching to closest match\n const currentWeight = newsletter.title_font_weight;\n let newWeight = currentWeight;\n if (!fontWeightOptions[categoryValue].options.find(o => o.value === currentWeight)) {\n newWeight = fontWeightOptions[categoryValue].map?.[currentWeight] || 'bold';\n }\n\n return updateNewsletter({\n title_font_category: categoryValue,\n title_font_weight: newWeight\n });\n };\n\n const tabs: Tab[] = [\n {\n id: 'generalSettings',\n title: 'General',\n contents:\n <>\n
    \n updateNewsletter({name: e.target.value})}\n onKeyDown={() => clearError('name')}\n />\n \n {submitEnabled && \n }\n />\n }\n \n \n
    \n {user.name}{suspendedText}\n {user.roles[0].name.toLowerCase()}\n
    \n \n \n \n
    \n \n },\n {\n id: 'social-links',\n title: 'Social Links',\n contents: \n },\n {\n id: 'email-notifications',\n title: 'Email Notifications',\n contents: \n }\n ]}\n onTabChange={handleTabChange}\n />\n
    \n \n \n );\n};\n\nconst UserDetailModal: React.FC = ({params}) => {\n const {currentUser} = useGlobalData();\n\n // Skip API call if it's the current user (we already have their data)\n const isCurrentUser = currentUser.slug === params?.slug;\n\n // Fetch user by slug if it's not the current user\n const {data: fetchedUserData} = useGetUserBySlug(\n params?.slug || '',\n {enabled: !isCurrentUser && !!params?.slug}\n );\n\n // Use current user data or fetched user data\n const user = isCurrentUser ? currentUser : fetchedUserData?.users?.[0];\n\n if (user) {\n return ;\n } else {\n return null;\n }\n};\n\nexport default NiceModal.create(UserDetailModal);\n","import React from 'react';\nimport type {NiceModalHocProps} from '@ebay/nice-modal-react';\nimport type {RoutingModalProps} from '@tryghost/admin-x-framework/routing';\n\nimport AboutModal from '../../settings/general/about';\nimport AddIntegrationModal from '../../settings/advanced/integrations/add-integration-modal';\nimport AddNewsletterModal from '../../settings/email/newsletters/add-newsletter-modal';\n// import AddOfferModal from '../../settings/growth/offers/AddOfferModal';\nimport AddRecommendationModal from '../../settings/growth/recommendations/add-recommendation-modal';\nimport AnnouncementBarModal from '../../settings/site/announcement-bar-modal';\nimport CustomIntegrationModal from '../../settings/advanced/integrations/custom-integration-modal';\nimport DesignAndThemeModal from '../../settings/site/design-and-theme-modal';\n// import EditOfferModal from '../../settings/growth/offers/EditOfferModal';\nimport EditRecommendationModal from '../../settings/growth/recommendations/edit-recommendation-modal';\nimport EmbedSignupFormModal from '../../settings/growth/embed-signup/embed-signup-form-modal';\nimport FirstPromoterModal from '../../settings/advanced/integrations/first-promoter-modal';\nimport HistoryModal from '../../settings/advanced/history-modal';\nimport InviteUserModal from '../../settings/general/invite-user-modal';\nimport NavigationModal from '../../settings/site/navigation-modal';\nimport NewsletterDetailModal from '../../settings/email/newsletters/newsletter-detail-modal';\nimport OfferSuccess from '../../settings/growth/offers/offer-success';\n// import OffersModal from '../../settings/growth/offers/OffersIndex';\nimport OffersContainerModal from '../../settings/growth/offers/offers-container-modal';\nimport PinturaModal from '../../settings/advanced/integrations/pintura-modal';\nimport PortalModal from '../../settings/membership/portal/portal-modal';\nimport SlackModal from '../../settings/advanced/integrations/slack-modal';\nimport StripeConnectModal from '../../settings/membership/stripe/stripe-connect-modal';\nimport TestimonialsModal from '../../settings/growth/explore/testimonials-modal';\nimport TierDetailModal from '../../settings/membership/tiers/tier-detail-modal';\nimport TransistorModal from '../../settings/advanced/integrations/transistor-modal';\nimport UnsplashModal from '../../settings/advanced/integrations/unsplash-modal';\nimport UserDetailModal from '../../settings/general/user-detail-modal';\nimport ZapierModal from '../../settings/advanced/integrations/zapier-modal';\n\nconst modals = {\n AddIntegrationModal,\n AddNewsletterModal,\n AddRecommendationModal,\n CustomIntegrationModal,\n DesignAndThemeModal,\n EditRecommendationModal,\n FirstPromoterModal,\n HistoryModal,\n InviteUserModal,\n NavigationModal,\n NewsletterDetailModal,\n PinturaModal,\n PortalModal,\n SlackModal,\n StripeConnectModal,\n TestimonialsModal,\n TierDetailModal,\n TransistorModal,\n UnsplashModal,\n UserDetailModal,\n ZapierModal,\n AnnouncementBarModal,\n EmbedSignupFormModal,\n OffersContainerModal,\n // OffersModal,\n // AddOfferModal,\n // EditOfferModal,\n AboutModal,\n OfferSuccess\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\n} satisfies {[key: string]: ModalComponent};\n\nexport default modals;\n\nexport type ModalName = keyof typeof modals;\nexport type ModalComponent = React.FC;\n"],"names":["DesktopChrome","children","props","jsx","MobileChrome","CHECKBOX_NAME","createCheckboxContext","createContextScope","CheckboxProviderImpl","useCheckboxContext","CheckboxProvider","__scopeCheckbox","checkedProp","defaultChecked","disabled","form","name","onCheckedChange","required","value","internal_do_not_use_render","checked","setChecked","useControllableState","control","setControl","React.useState","bubbleInput","setBubbleInput","hasConsumerStoppedPropagationRef","React.useRef","isFormControl","context","isIndeterminate","isFunction","TRIGGER_NAME","CheckboxTrigger","React.forwardRef","onKeyDown","onClick","checkboxProps","forwardedRef","composedRefs","useComposedRefs","initialCheckedStateRef","React.useEffect","reset","Primitive","getState","composeEventHandlers","event","prevChecked","Checkbox","jsxs","Fragment","CheckboxBubbleInput","INDICATOR_NAME","CheckboxIndicator","forceMount","indicatorProps","Presence","BUBBLE_INPUT_NAME","usePrevious","controlSize","useSize","input","inputProto","bubbles","defaultCheckedRef","title","label","onChange","error","hint","separator","testId","id","useId","handleCheckedChange","isChecked","Heading","CheckboxPrimitive.Root","CheckboxPrimitive.Indicator","Hint","Separator","CheckboxGroup","checkboxes","key","ColorSwatch","hex","size","isSelected","onSelect","ref","useRef","onSelectHandler","e","isTransparent","sizeClass","clsx","ColorIndicator","swatches","swatchSize","onSwatchChange","onTogglePicker","isExpanded","picker","containerClassName","selectedSwatch","swatch","showSwatches","customContent","u","t","n","c","o","a","i","r","s","f","v","d","h","m","l","g","p","b","_","x","C","E","H","L","w","K","I","y","q","D","S","T","F","X","Y","V","$","J","Q","U","W","Z","qe","ke","Ie","Oe","ColorPicker","hexValue","eyedropper","clearButtonValue","inputWrapperRef","stopPropagation","useCallback","_a","_b","_c","inputElement","isUsingColorPicker","stopUsingColorPicker","startUsingColorPicker","openColorPicker","result","useEffect","focusHexInputOnClick","HexColorPicker","HexColorInput","SvgEyedropper","Button","ColorPickerContext","createContext","to6DigitHex","ColorPickerField","direction","alwaysOpen","debounceMs","setExpanded","useState","localValue","setLocalValue","useContext","currentValue","item","closePicker","debouncedOnChange","useMemo","debounce","handleChange","newValue","content","HtmlEditor","singleParagraph","handleSetHtml","html","doc","element","KoenigEditorBase","koenig","HtmlField","hideTitle","clearBg","className","hintClassName","unstyled","textFieldClasses","RADIO_NAME","createRadioContext","createRadioScope","RadioProvider","useRadioContext","Radio","__scopeRadio","onCheck","radioProps","button","setButton","node","RadioBubbleInput","RadioIndicator","ARROW_KEYS","RADIO_GROUP_NAME","createRadioGroupContext","createContextScope2","createRovingFocusGroupScope","useRovingFocusGroupScope","useRadioScope","RadioGroupProvider","useRadioGroupContext","RadioGroup","React2.forwardRef","__scopeRadioGroup","defaultValue","valueProp","orientation","dir","loop","onValueChange","groupProps","rovingFocusGroupScope","useDirection","setValue","jsx2","RovingFocusGroup.Root","Primitive2","ITEM_NAME","RadioGroupItem","itemProps","isDisabled","radioScope","React2.useRef","useComposedRefs2","isArrowKeyPressedRef","React2.useEffect","handleKeyDown","handleKeyUp","RovingFocusGroup.Item","composeEventHandlers2","INDICATOR_NAME2","RadioGroupIndicator","Root2","Item2","Indicator","options","selectedOption","RadioPrimitive.Root","option","RadioPrimitive.Item","RadioPrimitive.Indicator","ToggleGroup","gap","gapClass","ModalPage","heading","Breadcrumbs","items","backIcon","snapBackIcon","onBack","itemClassName","activeItemClassName","separatorClassName","allItems","bcItem","PreviewModalContent","titleHeadingLevel","width","height","sidebar","preview","dirty","cancelLabel","okLabel","okColor","previewToolbar","leftToolbar","rightToolbar","deviceSelector","siteLink","previewToolbarURLs","previewBgColor","selectedURL","previewToolbarTabs","previewToolbarBreadcrumbs","buttonsDisabled","sidebarButtons","sidebarHeader","sidebarPadding","sidebarContentClasses","enableCMDS","backDropClick","onCancel","onOk","afterClose","onSelectURL","onSelectDesktopView","onSelectMobileView","onBreadcrumbsBack","modal","useModal","setGlobalDirtyState","useGlobalDirtyState","handleCMDS","view","setView","toolbarLeft","Select","TabView","selectedIconColorClass","unSelectedIconColorClass","rightButtons","toolbarRight","ButtonGroup","previewBgClass","containerClasses","viewSiteButton","Icon","buttons","confirmIfDirty","Modal","InfiniteScrollListener","offset","onTrigger","intersectionObserver","entries","Menu","trigger","triggerButtonProps","position","open","setOpen","Popover","freeGlobal","freeSelf","root","Symbol","objectProto","hasOwnProperty","nativeObjectToString","symToStringTag","getRawTag","isOwn","tag","unmasked","objectToString","nullTag","undefinedTag","baseGetTag","isObjectLike","isArray","isObject","type","asyncTag","funcTag","genTag","proxyTag","coreJsData","maskSrcKey","uid","isMasked","func","funcProto","funcToString","toSource","reRegExpChar","reIsHostCtor","reIsNative","baseIsNative","pattern","getValue","object","getNative","WeakMap","MAX_SAFE_INTEGER","reIsUint","isIndex","length","eq","other","isLength","isArrayLike","isPrototype","Ctor","proto","baseTimes","iteratee","index","argsTag","baseIsArguments","propertyIsEnumerable","isArguments","stubFalse","freeExports","freeModule","moduleExports","Buffer","nativeIsBuffer","isBuffer","arrayTag","boolTag","dateTag","errorTag","mapTag","numberTag","objectTag","regexpTag","setTag","stringTag","weakMapTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","typedArrayTags","baseIsTypedArray","baseUnary","freeProcess","nodeUtil","types","nodeIsTypedArray","isTypedArray","arrayLikeKeys","inherited","isArr","isArg","isBuff","isType","skipIndexes","overArg","transform","arg","nativeKeys","baseKeys","keys","nativeCreate","hashClear","hashDelete","HASH_UNDEFINED","hashGet","data","hashHas","hashSet","Hash","entry","listCacheClear","assocIndexOf","array","arrayProto","splice","listCacheDelete","lastIndex","listCacheGet","listCacheHas","listCacheSet","ListCache","Map","mapCacheClear","isKeyable","getMapData","map","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","MapCache","arrayPush","values","stackClear","stackDelete","stackGet","stackHas","LARGE_ARRAY_SIZE","stackSet","pairs","Stack","arrayFilter","predicate","resIndex","stubArray","nativeGetSymbols","getSymbols","symbol","baseGetAllKeys","keysFunc","symbolsFunc","getAllKeys","DataView","Promise","Set","promiseTag","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","getTag","ctorString","Uint8Array","setCacheAdd","setCacheHas","SetCache","arraySome","cacheHas","cache","COMPARE_PARTIAL_FLAG","COMPARE_UNORDERED_FLAG","equalArrays","bitmask","customizer","equalFunc","stack","isPartial","arrLength","othLength","arrStacked","othStacked","seen","arrValue","othValue","compared","othIndex","mapToArray","setToArray","set","symbolTag","symbolProto","symbolValueOf","equalByTag","convert","stacked","equalObjects","objProps","objLength","othProps","objStacked","skipCtor","objValue","objCtor","othCtor","baseIsEqualDeep","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","baseIsEqual","isEqual","TableHead","colSpan","sticky","tableCellClasses","PageHeader","left","center","right","leftClasses","centerClasses","rightClasses","useSortableIndexedList","setItems","blank","canAddNewItem","editableItems","setEditableItems","newItem","setNewItem","_.isEqual","updatedItems","current","updatedItem","maxId","max","activeId","overId","fromIndex","toIndex","arrayMove","APIKeyField","text","onRegenerate","copied","setCopied","copyText","APIKeys","IntegrationHeader","icon","detail","extra","useRefreshAPIKey","createMutation","integrationId","apiKeyId","integrationsDataType","newData","currentData","integration","ZapierModal","NiceModal","updateRoute","useRouting","zapierTemplates","useSettingsApp","integrations","useBrowseIntegrations","config","useGlobalData","refreshAPIKey","handleError","useHandleError","regenerated","setRegenerated","zapierDisabled","slug","adminApiKey","_d","handleRegenerate","ConfirmationModal","confirmModal","getGhostPaths","List","template","ListItem","validateThreadsUrl","newUrl","errMessage","validator","threadsHandleToUrl","handle","threadsUrlToHandle","url","ERRORS","isValidBlueskyUsername","username","formatUsername","formattedUsername","validateBlueskyUrl","handleOrUrl","usernameMatch","normalizedUrl","blueskyHandleToUrl","blueskyUrlToHandle","handleMatch","PATH_TYPES","USERNAME_REGEX","PUB_USERNAME_REGEX","LINKEDIN_URL_REGEX","extractInputParts","match","regional","pathType","rawUsername","formatted","slashIndex","maybeType","isValidUsername","buildUrl","validateLinkedInUrl","linkedinHandleToUrl","linkedinUrlToHandle","validateInstagramUrl","invalidUsernameMessage","instagramHandleToUrl","instagramUrlToHandle","validateYouTubeUrl","youtubeHandleToUrl","youtubeUrlToHandle","validateTikTokUrl","tiktokHandleToUrl","normalizedHandle","tiktokUrlToHandle","validateMastodonUrl","instance","rest","userInstance","mastodonHandleToUrl","sanitiseMastodonUrl","TierDetailModalContent","tier","isFreeTier","updateTier","useEditTier","createTier","useAddTier","editSettings","useEditSettings","hasFreeTrial","setHasFreeTrial","React","localSettings","siteData","useSettingGroup","portalPlansJson","getSettingValues","portalPlans","validators","formState","validateCurrencyAmount","saveState","updateForm","handleSave","errors","clearError","okProps","useForm","currencies","newErrors","trialDays","currency","benefit","visible","save","benefits","state","newBenefits","toggleFreeTrial","didInitialRender","confirmTierStatusChange","promptTitle","prompt","showToast","leftButtonProps","Form","TextField","currencySelectGroups","group","CurrencyField","price","Toggle","URLTextField","SortableList","TierDetailPreview","TierDetailModal","params","tiers","isEnd","fetchNextPage","useBrowseTiers","TierDetailModal$1","debug","args","debug_1","MAX_LENGTH","MAX_SAFE_COMPONENT_LENGTH","MAX_SAFE_BUILD_LENGTH","constants","require$$0","require$$1","exports","module","re","safeRe","src","safeSrc","R","LETTERDASHNUMBER","safeRegexReplacements","makeSafeRegex","token","createToken","isGlobal","safe","looseOption","emptyOpts","parseOptions","parseOptions_1","numeric","compareIdentifiers","anum","bnum","identifiers","require$$2","require$$3","require$$4","SemVer$1","SemVer","version","num","release","identifier","identifierBase","base","prerelease","semver","parse","throwErrors","er","parse_1","linkToGitHubReleases","cleanedVersion","semverVersion","semverParse","commitHash","showDatabaseWarning","environment","database","isProduction","AboutModal","upgradeStatus","useUpgradeStatus","copyrightYear","hasDeveloperExperiments","showSystemInfo","GhostLogo","AddIntegrationModal","setName","setErrors","createIntegration","useCreateIntegration","limiter","useLimiter","HostLimitError","LimitModal","AddIntegrationModal$1","AddNewsletterModal","isCheckingLimit","setIsCheckingLimit","limitError","setLimitError","members","useBrowseMembers","addNewsletter","useAddNewsletter","response","subscriberCount","TextArea","numberWithCommas","AddNewsletterModal$1","AddRecommendationModalConfirm","recommendation","animate","route","addRecommendation","useAddRecommendation","trackEvent","validateDescriptionForm","loadingState","AddRecommendationModal","dismissAllToasts","RecommendationDescriptionForm","AddRecommendationModalConfirm$1","doFormatUrl","formatUrl","validateUrl","searchParams","enterPressed","setEnterPressed","checkRecommendation","useCheckRecommendation","initialUrl","initialUrlCleaned","didInitialSubmit","showLoadingView","setShowLoadingView","validatedUrl","defaultTitle","updatedRecommendation","recommendations","existing","AlreadyExistsError","message","LoadingIndicator","AddRecommendationModal$1","wait","timeout","later","IframeBuffering","generateContent","parentClassName","addDelay","visibleIframeIndex","setVisibleIframeIndex","iframes","scrollPosition","setScrollPosition","invisibleIframeIndex","iframe","onLoad","onScroll","Sentry.captureException","getPreviewData","announcementBackgroundColor","announcementContent","visibility","AnnouncementBarPreview","visibilityMemo","injectContentIntoIframe","injectedCss","htmlDoc","stylesheet","originalCSS","finalDoc","Sidebar","announcementTextHandler","accentColor","toggleColorSwatch","toggleVisibility","paidMembersEnabled","onBlur","visibilityCheckboxes","AnnouncementBarModal","updateSetting","announcementVisibility","visibilitySettings","selectedPreviewTab","setSelectedPreviewTab","updateAnnouncementDebouncedRef","latestPost","useBrowsePosts","previewTabs","selectedTabURL","getHomepageUrl","AnnouncementBarModal$1","webhookEventOptions","getWebhookEventLabel","opt","useCreateWebhook","webhook","useEditWebhook","useDeleteWebhook","WebhookModal","createWebhook","editWebhook","WebhookModal$1","WebhooksTable","deleteWebhook","handleDelete","Table","TableRow","TableCell","CustomIntegrationModalContent","editIntegration","useEditIntegration","uploadImage","useUploadImage","contentApiKey","adminKeyRegenerated","setAdminKeyRegenerated","contentKeyRegenerated","setContentKeyRegenerated","apiKey","ImageUpload","file","imageUrl","getImageUrl","CustomIntegrationModal","CustomIntegrationModal$1","ThemeProblemView","problem","handleClick","failure","InvalidThemeModal","fatalErrors","onRetry","warningPrompt","err","ConfirmationModalContent","InvalidThemeModal$1","useCustomFonts","activeThemes","useActiveTheme","activeTheme","supportsCustomFonts","warning","refreshActiveThemeData","getThemeLabel","theme","isDefaultTheme","isLegacyTheme","isActiveTheme","getThemeVersion","ThemeActions","activateTheme","useActivateTheme","deleteTheme","useDeleteTheme","handleActivate","JSONError","handleDownload","apiRoot","downloadFile","actions","menuItems","isDeletableTheme","buttonProps","ThemeList","themes","AdvancedThemeSettings","MarketplaceBgImage","VARIANT_LOOP_INTERVAL","hasVariants","getAllVariants","variants","OfficialThemes","onSelectTheme","officialThemes","useOfficialThemes","variantLoopTheme","setVariantLoopTheme","visibleVariantIdx","setVisibleVariantIdx","setupVariantLoop","loopInterval","showVariants","isVariantLooping","variant","idx","ThemeInstalledModal","installedTheme","onActivate","errorPrompt","activateModal","updatedTheme","ThemeInstalledModal$1","generateVariantOptionValue","ThemePreview","selectedTheme","isInstalling","onInstall","previewMode","setPreviewMode","selectedVariant","setSelectedVariant","previewUrl","variantOptions","installButtonLabel","isDefaultOrLegacyTheme","handleInstall","UploadModalContent","onUpload","FileUpload","ThemeToolbar","currentTab","setCurrentTab","uploadTheme","useUploadTheme","checkThemeLimitError","isThemeLimited","useCheckThemeLimitError","uploadConfig","setUploadConfig","isUploading","setUploading","onClose","onThemeUpload","themeFileName","existingThemeNames","handleThemeUpload","handleUpload","uploadedTheme","hasErrors","_e","ThemeModalContent","ChangeThemeModal","source","themeRef","setSelectedTheme","setInstalling","installedFromMarketplace","setInstalledFromMarketplace","isMounted","setIsMounted","useBrowseThemes","installTheme","useInstallTheme","themeName","titleText","willOverwrite","themeToOverwrite","resolve","performInstallation","newlyInstalledTheme","Portal","to","classNames","container","cancelEvents","createPortal","Me","ge","M","xs","B","Xs","be","N","k","ye","Te","A.createElement","De","ws","qs","He","ve","Ee","Ne","ds","ze","je","Fe","Ae","Ye","We","Se","Re","Ue","Pe","Ce","os","Os","P","G","as","j","is","rs","UnsplashSelector","unsplashProviderConfig","onImageInsert","UnsplashSearchModal","CUSTOM_FONTS","DEFAULT_FONT","SingleValue","optionProps","components","Option","capitalizeWords","str","word","GlobalSettings","settings","unsplashEnabled","showUnsplash","setShowUnsplash","unsplashConfig","useFramework","editor","usePinturaEditor","themesData","themeNameVersion","headingFont","setHeadingFont","bodyFont","setBodyFont","fontClassName","fontName","customHeadingFonts","customBodyFonts","selectFont","selectedHeadingFont","selectedBodyFont","image","global","factory","this","_typeof","obj","_classCallCheck","Constructor","_defineProperties","target","descriptor","_createClass","protoProps","staticProps","_slicedToArray","arr","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","_arr","_n","_i","_s","minLen","_arrayLikeToArray","len","arr2","T_NULL","T_UNDEFINED","T_BOOL","T_BOOLEAN","T_NUMBER","T_STRING","T_DATE","T_REGEX","T_REGEXP","T_ARRAY","T_OBJECT","T_FUNCTION","JS_SIMPLE_TYPES","OP_EXPRESSION","OP_GROUP","OP_PIPELINE","OP_PROJECTION","OP_QUERY","MISSING","valueToFind","sameValueZero","assert","condition","cloneDeep","jsType","objectMap","clone","into","getType","isBoolean","isString","isNumber","isDate","isRegExp","isNil","isNull","isUndefined","inArray","notInArray","truthy","isEmpty","ensureArray","has","prop","each","fn","ctx","objKeys","merge","inputs","reduce","collection","accumulator","intersection","ys","hashes","hashCode","union","flatten","depth","flatten2","iter","unwrap","lhs","rhs","ka","kb","temp","encode","unique","prefix","hash","compare","sortBy","cmp","sorted","groupBy","lookup","findInsertIndex","lo","hi","mid","memoize","_this","memo","_len","_key","field","selector","resolve2","path","isText","acc","resolveObj","names","next","hasNext","filterMissing","traverse","force","removeValue","isOperator","normalize","expr","exprKeys","regex","modifiers","slice","skip","limit","stddev","sampled","sum","correction","avg","moduleApi","_internal","computeValue","ops","setup","systemVariables","redactVariables","elem","redactObj","SYS_VARS","REDACT_VARS","idKey","cls","OPERATORS","accumulate","val","operator","sysVar","$abs","$add","foundDate","$ceil","$divide","$exp","$floor","$ln","$log","msg","$log10","$mod","$multiply","$pow","$round","place","truncate","$sqrt","$subtract","$trunc","places","roundOff","sign","decimals","firstDigit","remainder","lastDigit","_offset","excess","$arrayElemAt","$arrayToObject","newObj","$concatArrays","$filter","asVar","condExpr","tempObj","$in","$indexOfArray","searchValue","start","end","$isArray","$map","inputExpr","asExpr","inExpr","tempKey","$objectToArray","$range","step","$reduce","initialValue","$reverseArray","$size","$slice","$zip","useLongestLength","zipCount","defaults","_loop","$mergeObjects","docs","$and","$or","$not","Lazy","Iterator","isIterator","isFn","dropItem","DONE","LAZY_MAP","LAZY_FILTER","LAZY_TAKE","LAZY_DROP","baseIterator","nextFn","iteratees","buffer","done","bIndex","outer","mIndex","mSize","innerDone","member","pred","self","init","Aggregator","operators","query","pipelineOperators","Query","aggregate","pipeline","Cursor","projection","modifier","callback","criteria","whereOperator","op","_this2","find","remove","$eq","$ne","$in$1","$nin","$lt","compare$1","$lte","$gt","$gte","$mod$1","$regex","$exists","$all","matched","$elemMatch","$size$1","format","$type","createComparison","$eq$1","$ne$1","$gt$1","$lt$1","$gte$1","$lte$1","$nin$1","$cmp","$cond","ifExpr","thenExpr","elseExpr","errorMsg","$switch","validBranch","branch","$ifNull","$dayOfYear","diff","oneDay","$dayOfMonth","$dayOfWeek","$year","$month","$week","yearStart","$hour","$minute","$second","$millisecond","DATE_SYM_TABLE","$dateToString","fmt","date","matches","hdlr","pad","padDigits","number","digits","$literal","$setEquals","$setIntersection","$setDifference","$setUnion","$setIsSubset","$anyElementTrue","$allElementsTrue","$concat","$indexOfBytes","searchStr","valid","$split","$strLenBytes","$strLenCP","$strcasecmp","$substrBytes","count","buf","utf8Encode","validIndex","begin","$substr","$substrCP","$toLower","$toUpper","UTF8_MASK","toUtf8","utf8","$let","varsExpr","varsKeys","expressionOperators","$push","$addToSet","$avg","$first","$last","$max","$mergeObjects$1","$min","$stdDevPop","$stdDevSamp","$sum","groupOperators","$addFields","newFields","$set","$bucket","boundaries","defaultKey","lower","upper","outputExpr","boundType","grouped","iterator","boundKey","$bucketAuto","groupByExpr","bucketCount","coll","approxBucketSize","computeValueOptimized","remaining","ID_KEY","bucketItems","lastBucket","$count","$facet","$group","partitions","$limit","$lookup","joinColl","localField","foreignField","asField","$match","$out","$project","expressionKeys","idOnlyExcludedExpression","validateExpression","processObject","foundSlice","foundExclusion","dropKeys","subExpr","subExprKeys","projectionOperators","nestedObj","objPathValue","check","$redact","$replaceRoot","$sample","$skip","$sort","sortKeys","collationSpec","collationComparator","sortedIndex","indexKeys","COLLATION_STRENGTH","spec","localeOpt","collator","$sortByCount","newExpr","$unwind","includeArrayIndex","preserveNullAndEmptyArrays","tmp","_tmp","_tmp2","_ret","$elemMatch$1","$slice$1","createQueryOperator","$all$1","$elemMatch$2","$eq$2","$exists$1","$gt$2","$gte$2","$in$2","$lt$2","$lte$2","$mod$2","$ne$2","$nin$2","$regex$1","$size$2","$type$1","$and$1","queries","$or$1","$nor","$not$1","$where","$expr","queryOperators","SYSTEM_OPERATORS","enableSystemOperators","addOperators","opClass","newOperators","wrapped","CollectionMixin","VERSION","nodeShim","parser","$V0","$V1","$V2","$V3","$V4","$V5","$V6","$V7","$V8","$V9","$Va","$Vb","$Vc","$Vd","$Ve","$Vf","$Vg","$Vh","$Vi","$Vj","yytext","yyleng","yylineno","yy","yystate","$$","_$","$0","vstack","lstack","table","TERROR","EOF","lexer","sharedState","yyloc","ranges","lex","action","yyval","newState","expected","errStr","lines","ch","oldLines","past","pre","indexed_rule","backup","tempMatch","rules","yy_","$avoiding_name_collisions","YY_START","caretPos","char","Parser","require","toInteger","dirtyNumber","requiredArgs","toDate","argument","argStr","addDays","dirtyDate","dirtyAmount","amount","addMonths","dayOfMonth","endOfDesiredMonth","daysInMonth","add","duration","years","months","weeks","days","hours","minutes","seconds","dateWithMonths","dateWithDays","minutesToAdd","secondsToAdd","msToAdd","finalDate","subDays","subMonths","sub","dateWithoutMonths","dateWithoutDays","minutestoSub","secondstoSub","mstoSub","intervals","formatDateForSQL","scope","escapedValue","now","relDate","nql","lexed","tokens","nqlLang","undefined","CORE_ERROR_TEXT","FUNC_ERROR_TEXT","INVALID_TEMPL_VAR_ERROR_TEXT","MAX_MEMOIZE_SIZE","PLACEHOLDER","CLONE_DEEP_FLAG","CLONE_FLAT_FLAG","CLONE_SYMBOLS_FLAG","WRAP_BIND_FLAG","WRAP_BIND_KEY_FLAG","WRAP_CURRY_BOUND_FLAG","WRAP_CURRY_FLAG","WRAP_CURRY_RIGHT_FLAG","WRAP_PARTIAL_FLAG","WRAP_PARTIAL_RIGHT_FLAG","WRAP_ARY_FLAG","WRAP_REARG_FLAG","WRAP_FLIP_FLAG","DEFAULT_TRUNC_LENGTH","DEFAULT_TRUNC_OMISSION","HOT_COUNT","HOT_SPAN","LAZY_FILTER_FLAG","LAZY_MAP_FLAG","LAZY_WHILE_FLAG","INFINITY","MAX_INTEGER","NAN","MAX_ARRAY_LENGTH","MAX_ARRAY_INDEX","HALF_MAX_ARRAY_LENGTH","wrapFlags","domExcTag","weakSetTag","reEmptyStringLeading","reEmptyStringMiddle","reEmptyStringTrailing","reEscapedHtml","reUnescapedHtml","reHasEscapedHtml","reHasUnescapedHtml","reEscape","reEvaluate","reInterpolate","reIsDeepProp","reIsPlainProp","rePropName","reHasRegExpChar","reTrimStart","reWhitespace","reWrapComment","reWrapDetails","reSplitDetails","reAsciiWord","reForbiddenIdentifierChars","reEscapeChar","reEsTemplate","reFlags","reIsBadHex","reIsBinary","reIsOctal","reLatin","reNoMatch","reUnescapedString","rsAstralRange","rsComboMarksRange","reComboHalfMarksRange","rsComboSymbolsRange","rsComboRange","rsDingbatRange","rsLowerRange","rsMathOpRange","rsNonCharRange","rsPunctuationRange","rsSpaceRange","rsUpperRange","rsVarRange","rsBreakRange","rsApos","rsAstral","rsBreak","rsCombo","rsDigits","rsDingbat","rsLower","rsMisc","rsFitz","rsModifier","rsNonAstral","rsRegional","rsSurrPair","rsUpper","rsZWJ","rsMiscLower","rsMiscUpper","rsOptContrLower","rsOptContrUpper","reOptMod","rsOptVar","rsOptJoin","rsOrdLower","rsOrdUpper","rsSeq","rsEmoji","rsSymbol","reApos","reComboMark","reUnicode","reUnicodeWord","reHasUnicode","reHasUnicodeWord","contextProps","templateCounter","cloneableTags","deburredLetters","htmlEscapes","htmlUnescapes","stringEscapes","freeParseFloat","freeParseInt","nodeIsArrayBuffer","nodeIsDate","nodeIsMap","nodeIsRegExp","nodeIsSet","apply","thisArg","arrayAggregator","setter","arrayEach","arrayEachRight","arrayEvery","arrayIncludes","baseIndexOf","arrayIncludesWith","comparator","arrayMap","arrayReduce","initAccum","arrayReduceRight","asciiSize","baseProperty","asciiToArray","string","asciiWords","baseFindKey","eachFunc","baseFindIndex","fromRight","strictIndexOf","baseIsNaN","baseIndexOfWith","baseMean","baseSum","basePropertyOf","baseReduce","baseSortBy","comparer","baseToPairs","baseTrim","trimmedEndIndex","baseValues","charsStartIndex","strSymbols","chrSymbols","charsEndIndex","countHolders","placeholder","deburrLetter","escapeHtmlChar","escapeStringChar","chr","hasUnicode","hasUnicodeWord","iteratorToArray","replaceHolders","setToPairs","strictLastIndexOf","stringSize","unicodeSize","stringToArray","unicodeToArray","unescapeHtmlChar","unicodeWords","runInContext","Array","Date","Error","Function","Math","Object","RegExp","String","TypeError","idCounter","objectCtorString","oldDash","allocUnsafe","getPrototype","objectCreate","spreadableSymbol","symIterator","defineProperty","ctxClearTimeout","ctxNow","ctxSetTimeout","nativeCeil","nativeFloor","nativeIsFinite","nativeJoin","nativeMax","nativeMin","nativeNow","nativeParseInt","nativeRandom","nativeReverse","metaMap","realNames","symbolToString","lodash","LazyWrapper","LodashWrapper","wrapperClone","baseCreate","baseLodash","chainAll","lazyClone","copyArray","lazyReverse","lazyValue","isRight","getView","iterLength","takeCount","baseWrapperValue","iterIndex","computed","arraySample","baseRandom","arraySampleSize","shuffleSelf","baseClamp","arrayShuffle","assignMergeValue","baseAssignValue","assignValue","baseAggregator","baseEach","baseAssign","copyObject","baseAssignIn","keysIn","baseAt","paths","get","baseClone","isDeep","isFlat","isFull","initCloneArray","isFunc","cloneBuffer","initCloneObject","copySymbolsIn","copySymbols","initCloneByTag","isSet","subValue","isMap","getAllKeysIn","baseConforms","baseConformsTo","baseDelay","setTimeout","baseDifference","includes","isCommon","valuesLength","valuesIndex","createBaseEach","baseForOwn","baseEachRight","baseForOwnRight","baseEvery","baseExtremum","isSymbol","baseFill","toLength","baseFilter","baseFlatten","isStrict","isFlattenable","baseFor","createBaseFor","baseForRight","baseFunctions","baseGet","castPath","toKey","baseGt","baseHas","baseHasIn","baseInRange","baseIntersection","arrays","caches","maxLength","baseInverter","baseInvoke","parent","last","baseIsArrayBuffer","baseIsDate","baseIsMap","baseIsMatch","matchData","noCustomizer","srcValue","baseIsRegExp","baseIsSet","baseIteratee","identity","baseMatchesProperty","baseMatches","property","baseKeysIn","nativeKeysIn","isProto","baseLt","baseMap","getMatchData","matchesStrictComparable","isKey","isStrictComparable","hasIn","baseMerge","srcIndex","baseMergeDeep","safeGet","mergeFunc","isTyped","isArrayLikeObject","cloneTypedArray","isPlainObject","toPlainObject","baseNth","baseOrderBy","orders","getIteratee","compareMultiple","basePick","basePickBy","baseSet","basePropertyDeep","basePullAll","indexOf","basePullAt","indexes","previous","baseUnset","baseRange","baseRepeat","baseRest","setToString","overRest","baseSample","baseSampleSize","nested","baseSetData","baseSetToString","constant","baseShuffle","baseSlice","baseSome","baseSortedIndex","retHighest","low","high","baseSortedIndexBy","valIsNaN","valIsNull","valIsSymbol","valIsUndefined","othIsDefined","othIsNull","othIsReflexive","othIsSymbol","setLow","baseSortedUniq","baseToNumber","baseToString","baseUniq","createSet","seenIndex","baseUpdate","updater","baseWhile","isDrop","baseXor","baseZipObject","assignFunc","valsLength","castArrayLikeObject","castFunction","stringToPath","toString","castRest","castSlice","clearTimeout","cloneArrayBuffer","arrayBuffer","cloneDataView","dataView","cloneRegExp","regexp","cloneSymbol","typedArray","compareAscending","valIsDefined","valIsReflexive","objCriteria","othCriteria","ordersLength","order","composeArgs","partials","holders","isCurried","argsIndex","argsLength","holdersLength","leftIndex","leftLength","rangeLength","isUncurried","composeArgsRight","holdersIndex","rightIndex","rightLength","isNew","getSymbolsIn","createAggregator","initializer","createAssigner","assigner","sources","guard","isIterateeCall","iterable","createBind","isBind","createCtor","wrapper","createCaseFirst","methodName","trailing","createCompounder","words","deburr","thisBinding","createCurry","arity","getHolder","createRecurry","createHybrid","createFind","findIndexFunc","createFlow","flatRest","funcs","prereq","getFuncName","funcName","getData","isLaziable","partialsRight","holdersRight","argPos","ary","isAry","isBindKey","isFlip","holdersCount","newHolders","reorder","createInverter","toIteratee","createMathOperation","createOver","arrayFunc","createPadding","chars","charsLength","createPartial","createRange","toFinite","createRelationalOperation","toNumber","wrapFunc","isCurry","newHoldersRight","newPartials","newPartialsRight","setData","setWrapToString","createRound","precision","pair","noop","createToPairs","createWrap","mergeData","customDefaultsAssignIn","customDefaultsMerge","customOmitClone","otherFunc","transforms","getWrapDetails","hasPath","hasFunc","insertWrapDetails","details","isMaskable","memoizeCapped","srcBitmask","newBitmask","isCombo","otherArgs","oldArray","shortOut","reference","updateWrapDetails","lastCalled","stamp","rand","quote","subString","chunk","compact","concat","difference","differenceBy","differenceWith","drop","dropRight","dropRightWhile","dropWhile","fill","findIndex","findLastIndex","flattenDeep","flattenDepth","fromPairs","head","initial","mapped","intersectionBy","intersectionWith","join","lastIndexOf","nth","pull","pullAll","pullAllBy","pullAllWith","pullAt","reverse","sortedIndexBy","sortedIndexOf","sortedLastIndex","sortedLastIndexBy","sortedLastIndexOf","sortedUniq","sortedUniqBy","tail","take","takeRight","takeRightWhile","takeWhile","unionBy","unionWith","uniq","uniqBy","uniqWith","unzip","unzipWith","without","xor","xorBy","xorWith","zip","zipObject","zipObjectDeep","zipWith","chain","tap","interceptor","thru","wrapperAt","wrapperChain","wrapperCommit","wrapperNext","toArray","wrapperToIterator","wrapperPlant","wrapperReverse","wrapperValue","countBy","every","filter","findLast","flatMap","flatMapDeep","flatMapDepth","forEach","forEachRight","invokeMap","keyBy","orderBy","partition","reduceRight","reject","negate","sample","sampleSize","shuffle","some","after","before","bind","bindKey","curry","curryRight","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","invokeFunc","time","leadingEdge","timerExpired","remainingWait","timeSinceLastCall","timeSinceLastInvoke","timeWaiting","shouldInvoke","trailingEdge","cancel","flush","debounced","isInvoking","defer","delay","flip","resolver","memoized","once","overArgs","funcsLength","partial","partialRight","rearg","spread","throttle","unary","wrap","castArray","cloneWith","cloneDeepWith","conformsTo","gt","gte","isArrayBuffer","isElement","isEqualWith","isError","isFinite","isInteger","isMatch","isMatchWith","isNaN","isNative","isSafeInteger","isWeakMap","isWeakSet","lt","lte","isBinary","toSafeInteger","assign","assignIn","assignInWith","assignWith","at","create","prototype","properties","propsIndex","propsLength","defaultsDeep","mergeWith","findKey","findLastKey","forIn","forInRight","forOwn","forOwnRight","functions","functionsIn","invert","invertBy","invoke","mapKeys","mapValues","omit","omitBy","pickBy","pick","setWith","toPairs","toPairsIn","isArrLike","unset","update","updateWith","valuesIn","clamp","inRange","random","floating","camelCase","capitalize","upperFirst","endsWith","escape","escapeRegExp","kebabCase","lowerCase","lowerFirst","strLength","padEnd","padStart","parseInt","radix","repeat","replace","snakeCase","split","startCase","startsWith","imports","importsKeys","importsValues","isEscaping","isEvaluating","interpolate","reDelimiters","sourceURL","escapeValue","interpolateValue","esTemplateValue","evaluateValue","variable","attempt","toLower","toUpper","trim","trimEnd","trimStart","omission","substring","newEnd","unescape","upperCase","bindAll","methodNames","cond","conforms","defaultTo","flow","flowRight","matchesProperty","method","methodOf","mixin","noConflict","nthArg","over","overEvery","overSome","propertyOf","range","rangeRight","stubObject","stubString","stubTrue","times","toPath","uniqueId","augend","addend","ceil","divide","dividend","divisor","floor","maxBy","mean","meanBy","min","minBy","multiply","multiplier","multiplicand","round","subtract","minuend","subtrahend","sumBy","isFilter","takeName","dropName","checkIteratee","isTaker","lodashFunc","retUnwrapped","isLazy","useLazy","isHybrid","isUnwrapped","onlyLazy","chainName","ms","fmtLong","fmtShort","msAbs","plural","isPlural","env","createDebug","coerce","disable","enable","enabled","destroy","selectColor","namespace","prevTime","enableOverride","namespacesCache","enabledCache","curr","formatter","extend","delimiter","newDebug","namespaces","ns","matchesTemplate","search","searchIndex","templateIndex","starIndex","matchIndex","common","formatArgs","load","useColors","localstorage","warned","lastC","formatters","debugExtended","logicOps","compOps","likeEscapeCharacter","isOp","isLogicOp","isCompOp","isNegationOp","isStatementGroupOp","stringify","json","processRegExp","ignoreCase","MongoToKnex","mode","column","tableName","columnName","relation","_relation","statements","innerWhereStatements","statement","createSubGroup","innerStatement","groupKey","joinFilterStatements","qb","relations","groupedRelations","negateGroup","comp","whereType","innerJoinValue","innerJoinOn","joinType","innerQB","joinFilter","statementColumn","statementOp","statementValue","where","processedStatement","parentMode","_qb","mongoJSON","convertor","mongoKnex","GROUPS","mapQuery","modifiedNQLMongoJSON","mappedObject","mappedValue","combineFilters","primary","secondary","findStatement","rejectStatements","mergeFilters","filters","merged","expandFilters","expansions","expand","expansion","replaced","replaceValue","valueMappings","replacer","from","fmap","mapKeyValues","mapping","updatedQuery","objKey","replaceFilters","replacements","chainTransformers","transformers","transformer","getUsedKeys","usedKeys","subfilter","splitFilter","withKeysFilter","withoutKeysFilter","hasKeys","filterKeys","mongoUtils","parseExpansions","parsed","parsedExpansions","combineNeFilters","andFilters","neFilters","neGroups","neValues","utils","mingo","nqlModule","queryString","api","overrides","isCustomThemeSettingVisible","setting","settingsKeyValueObj","description","logo","coverImage","themeSettings","themeSettingsKeyValueObj","custom","hiddenCustomThemeSettingValue","previewData","ThemeSetting","setSetting","fieldValues","setFieldValues","valueAsString","handleBlur","handleImageUpload","humanizeSettingKey","themeSettingsMap","ThemeSettings","sections","activeThemeName","activeThemeAuthor","section","filteredSettings","previousType","spaceClass","hidingSettings","globalSettings","themeSettingSections","updateGlobalSetting","updateThemeSetting","onTabChange","selectedTab","setSelectedTab","tabs","handleTabChange","DesignModal","useBrowseCustomThemeSettings","editThemeSettings","useEditCustomThemeSettings","refParam","useQueryParams","setFormState","newSettings","updated","themeSettingGroups","groups","previewContent","sidebarContent","DesignAndThemeModal","pathName","themeChangeError","setThemeChangeError","isCheckingInstallation","setIsCheckingInstallation","isThemeLimitCheckReady","noThemeChangesAllowed","installationAllowed","setInstallationAllowed","hasCheckedInstallation","setHasCheckedInstallation","getThemeRefFromUrl","fragment","queryParams","handleThemeLimitError","limitModalConfig","DesignAndThemeModal$1","EmbedSignupPreview","style","generateContentForEmbed","iframeDoc","docString","EmbedSignupSidebar","selectedLayout","handleColorToggle","selectedColor","selectedLabels","handleLabelClick","embedScript","handleLayoutSelect","handleCopyClick","isCopied","loadData","useFilterableApi","loadOptions","labels","MultiSelect","StickyFooter","escapeHtml","unsafe","createCommonjsModule","colorName$1","isArrayish","simpleSwizzle","swizzle","results","colorString","reverseNames","cs","model","abbr","rgba","per","keyword","rgb","hexAlpha","i2","hsl","alpha","hwb","hexDouble","hsla","hwba","colorName","conversions","reverseKeywords","channels","delta","rdif","gdif","bdif","diffc","comparativeDistance","reversed","currentClosestDistance","currentClosestKeyword","distance","z","xyz","t1","t2","t3","smin","lmin","sv","hsv","vmin","sl","wh","bl","ratio","cmyk","lab","y2","x2","z2","hr","lch","ansi","color","mult","rem","integer","chroma","grayscale","hue","hcg","pure","mg","apple","gray","buildGraph","graph","models","deriveBFS","fromModel","queue","adjacents","adjacent","link","wrapConversion","toModel","cur","conversion","wrapRaw","wrappedFn","wrapRounded","routes","routeModels","colorConvert","_slice","skippedModels","hashedModelKeys","limiters","Color","newArr","zeroArray","hashedKeys","roundToPlace","getset","maxfn","lum","chan","color2","lum1","lum2","contrastRatio","yiq","degrees","mixinColor","weight","color1","w1","w2","newAlpha","assertArray","roundTo","channel","textColorForBackgroundColor","background","backgroundColor","white","black","generateCode","layout","i18nEnabled","siteUrl","scriptUrl","dataOptionsString","preferredOrder","sortedKeys","code","EmbedSignupFormModal","setSelectedColor","setSelectedLabels","setSelectedLayout","previewScript","setPreviewScript","generatedScript","setGeneratedScript","setIsCopied","locale","labs","customColor","setCustomColor","defaultConfig","previewCode","generatedCode","addSelectedLabel","selected","chosenLabels","FirstPromoterModal","accountId","setAccountId","firstPromoterEnabled","firstPromoterId","setOkLabel","setEnabled","updates","dataType","useBrowseActions","createInfiniteQuery","originalData","pages","page","nextAction","meta","getLinkTarget","resourceType","getActionTitle","_f","_g","actionName","getContextResource","isBulkAction","HistoryIcon","HistoryAvatar","Avatar","generateAvatarColor","getInitials","HistoryFilterToggle","excludedItems","toggleItem","HistoryFilter","excludedEvents","excludedResources","toggleEventType","toggleResourceType","usersApi","users","user","searchedStaff","setSearchStaff","resetStaff","HistoryActionDescription","contextResource","linkTarget","_h","formatDateForFilter","parts","PAGE_SIZE","HistoryModal","setExcludedEvents","setExcludedResources","isFetchingNextPage","lastPage","otherParams","fetchNext","toggleValue","included","hasActiveFilters","resource","NoValueLabel","InviteUserModal","rolesQuery","useBrowseRoles","assignableRolesQuery","editorBeta","focusRef","email","setEmail","setSaveState","role","setRole","useBrowseUsers","invites","useBrowseInvites","addInvite","useAddInvite","roles","assignableRoles","handleSendInvitation","userEmail","inviteEmail","APIError","roleOptions","allowedRoleOptions","useNavigationEditor","hasNewItem","list","newItems","urlRegex","validateItem","updateItem","currentItem","addItem","removeItem","moveItem","newItemId","isValid","newItemErrors","NavigationItemEditor","baseUrl","labelPlaceholder","urls","NavigationEditForm","navigation","NavigationModal","navigationItems","secondaryNavigationItems","secondaryNavigation","CoverImage","LatestPosts1","LatestPosts2","LatestPosts3","NewsletterPreviewContent","senderName","senderEmail","senderReplyTo","headerImage","headerIcon","headerTitle","headerSubtitle","showPostTitleSection","showExcerpt","titleAlignment","titleFontCategory","titleFontWeight","bodyFontCategory","authorPlaceholder","showCommentCta","showFeatureImage","showFeedback","showLatestPosts","showSubscriptionDetails","siteTitle","footerContent","showBadge","headerBackgroundColor","textColor","secondaryTextColor","headerTextColor","secondaryHeaderTextColor","postTitleColor","sectionTitleColor","dividerColor","buttonColor","buttonTextColor","linkColor","buttonCorners","buttonStyle","imageCorners","linkStyle","dividerStyle","showHeader","currentDate","currentYear","processedFooterContent","emailHeader","isManagedEmail","excerptClasses","GhostOrb","renderSenderEmail","newsletter","defaultEmailAddress","hasSendingDomain","renderReplyToEmail","supportEmailAddress","NewsletterPreview","currentUser","commentsEnabled","bg","calcButtonColor","validHex","headerBgColor","bgColor","colors","ReplyToEmailField","updateNewsletter","setSenderReplyTo","newsletterAddress","rendered","onlyOne","validate","editNewsletter","useEditNewsletter","apiNewsletters","useBrowseNewsletters","getSettingValue","newsletters","setNewsletters","activeNewsletters","fontOptions","fontWeightOptions","backgroundColorIsDark","confirmStatusChange","renderSenderEmailField","headingFontWeightOptions","getSelectedFontWeightOption","category","fontWeight","weightMap","mappedWeight","changeSelectedTitleFont","categoryValue","currentWeight","newWeight","NewsletterDetailModalContent","emailToVerify","toastMessage","sendingDomain","fields","NewsletterDetailModal","NewsletterDetailModal$1","OfferSuccess","offerById","useBrowseOffersById","offer","setOffer","offerLink","setOfferLink","currentOffer","offerUrl","getShareText","discount","currencyToDecimal","handleTwitter","handleFacebook","handleLinkedIn","PortalFrame","href","onDestroyed","portalParent","iframeRef","hasLoaded","setHasLoaded","isInvisible","setIsInvisible","makeVisible","messageListener","loaderClassNames","loaderVisibility","getOfferPortalPreviewUrl","disableBackground","displayTitle","displayDescription","cadence","durationInMonths","status","tierId","portalBase","settingsParam","getTiersCadences","cadences","slugify","ButtonSelect","checkboxClass","calculateAmount","fixedAmount","percentAmount","trialAmount","tierOptions","handleTierChange","selectedTier","typeOptions","durationOptions","handleTypeChange","handleDurationChange","handleAmountTypeChange","handleNameInput","handleTextAreaInput","handleDisplayTitleInput","handleDurationInMonthsInput","handleAmountInput","handleCodeInput","handleTrialAmountInput","amountOptions","filteredDurationOptions","nameLength","setNameLength","nameLengthColor","homepageUrl","parseData","period","AddOfferModal","setHref","activeTiers","getPaidActiveTiers","tierCadenceOptions","addOffer","useAddOffer","setSelectedTier","allOffers","useBrowseOffers","dataset","amountType","prevOverrides","newOverrides","cancelAddOffer","newHref","toast","formatTimestamp","timestamp","updateOffer","editOffer","useEditOffer","createRedemptionFilterUrl","EditOfferModal","OffersRouteHandler","offerId","OffersIndexModal","OffersContainerModal","OffersContainerModal$1","pinturaScreenshot","useUploadFile","formData","PinturaModal","uploadingState","setUploadingState","pinturaEnabled","uploadFile","handleToggleChange","jsUploadRef","cssUploadRef","triggerUpload","prev","files","isDirty","AccountPage","setError","membersSupportAddress","calculatedSupportAddress","fullEmailAddress","emailDomain","getEmailDomain","updateSupportAddress","supportAddress","settingValue","defaultButtonIcons","LookAndFeel","portalButton","portalButtonStyle","portalButtonIcon","portalButtonSignupText","currentIcon","isDefaultIcon","uploadedIcon","setUploadedIcon","handleImageDelete","portalButtonOptions","iconConfig","PortalLink","PortalLinks","isDataAttributes","setIsDataAttributes","allTiers","toggleIsDataAttributes","homePageURL","getPortalPreviewUrl","portalTiers","checkStripeEnabled","portalDefaultPlan","PortalPreview","localTiers","tabContents","SignupOptions","membersSignupAccess","portalName","portalSignupTermsHtml","portalSignupCheckboxRequired","signupTermsMaxLength","signupTermsLength","div","togglePlan","plan","isSignupAllowed","isFreeSignupAllowed","isStripeEnabled","tiersCheckboxes","paidActiveTiers","defaultPlanOptions","arePaidTiersVisible","verifyEmailToken","PortalModal","editTier","verifyToken","getParam","verifyEmail","verifiedSettings","supportEmail","changedSettings","currentSettings","newEmail","currentEmail","newTier","PortalModal$1","SlackModal","slackUrl","slackUsername","testSlack","useTestSlack","handleTestClick","BookmarkThumb","StripeLogo","StripeVerifiedBadge","RETRY_PRODUCT_SAVE_POLL_LENGTH","RETRY_PRODUCT_SAVE_MAX_POLL","Start","onNext","StripeButton","Connect","submitEnabled","setSubmitEnabled","setToken","testMode","setTestMode","fetchActiveTiers","onTokenChange","saveTier","pollTimeout","onSubmit","stripeConnectUrl","Connected","stripeConnectAccountName","stripeConnectLivemode","fetchMembers","isFetchingMembers","deleteStripeSettings","useDeleteStripeSettings","openDisconnectStripeModal","hasActiveStripeSubscriptions","GhostLogoPink","Direct","publishableKey","secretKey","StripeConnectModal","stripeConnectAccountId","setStep","mainModal","stripeEnabled","hasStripeConnectLimit","startFlow","close","contents","StripeConnectModal$1","AliAbdaal","IsaacSaul","JoelWarner","TestimonialsModal","exploreTestimonialsUrl","siteUuid","staffUserName","staffUserEmail","staffUserRole","staffUserProfileImage","prevPlatform","payload","migratedFromOptions","TransistorModal","transistorEnabled","UnsplashModal","EmailNotificationsInputs","setUserData","hasWebmentions","useFeatureFlag","hasStripeEnabled","SettingGroupContent","hasAdminAccess","EmailNotificationsTab","SettingGroup","BAD_PASSWORDS","DISALLOWED_PASSWORDS","validateCharacterOccurrance","stringToTest","allowedOccurancy","charCount","ChangePasswordForm","editPassword","setEditPassword","oldPassword","setOldPassword","newPassword","setNewPassword","confirmNewPassword","setConfirmNewPassword","newPasswordRef","confirmNewPasswordRef","oldPasswordRef","updatePassword","useUpdatePassword","isCurrentUser","password","confirmPassword","blogUrl","blogTitle","blogUrlWithSlash","badPassword","disallowedPassword","showPasswordInputs","buttonLabel","validationErrors","ValidationError","initialView","RoleSelector","optionsArray","isOwnerUser","ownerOption","getStaffToken","createQuery","genStaffToken","StaffToken","newApiKey","newAPI","genConfirmation","BasicInputs","ProfileTab","DetailsInputs","validateField","facebookUrl","setFacebookUrl","facebookHandleToUrl","twitterUrl","setTwitterUrl","twitterHandleToUrl","threadsUrl","setThreadsUrl","blueskyUrl","setBlueskyUrl","linkedinUrl","setLinkedinUrl","instagramUrl","setInstagramUrl","youtubeUrl","setYoutubeUrl","tiktokUrl","setTiktokUrl","mastodonUrl","setMastodonUrl","validateTwitterUrl","twitterUrlToHandle","validateFacebookUrl","facebookUrlToHandle","SocialLinksTab","bio","location","website","facebook","twitter","threads","bluesky","linkedin","instagram","youtube","tiktok","mastodon","UserDetailModalContent","getTabFromPath","lastSegment","ownerUser","useStaffUsers","updateUser","useEditUser","deleteUser","useDeleteUser","makeOwner","useMakeOwner","navigateOnClose","canAccessSettings","confirmSuspend","_user","warningText","updatedUserData","confirmDelete","owner","confirmMakeOwner","showMenu","isEditorUser","isAuthorOrContributor","isAdminUser","suspendUserLabel","noCoverButtonClasses","coverButtonClasses","suspendedText","initialTab","newTabId","urlSegment","UserDetailModal","fetchedUserData","useGetUserBySlug","UserDetailModal$1","modals","EditRecommendationModal"],"mappings":"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","x_google_ignoreList":[2,6,11,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,123,124,125,126,127,128,129,154,156,158,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,193]} \ No newline at end of file diff --git a/apps/admin-x-settings/playwright-report/data/ac055cfdae3db1869ba0431c5516f43587b6f2b9.md b/apps/admin-x-settings/playwright-report/data/ac055cfdae3db1869ba0431c5516f43587b6f2b9.md deleted file mode 100644 index a3f0f7f0655..00000000000 --- a/apps/admin-x-settings/playwright-report/data/ac055cfdae3db1869ba0431c5516f43587b6f2b9.md +++ /dev/null @@ -1,756 +0,0 @@ -# Page snapshot - -```yaml -- generic [ref=e3]: - - button "close" [ref=e5] [cursor=pointer]: - - img "close" - - generic [ref=e6]: - - generic [ref=e9]: - - generic [ref=e11]: - - img - - generic [ref=e12]: - - textbox "Search" [ref=e14]: - - /placeholder: Search settings - - generic [ref=e15]: Search - - generic [ref=e16]: / - - navigation [ref=e17]: - - heading "General settings" [level=2] [ref=e18] - - list [ref=e19]: - - listitem [ref=e20]: - - generic [ref=e21] [cursor=pointer]: - - img "type-cursor" - - text: Title & description - - listitem [ref=e22]: - - generic [ref=e23] [cursor=pointer]: - - img - - text: Timezone - - listitem [ref=e24]: - - generic [ref=e25] [cursor=pointer]: - - img - - text: Publication language - - listitem [ref=e26]: - - generic [ref=e27] [cursor=pointer]: - - img - - text: Staff - - listitem [ref=e28]: - - generic [ref=e29] [cursor=pointer]: - - img - - text: Meta data - - listitem [ref=e30]: - - generic [ref=e31] [cursor=pointer]: - - img - - text: Social accounts - - listitem [ref=e32]: - - generic [ref=e33] [cursor=pointer]: - - img - - text: Analytics - - listitem [ref=e34]: - - generic [ref=e35] [cursor=pointer]: - - img "lock-1" - - text: Make this site private - - heading "Site" [level=2] [ref=e36] - - list [ref=e37]: - - listitem [ref=e38]: - - generic [ref=e39] [cursor=pointer]: - - img - - text: Design & branding - - listitem [ref=e40]: - - generic [ref=e41] [cursor=pointer]: - - img "browser-page-layout" - - text: Theme - - listitem [ref=e42]: - - generic [ref=e43] [cursor=pointer]: - - img "navigation-menu-4" - - text: Navigation - - listitem [ref=e44]: - - generic [ref=e45] [cursor=pointer]: - - img - - text: Announcement bar - - heading "Membership" [level=2] [ref=e46] - - list [ref=e47]: - - listitem [ref=e48]: - - generic [ref=e49] [cursor=pointer]: - - img - - text: Access - - listitem [ref=e50]: - - generic [ref=e51] [cursor=pointer]: - - img - - text: Tiers - - listitem [ref=e52]: - - generic [ref=e53] [cursor=pointer]: - - img - - text: Signup portal - - listitem [ref=e54]: - - generic [ref=e55] [cursor=pointer]: - - img - - text: Welcome emails - - listitem [ref=e56]: - - generic [ref=e57] [cursor=pointer]: - - img - - text: Newsletters - - heading "Growth" [level=2] [ref=e58] - - list [ref=e59]: - - listitem [ref=e60]: - - generic [ref=e61] [cursor=pointer]: - - img - - text: Network - - listitem [ref=e62]: - - generic [ref=e63] [cursor=pointer]: - - img - - text: Ghost Explore - - listitem [ref=e64]: - - generic [ref=e65] [cursor=pointer]: - - img - - text: Recommendations - - listitem [ref=e66]: - - generic [ref=e67] [cursor=pointer]: - - img - - text: Signup forms - - heading "Advanced" [level=2] [ref=e68] - - list [ref=e69]: - - listitem [ref=e70]: - - generic [ref=e71] [cursor=pointer]: - - img "module-three" - - text: Integrations - - listitem [ref=e72]: - - generic [ref=e73] [cursor=pointer]: - - img - - text: Import/Export - - listitem [ref=e74]: - - generic [ref=e75] [cursor=pointer]: - - img - - text: Code injection - - listitem [ref=e76]: - - generic [ref=e77] [cursor=pointer]: - - img - - text: Labs - - listitem [ref=e78]: - - generic [ref=e79] [cursor=pointer]: - - img "time-reverse" - - text: History - - generic [ref=e80] [cursor=pointer]: - - img "Ghost Logo" [ref=e81] - - text: About Ghost - - generic [ref=e83]: - - generic [ref=e84]: - - heading "General settings" [level=2] [ref=e85] - - generic [ref=e86]: - - generic [ref=e87]: - - generic [ref=e88]: - - generic [ref=e89]: - - heading "Title & description" [level=5] [ref=e90] - - paragraph [ref=e91]: The details used to identify your publication around the web - - button "Edit" [ref=e94] [cursor=pointer]: - - generic [ref=e95]: Edit - - generic [ref=e96]: - - generic [ref=e97]: - - heading "Site title" [level=6] [ref=e98] - - generic [ref=e99]: Test Site - - generic [ref=e100]: - - heading "Site description" [level=6] [ref=e101] - - generic [ref=e102]: Thoughts, stories and ideas. - - generic [ref=e103]: - - generic [ref=e105]: - - heading "Site timezone" [level=5] [ref=e106] - - paragraph [ref=e107]: Set the time and date of your publication, used for all published posts - - generic [ref=e109]: - - generic [ref=e110]: Site timezone - - generic [ref=e112]: - - log [ref=e114] - - generic [ref=e116]: - - generic [ref=e117]: (GMT) UTC - - combobox "Site timezone" [ref=e119] - - generic [ref=e123]: The local time here is currently 3/17/2026, 9:49:49 AM - - generic [ref=e124]: - - generic [ref=e126]: - - heading "Publication Language" [level=5] [ref=e127] - - paragraph [ref=e128]: Set the language/locale which is used on your site - - generic [ref=e130]: - - generic [ref=e131]: Site language - - generic [ref=e133]: - - log [ref=e135] - - generic [ref=e137]: - - generic [ref=e138]: English (en) - - combobox "Site language" [ref=e140] - - generic [ref=e144]: - - text: "Default: English (" - - strong [ref=e145]: en - - text: ); find out more about - - link "using Ghost in other languages" [ref=e146] [cursor=pointer]: - - /url: https://ghost.org/docs/faq/translation/ - - generic [ref=e147]: - - generic [ref=e148]: - - heading "Staff" [level=5] [ref=e150] - - button "Invite people" [ref=e152] [cursor=pointer]: - - generic [ref=e153]: Invite people - - generic [ref=e155]: - - generic [ref=e156]: - - generic [ref=e157]: Security settings - - generic [ref=e158]: Require email 2FA codes to be used on all staff logins - - switch [ref=e161] - - generic [ref=e163]: - - generic [ref=e165]: - - heading "Meta data" [level=5] [ref=e166] - - paragraph [ref=e167]: Extra content for search engines and social accounts - - generic [ref=e168]: - - tablist [ref=e169]: - - tablist [ref=e170]: - - tab "Search" [selected] [ref=e171] [cursor=pointer] - - tab "X card" [ref=e172] [cursor=pointer] - - tab "Facebook card" [ref=e173] [cursor=pointer] - - tabpanel [ref=e174]: - - generic [ref=e175]: - - generic [ref=e176]: - - generic [ref=e177]: - - textbox "Meta title" [ref=e179]: - - /placeholder: Test Site - - generic [ref=e181]: Meta title - - generic [ref=e182]: "Recommended: 70 characters" - - generic [ref=e183]: - - textbox "Meta description" [ref=e185]: - - /placeholder: Thoughts, stories and ideas. - - generic [ref=e187]: Meta description - - generic [ref=e188]: "Recommended: 156 characters" - - generic [ref=e190]: - - generic [ref=e191]: Preview - - generic [ref=e192]: - - generic [ref=e193]: - - img "google" [ref=e195] - - generic [ref=e203]: - - img - - generic [ref=e206]: - - generic [ref=e207]: test.com - - generic [ref=e208]: http://test.com - - generic [ref=e209]: - - generic [ref=e210]: Test Site - - generic [ref=e211]: Thoughts, stories and ideas. - - generic [ref=e212]: - - generic [ref=e214]: - - heading "Social accounts" [level=5] [ref=e215] - - paragraph [ref=e216]: Link your social accounts for full structured data and rich card support - - generic [ref=e217]: - - generic [ref=e218]: - - textbox "URL of your publication's Facebook Page" [ref=e220]: - - /placeholder: https://www.facebook.com/ghost - - text: https://www.facebook.com/ghost - - generic [ref=e222]: URL of your publication's Facebook Page - - generic [ref=e223]: - - textbox "URL of your X profile" [ref=e225]: - - /placeholder: https://x.com/ghost - - text: https://x.com/ghost - - generic [ref=e227]: URL of your X profile - - generic [ref=e228]: - - generic [ref=e230]: - - heading "Analytics" [level=5] [ref=e231] - - paragraph [ref=e232]: Decide what data you collect across your publication - - generic [ref=e233]: - - generic [ref=e235]: - - switch "Web analytics Cookie-free, first party traffic analytics for your site" [disabled] [ref=e236] - - generic [ref=e238]: - - generic [ref=e239]: Web analytics - - generic [ref=e240]: Cookie-free, first party traffic analytics for your site - - generic [ref=e243]: - - text: Web analytics in Ghost is powered by - - link "Tinybird" [ref=e244] [cursor=pointer]: - - /url: https://tbrd.co/ghost - - text: and requires configuration to start collecting data. - - link "Get started →" [ref=e245] [cursor=pointer]: - - /url: https://docs.ghost.org/install/docker#tinybird-integration - - generic [ref=e247]: - - switch "Newsletter opens Record when a member opens an email" [checked] [ref=e248] - - generic [ref=e250]: - - generic [ref=e251]: Newsletter opens - - generic [ref=e252]: Record when a member opens an email - - generic [ref=e254]: - - switch "Newsletter clicks Record when a member clicks on any link in an email" [checked] [ref=e255] - - generic [ref=e257]: - - generic [ref=e258]: Newsletter clicks - - generic [ref=e259]: Record when a member clicks on any link in an email - - generic [ref=e261]: - - switch "Member sources Track the traffic sources and posts that drive the most member growth" [checked] [ref=e262] - - generic [ref=e264]: - - generic [ref=e265]: Member sources - - generic [ref=e266]: Track the traffic sources and posts that drive the most member growth - - generic [ref=e268]: - - switch "Outbound link tagging Make it easier for other sites to track the traffic you send them in their analytics" [checked] [ref=e269] - - generic [ref=e271]: - - generic [ref=e272]: Outbound link tagging - - generic [ref=e273]: Make it easier for other sites to track the traffic you send them in their analytics - - link "Learn about analytics" [ref=e275] [cursor=pointer]: - - /url: https://ghost.org/help/post-analytics/ - - generic [ref=e276]: - - generic [ref=e277]: - - generic [ref=e278]: - - heading "Make site private" [level=5] [ref=e279] - - paragraph [ref=e280]: Enable protection with a simple shared password. - - button "Edit" [ref=e283] [cursor=pointer]: - - generic [ref=e284]: Edit - - generic [ref=e288]: - - img "lock-unlock" - - generic [ref=e289]: Your site is not password protected - - generic [ref=e290]: - - heading "Site" [level=2] [ref=e291] - - generic [ref=e292]: - - generic [ref=e293]: - - generic [ref=e294]: - - generic [ref=e295]: - - heading "Design & branding" [level=5] [ref=e296] - - paragraph [ref=e297]: Customize the style and layout of your site - - button "Customize" [ref=e299] [cursor=pointer]: - - generic [ref=e300]: Customize - - img [ref=e302] - - generic [ref=e303]: - - generic [ref=e304]: - - generic [ref=e305]: - - heading "Theme" [level=5] [ref=e306] - - paragraph [ref=e307]: Browse and install official themes or upload one - - button "Change theme" [ref=e309] [cursor=pointer]: - - generic [ref=e310]: Change theme - - generic [ref=e312]: - - heading "Active theme" [level=6] [ref=e313] - - generic [ref=e314]: Loading... - - generic [ref=e316]: - - generic [ref=e317]: - - heading "Navigation" [level=5] [ref=e318] - - paragraph [ref=e319]: Set up primary and secondary menus - - button "Customize" [ref=e321] [cursor=pointer]: - - generic [ref=e322]: Customize - - generic [ref=e324]: - - generic [ref=e325]: - - heading "Announcement bar" [level=5] [ref=e326] - - paragraph [ref=e327]: Highlight important updates or offers - - button "Customize" [ref=e329] [cursor=pointer]: - - generic [ref=e330]: Customize - - generic [ref=e331]: - - heading "Membership" [level=2] [ref=e332] - - generic [ref=e333]: - - generic [ref=e334]: - - generic [ref=e336]: - - heading "Access" [level=5] [ref=e337] - - paragraph [ref=e338]: Set up default access options for subscription and posts - - generic [ref=e339]: - - generic [ref=e340]: - - generic [ref=e341]: Who should be able to subscribe to your site? - - generic [ref=e344]: - - log [ref=e346] - - generic [ref=e348]: - - generic [ref=e349]: Anyone can sign up - - combobox [ref=e350] - - generic [ref=e354]: - - generic [ref=e355]: Who should have access to new posts? - - generic [ref=e358]: - - log [ref=e360] - - generic [ref=e362]: - - generic [ref=e363]: Public - - combobox [ref=e364] - - generic [ref=e368]: - - generic [ref=e369]: Who can comment on posts? - - generic [ref=e372]: - - log [ref=e374] - - generic [ref=e376]: - - generic [ref=e377]: Nobody - - combobox [ref=e378] - - generic [ref=e382]: - - generic [ref=e384]: - - heading "Spam filters" [level=5] [ref=e385] - - paragraph [ref=e386]: Protect your member signups from spam - - generic [ref=e388]: - - textbox "Blocked email domains" [ref=e389]: - - /placeholder: "spam.xyz\njunk.com" - - generic [ref=e390]: Blocked email domains - - generic [ref=e391]: - - text: Prevent unwanted signups by blocking email domains. Add one domain per line, e.g., - - code [ref=e392]: spam.xyz - - text: to block signups from email addresses like - - code [ref=e393]: hello@spam.xyz - - text: . - - generic [ref=e394]: - - generic [ref=e395]: - - generic [ref=e396]: - - heading "Tiers" [level=5] [ref=e397] - - paragraph [ref=e398]: Set prices and paid member sign up settings - - button "Connect with Stripe" [ref=e400] [cursor=pointer]: - - generic [ref=e401]: - - generic [ref=e402]: Connect with Stripe - - img [ref=e403] - - generic [ref=e406]: - - img "money-bags" - - text: No archived tiers found. - - generic [ref=e407]: - - generic [ref=e408]: - - generic [ref=e409]: - - heading "Signup portal" [level=5] [ref=e410] - - paragraph [ref=e411]: Customize members modal signup flow - - button "Customize" [ref=e413] [cursor=pointer]: - - generic [ref=e414]: Customize - - generic [ref=e415]: - - img [ref=e417] - - generic [ref=e418]: - - generic [ref=e419]: - - img [ref=e421] - - generic [ref=e422]: Sign up - - generic [ref=e423]: jamie@example.com - - generic [ref=e424]: - - generic [ref=e425]: Free - - generic [ref=e426]: $0 - - generic [ref=e431]: - - generic [ref=e432]: Silver - - generic [ref=e433]: $5 - - generic [ref=e438]: - - generic [ref=e439]: Gold - - generic [ref=e440]: $10 - - generic [ref=e445]: - - generic [ref=e447]: - - heading "Welcome emails" [level=5] [ref=e448] - - paragraph [ref=e449]: Create and manage automated emails for your members - - table [ref=e452]: - - rowgroup [ref=e453]: - - row "Free members welcome email Welcome to Test Site Edit" [ref=e454]: - - cell "Free members welcome email Welcome to Test Site Edit" [ref=e455]: - - generic [ref=e456]: - - button "Free members welcome email Welcome to Test Site" [ref=e459]: - - generic [ref=e460]: - - img - - generic [ref=e461]: - - generic [ref=e462]: Free members welcome email - - generic [ref=e463]: Welcome to Test Site - - generic [ref=e465]: - - switch [ref=e468] - - button "Edit" [ref=e470] - - generic [ref=e471]: - - heading "Newsletters" [level=2] [ref=e472] - - generic [ref=e473]: - - generic [ref=e474]: - - generic [ref=e475]: - - generic [ref=e476]: - - heading "Newsletter sending" [level=5] [ref=e477] - - paragraph [ref=e478]: Newsletter features are active, posts can be sent by email - - switch [checked] [ref=e482] - - generic [ref=e488]: - - img - - generic [ref=e489]: Enabled - - generic [ref=e490]: - - generic [ref=e492]: - - heading "Default recipients" [level=5] [ref=e493] - - paragraph [ref=e494]: When you publish new content, who do you usually want to send it to? - - generic [ref=e496]: - - generic [ref=e497]: Default Newsletter recipients - - generic [ref=e499]: - - log [ref=e501] - - generic [ref=e503]: - - generic [ref=e504]: Whoever has access to the post - - combobox "Default Newsletter recipients" [ref=e505] - - generic [ref=e509]: Who should receive your posts by default? - - generic [ref=e510]: - - generic [ref=e511]: - - generic [ref=e512]: - - heading "Newsletters" [level=5] [ref=e513] - - paragraph [ref=e514]: Edit details and customize your design - - button "Add newsletter" [ref=e516] [cursor=pointer]: - - generic [ref=e517]: Add newsletter - - generic [ref=e518]: - - tablist [ref=e519]: - - tablist [ref=e520]: - - tab "Active" [selected] [ref=e521] [cursor=pointer] - - tab "Archived" [ref=e522] [cursor=pointer] - - tabpanel [ref=e523]: - - generic [ref=e526]: - - table [ref=e529]: - - rowgroup [ref=e530]: - - row "navigation-menu Awesome newsletter No description 0 Subscribers 0 Delivered Edit" [ref=e531] [cursor=pointer]: - - cell "navigation-menu Awesome newsletter No description 0 Subscribers 0 Delivered Edit" [ref=e532]: - - generic [ref=e533]: - - generic [ref=e534]: - - cell "navigation-menu" [ref=e535]: - - button "navigation-menu" [ref=e536]: - - img "navigation-menu" - - cell "Awesome newsletter No description" [ref=e537]: - - generic [ref=e538]: - - generic [ref=e539]: Awesome newsletter - - generic [ref=e540]: No description - - cell "0 Subscribers" [ref=e541]: - - generic [ref=e542]: - - generic [ref=e543]: "0" - - generic [ref=e544]: Subscribers - - cell "0 Delivered" [ref=e545]: - - generic [ref=e546]: - - generic [ref=e547]: "0" - - generic [ref=e548]: Delivered - - button "Edit" [ref=e550]: - - generic [ref=e551]: Edit - - status [ref=e552] - - generic [ref=e553]: - - generic [ref=e554]: - - generic [ref=e555]: - - heading "Mailgun" [level=5] [ref=e556] - - paragraph [ref=e557]: - - text: The Mailgun API is used for bulk email newsletter delivery. - - link "Why is this required?" [ref=e558] [cursor=pointer]: - - /url: https://ghost.org/docs/faq/mailgun-newsletters/ - - button "Edit" [ref=e561] [cursor=pointer]: - - generic [ref=e562]: Edit - - generic [ref=e564]: - - heading "Status" [level=6] [ref=e565] - - generic [ref=e566]: Mailgun is not set up - - generic [ref=e567]: - - heading "Growth" [level=2] [ref=e568] - - generic [ref=e569]: - - generic [ref=e570]: - - generic [ref=e571]: - - generic [ref=e572]: - - heading "Network" [level=5] [ref=e573] - - paragraph [ref=e574]: Distribute posts to the social web, so people can discover and follow your content across BlueSky, Threads, Mastodon, Flipboard, WordPress, and more. - - switch [ref=e578] - - img [ref=e581] - - generic [ref=e582]: - - generic [ref=e583]: - - generic [ref=e584]: - - heading "Ghost Explore" [level=5] [ref=e585] - - paragraph [ref=e586]: Promote your site across Ghost's website and publishing network - - switch [ref=e590] - - img [ref=e593] - - generic [ref=e594]: - - generic [ref=e595]: - - generic [ref=e596]: - - heading "RecommendationsBeta" [level=5] [ref=e597]: - - text: Recommendations - - superscript [ref=e598]: Beta - - paragraph [ref=e599]: Recommend any publication that your audience will find valuable, and find out when others are recommending you. - - button "Add recommendation" [ref=e601] [cursor=pointer] - - generic [ref=e602]: - - tablist [ref=e603]: - - tablist [ref=e604]: - - tab "Your recommendations" [selected] [ref=e605] [cursor=pointer] - - tab "Recommending you" [ref=e606] [cursor=pointer] - - tabpanel [ref=e607]: - - generic [ref=e609]: - - button "Add first recommendation" [ref=e610] [cursor=pointer]: - - generic [ref=e611]: Add first recommendation - - generic [ref=e612]: - - text: Need inspiration? - - link "Explore thousands of sites" [ref=e613] [cursor=pointer]: - - /url: https://ghost.org/explore - - generic [ref=e615]: - - generic [ref=e616]: - - heading "Signup forms" [level=5] [ref=e617] - - paragraph [ref=e618]: Grow your audience from anywhere on the web - - button "Embed" [ref=e620] [cursor=pointer]: - - generic [ref=e621]: Embed - - generic [ref=e622]: - - heading "Advanced" [level=2] [ref=e623] - - generic [ref=e624]: - - generic [ref=e625]: - - generic [ref=e626]: - - img [ref=e628] - - generic [ref=e629]: - - generic [ref=e631]: - - heading "Integrations" [level=5] [ref=e632] - - paragraph [ref=e633]: Make Ghost work with apps and tools. - - button "Add custom integration" [ref=e634] [cursor=pointer]: - - generic [ref=e635]: Add custom integration - - generic [ref=e636]: - - tablist [ref=e637]: - - tablist [ref=e638]: - - tab "Built-in" [selected] [ref=e639] [cursor=pointer] - - tab "Custom" [ref=e640] [cursor=pointer] - - tabpanel [ref=e641]: - - generic [ref=e644]: - - generic [ref=e648] [cursor=pointer]: - - img "zapier" - - generic [ref=e649]: - - generic [ref=e650]: Zapier - - generic [ref=e651]: Automation for your apps - - generic [ref=e655] [cursor=pointer]: - - img - - generic [ref=e656]: - - generic [ref=e657]: Slack - - generic [ref=e658]: A messaging app for teams - - generic [ref=e662] [cursor=pointer]: - - img "unsplash" - - generic [ref=e663]: - - generic [ref=e665]: - - text: Unsplash - - generic [ref=e666]: Active - - generic [ref=e667]: Beautiful, free photos - - generic [ref=e671] [cursor=pointer]: - - img - - generic [ref=e672]: - - generic [ref=e673]: FirstPromoter - - generic [ref=e674]: Launch your member referral program - - generic [ref=e678] [cursor=pointer]: - - img - - generic [ref=e679]: - - generic [ref=e680]: Pintura - - generic [ref=e681]: Advanced image editing - - generic [ref=e682]: - - generic [ref=e684]: - - heading "Migration tools" [level=5] [ref=e685] - - paragraph [ref=e686]: Import content, members and subscriptions from other platforms or export your Ghost data. - - generic [ref=e687]: - - tablist [ref=e688]: - - tablist [ref=e689]: - - tab "Import" [selected] [ref=e690] [cursor=pointer] - - tab "Export" [ref=e691] [cursor=pointer] - - tabpanel [ref=e692]: - - generic [ref=e694]: - - button "Substack" [ref=e695] [cursor=pointer]: - - img - - text: Substack - - button "WordPress" [ref=e696] [cursor=pointer]: - - img - - text: WordPress - - button "Squarespace" [ref=e697] [cursor=pointer]: - - img - - text: Squarespace - - button "Medium" [ref=e698] [cursor=pointer]: - - img - - text: Medium - - button "Mailchimp" [ref=e699] [cursor=pointer]: - - img - - text: Mailchimp - - button "Universal import" [ref=e700] [cursor=pointer]: - - img - - text: Universal import - - generic [ref=e702]: - - generic [ref=e704]: - - heading "Code injection" [level=5] [ref=e705] - - paragraph [ref=e706]: Add custom code to your publication. - - button "Open" [ref=e707] [cursor=pointer]: - - generic [ref=e708]: Open - - generic [ref=e709]: - - generic [ref=e710]: - - generic [ref=e712]: - - heading "Labs" [level=5] [ref=e713] - - paragraph [ref=e714]: This is a testing ground for new or experimental features. They may change, break or inexplicably disappear at any time. - - button "Open" [ref=e715] [cursor=pointer]: - - generic [ref=e716]: Open - - img [ref=e718] - - generic [ref=e720]: - - generic [ref=e721]: - - heading "History" [level=5] [ref=e722] - - paragraph [ref=e723]: View system event log - - button "View history" [ref=e725] [cursor=pointer]: - - generic [ref=e726]: View history - - generic [ref=e727]: - - generic [ref=e729]: - - heading "Danger zone" [level=5] [ref=e730] - - paragraph [ref=e731]: Permanently delete all posts and tags from the database, a hard reset - - button "Delete all content" [ref=e733] [cursor=pointer]: - - generic [ref=e734]: Delete all content - - generic [ref=e738]: - - generic [ref=e742]: - - generic [ref=e743]: - - paragraph [ref=e744]: - - text: Sender - - generic [ref=e745]: default@example.com - - paragraph [ref=e746]: "To: Jamie Larson jamie@example.com" - - generic [ref=e747]: - - generic [ref=e748]: - - generic [ref=e749]: - - heading "Test Site" [level=4] [ref=e750] - - heading "Updated newsletter" [level=5] [ref=e751] - - generic [ref=e752]: - - heading "Your email newsletter" [level=2] [ref=e753] - - paragraph [ref=e754]: A subtitle to highlight key points and engage your readers. - - generic [ref=e755]: - - paragraph [ref=e756]: By Owner User•Mar 17, 2026 - - paragraph [ref=e757]: View in browser - - img "Feature" [ref=e759] - - generic [ref=e760]: Feature image caption - - generic [ref=e761]: - - generic [ref=e762]: - - paragraph [ref=e763]: This is what your content will look like when you send one of your posts as an email newsletter to your subscribers. - - paragraph [ref=e764]: Over there on the right you'll see some settings that allow you to customize the look and feel of this template – from colors and typography to layout and buttons – to make it perfectly suited to your brand. - - paragraph [ref=e765]: Email templates are exceptionally finnicky to make, but we've spent a long time optimising this one to make it work beautifully across devices, email clients and content types. So, you can trust that every email you send with Ghost will look great and work well. Just like the rest of your site. - - separator [ref=e766] - - heading "Need inspiration?" [level=3] [ref=e767] - - paragraph [ref=e768]: - - text: We've put together a - - link "quick guide" [ref=e769] [cursor=pointer]: - - /url: https://ghost.org/help/email-design/ - - text: that walks through all of the available settings, along with a few examples of what's possible. - - link "Learn more" [ref=e770] [cursor=pointer]: - - /url: https://ghost.org/help/email-design/ - - generic [ref=e772]: - - button "More like this": - - generic: - - img - - generic: More like this - - button "Less like this": - - generic: - - img - - generic: Less like this - - generic [ref=e775]: - - generic [ref=e776]: Test Site © 2026 — - - text: Unsubscribe - - generic [ref=e777]: - - generic [ref=e778]: - - heading "Newsletter" [level=4] [ref=e779] - - generic [ref=e780]: - - button "Close" [ref=e781] [cursor=pointer]: - - generic [ref=e782]: Close - - button "Save" [ref=e783] [cursor=pointer]: - - generic [ref=e784]: Save - - generic [ref=e788]: - - tablist [ref=e789]: - - tablist [ref=e790]: - - tab "General" [ref=e791] [cursor=pointer] - - tab "Content" [active] [selected] [ref=e792] [cursor=pointer] - - tab "Design" [ref=e793] [cursor=pointer] - - tabpanel [ref=e794]: - - generic [ref=e795]: - - generic [ref=e796]: - - heading "Header" [level=5] [ref=e797] - - generic [ref=e798]: - - generic [ref=e799]: - - heading "Header image" [level=6] [ref=e801] - - generic [ref=e802]: - - generic [ref=e806] [cursor=pointer]: - - img "picture-sun" - - generic [ref=e807]: 1200×600 recommended. Use a transparent PNG for best results on any background. - - generic [ref=e808]: - - generic [ref=e810]: - - switch "Publication title" [checked] [ref=e811] - - generic [ref=e814]: Publication title - - generic [ref=e816]: - - switch "Newsletter name" [checked] [ref=e817] - - generic [ref=e820]: Newsletter name - - generic [ref=e821]: - - heading "Title section" [level=5] [ref=e822] - - generic [ref=e823]: - - generic [ref=e825]: - - switch "Post title" [checked] [ref=e826] - - generic [ref=e829]: Post title - - generic [ref=e831]: - - switch "Post excerpt" [checked] [ref=e832] - - generic [ref=e835]: Post excerpt - - generic [ref=e837]: - - switch "Feature image" [checked] [ref=e838] - - generic [ref=e841]: Feature image - - generic [ref=e842]: - - heading "Footer" [level=5] [ref=e843] - - generic [ref=e844]: - - generic [ref=e845]: - - generic [ref=e847]: - - switch "Ask your readers for feedback" [checked] [ref=e848] - - generic [ref=e851]: Ask your readers for feedback - - generic [ref=e853]: - - switch "Share your latest posts" [ref=e854] - - generic [ref=e857]: Share your latest posts - - generic [ref=e859]: - - switch "Show subscription details" [ref=e860] - - generic [ref=e863]: Show subscription details - - generic [ref=e864]: - - generic [ref=e865]: Email footer - - textbox [ref=e871]: - - paragraph [ref=e872] - - generic [ref=e873]: Any extra information or legal text - - generic [ref=e874]: - - generic [ref=e875]: - - img - - generic [ref=e878]: - - switch "Promote independent publishing Show you're a part of the indie publishing movement with a small badge in the footer" [ref=e879] - - generic [ref=e883]: - - generic [ref=e884]: Promote independent publishing - - generic [ref=e885]: Show you're a part of the indie publishing movement with a small badge in the footer -``` \ No newline at end of file diff --git a/apps/admin-x-settings/playwright-report/index.html b/apps/admin-x-settings/playwright-report/index.html deleted file mode 100644 index ae1ccd88e8e..00000000000 --- a/apps/admin-x-settings/playwright-report/index.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - - - Playwright Test Report - - - - -
    - - - \ No newline at end of file diff --git a/apps/admin-x-settings/test-results/.last-run.json b/apps/admin-x-settings/test-results/.last-run.json deleted file mode 100644 index 509de9e287b..00000000000 --- a/apps/admin-x-settings/test-results/.last-run.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "status": "failed", - "failedTests": [ - "66449f20da0a7cf73484-d1b011f4697b27bafae5" - ] -} \ No newline at end of file diff --git a/apps/admin-x-settings/test-results/email-newsletters-Newslett-35e14-ports-updating-a-newsletter-chromium/error-context.md b/apps/admin-x-settings/test-results/email-newsletters-Newslett-35e14-ports-updating-a-newsletter-chromium/error-context.md deleted file mode 100644 index a3f0f7f0655..00000000000 --- a/apps/admin-x-settings/test-results/email-newsletters-Newslett-35e14-ports-updating-a-newsletter-chromium/error-context.md +++ /dev/null @@ -1,756 +0,0 @@ -# Page snapshot - -```yaml -- generic [ref=e3]: - - button "close" [ref=e5] [cursor=pointer]: - - img "close" - - generic [ref=e6]: - - generic [ref=e9]: - - generic [ref=e11]: - - img - - generic [ref=e12]: - - textbox "Search" [ref=e14]: - - /placeholder: Search settings - - generic [ref=e15]: Search - - generic [ref=e16]: / - - navigation [ref=e17]: - - heading "General settings" [level=2] [ref=e18] - - list [ref=e19]: - - listitem [ref=e20]: - - generic [ref=e21] [cursor=pointer]: - - img "type-cursor" - - text: Title & description - - listitem [ref=e22]: - - generic [ref=e23] [cursor=pointer]: - - img - - text: Timezone - - listitem [ref=e24]: - - generic [ref=e25] [cursor=pointer]: - - img - - text: Publication language - - listitem [ref=e26]: - - generic [ref=e27] [cursor=pointer]: - - img - - text: Staff - - listitem [ref=e28]: - - generic [ref=e29] [cursor=pointer]: - - img - - text: Meta data - - listitem [ref=e30]: - - generic [ref=e31] [cursor=pointer]: - - img - - text: Social accounts - - listitem [ref=e32]: - - generic [ref=e33] [cursor=pointer]: - - img - - text: Analytics - - listitem [ref=e34]: - - generic [ref=e35] [cursor=pointer]: - - img "lock-1" - - text: Make this site private - - heading "Site" [level=2] [ref=e36] - - list [ref=e37]: - - listitem [ref=e38]: - - generic [ref=e39] [cursor=pointer]: - - img - - text: Design & branding - - listitem [ref=e40]: - - generic [ref=e41] [cursor=pointer]: - - img "browser-page-layout" - - text: Theme - - listitem [ref=e42]: - - generic [ref=e43] [cursor=pointer]: - - img "navigation-menu-4" - - text: Navigation - - listitem [ref=e44]: - - generic [ref=e45] [cursor=pointer]: - - img - - text: Announcement bar - - heading "Membership" [level=2] [ref=e46] - - list [ref=e47]: - - listitem [ref=e48]: - - generic [ref=e49] [cursor=pointer]: - - img - - text: Access - - listitem [ref=e50]: - - generic [ref=e51] [cursor=pointer]: - - img - - text: Tiers - - listitem [ref=e52]: - - generic [ref=e53] [cursor=pointer]: - - img - - text: Signup portal - - listitem [ref=e54]: - - generic [ref=e55] [cursor=pointer]: - - img - - text: Welcome emails - - listitem [ref=e56]: - - generic [ref=e57] [cursor=pointer]: - - img - - text: Newsletters - - heading "Growth" [level=2] [ref=e58] - - list [ref=e59]: - - listitem [ref=e60]: - - generic [ref=e61] [cursor=pointer]: - - img - - text: Network - - listitem [ref=e62]: - - generic [ref=e63] [cursor=pointer]: - - img - - text: Ghost Explore - - listitem [ref=e64]: - - generic [ref=e65] [cursor=pointer]: - - img - - text: Recommendations - - listitem [ref=e66]: - - generic [ref=e67] [cursor=pointer]: - - img - - text: Signup forms - - heading "Advanced" [level=2] [ref=e68] - - list [ref=e69]: - - listitem [ref=e70]: - - generic [ref=e71] [cursor=pointer]: - - img "module-three" - - text: Integrations - - listitem [ref=e72]: - - generic [ref=e73] [cursor=pointer]: - - img - - text: Import/Export - - listitem [ref=e74]: - - generic [ref=e75] [cursor=pointer]: - - img - - text: Code injection - - listitem [ref=e76]: - - generic [ref=e77] [cursor=pointer]: - - img - - text: Labs - - listitem [ref=e78]: - - generic [ref=e79] [cursor=pointer]: - - img "time-reverse" - - text: History - - generic [ref=e80] [cursor=pointer]: - - img "Ghost Logo" [ref=e81] - - text: About Ghost - - generic [ref=e83]: - - generic [ref=e84]: - - heading "General settings" [level=2] [ref=e85] - - generic [ref=e86]: - - generic [ref=e87]: - - generic [ref=e88]: - - generic [ref=e89]: - - heading "Title & description" [level=5] [ref=e90] - - paragraph [ref=e91]: The details used to identify your publication around the web - - button "Edit" [ref=e94] [cursor=pointer]: - - generic [ref=e95]: Edit - - generic [ref=e96]: - - generic [ref=e97]: - - heading "Site title" [level=6] [ref=e98] - - generic [ref=e99]: Test Site - - generic [ref=e100]: - - heading "Site description" [level=6] [ref=e101] - - generic [ref=e102]: Thoughts, stories and ideas. - - generic [ref=e103]: - - generic [ref=e105]: - - heading "Site timezone" [level=5] [ref=e106] - - paragraph [ref=e107]: Set the time and date of your publication, used for all published posts - - generic [ref=e109]: - - generic [ref=e110]: Site timezone - - generic [ref=e112]: - - log [ref=e114] - - generic [ref=e116]: - - generic [ref=e117]: (GMT) UTC - - combobox "Site timezone" [ref=e119] - - generic [ref=e123]: The local time here is currently 3/17/2026, 9:49:49 AM - - generic [ref=e124]: - - generic [ref=e126]: - - heading "Publication Language" [level=5] [ref=e127] - - paragraph [ref=e128]: Set the language/locale which is used on your site - - generic [ref=e130]: - - generic [ref=e131]: Site language - - generic [ref=e133]: - - log [ref=e135] - - generic [ref=e137]: - - generic [ref=e138]: English (en) - - combobox "Site language" [ref=e140] - - generic [ref=e144]: - - text: "Default: English (" - - strong [ref=e145]: en - - text: ); find out more about - - link "using Ghost in other languages" [ref=e146] [cursor=pointer]: - - /url: https://ghost.org/docs/faq/translation/ - - generic [ref=e147]: - - generic [ref=e148]: - - heading "Staff" [level=5] [ref=e150] - - button "Invite people" [ref=e152] [cursor=pointer]: - - generic [ref=e153]: Invite people - - generic [ref=e155]: - - generic [ref=e156]: - - generic [ref=e157]: Security settings - - generic [ref=e158]: Require email 2FA codes to be used on all staff logins - - switch [ref=e161] - - generic [ref=e163]: - - generic [ref=e165]: - - heading "Meta data" [level=5] [ref=e166] - - paragraph [ref=e167]: Extra content for search engines and social accounts - - generic [ref=e168]: - - tablist [ref=e169]: - - tablist [ref=e170]: - - tab "Search" [selected] [ref=e171] [cursor=pointer] - - tab "X card" [ref=e172] [cursor=pointer] - - tab "Facebook card" [ref=e173] [cursor=pointer] - - tabpanel [ref=e174]: - - generic [ref=e175]: - - generic [ref=e176]: - - generic [ref=e177]: - - textbox "Meta title" [ref=e179]: - - /placeholder: Test Site - - generic [ref=e181]: Meta title - - generic [ref=e182]: "Recommended: 70 characters" - - generic [ref=e183]: - - textbox "Meta description" [ref=e185]: - - /placeholder: Thoughts, stories and ideas. - - generic [ref=e187]: Meta description - - generic [ref=e188]: "Recommended: 156 characters" - - generic [ref=e190]: - - generic [ref=e191]: Preview - - generic [ref=e192]: - - generic [ref=e193]: - - img "google" [ref=e195] - - generic [ref=e203]: - - img - - generic [ref=e206]: - - generic [ref=e207]: test.com - - generic [ref=e208]: http://test.com - - generic [ref=e209]: - - generic [ref=e210]: Test Site - - generic [ref=e211]: Thoughts, stories and ideas. - - generic [ref=e212]: - - generic [ref=e214]: - - heading "Social accounts" [level=5] [ref=e215] - - paragraph [ref=e216]: Link your social accounts for full structured data and rich card support - - generic [ref=e217]: - - generic [ref=e218]: - - textbox "URL of your publication's Facebook Page" [ref=e220]: - - /placeholder: https://www.facebook.com/ghost - - text: https://www.facebook.com/ghost - - generic [ref=e222]: URL of your publication's Facebook Page - - generic [ref=e223]: - - textbox "URL of your X profile" [ref=e225]: - - /placeholder: https://x.com/ghost - - text: https://x.com/ghost - - generic [ref=e227]: URL of your X profile - - generic [ref=e228]: - - generic [ref=e230]: - - heading "Analytics" [level=5] [ref=e231] - - paragraph [ref=e232]: Decide what data you collect across your publication - - generic [ref=e233]: - - generic [ref=e235]: - - switch "Web analytics Cookie-free, first party traffic analytics for your site" [disabled] [ref=e236] - - generic [ref=e238]: - - generic [ref=e239]: Web analytics - - generic [ref=e240]: Cookie-free, first party traffic analytics for your site - - generic [ref=e243]: - - text: Web analytics in Ghost is powered by - - link "Tinybird" [ref=e244] [cursor=pointer]: - - /url: https://tbrd.co/ghost - - text: and requires configuration to start collecting data. - - link "Get started →" [ref=e245] [cursor=pointer]: - - /url: https://docs.ghost.org/install/docker#tinybird-integration - - generic [ref=e247]: - - switch "Newsletter opens Record when a member opens an email" [checked] [ref=e248] - - generic [ref=e250]: - - generic [ref=e251]: Newsletter opens - - generic [ref=e252]: Record when a member opens an email - - generic [ref=e254]: - - switch "Newsletter clicks Record when a member clicks on any link in an email" [checked] [ref=e255] - - generic [ref=e257]: - - generic [ref=e258]: Newsletter clicks - - generic [ref=e259]: Record when a member clicks on any link in an email - - generic [ref=e261]: - - switch "Member sources Track the traffic sources and posts that drive the most member growth" [checked] [ref=e262] - - generic [ref=e264]: - - generic [ref=e265]: Member sources - - generic [ref=e266]: Track the traffic sources and posts that drive the most member growth - - generic [ref=e268]: - - switch "Outbound link tagging Make it easier for other sites to track the traffic you send them in their analytics" [checked] [ref=e269] - - generic [ref=e271]: - - generic [ref=e272]: Outbound link tagging - - generic [ref=e273]: Make it easier for other sites to track the traffic you send them in their analytics - - link "Learn about analytics" [ref=e275] [cursor=pointer]: - - /url: https://ghost.org/help/post-analytics/ - - generic [ref=e276]: - - generic [ref=e277]: - - generic [ref=e278]: - - heading "Make site private" [level=5] [ref=e279] - - paragraph [ref=e280]: Enable protection with a simple shared password. - - button "Edit" [ref=e283] [cursor=pointer]: - - generic [ref=e284]: Edit - - generic [ref=e288]: - - img "lock-unlock" - - generic [ref=e289]: Your site is not password protected - - generic [ref=e290]: - - heading "Site" [level=2] [ref=e291] - - generic [ref=e292]: - - generic [ref=e293]: - - generic [ref=e294]: - - generic [ref=e295]: - - heading "Design & branding" [level=5] [ref=e296] - - paragraph [ref=e297]: Customize the style and layout of your site - - button "Customize" [ref=e299] [cursor=pointer]: - - generic [ref=e300]: Customize - - img [ref=e302] - - generic [ref=e303]: - - generic [ref=e304]: - - generic [ref=e305]: - - heading "Theme" [level=5] [ref=e306] - - paragraph [ref=e307]: Browse and install official themes or upload one - - button "Change theme" [ref=e309] [cursor=pointer]: - - generic [ref=e310]: Change theme - - generic [ref=e312]: - - heading "Active theme" [level=6] [ref=e313] - - generic [ref=e314]: Loading... - - generic [ref=e316]: - - generic [ref=e317]: - - heading "Navigation" [level=5] [ref=e318] - - paragraph [ref=e319]: Set up primary and secondary menus - - button "Customize" [ref=e321] [cursor=pointer]: - - generic [ref=e322]: Customize - - generic [ref=e324]: - - generic [ref=e325]: - - heading "Announcement bar" [level=5] [ref=e326] - - paragraph [ref=e327]: Highlight important updates or offers - - button "Customize" [ref=e329] [cursor=pointer]: - - generic [ref=e330]: Customize - - generic [ref=e331]: - - heading "Membership" [level=2] [ref=e332] - - generic [ref=e333]: - - generic [ref=e334]: - - generic [ref=e336]: - - heading "Access" [level=5] [ref=e337] - - paragraph [ref=e338]: Set up default access options for subscription and posts - - generic [ref=e339]: - - generic [ref=e340]: - - generic [ref=e341]: Who should be able to subscribe to your site? - - generic [ref=e344]: - - log [ref=e346] - - generic [ref=e348]: - - generic [ref=e349]: Anyone can sign up - - combobox [ref=e350] - - generic [ref=e354]: - - generic [ref=e355]: Who should have access to new posts? - - generic [ref=e358]: - - log [ref=e360] - - generic [ref=e362]: - - generic [ref=e363]: Public - - combobox [ref=e364] - - generic [ref=e368]: - - generic [ref=e369]: Who can comment on posts? - - generic [ref=e372]: - - log [ref=e374] - - generic [ref=e376]: - - generic [ref=e377]: Nobody - - combobox [ref=e378] - - generic [ref=e382]: - - generic [ref=e384]: - - heading "Spam filters" [level=5] [ref=e385] - - paragraph [ref=e386]: Protect your member signups from spam - - generic [ref=e388]: - - textbox "Blocked email domains" [ref=e389]: - - /placeholder: "spam.xyz\njunk.com" - - generic [ref=e390]: Blocked email domains - - generic [ref=e391]: - - text: Prevent unwanted signups by blocking email domains. Add one domain per line, e.g., - - code [ref=e392]: spam.xyz - - text: to block signups from email addresses like - - code [ref=e393]: hello@spam.xyz - - text: . - - generic [ref=e394]: - - generic [ref=e395]: - - generic [ref=e396]: - - heading "Tiers" [level=5] [ref=e397] - - paragraph [ref=e398]: Set prices and paid member sign up settings - - button "Connect with Stripe" [ref=e400] [cursor=pointer]: - - generic [ref=e401]: - - generic [ref=e402]: Connect with Stripe - - img [ref=e403] - - generic [ref=e406]: - - img "money-bags" - - text: No archived tiers found. - - generic [ref=e407]: - - generic [ref=e408]: - - generic [ref=e409]: - - heading "Signup portal" [level=5] [ref=e410] - - paragraph [ref=e411]: Customize members modal signup flow - - button "Customize" [ref=e413] [cursor=pointer]: - - generic [ref=e414]: Customize - - generic [ref=e415]: - - img [ref=e417] - - generic [ref=e418]: - - generic [ref=e419]: - - img [ref=e421] - - generic [ref=e422]: Sign up - - generic [ref=e423]: jamie@example.com - - generic [ref=e424]: - - generic [ref=e425]: Free - - generic [ref=e426]: $0 - - generic [ref=e431]: - - generic [ref=e432]: Silver - - generic [ref=e433]: $5 - - generic [ref=e438]: - - generic [ref=e439]: Gold - - generic [ref=e440]: $10 - - generic [ref=e445]: - - generic [ref=e447]: - - heading "Welcome emails" [level=5] [ref=e448] - - paragraph [ref=e449]: Create and manage automated emails for your members - - table [ref=e452]: - - rowgroup [ref=e453]: - - row "Free members welcome email Welcome to Test Site Edit" [ref=e454]: - - cell "Free members welcome email Welcome to Test Site Edit" [ref=e455]: - - generic [ref=e456]: - - button "Free members welcome email Welcome to Test Site" [ref=e459]: - - generic [ref=e460]: - - img - - generic [ref=e461]: - - generic [ref=e462]: Free members welcome email - - generic [ref=e463]: Welcome to Test Site - - generic [ref=e465]: - - switch [ref=e468] - - button "Edit" [ref=e470] - - generic [ref=e471]: - - heading "Newsletters" [level=2] [ref=e472] - - generic [ref=e473]: - - generic [ref=e474]: - - generic [ref=e475]: - - generic [ref=e476]: - - heading "Newsletter sending" [level=5] [ref=e477] - - paragraph [ref=e478]: Newsletter features are active, posts can be sent by email - - switch [checked] [ref=e482] - - generic [ref=e488]: - - img - - generic [ref=e489]: Enabled - - generic [ref=e490]: - - generic [ref=e492]: - - heading "Default recipients" [level=5] [ref=e493] - - paragraph [ref=e494]: When you publish new content, who do you usually want to send it to? - - generic [ref=e496]: - - generic [ref=e497]: Default Newsletter recipients - - generic [ref=e499]: - - log [ref=e501] - - generic [ref=e503]: - - generic [ref=e504]: Whoever has access to the post - - combobox "Default Newsletter recipients" [ref=e505] - - generic [ref=e509]: Who should receive your posts by default? - - generic [ref=e510]: - - generic [ref=e511]: - - generic [ref=e512]: - - heading "Newsletters" [level=5] [ref=e513] - - paragraph [ref=e514]: Edit details and customize your design - - button "Add newsletter" [ref=e516] [cursor=pointer]: - - generic [ref=e517]: Add newsletter - - generic [ref=e518]: - - tablist [ref=e519]: - - tablist [ref=e520]: - - tab "Active" [selected] [ref=e521] [cursor=pointer] - - tab "Archived" [ref=e522] [cursor=pointer] - - tabpanel [ref=e523]: - - generic [ref=e526]: - - table [ref=e529]: - - rowgroup [ref=e530]: - - row "navigation-menu Awesome newsletter No description 0 Subscribers 0 Delivered Edit" [ref=e531] [cursor=pointer]: - - cell "navigation-menu Awesome newsletter No description 0 Subscribers 0 Delivered Edit" [ref=e532]: - - generic [ref=e533]: - - generic [ref=e534]: - - cell "navigation-menu" [ref=e535]: - - button "navigation-menu" [ref=e536]: - - img "navigation-menu" - - cell "Awesome newsletter No description" [ref=e537]: - - generic [ref=e538]: - - generic [ref=e539]: Awesome newsletter - - generic [ref=e540]: No description - - cell "0 Subscribers" [ref=e541]: - - generic [ref=e542]: - - generic [ref=e543]: "0" - - generic [ref=e544]: Subscribers - - cell "0 Delivered" [ref=e545]: - - generic [ref=e546]: - - generic [ref=e547]: "0" - - generic [ref=e548]: Delivered - - button "Edit" [ref=e550]: - - generic [ref=e551]: Edit - - status [ref=e552] - - generic [ref=e553]: - - generic [ref=e554]: - - generic [ref=e555]: - - heading "Mailgun" [level=5] [ref=e556] - - paragraph [ref=e557]: - - text: The Mailgun API is used for bulk email newsletter delivery. - - link "Why is this required?" [ref=e558] [cursor=pointer]: - - /url: https://ghost.org/docs/faq/mailgun-newsletters/ - - button "Edit" [ref=e561] [cursor=pointer]: - - generic [ref=e562]: Edit - - generic [ref=e564]: - - heading "Status" [level=6] [ref=e565] - - generic [ref=e566]: Mailgun is not set up - - generic [ref=e567]: - - heading "Growth" [level=2] [ref=e568] - - generic [ref=e569]: - - generic [ref=e570]: - - generic [ref=e571]: - - generic [ref=e572]: - - heading "Network" [level=5] [ref=e573] - - paragraph [ref=e574]: Distribute posts to the social web, so people can discover and follow your content across BlueSky, Threads, Mastodon, Flipboard, WordPress, and more. - - switch [ref=e578] - - img [ref=e581] - - generic [ref=e582]: - - generic [ref=e583]: - - generic [ref=e584]: - - heading "Ghost Explore" [level=5] [ref=e585] - - paragraph [ref=e586]: Promote your site across Ghost's website and publishing network - - switch [ref=e590] - - img [ref=e593] - - generic [ref=e594]: - - generic [ref=e595]: - - generic [ref=e596]: - - heading "RecommendationsBeta" [level=5] [ref=e597]: - - text: Recommendations - - superscript [ref=e598]: Beta - - paragraph [ref=e599]: Recommend any publication that your audience will find valuable, and find out when others are recommending you. - - button "Add recommendation" [ref=e601] [cursor=pointer] - - generic [ref=e602]: - - tablist [ref=e603]: - - tablist [ref=e604]: - - tab "Your recommendations" [selected] [ref=e605] [cursor=pointer] - - tab "Recommending you" [ref=e606] [cursor=pointer] - - tabpanel [ref=e607]: - - generic [ref=e609]: - - button "Add first recommendation" [ref=e610] [cursor=pointer]: - - generic [ref=e611]: Add first recommendation - - generic [ref=e612]: - - text: Need inspiration? - - link "Explore thousands of sites" [ref=e613] [cursor=pointer]: - - /url: https://ghost.org/explore - - generic [ref=e615]: - - generic [ref=e616]: - - heading "Signup forms" [level=5] [ref=e617] - - paragraph [ref=e618]: Grow your audience from anywhere on the web - - button "Embed" [ref=e620] [cursor=pointer]: - - generic [ref=e621]: Embed - - generic [ref=e622]: - - heading "Advanced" [level=2] [ref=e623] - - generic [ref=e624]: - - generic [ref=e625]: - - generic [ref=e626]: - - img [ref=e628] - - generic [ref=e629]: - - generic [ref=e631]: - - heading "Integrations" [level=5] [ref=e632] - - paragraph [ref=e633]: Make Ghost work with apps and tools. - - button "Add custom integration" [ref=e634] [cursor=pointer]: - - generic [ref=e635]: Add custom integration - - generic [ref=e636]: - - tablist [ref=e637]: - - tablist [ref=e638]: - - tab "Built-in" [selected] [ref=e639] [cursor=pointer] - - tab "Custom" [ref=e640] [cursor=pointer] - - tabpanel [ref=e641]: - - generic [ref=e644]: - - generic [ref=e648] [cursor=pointer]: - - img "zapier" - - generic [ref=e649]: - - generic [ref=e650]: Zapier - - generic [ref=e651]: Automation for your apps - - generic [ref=e655] [cursor=pointer]: - - img - - generic [ref=e656]: - - generic [ref=e657]: Slack - - generic [ref=e658]: A messaging app for teams - - generic [ref=e662] [cursor=pointer]: - - img "unsplash" - - generic [ref=e663]: - - generic [ref=e665]: - - text: Unsplash - - generic [ref=e666]: Active - - generic [ref=e667]: Beautiful, free photos - - generic [ref=e671] [cursor=pointer]: - - img - - generic [ref=e672]: - - generic [ref=e673]: FirstPromoter - - generic [ref=e674]: Launch your member referral program - - generic [ref=e678] [cursor=pointer]: - - img - - generic [ref=e679]: - - generic [ref=e680]: Pintura - - generic [ref=e681]: Advanced image editing - - generic [ref=e682]: - - generic [ref=e684]: - - heading "Migration tools" [level=5] [ref=e685] - - paragraph [ref=e686]: Import content, members and subscriptions from other platforms or export your Ghost data. - - generic [ref=e687]: - - tablist [ref=e688]: - - tablist [ref=e689]: - - tab "Import" [selected] [ref=e690] [cursor=pointer] - - tab "Export" [ref=e691] [cursor=pointer] - - tabpanel [ref=e692]: - - generic [ref=e694]: - - button "Substack" [ref=e695] [cursor=pointer]: - - img - - text: Substack - - button "WordPress" [ref=e696] [cursor=pointer]: - - img - - text: WordPress - - button "Squarespace" [ref=e697] [cursor=pointer]: - - img - - text: Squarespace - - button "Medium" [ref=e698] [cursor=pointer]: - - img - - text: Medium - - button "Mailchimp" [ref=e699] [cursor=pointer]: - - img - - text: Mailchimp - - button "Universal import" [ref=e700] [cursor=pointer]: - - img - - text: Universal import - - generic [ref=e702]: - - generic [ref=e704]: - - heading "Code injection" [level=5] [ref=e705] - - paragraph [ref=e706]: Add custom code to your publication. - - button "Open" [ref=e707] [cursor=pointer]: - - generic [ref=e708]: Open - - generic [ref=e709]: - - generic [ref=e710]: - - generic [ref=e712]: - - heading "Labs" [level=5] [ref=e713] - - paragraph [ref=e714]: This is a testing ground for new or experimental features. They may change, break or inexplicably disappear at any time. - - button "Open" [ref=e715] [cursor=pointer]: - - generic [ref=e716]: Open - - img [ref=e718] - - generic [ref=e720]: - - generic [ref=e721]: - - heading "History" [level=5] [ref=e722] - - paragraph [ref=e723]: View system event log - - button "View history" [ref=e725] [cursor=pointer]: - - generic [ref=e726]: View history - - generic [ref=e727]: - - generic [ref=e729]: - - heading "Danger zone" [level=5] [ref=e730] - - paragraph [ref=e731]: Permanently delete all posts and tags from the database, a hard reset - - button "Delete all content" [ref=e733] [cursor=pointer]: - - generic [ref=e734]: Delete all content - - generic [ref=e738]: - - generic [ref=e742]: - - generic [ref=e743]: - - paragraph [ref=e744]: - - text: Sender - - generic [ref=e745]: default@example.com - - paragraph [ref=e746]: "To: Jamie Larson jamie@example.com" - - generic [ref=e747]: - - generic [ref=e748]: - - generic [ref=e749]: - - heading "Test Site" [level=4] [ref=e750] - - heading "Updated newsletter" [level=5] [ref=e751] - - generic [ref=e752]: - - heading "Your email newsletter" [level=2] [ref=e753] - - paragraph [ref=e754]: A subtitle to highlight key points and engage your readers. - - generic [ref=e755]: - - paragraph [ref=e756]: By Owner User•Mar 17, 2026 - - paragraph [ref=e757]: View in browser - - img "Feature" [ref=e759] - - generic [ref=e760]: Feature image caption - - generic [ref=e761]: - - generic [ref=e762]: - - paragraph [ref=e763]: This is what your content will look like when you send one of your posts as an email newsletter to your subscribers. - - paragraph [ref=e764]: Over there on the right you'll see some settings that allow you to customize the look and feel of this template – from colors and typography to layout and buttons – to make it perfectly suited to your brand. - - paragraph [ref=e765]: Email templates are exceptionally finnicky to make, but we've spent a long time optimising this one to make it work beautifully across devices, email clients and content types. So, you can trust that every email you send with Ghost will look great and work well. Just like the rest of your site. - - separator [ref=e766] - - heading "Need inspiration?" [level=3] [ref=e767] - - paragraph [ref=e768]: - - text: We've put together a - - link "quick guide" [ref=e769] [cursor=pointer]: - - /url: https://ghost.org/help/email-design/ - - text: that walks through all of the available settings, along with a few examples of what's possible. - - link "Learn more" [ref=e770] [cursor=pointer]: - - /url: https://ghost.org/help/email-design/ - - generic [ref=e772]: - - button "More like this": - - generic: - - img - - generic: More like this - - button "Less like this": - - generic: - - img - - generic: Less like this - - generic [ref=e775]: - - generic [ref=e776]: Test Site © 2026 — - - text: Unsubscribe - - generic [ref=e777]: - - generic [ref=e778]: - - heading "Newsletter" [level=4] [ref=e779] - - generic [ref=e780]: - - button "Close" [ref=e781] [cursor=pointer]: - - generic [ref=e782]: Close - - button "Save" [ref=e783] [cursor=pointer]: - - generic [ref=e784]: Save - - generic [ref=e788]: - - tablist [ref=e789]: - - tablist [ref=e790]: - - tab "General" [ref=e791] [cursor=pointer] - - tab "Content" [active] [selected] [ref=e792] [cursor=pointer] - - tab "Design" [ref=e793] [cursor=pointer] - - tabpanel [ref=e794]: - - generic [ref=e795]: - - generic [ref=e796]: - - heading "Header" [level=5] [ref=e797] - - generic [ref=e798]: - - generic [ref=e799]: - - heading "Header image" [level=6] [ref=e801] - - generic [ref=e802]: - - generic [ref=e806] [cursor=pointer]: - - img "picture-sun" - - generic [ref=e807]: 1200×600 recommended. Use a transparent PNG for best results on any background. - - generic [ref=e808]: - - generic [ref=e810]: - - switch "Publication title" [checked] [ref=e811] - - generic [ref=e814]: Publication title - - generic [ref=e816]: - - switch "Newsletter name" [checked] [ref=e817] - - generic [ref=e820]: Newsletter name - - generic [ref=e821]: - - heading "Title section" [level=5] [ref=e822] - - generic [ref=e823]: - - generic [ref=e825]: - - switch "Post title" [checked] [ref=e826] - - generic [ref=e829]: Post title - - generic [ref=e831]: - - switch "Post excerpt" [checked] [ref=e832] - - generic [ref=e835]: Post excerpt - - generic [ref=e837]: - - switch "Feature image" [checked] [ref=e838] - - generic [ref=e841]: Feature image - - generic [ref=e842]: - - heading "Footer" [level=5] [ref=e843] - - generic [ref=e844]: - - generic [ref=e845]: - - generic [ref=e847]: - - switch "Ask your readers for feedback" [checked] [ref=e848] - - generic [ref=e851]: Ask your readers for feedback - - generic [ref=e853]: - - switch "Share your latest posts" [ref=e854] - - generic [ref=e857]: Share your latest posts - - generic [ref=e859]: - - switch "Show subscription details" [ref=e860] - - generic [ref=e863]: Show subscription details - - generic [ref=e864]: - - generic [ref=e865]: Email footer - - textbox [ref=e871]: - - paragraph [ref=e872] - - generic [ref=e873]: Any extra information or legal text - - generic [ref=e874]: - - generic [ref=e875]: - - img - - generic [ref=e878]: - - switch "Promote independent publishing Show you're a part of the indie publishing movement with a small badge in the footer" [ref=e879] - - generic [ref=e883]: - - generic [ref=e884]: Promote independent publishing - - generic [ref=e885]: Show you're a part of the indie publishing movement with a small badge in the footer -``` \ No newline at end of file From a57cf8c5c6ddf844d771fdf14f06154811a81fe3 Mon Sep 17 00:00:00 2001 From: Peter Zimon Date: Thu, 6 Aug 2026 11:27:23 +0200 Subject: [PATCH 44/75] Improved the visual details of the React posts list rows MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ref DES-1343 First pass of visual polish on the React list, working through it by eye with Peter. Five changes, all in the row and its surrounding chrome: - The empty-thumbnail placeholder had `bg-surface-elevated`, which resolves to white in light mode — so it read as having no background at all. It now reuses the analytics dashboard's placeholder component rather than restyling a copy of it, which meant moving that component from `analytics/views/stats/` to `shared/`. It had exactly one importer, so the move is two lines, and both lists now change together instead of drifting. - The thumbnail is 16/10 at 80px (100px at `lg`) rather than a 60px square, matching analytics. Ember's list is 16/10 too, so this converges on both. - Rows have a hover background, the same `--table-row-hover` the members list uses. It applies only when the row is *not* selected: a `hover:` rule outranks a plain background, so hovering a selected row would otherwise have repainted it as unselected — the exact complaint raised during phase 6. Hover is also deliberately lighter than selection, so sweeping the cursor across a selection doesn't make the two states cancel out. - Row padding is even on all four sides. It stays on the row's children rather than moving to the row itself, because the link and the trailing button each fill the row's full height; padding the row's own box would leave dead strips along the top and bottom where a click does nothing. - A separator opens the list. It sits on the `