Commit Graph

1214 Commits

Author SHA1 Message Date
Rish
98354e9de0 Updated script usage in readme to remove explicit init and adminUrl
refs https://github.com/TryGhost/members.js/issues/25

- No dependency on adminUrl anymore as endpoints exist on site url
- Members.js script is auto initialized, no need for explicit init in themes anymore
- No local .env values need to be set for development as script loads data from fixtures directly
2020-05-01 17:10:17 +05:30
Rish
2aef0d57f8 Refactored app initialization to remove admin url dependency
closes https://github.com/TryGhost/members.js/issues/25

- Remove dependency on admin url for initialization as member endpoints now exist on site directly
- Auto initializes the script on load as need not wait on any external dependency
- API fetch cleanup in parent container
- Updates tests
2020-05-01 17:06:58 +05:30
Rish
e291e7075b Updated api endpoints to use new member endpoints on site
refs https://github.com/TryGhost/members.js/issues/25

- Members endpoints were refactored in core to exist directly on site as `<SITE>/members/api/<RESOURCE>`
- All endpoints needed are now directly on SITE and removes the need for AdminURL
- Init method is updated to read site data from fixtures for local development, as no admin endpoint exists now

Core Refs:
0cba02b370
fa4dfa1b21
c70c49258e
2020-05-01 17:00:52 +05:30
Rish
a373239fcb Added small style hack to insert css inside iframe components
no issue

-  By default, CRA's webpack bundle combines and appends the main css at root level, so they are not applied inside any iframe.
- JSX Styles don't work for `:hover` and other similar selectors which is needed to style certain components like checkboxes
- This uses a hack where we append `<style> </style>` tag with all CSS inside the head of iframe dynamically as string
- We can create separate variables to keep styles grouped logically, and export them as one appended style string to apply styles in iframe.
2020-05-01 16:03:07 +05:30
Rish
d4f604d091 v0.2.4 2020-05-01 13:05:23 +05:30
Rish
29c4b6be0f Updated yarn ship script
no issue

- Updates `yarn script` to use same consistent format we use across org
- Removes use of `npm` in publish
- Adds `preship` to run lint - ideally should run tests but react tests run in interactive mode and are very slow atm, need to sort that out first.
2020-05-01 13:02:27 +05:30
Rish
c67ec1f730 Added no-op subscribe button handling
refs https://github.com/TryGhost/members.js/issues/20

- adds no-op method to handle subscribe option in account page
- fixes lint
2020-05-01 12:46:20 +05:30
Rish
67a07893b0 Updated account home page UI for free member
refs https://github.com/TryGhost/members.js/issues/20

- Updates UI for free member's account page based on spec
- Updates popup to show account home page like normal modal
- Updates tests
2020-05-01 12:41:33 +05:30
Rish
21df87e388 Updated trigger to use member gravatar when logged-in
refs https://github.com/TryGhost/members.js/issues/20

Updates trigger default icon to use member's gravatar if logged in via common component, which fallbacks to user icon when gravatar is blank.
2020-05-01 12:36:57 +05:30
Rish
d2098a783e Added common members avatar component
refs https://github.com/TryGhost/members.js/issues/20

- Adds a common component to render member gravatar with backup of user icon where gravatar is not available or is blank.
- Used in both Trigger component for logged in member as well as account areas.
2020-05-01 12:35:51 +05:30
Rish
462eb1c1b2 Reset popup state to default on closing magic link
closes https://github.com/TryGhost/members.js/issues/21

- Resets popup state to default page when magic link popup message is closed
2020-04-30 20:35:26 +05:30
Rish
49606f8fdf Added explicit npm registry in publishConfig
no issue

The members-js package is published on npm and this ensures `yarn ship` attempts to push to correct registry instead of yarn registry in case not set globally.
2020-04-30 17:37:29 +05:30
Rish
02d968dd4e 0.2.3 2020-04-30 17:25:36 +05:30
Rish
d11afe363f Updated checkout flow to pre-fill member email
refs https://github.com/TryGhost/members.js/issues/10

- Takes advantage of change here - 24b83bdc49 - to pre-fill customer email in anonymous checkout flow
- Member cannot change their email in this checkout session, allowing consistency and correct linking post checkout
2020-04-30 17:23:23 +05:30
Rish
f813185cc3 Added stripe url handling for checkout success
refs https://github.com/TryGhost/membersjs/issues/10

We use stripe query param `?stripe=<state>` for redirects from checkout session, this handles the magic link popup for checkout success state on redirect.
2020-04-30 11:55:16 +05:30
Rish
712ac5cd74 Updated tests for magiclink page
no issue

- Add test for close button firing correct action(closePopup) on magic link page
- Use common test utils setup
2020-04-30 11:49:18 +05:30
Rish
30a14023cf Fixed close action handling on magic link page
no issue

Fixes magic link action button using incorrect action method - `handleSignin` - which failed on click, replaced with close popup action.
2020-04-30 11:39:19 +05:30
Rish
9aefe26ba7 Fixed lint 2020-04-30 00:24:31 +05:30
Rish
24e98cfb21 Used common plans section component in signup page
refs https://github.com/TryGhost/members.js/issues/10

We want to use the common UI component for rendering the plans section. Also fixes the weird dom sync problem with checkboxes by adding a timeout for small lag to keep the state in sync.
2020-04-30 00:19:28 +05:30
Rish
886ee7e9ec Added new component for membership plans
refs https://github.com/TryGhost/members.js/issues/10

Create common plans section UI component as its used in multiple places in app
2020-04-30 00:17:16 +05:30
Rish
9edb3d2e58 Reworded usage section in readme
Simple rewording to make usage section shorter and to point
2020-04-29 13:38:29 +05:30
Rish
87215f56a0 0.2.2 2020-04-28 23:41:52 +05:30
Rish
f237a6ee37 Updated unpkg link in readme to use latest version
no issue

Instead of pinning to specific released version, we use `@latest` for picking the last released version automatically
2020-04-28 23:41:20 +05:30
Rish
7fee47b9a7 Added yarn ship for publishing to npm/unpkg
refs https://github.com/TryGhost/members.js/issues/5

We use `yarn ship` across all our packages for publishing new versions.
2020-04-28 23:38:24 +05:30
Rish
4d99e881d7 Added basic anoymous checkout flow setup
refs https://github.com/TryGhost/members.js/issues/10

Adds happy path flow for triggering anonymous checkout from signup page when monthly or yearly plan is selected. Opens the stripe checkout session with empty email, and currently doesn't handle the success or failure redirect.
2020-04-28 23:33:22 +05:30
Rish
e0c222f25c Fixed incorrect default page load
no issue

Missed passing `member` param while fetching default page, which then always returns `signup` page even if member is signed in
2020-04-28 23:31:20 +05:30
Rish
7da315acba Switched to recommended absolute test-utils path setup
refs https://github.com/TryGhost/members.js/issues/5

Switched to using absolute path for default test-utils setup file as relative imports become too messy when we keep tests for a component next to it. This setup allows using absolute path for common test-utils file which is used in almost all tests for initial setup.
2020-04-28 23:29:56 +05:30
Rish
d83382ffb5 Allowed .env file in source control for test-utils setup
refs https://github.com/TryGhost/members.js/issues/5

- We want to allow .env in source control mainly to use react-testing-library's recommended setup for common test-utils. It uses .env file to define NODE_PATH, which helps in avoiding relative imports in tests as we keep test files next to UI components.
- CRA also by default suggests committing .env files to source control
2020-04-28 23:15:09 +05:30
Rish
c3907f24dd Fixed tests
Fixed incorrect fixtures path
2020-04-28 13:12:11 +05:30
Rish
c86550a68f Cleaned up initialization and data fetching
refs https://github.com/TryGhost/members.js/issues/5

- Streamlined data init flow
- Streamlined development mode initialization
- Moved fixtures to utils
- Removed unused or redundant methods
2020-04-28 13:08:17 +05:30
Renovate Bot
971afdf468 Update dependency eslint-plugin-ghost to v1.3.0 2020-04-28 06:14:02 +00:00
Rish
4b01a1eac9 Fixed eslint no-console error
no issue

- Throws error on signout failure instead of console log
- Disables eslint for data initialization failure to allow logging error to console
2020-04-28 10:39:04 +05:30
Renovate Bot
982c9d19ef Pin dependencies 2020-04-28 08:51:04 +05:30
Rish
197070bcfe Updated readme
Added note about adding drop-in script in code injection footer in admin
2020-04-28 01:22:44 +05:30
Rish
e7e9ceab7d Updated readme
Removes comment about explicit need for admin url not ending in trailing slash, we handle trailing slash in code now.
2020-04-28 01:12:10 +05:30
Rish
9bf219459b Updated admin url for local env
refs https://github.com/TryGhost/members.js/issues/5

- Removes `/ghost` from local development .env file
2020-04-28 01:11:12 +05:30
Rish
487bea51b2 Refactored code structure using react context
ref https://github.com/TryGhost/members.js/issues/5

React context allows us cleaner setup in codebase with shared data and methods across components at different nesting levels. This should allow faster iteration and easier development going forward.

- Uses Parent context for shared data and methods across different components instead of passed down props
- Uses new `init` method in API for data initialization
- Removes `PopupMenu` component in favor of `PopupModal`
- Adds new test util for custom render for easier base setup - https://testing-library.com/docs/react-testing-library/setup#custom-render
- Updates tests to use new test util for easier test setup
2020-04-28 01:10:08 +05:30
Rish
2214a5048b Added new parent context
refs https://github.com/TryGhost/members.js/issues/5

- Adds new parent context with default values for all common context data we want to pass through

This adds base for using contexts (https://reactjs.org/docs/context.html) in our application as that allows easier overall base data and method sharing between different components instead of passing them down
2020-04-28 01:04:30 +05:30
Rish
e8a05c252b Added init method to api
refs https://github.com/TryGhost/members.js/issues/5

- renamed default function name
- Adds `init` method to api for fetching site data and member session data together
- Update site url from site data to remove window.location.origin dependency in case of iframe
2020-04-28 00:52:21 +05:30
Rish
ead29b9e23 Fixed account button action logging out
no issue

Account button was incorrectly mapped to logout action, adds a temp no-op action for account area
2020-04-27 15:39:02 +05:30
Rish
1a29d0926e Added render tests for common components
no issue

- Adds tests for ActionButton and InputField components
2020-04-27 15:37:48 +05:30
Rish
eb4ed70303 Added id and aria-label values for input field component
no issue

- Adds `aria-label` on input fields and id for label's `for` to map to form control
- Fixes tests
2020-04-27 14:09:12 +05:30
Rish
c53654d89b Updated pages to use common components
no issue

- Updates Signin page to use common ActionButton and Input component
- Updates Signup page to use common ActionButton and Input component
- Updates MagicLink page to use common ActionButton component
2020-04-27 13:51:25 +05:30
Rish
100bfa7b5b Extracted common Input and Button components
no issue

- Add new InputField common component for input fields with label
- Add new ActionButton common component for action <button>
2020-04-27 13:49:59 +05:30
Rish
61de34aac8 Updated readme
Fixed CI status badge
2020-04-27 11:53:18 +05:30
Rish
4565cfb646 Update readme
Bump unpkg version to 0.2.1
2020-04-23 21:21:09 +05:30
Rish
3baffcc3e6 0.2.1 2020-04-23 21:19:23 +05:30
Rish
c44241e27d Fixed signup with email not working on free plan
closes https://github.com/TryGhost/members.js/issues/16

This fix sends magic link to member when they choose free plan to signup using name and email.

Note: We are not storing `name` atm in magic link, so it gets ignored in actual member data on signup atm.
2020-04-23 21:18:34 +05:30
Rish
1fdc514c1f Fixed token handling in url for magic-link
closes https://github.com/TryGhost/members.js/issues/14

This adds handling of url update when signing-in with magic link by removing the token query param, which can cause accidental re-login on refresh.
2020-04-23 20:46:14 +05:30
Rish
72b8a376c6 Updated readme
Updated unpkg link to point to correct version
2020-04-23 18:02:43 +05:30
Rish
067fc9a1bd v0.2.0 2020-04-23 17:58:12 +05:30
Rish
1a97c7d161 Updated readme
Updated reference to admin url needed for initialization as api domain, same as used by other api clients.
2020-04-23 17:57:41 +05:30
Rish
c1a5c67e37 Refactored API setup and admin url initialization
refs https://github.com/TryGhost/members.js/issues/6

- Refactored API util to be more consistent with existing API SDKs
- Updated init method to expect admin url same as other SDKs
2020-04-23 17:54:21 +05:30
Rish
c58f29f1a9 Updated readme to tag latest unpkg version in script
Unpkg recommends tagging exact version in the url to avoid redirects and faster load times. Also ensures the init script is in sync with the unpkg version being picked up in case of any changes.
2020-04-23 13:56:09 +05:30
Rish
884e197cca v0.1.1 2020-04-23 13:03:17 +05:30
Rish
f79d022909 Fixed lint 2020-04-23 12:59:47 +05:30
Rish
2cf40fa6b8 Updated readme
Updated example admin url value for local setup
2020-04-23 12:59:26 +05:30
Rish
e999bcd146 Fixed tests
no issue
2020-04-23 12:59:08 +05:30
Rish
93a14eea2e Renamed script init method
refs https://github.com/TryGhost/members.js/issues/6

- Renames script initialization method from `initMembersJS` to simply `init`
- Updates readme
2020-04-23 12:51:51 +05:30
Rish
0a5e0648c8 Refactored fixutres data for site and member
refs https://github.com/TryGhost/members.js/issues/10

Refactored to include free member data and added dummy data for testing
2020-04-23 12:43:28 +05:30
Rish
275655584e Refactored UI structure and component naming
refs https://github.com/TryGhost/members.js/issues/10

- Added `/page` in components to structure all UI page flows for the app
- Renamed components to highlight just actual purpose/utility
- Cleaned up data loading flow
2020-04-23 12:42:55 +05:30
Rish
b50abb5ad2 Fixed firefox iframe append issue
no issue

Firefox doesn't allow adding content to iframe body without passing `srcDoc={`<!DOCTYPE html>` to the iframe, this allows iframe to load properly
2020-04-22 19:39:06 +05:30
Rish
e7973cf37a Updated Readme
Fixed init method
2020-04-21 15:18:12 +05:30
Rish
e36b6a8ae5 Updated readme 2020-04-21 14:51:16 +05:30
Rish
c05f3916c0 Updated readme
Cleaned up usage instructions
2020-04-21 11:17:23 +05:30
Rish
5eaa243003 Updated readme
Updates admin url format for initialization
2020-04-20 23:37:44 +05:30
Rish
86340abdc7 Updated Readme
Added Usage section
2020-04-20 23:26:55 +05:30
Rish
0539c543a7 Updated Readme 2020-04-20 23:03:24 +05:30
Rish
0b7707fe7a Added initial dom element insertion in init
no issue

Previously, we expected theme to include an empty div with id as `root` where we loaded our widget. This change automatically adds a root div to the document and renders widget inside it.
2020-04-20 22:44:47 +05:30
Rish
88d8008bcf Updated Readme 2020-04-20 22:12:30 +05:30
Rish
e59e8186bd Cleaned up script intiailization data
refs https://github.com/TryGhost/members.js/issues/6

Removes all data initialization setup except `adminUrl` as we now fetch everything directly from API
2020-04-20 22:12:08 +05:30
Rish
028139a0e1 Updated build and publish setup for unpkg deployment
refs https://github.com/TryGhost/members.js/issues/12

- Updates package name and add umd/unpkg setup in `package.json`
- Updated webpack config to publish minified bundle at `umd/memebrs.min.js`
- Updated .gitignore to remove build folders
2020-04-20 22:10:58 +05:30
Rish
89a1cab4c1 Fixed lint for webpack config
no issue
2020-04-20 11:57:14 +05:30
Rish
f529959b78 Updated data initialization for member
refs https://github.com/TryGhost/members.js/issues/6

Updates member data initialization through API method instead of using data passed through from theme.
2020-04-20 11:57:14 +05:30
Rish
aafc228ffd Added method to fetch member data from session
refs https://github.com/TryGhost/members.js/issues/6

Adds method to fetch member's data in exchange of identity/session for data initialization
2020-04-20 11:57:14 +05:30
Renovate Bot
b71104b1de Update dependency eslint-plugin-ghost to v1.2.0 2020-04-17 11:14:03 +00:00
Rish
066ec7fcae Added site data initilization through APIs
refs https://github.com/TryGhost/members.js/issues/6

Use member identity and public site data admin API to fetch site data which was previously being passed down from the theme. This change allows us to be directly fetch all relevant site data except adminUrl and use it to initialize the flows.

Also adds a basic loading behavior till we finish fetching site and member logged-in data from API.
2020-04-17 14:53:10 +05:30
Rish
0c0e1069ae Added member identity and site data APIs
refs https://github.com/TryGhost/members.js/issues/6

To self-contain all the data needs for members.js, we load the site data and member's logged in state using available APIs instead of passing them down the theme
- Member Identity API uses member cookie and `/ssr` endpoint to identify if a member is currently logged in or not
- Site data API is the public admin API endpoint for fetching public site data like title, description, logo, brand etc.
2020-04-17 14:50:18 +05:30
Rish
4ba70683a8 Added new basic Loading page for data init
We want to show some kind of loading state till we fetch initial site or member data to load the relevant page
2020-04-17 14:46:55 +05:30
Rish
bf901c99cd Added action tests for SIgnup page
Adds test to check actions for signing up with name, email, plan and switching to signin page
2020-04-16 14:30:02 +05:30
Rish
4789f473e3 Added action tests for Account Page
Adds signout button test for account page
2020-04-16 14:20:04 +05:30
Rish
22bee293bc Added action tests to Signin page
Adds tests for send magic link and subscribe button actions
2020-04-16 14:13:37 +05:30
Rish
117a27f86b Setup render tests for components
Adds basic rendering test for all components/pages for expected outputs
2020-04-16 12:21:49 +05:30
Rish
909eb16ced Fixed basic top-level App test 2020-04-15 21:15:56 +05:30
Rish
5b18b464d1 Initialized script with plans
Added default plans value on init for testing
2020-04-14 12:42:35 +05:30
Rish
4d71056e12 Handled empty plans for site
[Temp] Hide the plans section if plans are not present
2020-04-14 12:42:35 +05:30
Rish
f727fdd1ed Refactored Parent pages to use pages
Refactors Parent and Popup-menu pages to load different pages as per UI flows and pass necessary data and actions down to UI components.
2020-04-14 12:42:35 +05:30
Rish
3cbe8d6f0c Added new Signin/Signup/MagicLink pages
Added new pages for different UI flows

- Sign-in Page: Allow member to signin with magic link
- Signup Page: Allow member to signup with name + email, also allow choosing plan in checkout
- Signed-in Page: Default account page if member is signed in
- Magic Link Page: Info page which shows magic link is sent to inbox
2020-04-14 12:42:35 +05:30
Rish
582bc46176 Removed unused name prop in App 2020-04-14 12:42:35 +05:30
Rish
768af49ebd Updated members api to return promise
This allows controlling UI state for API actions using async/await
2020-04-14 12:42:35 +05:30
Daniel Lockyer
41303348bb Updated Renovate config
no issue
2020-04-13 10:46:29 +01:00
Renovate Bot
2788eccd49 Add renovate.json 2020-04-13 10:46:29 +01:00
Rish
8be660def0 Updated local dev env configuration
- Use local dev config only for development mode
- `.env.local` by default gets triggered for production builds as well, unlike `.env.development.local`
2020-04-13 13:09:15 +05:30
Hannah Wolfe
c3d13f2451 Added local dev env configuration
- call init by default if there's an env var for ADMIN_URL
- add an example local dev config
2020-04-10 17:41:16 +01:00
Hannah Wolfe
e9a193445d Swapped blog -> site
- this is our preferred wording
2020-04-10 16:52:29 +01:00
Hannah Wolfe
af543c0cc9 Added basic github workflow for running tests
- copied from https://github.com/TryGhost/billing-management/blob/master/.github/workflows/test.yml
2020-04-10 16:42:25 +01:00
Hannah Wolfe
4c358d2cec Added ghost browser ESLint config and fixed errors
- added eslint-plugin-ghost, extended ghost/browser config & fixed all the issues
- did this because basic things like indent, quotes and semi-colons weren't being enforced resulting in inconsistencies
- we can customise this or create a ghost/react if desired
2020-04-10 16:32:37 +01:00
Hannah Wolfe
4f1c95edb8 Removed service worker code
- I don't think it will ever be appropriate to use a service worker in our widget context
2020-04-10 16:30:21 +01:00
Rish
d6bad7132f Updated welcome text for signin/signup
no issue
2020-04-09 13:56:47 +05:30
Rish
0615d54505 Added handling for custom trigger button in theme
refs https://github.com/TryGhost/membersjs/issues/8

This allows theme developers to use a custom trigger button in their theme instead of default UI created by script by marking the custom button with data attribute - `data-members-trigger-button` .

In case of a custom trigger button, CRA doesn't render the default trigger button and attaches click event handling to the custom button to control the popup UI. Script also adds new custom class `popup-open` and `popup-close` based on popup state to allow theme developers to handle button UI based on popup state.
2020-04-09 13:54:49 +05:30
Rish
4310a18150 Added basic signup/signin UI flow
refs https://github.com/TryGhost/membersjs/issues/3

Adds signup/signin flow to theme when no member is logged in, uses api utils to send magic-link to member's email which can be used to signup/signin
2020-04-08 22:37:50 +05:30
Rish
f7f683bfc0 Removed default initialization for members script
no issue

We need to initialize members script with data passed down from the theme atm, the default initialization is only useful for quick local testing and UI development but not when script is used directly inside a theme.
2020-04-08 22:34:38 +05:30
Rish
bab35b3637 Added util to handle members-api/ssr requests
refs https://github.com/TryGhost/membersjs/issues/2

We need to make requests to members Admin API and SSR endpoints to handle member's session on theme, send magic-link on email and also for using stripe checkout. This adds a small util that wraps all such external requests for use in CRA UI based on user action

Note: The util setup needs `blogUrl` and `adminUrl` values to setup the API endpoints, which we currently pass from the theme. This might change in immediate future based on how we decide to get these values in CRA script.
2020-04-08 22:32:58 +05:30
Peter Zimon
93a634ce5f Added basic styles
no refs.
- added icon for trigger button open/close state to indicate account menu
- updated style of trigger button for better contrast
- updated base font style and size for html and body to access global typographic styles
2020-04-06 11:25:04 +02:00
Rish
b782048421 Added default initialization for local development
no issue
2020-04-02 17:06:22 +05:30
Rish
f4f5a8331d Updated app flow to use external members data
no issue

- Wraps the react rendering initialisation in a function which is accessed by theme to render the members UI as needed
- Uses site logo and logged in member email for rendering
2020-04-02 13:48:54 +05:30
Rish
ee3fd5a18e Updated Frame component to a simpler version
no issue

Makes frame component more efficient and easier to understand
2020-04-02 13:48:54 +05:30
Hannah Wolfe
4ddddabe85 Added linting scripts
- Incorrectly assumed this was automatically part of `react-scripts test`.
2020-04-01 12:43:42 +01:00
Rish
31b80d8270 Added new Frame Component for iframe encapsulation
no issue

- Adds new FrameComponent which allows encapsulating any React Component inside Iframe directly
- Wraps the Popup and Trigger components inside frame components to be rendered inside iframe
2020-03-31 13:51:48 +05:30
Rish
3dca602545 Added trigger and popup UI components - v1
no issue

- Adds new components for membersJs trigger button and popup menu with style
- Adds basic trigger interaction between trigger button and popup menu
- Uses hardcoded member values
- Adds `prop-types` dependency
2020-03-30 19:05:35 +05:30
Rish
f761672e32 Updated Readme 2020-03-30 19:02:19 +05:30
Rish
c23a80e6f0 Updated build process for single minified script
no issue

By default, CRAs build process creates chunked script files and adds them to default index.html. The updated build process uses `rewire` and `webpack` to -

- Tweak CRAs default behavior by switching off chunking, which leads to a single script
- Uses webpack locally to combine JS and CSS built by above step into a single `bundle.min.js`
2020-03-24 18:49:04 +05:30
Rish
1b91730c48 Initial commit 2020-03-24 18:37:38 +05:30
Rish
4ff29d2735 Initialize project using Create React App 2020-03-24 18:37:04 +05:30