1.0.2 • Published 4 months ago

complate-fractal v1.0.2

Weekly downloads
48
License
Apache-2.0
Repository
github
Last release
4 months ago

complate Adapter for Fractal

Build Status Greenkeeper badge

Note: Because of the security vulnerabilities in the official fractal branch, complate-fractal now uses this fork.

Installation

Add complate-fractal to your Fractal-based styleguide project:

npm install complate-fractal

or

yarn add complate-fractal

Configuring Fractal

In your project's fractal.config.js, you need to register complate as templating engine:

let fractal = module.exports = require('fractal-fork').fractal.create()
let complate = require('complate-fractal')

…

fractal.components.engine(complate({
  rootDir: __dirname,
  generateURI: function(uri) {
    // NB: invocation context is `{ assetPath }`, providing access to
    //     Fractal-specific URI generation
    return this.assetPath(uri)
  }
}));

rootDir specifies which directory component samples' import paths are relative to:

import MyWidget from './components/my-widget'

<MyWidget …>

generateURI implements an application-specific URI helper, provided to components via the application context (via envPath, defaults to env.js):

// application-specific context; this will be populated (i.e. mutated) at
// runtime by the respective application
exports.context = {
  uri: function toBeDefined() {
    throw new Error("application context is not defined");
  }
};
import { context } from '../env'

export default function MyWidget (params, ...children) {
  let uri = context.uri('/path/to/resource')
  …
}

In addition, you need to provide a PreviewLayout component (via previewPath, which defaults to _preview.jsx within the components directory):

export default function PreviewLayout({ context }, ...children) {
  return <html lang="en">
    …
    <body>
      …
      {children}
      …
    </body>
  </html>;
}

Usage with Fractal

Context

You need to reference context values via the context object:

<MyWidget>{context.my_label}</MyWidget>

Referencing components

Fractal (with Handlebars) brings support for including existing components within others:

<div class="my-component">
  {{> @my_other_component }}
</div>

complate has its own way for doing that by using HTML expansion without any special markers or syntax you have to remember:

<MyComponent>
  <MyOtherComponent />
</MyComponent>

Therefore we don’t support Fractal's @-prefixed view handlers for now.

Examples

Development

Release

  1. Increment version number in package.json
  2. Commit as "vX.X.X"
  3. git tag -am "vX.X.X" "vX.X.X"
  4. git push --follow-tags
  5. npm publish
1.0.2

4 months ago

1.0.1

1 year ago

1.0.0

2 years ago

0.15.0

3 years ago

0.14.0

3 years ago

0.13.0

3 years ago

0.12.0

4 years ago

0.11.1

4 years ago

0.10.0

4 years ago

0.9.0

4 years ago

0.8.2

5 years ago

0.8.1

5 years ago

0.8.0

5 years ago

0.7.0

6 years ago

0.6.5

6 years ago

0.6.4

6 years ago

0.6.1

6 years ago

0.5.0

6 years ago

0.4.4

6 years ago

0.4.3

6 years ago

0.4.2

7 years ago

0.4.1

7 years ago

0.4.0

7 years ago

0.3.1

7 years ago

0.3.0

7 years ago

0.2.0

7 years ago

0.1.7

7 years ago

0.1.6

7 years ago

0.1.5

7 years ago

0.1.4

7 years ago

0.1.3

7 years ago

0.1.2

7 years ago

0.1.1

7 years ago