@gitlab/ui 123.11.0 → 123.11.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -66,7 +66,8 @@ var script = {
|
|
|
66
66
|
data() {
|
|
67
67
|
return {
|
|
68
68
|
fieldDirtyStatuses: {},
|
|
69
|
-
fieldValidations: {}
|
|
69
|
+
fieldValidations: {},
|
|
70
|
+
fieldIds: {}
|
|
70
71
|
};
|
|
71
72
|
},
|
|
72
73
|
computed: {
|
|
@@ -95,7 +96,7 @@ var script = {
|
|
|
95
96
|
},
|
|
96
97
|
fieldsToRender() {
|
|
97
98
|
return mapValues(this.fields, (field, fieldName) => {
|
|
98
|
-
const id =
|
|
99
|
+
const id = this.memoizeAndReturnFieldId(field, fieldName);
|
|
99
100
|
const inputSlotName = `input(${fieldName})`;
|
|
100
101
|
const groupPassthroughSlotName = `group(${fieldName})-`;
|
|
101
102
|
const afterSlotName = `after(${fieldName})`;
|
|
@@ -160,6 +161,15 @@ var script = {
|
|
|
160
161
|
}
|
|
161
162
|
return val;
|
|
162
163
|
},
|
|
164
|
+
memoizeAndReturnFieldId(field, fieldName) {
|
|
165
|
+
const memoizedId = this.fieldIds[fieldName];
|
|
166
|
+
if (memoizedId) {
|
|
167
|
+
return memoizedId;
|
|
168
|
+
}
|
|
169
|
+
const id = field.id || uniqueId('gl-form-field-');
|
|
170
|
+
this.fieldIds[fieldName] = id;
|
|
171
|
+
return id;
|
|
172
|
+
},
|
|
163
173
|
onFieldValidationUpdate(fieldName, invalidFeedback) {
|
|
164
174
|
this.fieldValidations = setObjectProperty(this.fieldValidations, fieldName, invalidFeedback);
|
|
165
175
|
this.$emit('field-validation', {
|
|
@@ -206,10 +216,10 @@ var script = {
|
|
|
206
216
|
const __vue_script__ = script;
|
|
207
217
|
|
|
208
218
|
/* template */
|
|
209
|
-
var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',
|
|
219
|
+
var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',_vm._l((_vm.fieldsToRender),function(field,fieldName){return _c('div',{key:field.id},[_c('gl-form-group',_vm._b({attrs:{"label":field.label,"label-for":field.id,"invalid-feedback":_vm.fieldValidationProps[fieldName].invalidFeedback,"state":_vm.fieldValidationProps[fieldName].state},scopedSlots:_vm._u([_vm._l((field.groupPassthroughSlots),function(ref){
|
|
210
220
|
var slotName = ref.slotName;
|
|
211
221
|
var childSlotName = ref.childSlotName;
|
|
212
|
-
return {key:childSlotName,fn:function(){return [_vm._t(slotName)]},proxy:true}})],null,true)},'gl-form-group',field.groupAttrs,false),[_c('gl-form-field-validator',{attrs:{"value":_vm.fieldValues[fieldName],"validators":field.validators,"should-validate":_vm.fieldDirtyStatuses[fieldName]},on:{"update":function($event){return _vm.onFieldValidationUpdate(fieldName, $event)}}}),_vm._v(" "),_vm._v(" "),_vm._t(field.inputSlot.slotName,function(){return [_c('gl-form-input',_vm._b({attrs:{"id":field.id,"value":_vm.fieldValues[fieldName],"state":_vm.fieldValidationProps[fieldName].state},on:{"input":function($event){return _vm.onFieldInput(fieldName, $event)},"blur":function($event){return _vm.onFieldBlur(fieldName)}}},'gl-form-input',field.inputAttrs,false))]},null,field.inputSlot.attrs)],2),_vm._v(" "),_vm._t(field.afterSlotName)]})
|
|
222
|
+
return {key:childSlotName,fn:function(){return [_vm._t(slotName)]},proxy:true}})],null,true)},'gl-form-group',field.groupAttrs,false),[_c('gl-form-field-validator',{attrs:{"value":_vm.fieldValues[fieldName],"validators":field.validators,"should-validate":_vm.fieldDirtyStatuses[fieldName]},on:{"update":function($event){return _vm.onFieldValidationUpdate(fieldName, $event)}}}),_vm._v(" "),_vm._v(" "),_vm._t(field.inputSlot.slotName,function(){return [_c('gl-form-input',_vm._b({attrs:{"id":field.id,"value":_vm.fieldValues[fieldName],"state":_vm.fieldValidationProps[fieldName].state},on:{"input":function($event){return _vm.onFieldInput(fieldName, $event)},"blur":function($event){return _vm.onFieldBlur(fieldName)}}},'gl-form-input',field.inputAttrs,false))]},null,field.inputSlot.attrs)],2),_vm._v(" "),_vm._t(field.afterSlotName)],2)}),0)};
|
|
213
223
|
var __vue_staticRenderFns__ = [];
|
|
214
224
|
|
|
215
225
|
/* style */
|