diff --git a/ts/interfaces/index.ts b/ts/interfaces/index.ts index cfb619f..ca7fd9c 100644 --- a/ts/interfaces/index.ts +++ b/ts/interfaces/index.ts @@ -2,7 +2,7 @@ import * as plugins from '../websetup.plugins'; export interface IMetaObject { title: string; - description: string; + description?: string; canonicalDomain?: string; ldCompany?: plugins.tsclass.business.ICompany; ldProduct?: any; diff --git a/ts/websetup.classes.taglevel.ts b/ts/websetup.classes.taglevel.ts index 6f69fe9..933a044 100644 --- a/ts/websetup.classes.taglevel.ts +++ b/ts/websetup.classes.taglevel.ts @@ -11,7 +11,17 @@ export type TLevelState = 'enabled' | 'disabled'; export class TagLevel { public tagManagerRef: TagManager; - public title: string; + private titleStore: string; + public set title(titleArg: string) { + this.titleStore = titleArg; + if (this.state === 'enabled') { + document.title = this.titleStore; + } + } + public get title() { + return this.titleStore; + } + public type: TBaseLevelType; public tags: Tag[] = []; diff --git a/ts/websetup.classes.tagmanager.ts b/ts/websetup.classes.tagmanager.ts index 931b26d..654468b 100644 --- a/ts/websetup.classes.tagmanager.ts +++ b/ts/websetup.classes.tagmanager.ts @@ -6,22 +6,22 @@ import { JsonLdTag } from './websetup.classes.tag.jsonldtag'; import { OpengraphTag } from './websetup.classes.tag.opengraphtag'; export class TagManager { - public globalLevel: TagLevel; + public globalLevel: TagLevel = new TagLevel(this, 'global'); - public baseLevel: TagLevel; + public baseLevel: TagLevel = new TagLevel(this, 'base'); public activeLevel: TagLevel; public async setup(metaObjectArg: interfaces.IMetaObject) { // global tag level - this.globalLevel = new TagLevel(this, 'global'); this.globalLevel.addTag(new MetaTag('google', 'notranslate')); this.globalLevel.addTag(new MetaTag('revisit-after', '1 days')); // base tag level - this.baseLevel = new TagLevel(this, 'base'); this.baseLevel.title = metaObjectArg.title; - this.baseLevel.addTag(new MetaTag('description', metaObjectArg.description)); + if (metaObjectArg.description) { + this.baseLevel.addTag(new MetaTag('description', metaObjectArg.description)); + } if (metaObjectArg.canonicalDomain) { this.baseLevel.addTag(new MetaTag('canonical', metaObjectArg.canonicalDomain)); @@ -37,7 +37,9 @@ export class TagManager { public setSubPageLevel(metaObjectArg: interfaces.IMetaObject) { const subPageLevel = new TagLevel(this, 'subpage'); subPageLevel.title = metaObjectArg.title; - subPageLevel.addTag(new MetaTag('description', metaObjectArg.description)); + if (metaObjectArg.description) { + this.baseLevel.addTag(new MetaTag('description', metaObjectArg.description)); + } this.activeLevel.disable(); this.activeLevel = subPageLevel; this.activeLevel.enable(); diff --git a/ts/websetup.classes.websetup.ts b/ts/websetup.classes.websetup.ts index 9bf5809..5cae9ef 100644 --- a/ts/websetup.classes.websetup.ts +++ b/ts/websetup.classes.websetup.ts @@ -25,7 +25,10 @@ export class WebSetup { /** * an async setup called by the constructor */ - private async setup() { + public async setup(optionsArg?: IWebSetupConstructorOptions) { + if (optionsArg) { + this.options = optionsArg; + } await this.tagManager.setup(this.options.metaObject); }