Next-gen, highly customizable content editor for the browser - based on React and Redux and written in TypeScript. WYSIWYG on steroids.

Overview

ReactPage

Build Status Coverage Status Docs

ReactPage is a smart, extensible and modern editor ("WYSIWYG") for the web written in React. If you are fed up with the limitations of contenteditable, you are in the right place.

ReactPage Demo

Install

yarn add @react-page/editor

or

npm install --save @react-page/editor

There is also a beta release channel, which might contain unstable features:

yarn add @react-page/editor@beta

or

npm install --save @react-page/editor@beta

Demo

A demo can be found on Demo which reflects the stable release channel on npm.

the current beta version is also available as a demo: beta Demo

Documentation

The documentation is available at docs

Documentation for the current beta is at beta docs

Contributors

Made with contributors-img.

Sponsored by

  • GuestBell - Customer centric online POS for Hotels and short terms stays.
  • Panter - Software engineering company for custom solutions. Located in Zürich Switzerland.
  • Impact Hub Switzerland - Coworking spaces and community of creators creating a radically collaborative world.

Attributions

Formerly known as ORY Editor

Original Library created by @aeneasr @ory

Follow twitter Follow GitHub

In the wild

  • GuestBell Hotel App - ReactPage is used as CMS for hotel landing pages.
  • Veloplus Online Shop - ReactPage is used to create and display any content page (and the landing page as well)
  • Bike2School - A project to promote going to school by bike. It uses ReactPage for content editing.

Community

join us in the new Discussion board

Comments
  • Request to become maintainer

    Request to become maintainer

    Hello @aeneasr,

    I've seen that you've been busy lately and since me and my team are using this library quite a lot I'd like to help you maintaining it, reviewing some PR's with bug fixes, issues, release patches and so on, let me know if you're okay with that.

    opened by fernandobandeira 61
  • Upgrade to latest slate

    Upgrade to latest slate

    This work is not ready yet. I am just opening PR for convenience so that you can see my changes and have a chance to react. This of course has to do with #553 Right now I went with creating slate-next. The idea is to either at the end delete old slate and rename this back to slate. That is of course if we manage to make it work with old documents.

    opened by PeterKottas 33
  • 0.0.1-sprint2-ux-preparation

    0.0.1-sprint2-ux-preparation

    @inyono @Knorrke @arekkas think about layout editing user experience and technical details until next monday (30.5.). The proposal should include:

    • How layout blocks are created (add a new video)
    • How layout blocks are transformed (moved in position, transformed in number of columns)
    • How do text fields behave inside of a layout block

    You can also think about technical details like:

    • What does the layout state look like?
    • How would you deal with undo/redo
    • ...
    opened by aeneasr 30
  • Background plugin and image upload

    Background plugin and image upload

    Hi guys, this is all about the #555. Namely the background plugin. It's rather big so I figured a video would help you understand what it's all about, Enjoy! :) 🎥 https://screencast-o-matic.com/watch/cFjDlgq2HI 🎥

    opened by PeterKottas 28
  • Unable to add layout (background) plugin

    Unable to add layout (background) plugin

    I am unable to drop in the background layout plugin (all content plugins can be added no problem). I wanted to run this past you @macrozone, maybe you can reproduce easily. I'll do more digging if it works for you fine but I think you might have changed something around layout plugins that might be causing this.

    bug 
    opened by PeterKottas 27
  • use autoform to edit plugin alway throw error 'TypeError: Cannot read property 'properties' of undefined'

    use autoform to edit plugin alway throw error 'TypeError: Cannot read property 'properties' of undefined'

    Describe the bug use autoform to edit plugin alway throw error 'TypeError: Cannot read property 'properties' of undefined' when calling JSONSchemaBridge.getSubfields

    To Reproduce react: 17.0.2 @react-page/editor: 2.2.6 @react-page/plugns-video:2.2.6

    step-1: add video plugin to page step-2: edit video plugin

    I find the issue caused by incompatible with [email protected]

    bug released 
    opened by pphanson 26
  • Performance problems of the initial rendering of various editor modes

    Performance problems of the initial rendering of various editor modes

    Describe the bug The performance of the initial rendering of various editor modes seems to significantly differ. By initial rendering I mean the moment a user switches between modes using the toolbar.

    According to our observations and some measurements, the winner, interestingly enough, is the "edit" mode, while the absolute loser is, interestingly enough, the "resize" mode.

    We clearly notice the difference with some huge pages we have here in our internal app, which has a bunch of custom plugins. So to rule out the plugin interference, I'll try to demonstrate using a standard example page.

    The measurements show that the difference in performance is not caused by how long it takes for the component tree to reconcile (render), but how long it takes to commit it, which seems to be a function of the number of state altering side effects.

    The best way to demonstrate the problem is by using the Timings feature of the Performance tab of Chrome Dev Tools. It uses the Timing API which was removed from the latest versions of React, so in order to reproduce the attached measurements you'll need to downgrade your React to 16.x (I used 16.14).

    In the below screenshots I'm using cellSpacing example and simply switching between editor modes. It makes a difference which mode you are switching from, so I took all measurements switching from "preview" to the target mode. When measuring "preview" performance I was switching from "edit".

    I have some Chrome plugins enabled, so absolute numbers are useless. However, when compared to each other they seem to make sense. The reconciliation phase is about the same in all the measurements, but the commit phase differs greatly.

    The "edit" mode is the only one that doesn't seem to have any state altering side effects. Here is the graph for it:

    image

    "Insert" and "preview" modes seem to be about 50% slower, most likely because of some state altering side effect (cascading update warning):

    image

    The "move" mode is usually about 2 times slower, again with the cascading update warning:

    image

    And here's our champ, the "resize" mode:

    image

    It's usually 10-15 times slower than "edit"! It shows the same mammoth number regardless of whether you enter or exit it. The more plugins you have on the page, the bigger hit the "resize" mode sluggishness is going to take. Here is what we see in our case on a huge page with lots of plugins:

    image

    Another way to look at it is using a more standard React DevTools profiler. For 17+ React it is the only option. It lacks the cascading update warning, it doesn't clearly show you the time it took to perform the final stages of the commit, but you can tell the unhealthy cycle by the number of commits.

    cellSpacing example page shows the difference of about 3x times more commits for "preview to resize" switch than "preview to edit" switch. This is a large number, but it's not that staggering. In our application, on a page with 120 plugins we have this:

    Switching from "preview" to "edit":

    image

    And here is switching from "preview" to "resize":

    image

    It looks like a bunch of state altering size effects somewhere in or around ResizableRowCell component.

    Expected behavior Resize mode clearly needs fixing, but it would be nice get rid of cascading update warnings across the board.

    bug released released on @beta 
    opened by avoskresensky 21
  • Bugs due to recent updates

    Bugs due to recent updates

    Hey @macrozone , I see you are doing quite a lot of good work on the lib! Very happy to see that. While updating to the latest version, I've noticed a few small issues and since I am not currently set up with code, I thought I'd run it past you and you can fix in one of your many releases :)

    It all has to do with background plugin: Here https://github.com/react-page/react-page/blob/master/packages/plugins/layout/background/src/Controls/BackgroundDefaultControls.tsx#L147 it should be changed from "onDragEnd" to "onChangeCommit", same here https://github.com/react-page/react-page/blob/master/packages/plugins/layout/background/src/Controls/BackgroundDefaultControls.tsx#L127.

    Then here: https://github.com/react-page/react-page/blob/master/packages/plugins/layout/background/src/Component/index.tsx#L120 the state should be passed in along with the props, otherwise the preview functionality for darken and lighten stops working. This was previously handled by rendering the renderer in Controls like so: https://github.com/react-page/react-page/blob/857b80ac769af74fe8145ba3e19c05bebc8ae541/packages/plugins/layout/background/src/Controls/BackgroundDefaultControls.tsx#L56. But at some point, it was changed thus breaking the preview functionality.

    Carry on with the great work! I especially love the react-dnd update, that was kicking my ass for a while. Cheers

    bug 
    opened by PeterKottas 21
  • updated MaterialUI to 4.3 and React to 16.8.6

    updated MaterialUI to 4.3 and React to 16.8.6

    Proposed changes

    Updated dependencies @material-ui/core to 4.3.0 @material-ui/icons to 4.2.1 @material-ui/styles to 4.3.0 react and react-dom to 16.8.6

    Fixed issues caused by update mentioned in https://material-ui.com/de/guides/migration-v3/:

    • MaterialUI Slider moved from lab to core for example.
    • removed useNextVariants
    • createGenerateClassName moved from core/styles to styles

    Updated also all peerDependencies of all packages.

    Types of changes

    • [ ] Bugfix (non-breaking change which fixes an issue)
    • [ ] New feature (non-breaking change which adds functionality)
    • [x] Breaking change (fix or feature that would cause existing functionality to not work as expected) (To avoid dependency problems caused of new React and MaterialUI versions.)

    Checklist

    • [x] Lint and unit tests pass locally with my changes
    • [ ] I have added tests that prove my fix is effective or that my feature works (nothing to test)
    • [ ] I have added necessary documentation (not appropriate)
    • [ ] Any dependent changes have been merged and published in downstream modules

    Closing issues

    closes #693 maybe also #660

    opened by Fivedark 21
  • core: reduce bundle size

    core: reduce bundle size

    ideas:

    • [ ] remove material ui or wait until version 2 is out (hopefully more leightweight)
    • [ ] check if postcss is really being used and if not remove it @inyono
    • [ ] introduce a lightweight renderer that has zero dependencies
    enhancement 
    opened by aeneasr 21
  • Wrapping the slate plugin

    Wrapping the slate plugin

    Is your feature request related to a problem? Please describe. I have created some plugins based on the slate plugin but wrapped in a component. An example for such a component could be an existing headline compontent with a property for different themes like "Title", "Sub", "Minor", ... you name it. Slate will get the global styling from this parent component, but also allow to use the hover buttons to add a link or underline a certain part. In the toolbar you will find the controls for the headline component properties like "theme".

    My solution is working but:

    • I have to use some parts of the slate plugin, which are not officialy exported. Like: '@react-page/plugins-slate/lib/serialization/createInitialState' or '@react-page/plugins-slate/lib/types/component'
    • I had to replace/extend the (un-)serialization to handle also the states for the parent component properties
    • I don't get TypeScript to accept my plugin type, maybe because of missing SerializationFunctions in my component?

    Is there a nicer way to get this to work? Should the create-plugin-materialui provide factories to build own plugins based on slate?

    Additional context Here my example code. I removed/skipped some parts (properties, type definitions, defaults, ...) to keep it short: Plugin:

    import React from 'react';
    import { lazyLoad } from '@react-page/core';
    import SlatePlugin from '@react-page/plugins-slate';
    import createInitialState from '@react-page/plugins-slate/lib/serialization/createInitialState';
    import { SlateProps } from '@react-page/plugins-slate/lib/types/component';
    import Component from '@react-page/plugins-slate/lib/Component';
    
    import { serialize, unserialize } from '../../utils/slate';
    import { hoverPlugins } from '../../utils/HoverToolbar';
    
    import { defaultHeadingState } from './default/state';
    import HeadingRenderer from './Renderer';
    
    const TitleIcon = lazyLoad(() => import('@material-ui/icons/Title'));
    const HeadingControls = lazyLoad(() => import('./Controls'));
    
    const slate = SlatePlugin();
    
    const Heading = {
      ...slate,
      Component: (props: SlateProps) => (
        <Component
          Renderer={HeadingRenderer}
          Controls={HeadingControls}
          plugins={hoverPlugins}
          serializeFunctions={{}}
          {...props}
        />
      ),
      name: 'teamshirts/content/heading',
      version: '0.0.1',
      IconComponent: <TitleIcon />,
      text: 'Heading',
      description: 'Show a Headline',
      createInitialState: () => ({
        ...createInitialState(),
        ...defaultHeadingState,
      }),
      serialize: serialize(slate.serialize),
      unserialize: unserialize(slate.unserialize),
    };
    
    export default Heading;
    

    Renderer:

    import React, { FunctionComponent } from 'react';
    import Renderer from '@react-page/plugins-slate/lib/Renderer';
    import Heading from '@teamshirts/components.heading';
    
    import { HeadingControlsProps } from '../types/controls';
    
    const HeadingRenderer: FunctionComponent<HeadingControlsProps> = props => {
      const { state, plugins } = props;
    
      const { theme } = state;
    
      return (
        <Heading
          theme={theme}
        >
          <Renderer state={state} plugins={plugins} />
        </Heading>
      );
    };
    
    export default HeadingRenderer;
    

    Controls:

    import React, { FunctionComponent } from 'react';
    import { Editor } from 'slate-react';
    import { BottomToolbar } from '@react-page/ui';
    import FormControl from '@material-ui/core/FormControl/FormControl';
    import InputLabel from '@material-ui/core/InputLabel/InputLabel';
    import Select from '@material-ui/core/Select/Select';
    import Input from '@material-ui/core/Input/Input';
    import MenuItem from '@material-ui/core/MenuItem/MenuItem';
    import FormControlLabel from '@material-ui/core/FormControlLabel/FormControlLabel';
    import Switch from '@material-ui/core/Switch/Switch';
    import { withStyles } from '@material-ui/styles';
    import Heading from '@teamshirts/components.heading';
    
    import { darkTheme } from '../../../../../../config/theme';
    import { bottomToolbarStyles, handleChange } from '../../../utils/component';
    import LeaderInput from '../../../controls/LeaderInput';
    import TrailerInput from '../../../controls/TrailerInput';
    import { HeadingControlsProps } from '../types/controls';
    
    const themes = [
      'title',
      'sub',
      'minor',
    ];
    
    const HeadingControls: FunctionComponent<HeadingControlsProps> = props => {
      const { state, onChange, focused, readOnly, plugins, classes } = props;
    
      const {
        editorState,
        theme,
      } = state;
    
      const onStateChange = ({ value }) =>
        onChange({ ...state, editorState: value });
    
      return (
        <div>
          <Heading
            theme={theme}
          >
            <Editor
              onChange={onStateChange}
              readOnly={Boolean(readOnly)}
              className="ory-plugins-content-slate-container"
              value={editorState}
              plugins={plugins}
              placeholder="Your Headline here ..."
            />
          </Heading>
          {readOnly ? null : (
            <BottomToolbar open={focused} theme={darkTheme}>
              <FormControl className={classes.formControl}>
                <InputLabel htmlFor="theme-helper">Theme</InputLabel>
                <Select
                  name="theme"
                  value={theme || 'title'}
                  onChange={event => handleChange(event, onChange)}
                  input={<Input name="theme" id="theme-helper" />}
                >
                  {themes.map(themeItem => (
                    <MenuItem value={themeItem} key={themeItem}>
                      {themeItem}
                    </MenuItem>
                  ))}
                </Select>
              </FormControl>
            </BottomToolbar>
          )}
        </div>
      );
    };
    
    export default withStyles(bottomToolbarStyles)(HeadingControls);
    
    enhancement 
    opened by Fivedark 20
  • chore(deps): bump qs from 6.5.2 to 6.5.3

    chore(deps): bump qs from 6.5.2 to 6.5.3

    Bumps qs from 6.5.2 to 6.5.3.

    Changelog

    Sourced from qs's changelog.

    6.5.3

    • [Fix] parse: ignore __proto__ keys (#428)
    • [Fix] utils.merge`: avoid a crash with a null target and a truthy non-array source
    • [Fix] correctly parse nested arrays
    • [Fix] stringify: fix a crash with strictNullHandling and a custom filter/serializeDate (#279)
    • [Fix] utils: merge: fix crash when source is a truthy primitive & no options are provided
    • [Fix] when parseArrays is false, properly handle keys ending in []
    • [Fix] fix for an impossible situation: when the formatter is called with a non-string value
    • [Fix] utils.merge: avoid a crash with a null target and an array source
    • [Refactor] utils: reduce observable [[Get]]s
    • [Refactor] use cached Array.isArray
    • [Refactor] stringify: Avoid arr = arr.concat(...), push to the existing instance (#269)
    • [Refactor] parse: only need to reassign the var once
    • [Robustness] stringify: avoid relying on a global undefined (#427)
    • [readme] remove travis badge; add github actions/codecov badges; update URLs
    • [Docs] Clean up license text so it’s properly detected as BSD-3-Clause
    • [Docs] Clarify the need for "arrayLimit" option
    • [meta] fix README.md (#399)
    • [meta] add FUNDING.yml
    • [actions] backport actions from main
    • [Tests] always use String(x) over x.toString()
    • [Tests] remove nonexistent tape option
    • [Dev Deps] backport from main
    Commits
    • 298bfa5 v6.5.3
    • ed0f5dc [Fix] parse: ignore __proto__ keys (#428)
    • 691e739 [Robustness] stringify: avoid relying on a global undefined (#427)
    • 1072d57 [readme] remove travis badge; add github actions/codecov badges; update URLs
    • 12ac1c4 [meta] fix README.md (#399)
    • 0338716 [actions] backport actions from main
    • 5639c20 Clean up license text so it’s properly detected as BSD-3-Clause
    • 51b8a0b add FUNDING.yml
    • 45f6759 [Fix] fix for an impossible situation: when the formatter is called with a no...
    • f814a7f [Dev Deps] backport from main
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • chore(deps): bump decode-uri-component from 0.2.0 to 0.2.2

    chore(deps): bump decode-uri-component from 0.2.0 to 0.2.2

    Bumps decode-uri-component from 0.2.0 to 0.2.2.

    Release notes

    Sourced from decode-uri-component's releases.

    v0.2.2

    • Prevent overwriting previously decoded tokens 980e0bf

    https://github.com/SamVerschueren/decode-uri-component/compare/v0.2.1...v0.2.2

    v0.2.1

    • Switch to GitHub workflows 76abc93
    • Fix issue where decode throws - fixes #6 746ca5d
    • Update license (#1) 486d7e2
    • Tidelift tasks a650457
    • Meta tweaks 66e1c28

    https://github.com/SamVerschueren/decode-uri-component/compare/v0.2.0...v0.2.1

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Does not work with vite

    Does not work with vite

    Describe the bug I wanted to build a sample project with vite and react-page, but as soon as I integrate the editor component it fails with:

    Uncaught SyntaxError: Export 'import_react3' is not defined in module (at chunk-MDNT3GH3.js?v=c8b68aaf:17613:3)
    

    To Reproduce

    1. Check out this sample: https://github.com/Squidex/squidex-samples/tree/compose-sample/jscript/react/sample-compose
    2. Start it with npm i && npm run dev
    3. Goto http://127.0.0.1:5173/editor

    Expected behavior A clear and concise description of what you expected to happen.

    Screenshots If applicable, add screenshots to help explain your problem.

    Desktop (please complete the following information):

    • OS: Windows
    • Browser Chrome
    • Version [e.g. 22]

    Vite 3.2.3 and React 17.0.1, React-Page Editor: 5.2.0

    bug 
    opened by SebastianStehle 4
  • Schema validation on submit

    Schema validation on submit

    Is your feature request related to a problem? Please describe.

    Hello, I'm looking to find an elegant way of checking if all plugins have their required data fulfilled on submit.

    Let's look at the following example:

    const myFirstcellPlugin: CellPlugin<Data> = {
      Renderer: ({ data }) => (
        <SomeCustomComponent title={data.title} />
      ),
      id: 'myFirstCellPlugin',
      title: 'My first cell plugin',
      description: 'My first cell plugin just displays a title',
      version: 1,
      controls: {
        type: 'autoform',
        schema: {
          properties: {
            title: {
              type: 'string',
              default: 'someDefaultValue',
            },
          },
          required: ['title'],
        },
      },
    };
    

    I want on submit to receive an error that the title is empty.

    Describe the solution you'd like

    Maybe some hook that returns all errors from the plugins?

    enhancement 
    opened by daniel-minchev 0
  • chore(deps): bump loader-utils from 2.0.0 to 2.0.4

    chore(deps): bump loader-utils from 2.0.0 to 2.0.4

    Bumps loader-utils from 2.0.0 to 2.0.4.

    Release notes

    Sourced from loader-utils's releases.

    v2.0.4

    2.0.4 (2022-11-11)

    Bug Fixes

    v2.0.3

    2.0.3 (2022-10-20)

    Bug Fixes

    • security: prototype pollution exploit (#217) (a93cf6f)

    v2.0.2

    2.0.2 (2021-11-04)

    Bug Fixes

    • base64 generation and unicode characters (#197) (8c2d24e)

    v2.0.1

    2.0.1 (2021-10-29)

    Bug Fixes

    Changelog

    Sourced from loader-utils's changelog.

    2.0.4 (2022-11-11)

    Bug Fixes

    2.0.3 (2022-10-20)

    Bug Fixes

    • security: prototype pollution exploit (#217) (a93cf6f)

    2.0.2 (2021-11-04)

    Bug Fixes

    • base64 generation and unicode characters (#197) (8c2d24e)

    2.0.1 (2021-10-29)

    Bug Fixes

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Allow Customization of Plugin Drawer

    Allow Customization of Plugin Drawer

    Is your feature request related to a problem? Please describe.

    I am looking to group blocks by type on the Plugin Drawer UI component, for instance, I have layout related blocks and components relatedo to crypto, I wanted to customize the way the plugin list is displayed and also add checkboxes to filter by type on the search bar.

    Describe the solution you'd like

    The best way it would be allow to costumize the plugin drawer component with a custom render component for search and another to list the plugins,

    Describe alternatives you've considered

    The easy way just allow to override the plugin drawer component.

    enhancement 
    opened by JoaoCampos89 2
Releases(v5.3.0)
A Higher Order Component using react-redux to keep form state in a Redux store

redux-form You build great forms, but do you know HOW users use your forms? Find out with Form Nerd! Professional analytics from the creator of Redux

Redux Form 12.6k Jan 3, 2023
Redux-todos - simple react, redux todos

Redux Todos Please star this repo if you like ⭐ It's motivates me a lot! Getting Started This project was bootstrapped with Create React App. Stack Av

Ruslan Shvetsov 2 Jul 29, 2022
This is best boilerplate project using Next.js, Typescript, Redux, Styled-component.

GL-Next boilerplate Start your next Next project in seconds A highly scalable, offline-first foundation with the best DX and a focus on performance an

GOLD LION 1 Sep 1, 2022
A web application to search all the different countries in the world and get details about them which can include languages, currencies, population, domain e.t.c This application is built with CSS, React, Redux-Toolkit and React-Router.

A web application to search all the different countries in the world and get details about them which can include languages, currencies, population, domain e.t.c This application is built with CSS, React, Redux-Toolkit and React-Router. It also includes a theme switcher from light to dark mode.

Franklin Okolie 4 Jun 5, 2022
NodeRPG - Turn-based RPG written in TypeScript along with Ink and React

NodeRPG Role-Playing Game inside the terminal with Ink and React! Running in your machine Requirements NodeJS TypeScript Yarn* Everything can be done

Felipe Silva 6 Jul 31, 2022
An inventory and financial control system created in Next.js and Redux

An inventory and financial control system created in Next.js and Redux

Marcos Andre 25 Nov 10, 2022
Chat Loop is a highly scalable, low-cost, and high performant chat application built on AWS and React leveraging GraphQL subscriptions for real-time communication.

Chat Loop Chat Loop is a highly scalable, low cost and high performant chat application built on AWS and React leveraging GraphQL subscriptions for re

Smile Gupta 24 Jun 20, 2022
A highly impartial suite of React components that can be assembled by the consumer to create a carousel with almost no limits on DOM structure or CSS styles.

A highly impartial suite of React components that can be assembled by the consumer to create a carousel with almost no limits on DOM structure or CSS styles. If you're tired of fighting some other developer's CSS and DOM structure, this carousel is for you.

Vladimir Bezrukov 1 Dec 24, 2021
USA Covid-19 Tracker is a mobile-first application built with React and Redux to give precise information about the virus behavior in the United States. Great transitions and user feedback made with plain CSS.

React.js USA Covid-19 Tracker This application allows the public to keep track of the stadistics of the Covid-19 Pandemic in the United Stated. You wi

Rafael Echart 14 Oct 25, 2022
Shows how React components and Redux to build a friendly user experience with instant visual updates and scaleable code in ecommerce applications

This simple shopping cart prototype shows how React components and Redux can be used to build a friendly user experience with instant visual updates and scaleable code in ecommerce applications.

Alan Vieyra 4 Feb 1, 2022
A website built with React, Redux, and Tailwind for styling. The project is displaying a list of books, adding, and removing books.

Bookstore "Bookstore" is a website built with React, Redux, and Tailwind for styling. The project is displaying a list of books, adding, and removing

Shady Shawkat 5 Dec 19, 2022
React + Redux starter kit / boilerplate with Babel, hot reloading, testing, linting and a working example app built in

A comprehensive starter kit for rapid application development using React. Why Slingshot? One command to get started - Type npm start to start develop

Cory House 9.8k Dec 22, 2022
This command line helps you create components, pages and even redux implementation for your react project

react-help-create This command line helps you create components, pages and even redux implementation for your react project. How to install it? To ins

Omar 27 Dec 10, 2022
Netflix clone app with React.js and Redux

Getting Started with Create React App This project was bootstrapped with Create React App. Available Scripts In the project directory, you can run: np

Moustapha Mahmoud 5 Dec 9, 2022
Build an App using React, Redux, Node and Sequelize.

Individual Project - Henry Pokémon Objetivos del Proyecto Construir una App utilizando React, Redux, Node y Sequelize. Afirmar y conectar los concepto

Rei Orozco 3 Sep 13, 2022
Travelers' Hub with React and Redux

Spacex Travelers' Hub with React and Redux This website displays a list of all available SpaceX rockets. Users can book each rocket by clicking the re

Azonkeu Ornela 7 Dec 18, 2022
Starter Antd 4.0 Admin App Mern( Node.js / React / Redux / Ant Design ) Crud & Auth , Dashboard

Starter Antd Admin (Crud & auth) Mern App (Express.js / React / Redux / MongoDB) App built for DigitalOcean MongoDB Hackathon CRM Starter Mern Antd Ad

Salah Eddine Lalami 208 Jan 8, 2023
Boilerplate for Truffle, Web3.js, React, Redux Toolkit

Truffle, React, Redux Toolkit, Web3.js boilerplate What it's for Currently, it's a nightmare and takes forever trying to get React working with Truffl

Adrian Delgado Ξ 29 Jun 9, 2022
Redux-Toolkit example with React Hooks CRUD Application, Axios, Rest API, Bootstrap

Redux-Toolkit CRUD example with React Hooks, Axios & Web API Build Redux-Toolkit CRUD application with React Hooks and Rest API calls in that: Each it

null 69 Dec 27, 2022