UNPKG

taro-ui-vue3

Version:

Taro UI Rewritten in Vue 3.0

50 lines (49 loc) 1.14 kB
import {computed} from "vue"; import {convertToUnit, keys} from "../utils/common"; import propsFactory from "../utils/propsFactory"; const allDimensionsProps = { height: { type: [Number, String] }, maxHeight: { type: [Number, String] }, maxWidth: { type: [Number, String] }, minHeight: { type: [Number, String] }, minWidth: { type: [Number, String] }, width: { type: [Number, String] } }; function dimensionsFactory(...possibleProps) { const selectedProps = possibleProps.length ? possibleProps : keys(allDimensionsProps); const makeDimensionsProps = propsFactory(selectedProps.reduce((obj, prop) => { obj[prop] = allDimensionsProps[prop]; return obj; }, {})); const useDimensions = (props) => { const dimensions = computed(() => { return selectedProps.reduce((obj, key) => { const value = props[key]; if (value) { obj.style[key] = convertToUnit(value); } return obj; }, {style: {}}); }); return {dimensions}; }; return { makeDimensionsProps, useDimensions }; } export { dimensionsFactory };