Skip to content

Commit

Permalink
feat(RSS-ECOMM-2_27): add pages components (#109)
Browse files Browse the repository at this point in the history
* feat: add LoginPage component

* feat: add MainPage component

* refactor: rename the loginPageView field to view

* feat: add RegistrationPage component

* feat: add NotFoundPage component

* fix: fix name MainPage component
  • Loading branch information
Kleostro authored Apr 29, 2024
1 parent a13d2ed commit f88e92f
Show file tree
Hide file tree
Showing 15 changed files with 238 additions and 4 deletions.
17 changes: 17 additions & 0 deletions src/pages/LoginPage/model/LoginPageModel.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
import type { PageInterface } from '@/shared/types/interfaces.ts';

import LoginPageView from '../view/LoginPageView.ts';

class LoginPageModel implements PageInterface {
private view: LoginPageView;

constructor(parent: HTMLDivElement) {
this.view = new LoginPageView(parent);
}

public getHTML(): HTMLDivElement {
return this.view.getHTML();
}
}

export default LoginPageModel;
41 changes: 41 additions & 0 deletions src/pages/LoginPage/view/LoginPageView.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
import { TAG_NAMES } from '@/shared/constants/enums.ts';
import createBaseElement from '@/shared/utils/createBaseElement.ts';

import LOGIN_PAGE_STYLES from './loginPageView.module.scss';

class LoginPageView {
private page: HTMLDivElement;

private parent: HTMLDivElement;

constructor(parent: HTMLDivElement) {
this.parent = parent;
this.page = this.createHTML();
}

private createHTML(): HTMLDivElement {
this.page = createBaseElement({
cssClasses: [LOGIN_PAGE_STYLES.loginPage],
tag: TAG_NAMES.DIV,
});

this.parent.append(this.page);

return this.page;
}

public getHTML(): HTMLDivElement {
return this.page;
}

public hide(): boolean {
this.page.classList.add(LOGIN_PAGE_STYLES.loginPage_hidden);
return true;
}

public show(): boolean {
this.page.classList.remove(LOGIN_PAGE_STYLES.loginPage_hidden);
return true;
}
}
export default LoginPageView;
File renamed without changes.
17 changes: 17 additions & 0 deletions src/pages/MainPage/model/MainPageModel.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
import type { PageInterface } from '@/shared/types/interfaces.ts';

import MainPageView from '../view/MainPageView.ts';

class MainPageModel implements PageInterface {
private view: MainPageView;

constructor(parent: HTMLDivElement) {
this.view = new MainPageView(parent);
}

public getHTML(): HTMLDivElement {
return this.view.getHTML();
}
}

export default MainPageModel;
41 changes: 41 additions & 0 deletions src/pages/MainPage/view/MainPageView.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
import { TAG_NAMES } from '@/shared/constants/enums.ts';
import createBaseElement from '@/shared/utils/createBaseElement.ts';

import MAIN_PAGE_STYLES from './mainPageView.module.scss';

class MainPageView {
private page: HTMLDivElement;

private parent: HTMLDivElement;

constructor(parent: HTMLDivElement) {
this.parent = parent;
this.page = this.createHTML();
}

private createHTML(): HTMLDivElement {
this.page = createBaseElement({
cssClasses: [MAIN_PAGE_STYLES.mainPage],
tag: TAG_NAMES.DIV,
});

this.parent.append(this.page);

return this.page;
}

public getHTML(): HTMLDivElement {
return this.page;
}

public hide(): boolean {
this.page.classList.add(MAIN_PAGE_STYLES.mainPage_hidden);
return true;
}

public show(): boolean {
this.page.classList.remove(MAIN_PAGE_STYLES.mainPage_hidden);
return true;
}
}
export default MainPageView;
File renamed without changes.
17 changes: 17 additions & 0 deletions src/pages/NotFoundPage/model/NotFoundPageModel.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
import type { PageInterface } from '@/shared/types/interfaces.ts';

import NotFoundPageView from '../view/NotFoundPageView.ts';

class NotFoundPageModel implements PageInterface {
private view: NotFoundPageView;

constructor(parent: HTMLDivElement) {
this.view = new NotFoundPageView(parent);
}

public getHTML(): HTMLDivElement {
return this.view.getHTML();
}
}

export default NotFoundPageModel;
41 changes: 41 additions & 0 deletions src/pages/NotFoundPage/view/NotFoundPageView.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
import { TAG_NAMES } from '@/shared/constants/enums.ts';
import createBaseElement from '@/shared/utils/createBaseElement.ts';

import NOT_FOUND_PAGE_STYLES from './notFoundPageView.module.scss';

class NotFoundPageView {
private page: HTMLDivElement;

private parent: HTMLDivElement;

constructor(parent: HTMLDivElement) {
this.parent = parent;
this.page = this.createHTML();
}

private createHTML(): HTMLDivElement {
this.page = createBaseElement({
cssClasses: [NOT_FOUND_PAGE_STYLES.notFoundPage],
tag: TAG_NAMES.DIV,
});

this.parent.append(this.page);

return this.page;
}

public getHTML(): HTMLDivElement {
return this.page;
}

public hide(): boolean {
this.page.classList.add(NOT_FOUND_PAGE_STYLES.notFoundPage_hidden);
return true;
}

public show(): boolean {
this.page.classList.remove(NOT_FOUND_PAGE_STYLES.notFoundPage_hidden);
return true;
}
}
export default NotFoundPageView;
File renamed without changes.
17 changes: 17 additions & 0 deletions src/pages/RegistrationPage/model/RegistrationPageModel.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
import type { PageInterface } from '@/shared/types/interfaces.ts';

import RegistrationPageView from '../view/RegistrationPageView.ts';

class LoginPageModel implements PageInterface {
private view: RegistrationPageView;

constructor(parent: HTMLDivElement) {
this.view = new RegistrationPageView(parent);
}

public getHTML(): HTMLDivElement {
return this.view.getHTML();
}
}

export default LoginPageModel;
41 changes: 41 additions & 0 deletions src/pages/RegistrationPage/view/RegistrationPageView.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
import { TAG_NAMES } from '@/shared/constants/enums.ts';
import createBaseElement from '@/shared/utils/createBaseElement.ts';

import REGISTRATION_PAGE_STYLES from './registrationPageView.module.scss';

class RegistrationPageView {
private page: HTMLDivElement;

private parent: HTMLDivElement;

constructor(parent: HTMLDivElement) {
this.parent = parent;
this.page = this.createHTML();
}

private createHTML(): HTMLDivElement {
this.page = createBaseElement({
cssClasses: [REGISTRATION_PAGE_STYLES.registrationPage],
tag: TAG_NAMES.DIV,
});

this.parent.append(this.page);

return this.page;
}

public getHTML(): HTMLDivElement {
return this.page;
}

public hide(): boolean {
this.page.classList.add(REGISTRATION_PAGE_STYLES.registrationPage_hidden);
return true;
}

public show(): boolean {
this.page.classList.remove(REGISTRATION_PAGE_STYLES.registrationPage_hidden);
return true;
}
}
export default RegistrationPageView;
File renamed without changes.
2 changes: 1 addition & 1 deletion src/shared/Button/model/ButtonModel.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import type ButtonAttributesInterface from '@/shared/types/interfaces.ts';
import type { ButtonAttributesInterface } from '@/shared/types/interfaces.ts';

import { IS_DISABLED } from '@/shared/constants/enums.ts';

Expand Down
2 changes: 1 addition & 1 deletion src/shared/Button/view/ButtonView.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import type ButtonAttributesInterface from '@/shared/types/interfaces.ts';
import type { ButtonAttributesInterface } from '@/shared/types/interfaces.ts';

import { TAG_NAMES } from '@/shared/constants/enums.ts';
import createBaseElement from '@/shared/utils/createBaseElement.ts';
Expand Down
6 changes: 4 additions & 2 deletions src/shared/types/interfaces.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
import type ButtonActionType from './types.ts';

interface ButtonAttributesInterface {
export interface ButtonAttributesInterface {
action?: ButtonActionType;
attrs?: Record<string, string>;
classes?: string[];
text?: string;
}

export default ButtonAttributesInterface;
export interface PageInterface {
getHTML(): HTMLDivElement;
}

0 comments on commit f88e92f

Please sign in to comment.