| <script> | 
|   | 
| export default { | 
|   props: { | 
|     isAutoWidth: Boolean, | 
|     updateAll: Boolean | 
|   }, | 
|   | 
|   inject: ['elForm', 'elFormItem'], | 
|   | 
|   render() { | 
|     const slots = this.$slots.default; | 
|     if (!slots) return null; | 
|     if (this.isAutoWidth) { | 
|       const autoLabelWidth = this.elForm.autoLabelWidth; | 
|       const style = {}; | 
|       if (autoLabelWidth && autoLabelWidth !== 'auto') { | 
|         const marginLeft = parseInt(autoLabelWidth, 10) - this.computedWidth; | 
|         if (marginLeft) { | 
|           style.marginLeft = marginLeft + 'px'; | 
|         } | 
|       } | 
|       return (<div class="el-form-item__label-wrap" style={style}> | 
|         { slots } | 
|       </div>); | 
|     } else { | 
|       return slots[0]; | 
|     } | 
|   }, | 
|   | 
|   methods: { | 
|     getLabelWidth() { | 
|       if (this.$el && this.$el.firstElementChild) { | 
|         const computedWidth = window.getComputedStyle(this.$el.firstElementChild).width; | 
|         return Math.ceil(parseFloat(computedWidth)); | 
|       } else { | 
|         return 0; | 
|       } | 
|     }, | 
|     updateLabelWidth(action = 'update') { | 
|       if (this.$slots.default && this.isAutoWidth && this.$el.firstElementChild) { | 
|         if (action === 'update') { | 
|           this.computedWidth = this.getLabelWidth(); | 
|         } else if (action === 'remove') { | 
|           this.elForm.deregisterLabelWidth(this.computedWidth); | 
|         } | 
|       } | 
|     } | 
|   }, | 
|   | 
|   watch: { | 
|     computedWidth(val, oldVal) { | 
|       if (this.updateAll) { | 
|         this.elForm.registerLabelWidth(val, oldVal); | 
|         this.elFormItem.updateComputedLabelWidth(val); | 
|       } | 
|     } | 
|   }, | 
|   | 
|   data() { | 
|     return { | 
|       computedWidth: 0 | 
|     }; | 
|   }, | 
|   | 
|   mounted() { | 
|     this.updateLabelWidth('update'); | 
|   }, | 
|   | 
|   updated() { | 
|     this.updateLabelWidth('update'); | 
|   }, | 
|   | 
|   beforeDestroy() { | 
|     this.updateLabelWidth('remove'); | 
|   } | 
| }; | 
| </script> |