@justeattakeaway/pie-icons-vue
Version:
PIE Design System Icon set for Vue
44 lines (37 loc) • 1.41 kB
JavaScript
import { largeIconSizeDefault, iconSizeValidator, regularIconSizeDefault, getSvgProps } from './configs.mjs';
/**
* Object with size props configuration for large and regular icons
*/
const iconSize = {
large: {
type: [Number],
default: largeIconSizeDefault,
validator: iconSizeValidator.large,
},
regular: {
type: [String],
default: regularIconSizeDefault,
validator: 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 = 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;
};
export { iconSize, updateContextData };