Ghost/ghost/portal
Rishabh 38202c1472 Added guard for missing contentDocument
no refs

- in a rare edge case, its possible that `contentDocument` is not available due to component unmount, guards against erroring in such scenarios
2021-06-24 21:47:31 +05:30
..
.github/workflows Renamed master to main for test workflow and readme 2021-05-27 17:52:32 +05:30
public Initialize project using Create React App 2020-03-24 18:37:04 +05:30
scripts Added access control header for start mode 2021-06-22 17:07:14 +05:30
src Added guard for missing contentDocument 2021-06-24 21:47:31 +05:30
.editorconfig Initial commit 2020-03-24 18:37:38 +05:30
.env Removed deprecated NODE_PATH usage in tests 2021-06-14 11:55:09 +05:30
.env.development.local.example Updated local env file example to use default page 2020-05-01 22:21:44 +05:30
.eslintignore 🏗 Bumped major versions for React and CRA 2021-06-16 20:58:44 +05:30
.gitignore Allowed .env file in source control for test-utils setup 2020-04-28 23:15:09 +05:30
LICENSE 2021 2021-01-25 16:35:55 +00:00
package.json v1.6.5 2021-06-24 21:08:52 +05:30
README.md Renamed master to main for test workflow and readme 2021-05-27 17:52:32 +05:30
renovate.json Updated Renovate config 2020-04-13 10:46:29 +01:00
webpack.config.js Updated Portal build script to use rewired webpack config 2021-06-16 20:58:44 +05:30
yarn.lock Pin dependencies (#148) 2021-06-22 15:52:53 +05:30

Portal

CI Status npm version

Drop-in script to make the bulk of Ghost membership features work on any theme.

Usage

Ghost automatically injects this Portal script on all sites running Ghost 4 or higher.

Alternatively, Portal can be enabled on non-ghost pages directly by inserting the below script on the page.

<script defer src="https://unpkg.com/@tryghost/portal@latest/umd/portal.min.js" data-ghost="https://mymemberssite.com"></script>

The data-ghost attribute expects the URL for your site, which is the only input Portal needs to work with your site's membership data via Ghost APIs.

Custom trigger button

By default, the script adds a default floating trigger button on the bottom right of your page which is used to trigger the popup on screen.

Its possible to add custom trigger button of your own by adding data attribute data-portal to any HTML tag on page, and also specify a specfic page to open from it by using it as data-portal=signup.

The script also adds custom class names to this element for open and close state of popup - gh-portal-open and gh-portal-close, allowing devs to update its UI based on popup state.

Basic Setup

  1. Clone this repository:
git@github.com:TryGhost/portal.git
  1. Change into the new directory and install the dependencies:
cd portal
yarn

Configure for local development

Only useful for active UI development without publishing a version on unpkg. Always use the unpkg link for testing latest released portal script.

In this repo(Portal):

  • Run yarn build to create the minified bundle with your changes at umd/portal.min.js

In your theme(Ex. Lyra):

  • Copy portal.min.js from above and paste it in your theme at assets/built/portal.min.js

In Ghost repo

  • Update your config.local.json to add "portal" config which points url to the locally built copy.
    ...,
    "portal": {
        "url": "SITE_URL/assets/built/portal.min.js"
    },
    ...

Available Scripts

In the project directory, you can also run:

yarn start

Runs the app in the development mode.
Open http://localhost:3000 to view it in the browser.

The page will reload if you make edits.
You will also see any lint errors in the console.

yarn build

Creates the production single minified bundle for external use in umd/portal.min.js.

yarn test

Launches the test runner in the interactive watch mode.
See the section about running tests for more information.

Publish

Run yarn ship to publish new version of script.

yarn ship is an alias for npm publish

(Core team only)

Learn More

This project was bootstrapped with Create React App. You can learn more in the Create React App documentation.

Copyright & License

Copyright (c) 2013-2021 Ghost Foundation - Released under the MIT license.