diff --git a/locales/validation/no.json b/locales/validation/no.json new file mode 100644 index 0000000..82d004e --- /dev/null +++ b/locales/validation/no.json @@ -0,0 +1,79 @@ +{ + "INVALID_ALPHA": "Kan bare inneholde bokstaver. ", + "INVALID_ALPHA_SPACE": "Kan bare inneholde bokstaver og mellomrom. ", + "INVALID_ALPHA_NUM": "Kan bare inneholde bokstaver og tall. ", + "INVALID_ALPHA_NUM_SPACE": "Kan bare inneholde bokstaver, tall og mellomrom. ", + "INVALID_ALPHA_DASH": "Kan bare inneholde bokstaver, tall og bindestrek. ", + "INVALID_ALPHA_DASH_SPACE": "Kan bare inneholde bokstaver, tall, bindestrek og mellomrom. ", + "INVALID_BETWEEN_CHAR": "Teksten må være mellom :param og :param tegn lang. ", + "INVALID_BETWEEN_NUM": "Det må være en numerisk verdi, mellom :param og :param. ", + "INVALID_BOOLEAN": "Kan bare inneholde en sann eller usann verdi. ", + "INVALID_CREDIT_CARD": "Må være et gyldig kredittkortnummer. ", + "INVALID_DATE_EURO_LONG": "Må være et gyldig datoformat (dd-mm-yyyy) eller (dd/mm/yyyy). ", + "INVALID_DATE_EURO_LONG_BETWEEN": "Må være et gyldig datoformat (dd-mm-yyyy) eller (dd/mm/yyyy) mellom :param and :param. ", + "INVALID_DATE_EURO_LONG_MAX": "Må være et gyldig datoformat (dd-mm-yyyy) eller (dd/mm/yyyy), lik eller før :param. ", + "INVALID_DATE_EURO_LONG_MIN": "Må være et gyldig datoformat (dd-mm-yyyy) eller (dd/mm/yyyy), lik eller etter :param. ", + "INVALID_DATE_EURO_SHORT": "Må være et gyldig datoformat (dd-mm-yy) eller (dd/mm/yy). ", + "INVALID_DATE_EURO_SHORT_BETWEEN": "Må være et gyldig datoformat (dd-mm-yy) eller (dd/mm/yy) mellom :param and :param. ", + "INVALID_DATE_EURO_SHORT_MAX": "Må være et gyldig datoformat (dd-mm-yy) eller (dd/mm/yy), lik eller før :param. ", + "INVALID_DATE_EURO_SHORT_MIN": "Må være et gyldig datoformat (dd-mm-yy) eller (dd/mm/yy), lik eller etter :param. ", + "INVALID_DATE_ISO": "Må være et gyldig datoformat (yyyy-mm-dd). ", + "INVALID_DATE_ISO_BETWEEN": "Må være et gyldig datoformat (yyyy-mm-dd) mellom :param and :param. ", + "INVALID_DATE_ISO_MAX": "Må være et gyldig datoformat (yyyy-mm-dd), lik eller før :param. ", + "INVALID_DATE_ISO_MIN": "Må være et gyldig datoformat (yyyy-mm-dd), lik eller etter :param. ", + "INVALID_DATE_US_LONG": "Må være et gyldig datoformat (mm/dd/yyyy) eller (mm-dd-yyyy). ", + "INVALID_DATE_US_LONG_BETWEEN": "Må være et gyldig datoformat (mm/dd/yyyy) eller (mm-dd-yyyy) mellom :param and :param. ", + "INVALID_DATE_US_LONG_MAX": "Må være et gyldig datoformat (mm/dd/yyyy) eller (mm-dd-yyyy), lik eller før :param. ", + "INVALID_DATE_US_LONG_MIN": "Må være et gyldig datoformat (mm/dd/yyyy) eller (mm-dd-yyyy), lik eller etter :param. ", + "INVALID_DATE_US_SHORT": "Må være et gyldig datoformat (mm/dd/yy) eller (mm-dd-yy). ", + "INVALID_DATE_US_SHORT_BETWEEN": "Må være et gyldig datoformat (mm/dd/yy) eller (mm-dd-yy) between :param and :param. ", + "INVALID_DATE_US_SHORT_MAX": "Må være et gyldig datoformat (mm/dd/yy) eller (mm-dd-yy), lik eller før :param. ", + "INVALID_DATE_US_SHORT_MIN": "Må være et gyldig datoformat (mm/dd/yy) eller (mm-dd-yy), lik eller etter :param. ", + "INVALID_EMAIL": "Må være en gyldig epostadresse. ", + "INVALID_EXACT_LEN": "Må være nøyaktig :param tegn lang. ", + "INVALID_FLOAT": "Kan bare inneholde en positiv flyttalsverdi (heltall ekskludert). ", + "INVALID_FLOAT_SIGNED": "Kan bare inneholde en positiv eller negativ flyttalsverdi (heltall ekskludert). ", + "INVALID_IBAN": "Må være en gyldig IBAN. ", + "INVALID_INPUT_MATCH": "Bekreftelsesfeltet er ikke likt spesifisert felt \":param\". ", + "INVALID_INTEGER": "Må være et positivt heltall. ", + "INVALID_INTEGER_SIGNED": "Må være et positivt eller negativt heltall. ", + "INVALID_IPV4": "Må være en gyldig IP-adresse (IPV4). ", + "INVALID_IPV6": "Må være en gyldig IP-adresse (IPV6). ", + "INVALID_IPV6_HEX": "Må være en gyldig IP-adresse (IPV6 Hex). ", + "INVALID_KEY_CHAR": "Ugyldig tastaturoppføring på felt av type \"number\". ", + "INVALID_MAX_CHAR": "Kan ikke være større enn :param characters. ", + "INVALID_MAX_NUM": "Må være en numerisk verdi, lik, eller mindre enn :param. ", + "INVALID_MIN_CHAR": "Må være minst :param tegn. ", + "INVALID_MIN_NUM": "Må være en numerisk verdi, lik, eller større enn :param. ", + "INVALID_NUMERIC": "Må være et positivt tall. ", + "INVALID_NUMERIC_SIGNED": "Må være et positivt eller negativt tall. ", + "INVALID_PATTERN": "Må være på følgende format: :param. ", + "INVALID_REQUIRED": "Feltet er påkrevd. ", + "INVALID_URL": "Må være en gyldig URL. ", + "INVALID_TIME": "Må være et gyldig tidsformat (tt:mm) OR (tt:mm:ss). ", + + "AREA1": "TextArea: Alfanumerisk + Minimum(15) + Påkrevd", + "ERRORS": "Feil", + "CHANGE_LANGUAGE": "Endre språk.", + "INPUT2": "Positivt eller negativt nummer -- input type=\"number\" -- Feil på ikke-numeriske tegn ", + "INPUT3": "Flyttalssutvalg (heltall ekskludert) -- between_num:x,y eller min_num:x|max_num:y ", + "INPUT4": "Multiple Valideringer + Tilpasset Regex av dato kode (YYWW)", + "INPUT5": "Epost", + "INPUT6": "URL", + "INPUT7": "IP (IPV4)", + "INPUT8": "Kredittkort", + "INPUT9": "Mellom(2,6) Tegn", + "INPUT10": "ISO dato (yyyy-mm-dd)", + "INPUT11": "US LONG dato (mm/dd/yyyy)", + "INPUT12": "Tid (hh:mm eller hh:mm:ss) -- IKKE Påkrevd", + "INPUT13": "AlphaDashSpaces + Påkrevd + Minimum(5) Tegn -- MÅ BRUKE: validation-error-to=\" \"", + "INPUT14": "Alfanumerisk + Påkrevd -- NG-DISABLED", + "INPUT15": "Passord", + "INPUT16": "Passord bekreftelse", + "INPUT17": "Alfanumerisk + Nøyaktig(3) + Påkrevd -- debounce(5sec)", + "INPUT18": "ISO dato (yyyy-mm-dd) -- minimum >= 2001-01-01 ", + "INPUT19": "US SHORT dato (mm/dd/yy) -- mellom 12/01/99 og 12/31/15", + "SAVE": "Lagre", + "SELECT1": "Påkrevd (select) -- validering med (blur) EVENT", + "SHOW_VALIDATION_SUMMARY": "Vis Valideringsoppsummering" +} \ No newline at end of file diff --git a/src/validation-common.js b/src/validation-common.js index 3842110..ebd7f54 100644 --- a/src/validation-common.js +++ b/src/validation-common.js @@ -56,7 +56,7 @@ angular validationCommon.prototype.removeFromValidationSummary = removeFromValidationSummary; // remove an element from the $validationSummary validationCommon.prototype.updateErrorMsg = updateErrorMsg; // update on screen an error message below current form element validationCommon.prototype.validate = validate; // validate current element - + validationCommon.prototype.removeFromFormElementObjectList = removeFromFormElementObjectList; // remove named items from formElements list // return the service object return validationCommon; @@ -180,8 +180,13 @@ angular * @param object attributes */ function updateErrorMsg(message, attrs) { - // attrs.obj if set should be a commonObj - var self = (!!attrs && attrs.obj) ? attrs.obj : this; + var self = this; + // attrs.obj if set, should be a commonObj, and can be self. + // In addition we need to set validatorAttrs, as they are defined as attrs on obj. + if (!!attrs && attrs.obj) { + self = attrs.obj; + self.validatorAttrs = attrs.obj.attrs; + } // element name could be defined in the `attrs` or in the self object var elm = (!!attrs && attrs.elm) ? attrs.elm : self.elm; @@ -205,7 +210,11 @@ angular var firstChar = self.validatorAttrs.validationErrorTo.charAt(0); var selector = (firstChar === '.' || firstChar === '#') ? self.validatorAttrs.validationErrorTo : '#'+self.validatorAttrs.validationErrorTo; errorElm = angular.element(document.querySelector(selector)); - }else { + } + // errorElm can be empty due to: + // 1. validationErrorTo has not been set + // 2. validationErrorTo has been mistyped, and if mistyped, use regular functionality + if(!errorElm || errorElm.length === 0){ // most common way, let's try to find our errorElm = angular.element(document.querySelector('.validation-'+elmInputName)); } @@ -371,6 +380,16 @@ angular return formElements; } + /** Remove objects from FormElement list. + * @param elementName to remove + */ + function removeFromFormElementObjectList(elmName) { + var index = arrayFindObjectIndex(formElements, 'fieldName', elmName); // find index of object in our array + if (index >= 0) { + formElements.splice(index, 1); + } + } + /** Add the error to the validation summary * @param object self * @param string message: error message diff --git a/src/validation-service.js b/src/validation-service.js index 87f4bf9..45ed6f4 100644 --- a/src/validation-service.js +++ b/src/validation-service.js @@ -28,7 +28,8 @@ angular validationService.prototype.checkFormValidity = checkFormValidity; // check the form validity (can be called by an empty validationService and used by both Directive/Service) validationService.prototype.removeValidator = removeValidator; // remove a Validator from an element validationService.prototype.setGlobalOptions = setGlobalOptions; // set and initialize global options used by all validators - + validationService.prototype.clearInvalidValidatorsInSummary = clearInvalidValidatorsInSummary; // clear clearInvalidValidatorsInSummary + return validationService; //---- @@ -91,6 +92,30 @@ angular return self; } // addValidator() + /** Remove all objects in validationsummary and matching objects in FormElementList. + * This is for use in a wizard type setting, where you 'move back' to a previous page in wizard. + * In this case you need to remove invalid validators that will exist in 'the future'. + * @param object Angular Form or Scope Object + */ + function clearInvalidValidatorsInSummary(obj) { + var self = this; + if (typeof obj === "undefined" || typeof obj.$validationSummary === "undefined") { + throw 'checkFormValidity() requires a valid Angular Form or $scope object passed as argument to function properly (ex.: $scope.form1 OR $scope).'; + } + // Get list of names to remove + var elmName = []; + for (var i = 0, ln = obj.$validationSummary.length; i < ln; i++) { + elmName.push(obj.$validationSummary[i].field); + } + // Loop on list of names. Cannot loop on obj.$validationSummary as you are removing objects from it in the loop. + for (i = 0, ln = elmName.length; i < ln; i++) { + if (!!elmName[i]) { + self.commonObj.removeFromFormElementObjectList(elmName[i]); + self.commonObj.removeFromValidationSummary(obj.$validationSummary, elmName[i]); + } + } + } + /** Check the form validity (can be called by an empty validationService and used by both Directive/Service) * Loop through Validation Summary and if any errors found then display them and return false on current function * @param object Angular Form or Scope Object