2.1.1 • Published 7 years ago

dwayne-styles v2.1.1

Weekly downloads
12
License
-
Repository
-
Last release
7 years ago

dwayne-styles

Why?

The plugin is needed for setting styles in a more convenient way than using Style mixin.

Installation

$ npm install --save dwayne-styles

Usage

<script>
  import { Styles } from 'dwayne-styles';
</script>
<!-- User/index.html -->

<!-- provide usual string in the value -->
<div class="user" Styles="visible">
  <span class="name" Styles="common.bigCaption, user.name">
    {globals.user.name}
  </span>
  <!-- you may also provide args instead of value -->
  <span class="birthday" Styles(common.date,user.birthday)>
    {globals.user.birthday}
  </span>
</div>
// User/index.js

import { Block } from 'dwayne';
import html from './index.html';

class User extends Block {
  static html = html;
  static styles = {
    user: {
      name: {
        fontWeight: 'bold',
        fontStyle: 'italic'
      },
      birthday: {
        textTransform: 'uppercase'
      }
    },
    visible: {
      display: js`args.visible ? undefined : 'none'`
    }
  };
}

export default User;
// app/plugins.js

import { Styles } from 'dwayne-styles';

// you can add default values to the mixin
Styles.addCommonStyles({
  common: {
    bigCaption: {
      fontSize: '20px'
    },
    date: {
      textTransform: 'uppercase'
    }
  }
});

API

You may use the mixin in two ways: providing a string as a value which contains styles separated by a comma, spaces or both OR providing mixin args. Note that the value is not watched.

Example:

<div Styles="styles1, prefix1.prefix2.styles2, prefix.styles"/>
<div Styles="styles1  prefix1.prefix2.styles2  prefix.styles"/>
<div Styles(styles1,prefix1.prefix2.styles2,prefix.styles)/>

Each style may be a common style (set by Styles.addCommonStyles) or a style which is set in a static styles property in the block class (which uses the styles mixin). Each style is a path to a styles object. All styles from the mixin are then merged from left to right and applied to the element. If the style value is undefined it's skipped.

Note that you can use js expressions as values (you may use dwayne babel preset or set a pure function which excepts the block as the only parameter). They are watched and each time the result is changed the styles are applied again.

Styles.addCommonStyles(commonStyles)

Deep merges the previous common styles with the new ones.

2.1.1

7 years ago

2.0.0

7 years ago

1.0.1

7 years ago

1.0.0

7 years ago