withExtraConfig
Use this decorator to quickly create variants of an existing class.
Usage
js
import { withExtraConfig } from '@studiometa/js-toolkit';
import Component from './Component.js';
export default withExtraConfig(Component, { log: true });
Parameters
BaseClass
(Base
): The class to add extra configuration to.config
(BaseConfig
): The extra config to merge with the existing one, see Configuration for more details
Return value
Base
: A child class of the given class with the merge configuration
Examples
Add new refs
This decorator can be used to easily add a new ref to an existing component.
js
import Modal from '@studiometa/ui/Modal';
import { withExtraConfig } from '@studiometa/js-toolkit';
export default withExtraConfig(Modal, { refs: ['toggle'] });
Change default options
Components can define default values for their options, this decorator can be used to change them without the hassle of re-writing the whole configuration.
js
import Modal from '@studiometa/ui/Modal';
import { withExtraConfig } from '@studiometa/js-toolkit';
export default withExtraConfig(Modal, {
options: {
styles: {
default: () => ({
/* ... */
}),
},
},
});
Enable debug or log easily
This decorator can be used to quickly enable debug for an external component.
js
import { Base, withExtraConfig } from '@studiometa/js-toolkit';
import Modal from '@studiometa/ui/Modal';
class App extends Base {
static config = {
name: 'App',
components: {
Modal: withExtraConfig(Modal, { debug: true }),
},
};
}
Pass option to the merge function
This decorator uses deepmerge
to merge the config
properties, you can pass options to it with the third parameter:
js
import { withExtraConfig } from '@studiometa/js-toolkit';
import Modal from '@studiometa/ui/Modal';
export default withExtraConfig(Modal, {
refs: ['toggle']
}, {
arrayMerge(target, source, options) { /* ... */ }
})