123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- <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>
|