dialog web components







Docs & Demo
Installation
yarn add @dlghq/dialog-components
or
npm install --save @dlghq/dialog-components
Usage example
import React from 'react';
import { render } from 'react-dom';
import { Avatar } from '@dlghq/dialog-components';
const container = document.getElementById('container');
render(
<Avatar
title="Hipster Partycat"
image="https://octodex.github.com/images/hipster-partycat.jpg"
/>,
container
);
More components.
Webpack configuration
We're not compiling JS & CSS code before publishing.
You have to update or add webpack configuration to your build pipeline.
yarn add babel-loader postcss-loader css-loader style-loader svg-sprite-loader
yarn add @dlghq/babel-preset-dialog @dlghq/postcss-dialog
const fs = require('fs');
const path = require('path');
function resolve(...paths) {
return fs.realpathSync(path.join(__dirname, ...paths));
}
const whitelist = [
resolve('src'),
resolve('node_modules/@dlghq/dialog-components/src'),
resolve('node_modules/@dlghq/markdown'),
resolve('node_modules/@dlghq/react-l10n'),
resolve('node_modules/@dlghq/dialog-types'),
resolve('node_modules/@dlghq/dialog-utils'),
resolve('node_modules/@dlghq/country-codes')
];
module.exports = {
module: {
rules: [
{
test: /\.js$/,
include: whitelist,
loader: 'babel-loader',
options: {
babelrc: false,
cacheDirectory: true,
presets: [
[
'@dlghq/dialog',
{
modules: false,
runtime: false
}
]
]
}
},
{
test: /\.css$/,
use: [
'style-loader',
{
loader: 'css-loader',
options: {
modules: false,
importLoaders: 1
}
},
{
loader: 'postcss-loader',
options: {
plugins() {
return require('@dlghq/postcss-dialog')();
}
}
}
],
include: [
resolve('node_modules/@dlghq/dialog-components/src/styles/global.css')
]
},
{
test: /\.css$/,
include: whitelist,
exclude: [
resolve('node_modules/@dlghq/dialog-components/src/styles/global.css')
],
use: [
'style-loader',
{
loader: 'css-loader',
options: {
modules: true,
importLoaders: 1,
localIdentName: '[name]__[local]'
}
},
{
loader: 'postcss-loader',
options: {
plugins() {
return require('@dlghq/postcss-dialog')();
}
}
}
]
},
{
test: /\.(jpg|png|svg|gif)$/,
exclude: resolve('node_modules/@dlghq/dialog-components/src/components/Icon/svg'),
loader: 'file-loader'
},
{
test: /\.svg$/,
include: resolve('node_modules/@dlghq/dialog-components/src/components/Icon/svg'),
loader: 'svg-sprite-loader'
}
]
}
};
Translations
For some complex components, like AuthForm
you should wrap your components tree
by @dlghq/react-l10n
Provider
component.
Before publishing we generate messages.json
bundle, which you should pass to Provider
.
import React from 'react';
import { render } from 'react-dom';
import { Provider } from '@dlghq/react-l10n';
import dialogMessages from '@dlghq/dialog-components/src/messages.json';
import appMessages from './messages';
const container = document.getElementById('container');
const messages = { ...dialogMessages, ...appMessages };
render(
<Provider messages={messages} locale={navigator.language}>
<App />
</Provider>,
container
);
Development
NPM scripts:
npm start
start dev server
npm run create
create new component
npm test
run tests
npm run lint
run linters
npm run format
run formatters
npm run build
build library
npm run docs
build docs
npm run release
build & publish to npm & publish to gh-pages
License
Apache-2.0