@justeattakeaway/pie-icons-vue
Version:
Shared PIE Icon Components for Vue.js.
47 lines (39 loc) • 1.43 kB
JavaScript
;
var configs = require('./configs.cjs');
/**
* Object with size props configuration for large and regular icons
*/
const iconSize = {
large: {
type: [Number],
default: configs.largeIconSizeDefault,
validator: configs.iconSizeValidator.large,
},
regular: {
type: [String],
default: configs.regularIconSizeDefault,
validator: configs.iconSizeValidator.regular,
},
};
/**
* Update Vue icon component context data based on the provided svgClasses and current props, such as class
* @param {Object} ctx - Vue icon component context
* @param {string} svgClasses - String of classes assigned to the component
* @returns {Object} - Updated context data
*/
const updateContextData = (ctx, svgClasses, componentName) => {
const { staticClass } = ctx.data;
/* eslint-disable @typescript-eslint/no-unused-vars */
const {
width,
height,
...rest
} = ctx.data.attrs || {};
/* eslint-enable @typescript-eslint/no-unused-vars */
const props = configs.getSvgProps(svgClasses, staticClass, ctx.props.size, componentName);
ctx.data.attrs = { ...rest, ...props };
ctx.data.staticClass = ctx.data.attrs.class; // Necessary otherwise classes assigned in markup override the ones assigned in getSvgProps
return ctx.data;
};
exports.iconSize = iconSize;
exports.updateContextData = updateContextData;