"use strict"; angular.module("vocabulary") .component("memberWordForm", { templateUrl: "/js/redesign-angular/memberWords/member-word-form.html", controller: "MemberWordFormController", bindings: { word: "<" } }) .controller("MemberWordFormController", ["$scope", "memberWordService", "VALID_PARTS_OF_SPEECH_FOR_USER_DEFINED_WORD", function ($scope, memberWordService, VALID_PARTS_OF_SPEECH_FOR_USER_DEFINED_WORD) { var ctrl = this; ctrl.submissionAttemptHasFailed = false; ctrl.getRegex = function () { var regexOptions = memberWordService.getRegex(); if(!ctrl.submissionAttemptHasFailed) { regexOptions.blankAndGeneralRegex = regexOptions.general; } return regexOptions; }; ctrl.getValidPartsOfSpeech = function () { return VALID_PARTS_OF_SPEECH_FOR_USER_DEFINED_WORD; }; function setFormFieldsDirty() { ctrl.submissionAttemptHasFailed = true; if (ctrl.memberWordForm) { angular.forEach(ctrl.memberWordForm.$error, function(controls, errorName) { angular.forEach(controls, function(control) { control.$setDirty(); }); }); } } ctrl.missingBlank = function (field) { return !memberWordService.stringContainsBlank(field.$viewValue); }; ctrl.invalidCharacters = function (field) { return !memberWordService.stringContainsValidCharacters(field.$viewValue); }; $scope.$on("INVALIDATE_FORM", setFormFieldsDirty); ctrl.invalidField = function (field) { return field.$invalid && field.$dirty; }; }]);