Files
remark42/frontend
Pacharapol WithayasakpuntandGitHub 5d6729ddd5 Fix to work without errors in Nuxt Universal (#723)
by @patarapolw 

* allow manual init and destroy for use with Nuxt

* fix onDestroy-related methods

* avoid global scope, and use function scope instead

* add createInstance function to window.REMARK42

* 1. allow DOMNode to be put in remark_config 2. check remark_config before try to attach node

* move createInstance function outside

* update embed.ts

* avoid ?.

* 📚 Docs: doc on how to make it work with SPAs

* 📚 Docs: fix spa.md to be more flexible

*  Feat: add REMARK42::ready event

* remove nuxt-specific terminologies

* tell MutationObserver to disconnect on destroy

* update docs/spa.md
2020-07-31 12:21:00 -05:00
..
2020-05-24 14:08:48 -05:00
2020-02-22 00:48:22 -06:00
2020-04-12 14:07:16 -05:00
2020-03-04 14:56:00 -06:00
2020-02-16 11:25:59 -06:00
2020-01-07 11:14:59 -06:00
2020-03-22 16:11:01 -05:00
2020-01-05 17:52:25 -06:00
2020-05-19 15:11:35 -05:00
2020-03-07 12:25:18 -06:00
2020-04-13 14:36:19 +03:00
2019-04-28 19:27:36 +03:00
2020-03-04 14:56:00 -06:00

Frontend guide

Code Style

  • project uses typescript to statically analyze code
  • project uses eslint and stylelint to check frontend code. You can manually run via npm run lint.
  • git hooks (via husky) installed automatically on npm install and check and try to fix code style if possible, otherwise commit will be rejected
  • if you want IDE integration, you need eslint and stylelint plugin to be installed.

CSS Styles

  • although styles have scss extension, it is actually pack of post-css plugins, so syntax differs, for example in calc function.
  • now we are migrating to css-modules and this is recomended way to stylization. A file with styles should be named like component.module.css
  • old component styles use BEM notation (at least it should): block__element_modifier. Also there are mix classes: block_modifier.
  • new way to naming CSS selectors is camel-case like blockElemenModifier and use classnames to combine it
  • component base style resides in the component's root directory with name of component converted to kebab-case. For example ListComments style is located in ./app/components/list-comments/list-component.tsx
  • any other files should be named also in kebab-case. For example ./app/utils/get-param.ts

Imports

  • imports for typescript, javascript files should be without extension: ./index, not ./index.ts
  • if file resides in the same directory or in subdirectory import should be relative: ./types/something
  • otherwise it should start from @app namespace: @app/common/store which mapped to /app/common/store.ts in webpack, tsconfig and jest

Testing

  • project uses jest as test harness.
  • jest check files that match regex \.test\.(j|t)s(x?)$, i.e comment.test.tsx, comment.test.js
  • tests are running on push attempt
  • example tests can be found in ./app/store/user/reducers.test.ts, ./app/components/auth-panel/auth-panel.test.tsx

How to add new locale

Please see this documentation.

Notes

  • Frontend part being bundled on docker env gets placed on /src/web and is available via http://{host}/web. for example embed.js entry point will be available at http://{host}/web/embed.js