diff --git a/CHANGELOG.md b/CHANGELOG.md index 607b576..bde31ac 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.13.1 + +This version adds missing translations for the `variableNameValidator` function [#37](https://github.com/nocode-js/sequential-workflow-editor/issues/37). + ## 0.13.0 This version introduces several internal changes that allowed for the creation of a new type of editor in the pro version: the hidden dependent value editor. diff --git a/demos/webpack-app/package.json b/demos/webpack-app/package.json index 78aca20..13950a4 100644 --- a/demos/webpack-app/package.json +++ b/demos/webpack-app/package.json @@ -18,8 +18,8 @@ "sequential-workflow-model": "^0.2.0", "sequential-workflow-designer": "^0.21.2", "sequential-workflow-machine": "^0.4.0", - "sequential-workflow-editor-model": "^0.13.0", - "sequential-workflow-editor": "^0.13.0" + "sequential-workflow-editor-model": "^0.13.1", + "sequential-workflow-editor": "^0.13.1" }, "devDependencies": { "ts-loader": "^9.4.2", diff --git a/docs/I18N-KEYS.md b/docs/I18N-KEYS.md index 809a4c2..70a7d86 100644 --- a/docs/I18N-KEYS.md +++ b/docs/I18N-KEYS.md @@ -47,6 +47,9 @@ This document lists all the I18N keys used in the Sequential Workflow Editor. "variableDefinitions.delete": "Delete", "variableDefinitions.namePlaceholder": "Variable name", "variableDefinitions.valueTypeIsNotAllowed": "Value type is not allowed", - "variableDefinitions.variableNameIsDuplicated": "Variable name is already used" + "variableDefinitions.variableNameIsDuplicated": "Variable name is already used", + "variableName.invalidCharacters": "Variable name contains invalid characters", + "variableName.maxLength": "Variable name must be :n characters or less", + "variableName.required": "Variable name is required" } ``` diff --git a/editor/package.json b/editor/package.json index aba1f15..7e324a3 100644 --- a/editor/package.json +++ b/editor/package.json @@ -1,6 +1,6 @@ { "name": "sequential-workflow-editor", - "version": "0.13.0", + "version": "0.13.1", "type": "module", "main": "./lib/esm/index.js", "types": "./lib/index.d.ts", @@ -46,11 +46,11 @@ "prettier:fix": "prettier --write ./src ./css" }, "dependencies": { - "sequential-workflow-editor-model": "^0.13.0", + "sequential-workflow-editor-model": "^0.13.1", "sequential-workflow-model": "^0.2.0" }, "peerDependencies": { - "sequential-workflow-editor-model": "^0.13.0", + "sequential-workflow-editor-model": "^0.13.1", "sequential-workflow-model": "^0.2.0" }, "devDependencies": { diff --git a/model/package.json b/model/package.json index fa0fd72..76afaad 100644 --- a/model/package.json +++ b/model/package.json @@ -1,6 +1,6 @@ { "name": "sequential-workflow-editor-model", - "version": "0.13.0", + "version": "0.13.1", "homepage": "https://nocode-js.com/", "author": { "name": "NoCode JS", diff --git a/model/src/validator/variable-name-validator.spec.ts b/model/src/validator/variable-name-validator.spec.ts index 637cf2e..7c24663 100644 --- a/model/src/validator/variable-name-validator.spec.ts +++ b/model/src/validator/variable-name-validator.spec.ts @@ -1,21 +1,24 @@ +import { defaultI18n } from '../i18n'; import { variableNameValidator } from './variable-name-validator'; describe('VariableNameValidator', () => { + const i18n = defaultI18n; + it('creates correctly', () => { - expect(variableNameValidator('a')).toBeNull(); - expect(variableNameValidator('ab')).toBeNull(); - expect(variableNameValidator('a-b-c')).toBeNull(); - expect(variableNameValidator('FooBar')).toBeNull(); - expect(variableNameValidator('foo_bar')).toBeNull(); - expect(variableNameValidator('item1')).toBeNull(); - expect(variableNameValidator('item_1')).toBeNull(); - expect(variableNameValidator('Item_1')).toBeNull(); - expect(variableNameValidator('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa_b')).toBeNull(); + expect(variableNameValidator(i18n, 'a')).toBeNull(); + expect(variableNameValidator(i18n, 'ab')).toBeNull(); + expect(variableNameValidator(i18n, 'a-b-c')).toBeNull(); + expect(variableNameValidator(i18n, 'FooBar')).toBeNull(); + expect(variableNameValidator(i18n, 'foo_bar')).toBeNull(); + expect(variableNameValidator(i18n, 'item1')).toBeNull(); + expect(variableNameValidator(i18n, 'item_1')).toBeNull(); + expect(variableNameValidator(i18n, 'Item_1')).toBeNull(); + expect(variableNameValidator(i18n, 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa_b')).toBeNull(); - expect(variableNameValidator('1')).toContain('invalid characters'); - expect(variableNameValidator('fooBar&')).toContain('invalid characters'); - expect(variableNameValidator('1_')).toContain('invalid characters'); - expect(variableNameValidator('')).toContain('is required'); - expect(variableNameValidator('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa_bc')).toContain('32 characters or less'); + expect(variableNameValidator(i18n, '1')).toContain('invalid characters'); + expect(variableNameValidator(i18n, 'fooBar&')).toContain('invalid characters'); + expect(variableNameValidator(i18n, '1_')).toContain('invalid characters'); + expect(variableNameValidator(i18n, '')).toContain('is required'); + expect(variableNameValidator(i18n, 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa_bc')).toContain('32 characters or less'); }); }); diff --git a/model/src/validator/variable-name-validator.ts b/model/src/validator/variable-name-validator.ts index 50ade5e..36d7c0c 100644 --- a/model/src/validator/variable-name-validator.ts +++ b/model/src/validator/variable-name-validator.ts @@ -1,14 +1,18 @@ +import { I18n } from '../i18n'; + const MAX_LENGTH = 32; -export function variableNameValidator(name: string): string | null { +export function variableNameValidator(i18n: I18n, name: string): string | null { if (!name) { - return 'Variable name is required.'; + return i18n('variableName.required', 'Variable name is required'); } if (name.length > MAX_LENGTH) { - return `Variable name must be ${MAX_LENGTH} characters or less.`; + return i18n('variableName.maxLength', 'Variable name must be :n characters or less', { + n: String(MAX_LENGTH) + }); } if (!/^[A-Za-z][a-zA-Z_0-9-]*$/.test(name)) { - return 'Variable name contains invalid characters.'; + return i18n('variableName.invalidCharacters', 'Variable name contains invalid characters'); } return null; } diff --git a/model/src/value-models/nullable-variable-definition/nullable-variable-definition-value-model.ts b/model/src/value-models/nullable-variable-definition/nullable-variable-definition-value-model.ts index f9a2ea0..7c266a6 100644 --- a/model/src/value-models/nullable-variable-definition/nullable-variable-definition-value-model.ts +++ b/model/src/value-models/nullable-variable-definition/nullable-variable-definition-value-model.ts @@ -43,7 +43,7 @@ export const createNullableVariableDefinitionValueModel = ( ); } if (value) { - const nameError = variableNameValidator(value.name); + const nameError = variableNameValidator(context.i18n, value.name); if (nameError) { return createValidationSingleError(nameError); } diff --git a/model/src/value-models/variable-definitions/variable-definitions-value-model.ts b/model/src/value-models/variable-definitions/variable-definitions-value-model.ts index 98cb4ea..5d3a250 100644 --- a/model/src/value-models/variable-definitions/variable-definitions-value-model.ts +++ b/model/src/value-models/variable-definitions/variable-definitions-value-model.ts @@ -36,7 +36,7 @@ export const createVariableDefinitionsValueModel = ( const value = context.getValue(); value.variables.forEach((variable, index) => { - const nameError = variableNameValidator(variable.name); + const nameError = variableNameValidator(context.i18n, variable.name); if (nameError) { errors[index] = nameError; return;