diff --git a/Logic/Tags/And.ts b/Logic/Tags/And.ts index a5161b90fd..78b6d47106 100644 --- a/Logic/Tags/And.ts +++ b/Logic/Tags/And.ts @@ -59,7 +59,7 @@ export class And extends TagsFilter { } asHumanString(linkToWiki: boolean, shorten: boolean, properties) { - return this.and.map(t => t.asHumanString(linkToWiki, shorten, properties)).join("&"); + return this.and.map(t => t.asHumanString(linkToWiki, shorten, properties)).filter(x => x !== "").join("&"); } isUsableAsAnswer(): boolean { diff --git a/Logic/Tags/Tag.ts b/Logic/Tags/Tag.ts index 2d3c8a4a32..90b2c8841a 100644 --- a/Logic/Tags/Tag.ts +++ b/Logic/Tags/Tag.ts @@ -48,7 +48,7 @@ export class Tag extends TagsFilter { } if(v === "" || v === undefined){ // This tag will be removed if in the properties, so we indicate this with special rendering - if(currentProperties !== undefined && (currentProperties[this.key] ?? "") !== ""){ + if(currentProperties !== undefined && (currentProperties[this.key] ?? "") === ""){ // This tag is not present in the current properties, so this tag doesn't change anything return "" } diff --git a/UI/Input/ValidatedTextField.ts b/UI/Input/ValidatedTextField.ts index 12e043b390..8002186069 100644 --- a/UI/Input/ValidatedTextField.ts +++ b/UI/Input/ValidatedTextField.ts @@ -406,9 +406,17 @@ export default class ValidatedTextField { if (str === undefined) { return false; } + if(str.startsWith("tel:")){ + str = str.substring("tel:".length) + } return parsePhoneNumberFromString(str, (country())?.toUpperCase() as any)?.isValid() ?? false }, - (str, country: () => string) => parsePhoneNumberFromString(str, (country())?.toUpperCase() as any).formatInternational(), + (str, country: () => string) => { + if(str.startsWith("tel:")){ + str = str.substring("tel:".length) + } + return parsePhoneNumberFromString(str, (country())?.toUpperCase() as any).formatInternational(); + }, undefined, "tel" ), diff --git a/assets/tagRenderings/questions.json b/assets/tagRenderings/questions.json index 25a9549efa..f43b36ad09 100644 --- a/assets/tagRenderings/questions.json +++ b/assets/tagRenderings/questions.json @@ -71,9 +71,17 @@ "ca": "Quin és el telèfon de {name}?" }, "render": "{phone}", + "mappings": [ + { + "if": "contact:phone~*", + "then": "{contact:phone}", + "hideInAnswer": true + } + ], "freeform": { "key": "phone", - "type": "phone" + "type": "phone", + "addExtraTags": ["contact:phone="] } }, "osmlink": { @@ -140,9 +148,17 @@ "hu": "Mi a(z) {name} e-mail címe?", "ca": "Quina és l'adreça de correu electrònic de {name}?" }, + "mappings": [ + { + "if": "contact:email~*", + "then": "{contact:email}", + "hideInAnswer": true + } + ], "freeform": { "key": "email", - "type": "email" + "type": "email", + "addExtraTags": ["contact:email="] } }, "website": { @@ -168,8 +184,16 @@ "render": "{website}", "freeform": { "key": "website", - "type": "url" - } + "type": "url", + "addExtraTags": ["contact:website="] + }, + "mappings": [ + { + "if": "contact:website~*", + "then": "{contact:website}", + "hideInAnswer": true + } + ] }, "wheelchair-access": { "question": {