diff --git a/packages/happy-dom/src/nodes/document/Document.ts b/packages/happy-dom/src/nodes/document/Document.ts index b7738ebe0..3518766f4 100644 --- a/packages/happy-dom/src/nodes/document/Document.ts +++ b/packages/happy-dom/src/nodes/document/Document.ts @@ -43,6 +43,7 @@ import IHTMLBaseElement from '../html-base-element/IHTMLBaseElement'; import IAttr from '../attr/IAttr'; import IProcessingInstruction from '../processing-instruction/IProcessingInstruction'; import ProcessingInstruction from '../processing-instruction/ProcessingInstruction'; +import VisibilityStateEnum from './VisibilityStateEnum'; const PROCESSING_INSTRUCTION_TARGET_REGEXP = /^[a-z][a-z0-9-]+$/; @@ -423,6 +424,32 @@ export default class Document extends Node implements IDocument { return this.URL; } + /** + * Returns document visibility state. + * + * @returns the visibility state of the current document. + * */ + public get visibilityState(): VisibilityStateEnum { + if (this.defaultView) { + return VisibilityStateEnum.visible; + } + + return VisibilityStateEnum.hidden; + } + + /** + * Returns document hidden state. + * + * @returns the hidden state of the current document. + * */ + public get hidden(): boolean { + if (this.defaultView) { + return false; + } + + return true; + } + /** * Inserts a set of Node objects or DOMString objects after the last child of the ParentNode. DOMString objects are inserted as equivalent Text nodes. * diff --git a/packages/happy-dom/src/nodes/document/IDocument.ts b/packages/happy-dom/src/nodes/document/IDocument.ts index 6e31e9ad9..56e16eb04 100644 --- a/packages/happy-dom/src/nodes/document/IDocument.ts +++ b/packages/happy-dom/src/nodes/document/IDocument.ts @@ -20,6 +20,7 @@ import DocumentReadyStateEnum from './DocumentReadyStateEnum'; import INodeList from '../node/INodeList'; import Range from '../../range/Range'; import IProcessingInstruction from '../processing-instruction/IProcessingInstruction'; +import VisibilityStateEnum from './VisibilityStateEnum'; /** * Document. @@ -41,6 +42,8 @@ export default interface IDocument extends IParentNode { readonly characterSet: string; readonly URL: string; readonly documentURI: string; + readonly visibilityState: VisibilityStateEnum; + readonly hidden: boolean; cookie: string; // Events diff --git a/packages/happy-dom/src/nodes/document/VisibilityStateEnum.ts b/packages/happy-dom/src/nodes/document/VisibilityStateEnum.ts new file mode 100644 index 000000000..11b5944dc --- /dev/null +++ b/packages/happy-dom/src/nodes/document/VisibilityStateEnum.ts @@ -0,0 +1,6 @@ +enum VisibilityStateEnum { + hidden = 'hidden', + visible = 'visible', + prerender = 'prerender' +} +export default VisibilityStateEnum;