Skip to content

Commit 05bad5a

Browse files
committed
feature(form) If select is required add a disabled "Select a value" option
1 parent c74f36b commit 05bad5a

File tree

3 files changed

+13
-3
lines changed

3 files changed

+13
-3
lines changed

js/directives/form.ts

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,8 @@ module fng.directives {
110110
var allInputsVars = formMarkupHelper.allInputsVars(scope, fieldInfo, options, modelString, idString, nameString);
111111
var common = allInputsVars.common;
112112
var value;
113-
var requiredStr = (isRequired || fieldInfo.required) ? ' required' : '';
113+
isRequired = isRequired || fieldInfo.required;
114+
var requiredStr = isRequired ? ' required' : '';
114115
var enumInstruction:IEnumInstruction;
115116

116117
switch (fieldInfo.type) {
@@ -121,7 +122,13 @@ module fng.directives {
121122
common += (fieldInfo.readonly ? 'disabled ' : '');
122123
common += fieldInfo.add ? (' ' + fieldInfo.add + ' ') : '';
123124
value = '<select ' + common + 'class="' + allInputsVars.formControl.trim() + allInputsVars.compactClass + allInputsVars.sizeClassBS2 + '" ' + requiredStr + '>';
124-
if (!isRequired) {
125+
if (isRequired) {
126+
/*
127+
Tell the user to select a value
128+
This becomes disabled in updateRecordWithLookupValues (setting disabled now causes $pristine to be unset, which conflicts with the condition in updateRecordWithLookupValues)
129+
*/
130+
value += '<option class="disableMe" value="">Select a value</option>';
131+
} else {
125132
value += '<option></option>';
126133
}
127134
if (angular.isArray(fieldInfo.options)) {

js/services/record-handler.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,9 @@ module fng.services {
9898
if (newVal) {
9999
setData($scope.record, schemaElement.name, undefined, newVal);
100100
}
101+
if (schemaElement.required) {
102+
angular.element('#' + schemaElement.id + ' .disableMe').prop('disabled', true);
103+
}
101104
}
102105
};
103106

test/midway/selectSpec.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ describe('Select.', function () {
7575
expect(input.length).toBe(5);
7676

7777
var option = angular.element(input[0]);
78-
expect(option.text()).toBe('');
78+
expect(option.text()).toBe('Select a value');
7979

8080
option = angular.element(input[4]);
8181
expect(option.text()).toBe('Hazel');

0 commit comments

Comments
 (0)