From 5abefcfefb61b82a9c2f062b57ee1a105f2975a2 Mon Sep 17 00:00:00 2001
From: juliaM <35346206+juliaam@users.noreply.github.com>
Date: Thu, 8 Aug 2024 18:39:03 -0300
Subject: [PATCH 1/9] fix: drawer tests (#291)
---
src/components/Drawer/index.js | 2 +-
src/components/Drawer/index.spec.js | 29 ++++++++++++++---------------
2 files changed, 15 insertions(+), 16 deletions(-)
diff --git a/src/components/Drawer/index.js b/src/components/Drawer/index.js
index 1736ae86..002b2a78 100644
--- a/src/components/Drawer/index.js
+++ b/src/components/Drawer/index.js
@@ -14,7 +14,7 @@ const html = `
-
+
diff --git a/src/components/Drawer/index.spec.js b/src/components/Drawer/index.spec.js
index 5cad0db8..bc3646e5 100644
--- a/src/components/Drawer/index.spec.js
+++ b/src/components/Drawer/index.spec.js
@@ -1,8 +1,6 @@
-/* eslint-disable testing-library/prefer-user-event */
-/* eslint-disable no-restricted-syntax */
-import { fireEvent } from '@testing-library/dom';
-import { render } from '@testing-library/vanilla';
import { describe, expect, it } from 'vitest';
+import { render, screen } from '@testing-library/vanilla';
+import { userEvent } from '@testing-library/user-event';
import Drawer from '.';
import Button from '../Button';
@@ -25,8 +23,11 @@ describe('Drawer', () => {
drawer.open();
- expect(drawer.selected.get('title').textContent).toBe('Add dates');
- expect(drawer.selected.get('content').textContent).toBe('Cadastrar pet');
+ const firstText = screen.getByText('Add dates');
+ const secondText = screen.getByText('Cadastrar pet');
+
+ expect(firstText).toBeInTheDocument();
+ expect(secondText).toBeInTheDocument();
});
});
@@ -46,25 +47,23 @@ describe('Drawer', () => {
});
});
- it('closes when Esc is pressed', () => {
+ it('closes when Esc is pressed', async () => {
const drawer = makeSut();
+ const closeSpy = vi.spyOn(drawer, 'close');
- drawer.open();
-
- fireEvent.keyDown(document, { key: 'Escape' });
+ await userEvent.keyboard('{Escape}');
- expect(drawer.selected.get('drawer').classList).not.toContain(
- 'drawer--open',
- );
+ expect(closeSpy).toHaveBeenCalled();
});
- it('closes when the close button is clicked', () => {
+ it('closes when the close button is clicked', async () => {
const drawer = makeSut();
const closeSpy = vi.spyOn(drawer, 'close');
drawer.open();
- fireEvent.click(drawer.selected.get('close'));
+ const button = screen.getByLabelText('close-drawer');
+ await userEvent.click(button);
expect(closeSpy).toHaveBeenCalled();
});
From ae28176abbcee6bf98600731fde0d736ddc51b58 Mon Sep 17 00:00:00 2001
From: Edilton Oliveira <86030948+EdiltonOliveira@users.noreply.github.com>
Date: Fri, 9 Aug 2024 08:44:58 -0300
Subject: [PATCH 2/9] =?UTF-8?q?#issue=20267=20-=20implementa=C3=A7=C3=A3o?=
=?UTF-8?q?=20da=20listagem=20de=20dados=20pet=20via=20service=20no=20comp?=
=?UTF-8?q?onente=20PetAvatar=20#issue-267=20(#290)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
* feat: implementação da listagem de dados pet via service no componente PetAvatar #issue-267
* chore: execução do 'prettier:fix' para correção de falha no CI #issue-267
* refactor: inclusão dos dados pets em db.json e exclusão de dbSimulatorAPI
* refactor: atualização path login no frontend
* refactor: resolve os pedidos de alteração no código
---------
Co-authored-by: Matheus Domingos <134434652+DominMFD@users.noreply.github.com>
---
db.json | 72 ++++
package.json | 4 +-
pnpm-lock.yaml | 400 ++++++++-----------
routes.json | 3 +
src/layouts/app/components/SideMenu/index.js | 49 +--
src/services/userService.js | 9 +-
6 files changed, 260 insertions(+), 277 deletions(-)
create mode 100644 routes.json
diff --git a/db.json b/db.json
index 3ab9e061..603432c8 100644
--- a/db.json
+++ b/db.json
@@ -17,6 +17,78 @@
"id": "1",
"breed": "Spitz",
"name": "Mel",
+ "title": "Bolinha",
+ "imgSrc": "https://images.unsplash.com/photo-1598628599796-2a454fa7d9c5?q=80&w=1674&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D",
+ "imgAlt": "Bolinha",
+ "size": {
+ "small": "X",
+ "medium": "",
+ "large": ""
+ },
+ "weight": 10,
+ "birthday": "20-05-2022",
+ "castrated": true,
+ "specialNeeds": false
+ },
+ {
+ "id": "2",
+ "breed": "Spitz",
+ "name": "Mel",
+ "title": "Jake",
+ "imgSrc": "https://images.unsplash.com/photo-1530281700549-e82e7bf110d6?q=80&w=1888&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D",
+ "imgAlt": "Jake",
+ "size": {
+ "small": "X",
+ "medium": "",
+ "large": ""
+ },
+ "weight": 10,
+ "birthday": "20-05-2022",
+ "castrated": true,
+ "specialNeeds": false
+ },
+ {
+ "id": "3",
+ "breed": "Spitz",
+ "name": "Mel",
+ "title": "Tobias",
+ "imgSrc": "https://images.unsplash.com/photo-1632165258904-21ca36a01ee0?q=80&w=1635&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D",
+ "imgAlt": "Tobias",
+ "size": {
+ "small": "X",
+ "medium": "",
+ "large": ""
+ },
+ "weight": 10,
+ "birthday": "20-05-2022",
+ "castrated": true,
+ "specialNeeds": false
+ },
+
+ {
+ "id": "4",
+ "breed": "Spitz",
+ "name": "Mel",
+ "title": "Francis",
+ "imgSrc": "https://images.unsplash.com/photo-1596921825946-d738194fac80?q=80&w=1886&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D",
+ "imgAlt": "Francis",
+ "size": {
+ "small": "X",
+ "medium": "",
+ "large": ""
+ },
+ "weight": 10,
+ "birthday": "20-05-2022",
+ "castrated": true,
+ "specialNeeds": false
+ },
+ {
+ "id": "5",
+ "breed": "Spitz",
+ "name": "Mel",
+ "title": "Toyota",
+ "imgSrc": "https://images.unsplash.com/photo-1694185643879-536f8d785fa6?q=80&w=1664&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D",
+ "imgAlt": "Toyota",
"size": {
"small": "X",
"medium": "",
diff --git a/package.json b/package.json
index 820f95bf..eff3408f 100644
--- a/package.json
+++ b/package.json
@@ -23,7 +23,7 @@
"preview": "vite preview",
"storybook": "storybook dev -p 6006",
"stylelint": "stylelint \"**/*.scss\"",
- "mock-api": "json-server db.json"
+ "mock-api": "json-server db.json --routes routes.json"
},
"dependencies": {
"concurrently": "8.2.2",
@@ -71,7 +71,7 @@
"eslint-plugin-vitest-globals": "1.5.0",
"husky": "^8.0.3",
"jsdom": "^23.2.0",
- "json-server": "1.0.0-beta.1",
+ "json-server": "0.17.4",
"lint-staged": "^15.2.2",
"prettier": "^3.2.5",
"reset-css": "^5.0.2",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 1ae0ac54..9cf67d98 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -137,8 +137,8 @@ devDependencies:
specifier: ^23.2.0
version: 23.2.0
json-server:
- specifier: 1.0.0-beta.1
- version: 1.0.0-beta.1
+ specifier: 0.17.4
+ version: 0.17.4
lint-staged:
specifier: ^15.2.2
version: 15.2.2
@@ -3220,134 +3220,6 @@ packages:
'@testing-library/dom': 9.3.4
dev: true
- /@tinyhttp/accepts@2.2.2:
- resolution: {integrity: sha512-DmngnwOaPgNUGgTpX1UdlNrXaGG6k5rHFzslcYlvSQIg7s0PI6bF86U0fYq3q+yhJhKbnwzFez0wU1lAP+bKvA==}
- engines: {node: '>=12.20.0'}
- dependencies:
- mime: 4.0.1
- negotiator: 0.6.3
- dev: true
-
- /@tinyhttp/app@2.2.4:
- resolution: {integrity: sha512-vFCgE+RncK9+AHpSXHiOxpbaEbpOxYcYHz4K/15Ckh8Sb7WvjA+vveN7bwMqfifyW2uvV3xTKTitUVohf+kDnA==}
- engines: {node: '>=14.21.3'}
- dependencies:
- '@tinyhttp/cookie': 2.1.1
- '@tinyhttp/proxy-addr': 2.1.4
- '@tinyhttp/req': 2.2.3
- '@tinyhttp/res': 2.2.3
- '@tinyhttp/router': 2.2.2
- header-range-parser: 1.1.3
- regexparam: 2.0.2
- dev: true
-
- /@tinyhttp/content-disposition@2.2.1:
- resolution: {integrity: sha512-PQ5IWdOn7arScqTV+usIDJvwbanoAXtaopzgxjMS9y7TFwLSIelCblihRBEVIPIkIpsdhSJFH3RF+Daosyj+Aw==}
- engines: {node: '>=12.20.0'}
- dev: true
-
- /@tinyhttp/content-type@0.1.4:
- resolution: {integrity: sha512-dl6f3SHIJPYbhsW1oXdrqOmLSQF/Ctlv3JnNfXAE22kIP7FosqJHxkz/qj2gv465prG8ODKH5KEyhBkvwrueKQ==}
- engines: {node: '>=12.4'}
- dev: true
-
- /@tinyhttp/cookie-signature@2.1.1:
- resolution: {integrity: sha512-VDsSMY5OJfQJIAtUgeQYhqMPSZptehFSfvEEtxr+4nldPA8IImlp3QVcOVuK985g4AFR4Hl1sCbWCXoqBnVWnw==}
- engines: {node: '>=12.20.0'}
- dev: true
-
- /@tinyhttp/cookie@2.1.1:
- resolution: {integrity: sha512-h/kL9jY0e0Dvad+/QU3efKZww0aTvZJslaHj3JTPmIPC9Oan9+kYqmh3M6L5JUQRuTJYFK2nzgL2iJtH2S+6dA==}
- engines: {node: '>=12.20.0'}
- dev: true
-
- /@tinyhttp/cors@2.0.1:
- resolution: {integrity: sha512-qrmo6WJuaiCzKWagv2yA/kw6hIISfF/hOqPWwmI6w0o8apeTMmRN3DoCFvQ/wNVuWVdU5J4KU7OX8aaSOEq51A==}
- engines: {node: '>=12.20 || 14.x || >=16'}
- dependencies:
- '@tinyhttp/vary': 0.1.3
- dev: true
-
- /@tinyhttp/encode-url@2.1.1:
- resolution: {integrity: sha512-AhY+JqdZ56qV77tzrBm0qThXORbsVjs/IOPgGCS7x/wWnsa/Bx30zDUU/jPAUcSzNOzt860x9fhdGpzdqbUeUw==}
- engines: {node: '>=12.20.0'}
- dev: true
-
- /@tinyhttp/etag@2.1.2:
- resolution: {integrity: sha512-j80fPKimGqdmMh6962y+BtQsnYPVCzZfJw0HXjyH70VaJBHLKGF+iYhcKqzI3yef6QBNa8DKIPsbEYpuwApXTw==}
- engines: {node: '>=12.20.0'}
- dev: true
-
- /@tinyhttp/forwarded@2.1.1:
- resolution: {integrity: sha512-nO3kq0R1LRl2+CAMlnggm22zE6sT8gfvGbNvSitV6F9eaUSurHP0A8YZFMihSkugHxK+uIegh1TKrqgD8+lyGQ==}
- engines: {node: '>=12.20.0'}
- dev: true
-
- /@tinyhttp/proxy-addr@2.1.4:
- resolution: {integrity: sha512-Xb57jBQW3UcwKST1XSkJpyZPyjOVQJjUfXiHULVXf7FZCgnl273+aj0oP15BzpYLuGhO9IjydY5gvYeg2Cny+A==}
- engines: {node: '>=12.20.0'}
- dependencies:
- '@tinyhttp/forwarded': 2.1.1
- ipaddr.js: 2.2.0
- dev: true
-
- /@tinyhttp/req@2.2.3:
- resolution: {integrity: sha512-HtIa4Gaa8QFTlmsvoif/B7yMK5H0WBUegH2kKW6scNwOpFXyxEk+VsctrIVgORrP5lybXAIRXlRhGuBBAMlVhw==}
- engines: {node: '>=12.20.0'}
- dependencies:
- '@tinyhttp/accepts': 2.2.2
- '@tinyhttp/type-is': 2.2.3
- '@tinyhttp/url': 2.1.1
- header-range-parser: 1.1.3
- dev: true
-
- /@tinyhttp/res@2.2.3:
- resolution: {integrity: sha512-PGl88OOdmMcOuKZaTbhGKAWPoJJf3+EfKIad8ydzjdenVjrTZZjIYJtmwYiUBeEice+YkOCO67qCIekVO5mHlw==}
- engines: {node: '>=12.20.0'}
- dependencies:
- '@tinyhttp/content-disposition': 2.2.1
- '@tinyhttp/cookie': 2.1.1
- '@tinyhttp/cookie-signature': 2.1.1
- '@tinyhttp/encode-url': 2.1.1
- '@tinyhttp/req': 2.2.3
- '@tinyhttp/send': 2.2.2
- '@tinyhttp/vary': 0.1.3
- es-escape-html: 0.1.1
- mime: 4.0.0-beta.1
- dev: true
-
- /@tinyhttp/router@2.2.2:
- resolution: {integrity: sha512-i+1ouhPyTqcuJuOsKqmo7i+YD++0RF2lQLhBpcTnsaegD2gTEa3xW2Pcz7spYQGo7K8PQYtOrL7m9b14+BEXqg==}
- engines: {node: '>=12.20.0'}
- dev: true
-
- /@tinyhttp/send@2.2.2:
- resolution: {integrity: sha512-TZkGy9EdGk+vwYWQnjArQftaXAUIgp/fFlgaxlpamsCZKy7o+CNJ75xty4H3SaY3ZPgN47wv8rnJ50rDRQdFFQ==}
- engines: {node: '>=12.20.0'}
- dependencies:
- '@tinyhttp/content-type': 0.1.4
- '@tinyhttp/etag': 2.1.2
- mime: 4.0.0-beta.1
- dev: true
-
- /@tinyhttp/type-is@2.2.3:
- resolution: {integrity: sha512-RsZ4+or5xI+wrTlrd+/cLZELoJDMd1HSp+1P23VOZSu1xPAsO1XLf1FgluO8GbEW9Ll/l2yC7mO6diKzjc06HA==}
- engines: {node: '>=12.20.0'}
- dependencies:
- '@tinyhttp/content-type': 0.1.4
- mime: 4.0.1
- dev: true
-
- /@tinyhttp/url@2.1.1:
- resolution: {integrity: sha512-POJeq2GQ5jI7Zrdmj22JqOijB5/GeX+LEX7DUdml1hUnGbJOTWDx7zf2b5cCERj7RoXL67zTgyzVblBJC+NJWg==}
- engines: {node: '>=12.20.0'}
- dev: true
-
- /@tinyhttp/vary@0.1.3:
- resolution: {integrity: sha512-SoL83sQXAGiHN1jm2VwLUWQSQeDAAl1ywOm6T0b0Cg1CZhVsjoiZadmjhxF6FHCCY7OHHVaLnTgSMxTPIDLxMg==}
- engines: {node: '>=12.20'}
- dev: true
-
/@types/aria-query@5.0.4:
resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==}
dev: true
@@ -4191,6 +4063,13 @@ packages:
resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
dev: true
+ /basic-auth@2.0.1:
+ resolution: {integrity: sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==}
+ engines: {node: '>= 0.8'}
+ dependencies:
+ safe-buffer: 5.1.2
+ dev: true
+
/better-opn@3.0.2:
resolution: {integrity: sha512-aVNobHnJqLiUelTaHat9DZ1qM2w0C0Eym4LPI/3JxOnSokGVdsl1T1kN7TFvsEAD8G47A6VKQ0TVHqbBnYMJlQ==}
engines: {node: '>=12.0.0'}
@@ -4645,6 +4524,10 @@ packages:
resolution: {integrity: sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==}
dev: true
+ /connect-pause@0.1.1:
+ resolution: {integrity: sha512-a1gSWQBQD73krFXdUEYJom2RTFrWUL3YvXDCRkyv//GVXc79cdW9MngtRuN9ih4FDKBtfJAJId+BbDuX+1rh2w==}
+ dev: true
+
/consola@3.2.3:
resolution: {integrity: sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==}
engines: {node: ^14.18.0 || >=16.10.0}
@@ -4712,6 +4595,14 @@ packages:
resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==}
dev: true
+ /cors@2.8.5:
+ resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==}
+ engines: {node: '>= 0.10'}
+ dependencies:
+ object-assign: 4.1.1
+ vary: 1.1.2
+ dev: true
+
/cosmiconfig-typescript-loader@5.0.0(@types/node@20.12.10)(cosmiconfig@9.0.0)(typescript@5.4.5):
resolution: {integrity: sha512-+8cK7jRAReYkMwMiG+bxhcNKiHJDM6bR9FD/nGBXOWdMLuYawjF5cGrtLilJ+LGd3ZjCXnJjR5DkfWPoIVlqJA==}
engines: {node: '>=v16'}
@@ -4876,6 +4767,17 @@ packages:
ms: 2.0.0
dev: true
+ /debug@3.1.0:
+ resolution: {integrity: sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==}
+ peerDependencies:
+ supports-color: '*'
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+ dependencies:
+ ms: 2.0.0
+ dev: true
+
/debug@3.2.7:
resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==}
peerDependencies:
@@ -5087,20 +4989,6 @@ packages:
is-obj: 2.0.0
dev: true
- /dot-prop@8.0.2:
- resolution: {integrity: sha512-xaBe6ZT4DHPkg0k4Ytbvn5xoxgpG0jOS1dYxSOwAHPuNLjP3/OzN0gH55SrLqpx8cBfSaVt91lXYkApjb+nYdQ==}
- engines: {node: '>=16'}
- dependencies:
- type-fest: 3.13.1
- dev: true
-
- /dot-prop@9.0.0:
- resolution: {integrity: sha512-1gxPBJpI/pcjQhKgIU91II6Wkay+dLcN3M6rf2uwP8hRur3HtQXjVrdAK3sjC0piaEuxzMwjXChcETiJl47lAQ==}
- engines: {node: '>=18'}
- dependencies:
- type-fest: 4.21.0
- dev: true
-
/dotenv-expand@10.0.0:
resolution: {integrity: sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A==}
engines: {node: '>=12'}
@@ -5180,6 +5068,14 @@ packages:
is-arrayish: 0.2.1
dev: true
+ /errorhandler@1.5.1:
+ resolution: {integrity: sha512-rcOwbfvP1WTViVoUjcfZicVzjhjTuhSMntHh6mW3IrEiyE6mJyXvsToJUJGlGlw/2xU9P5whlWNGlIDVeCiT4A==}
+ engines: {node: '>= 0.8'}
+ dependencies:
+ accepts: 1.3.8
+ escape-html: 1.0.3
+ dev: true
+
/es-abstract@1.23.3:
resolution: {integrity: sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==}
engines: {node: '>= 0.4'}
@@ -5241,11 +5137,6 @@ packages:
resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==}
engines: {node: '>= 0.4'}
- /es-escape-html@0.1.1:
- resolution: {integrity: sha512-yUx1o+8RsG7UlszmYPtks+dm6Lho2m8lgHMOsLJQsFI0R8XwUJwiMhM1M4E/S8QLeGyf6MkDV/pWgjQ0tdTSyQ==}
- engines: {node: '>=12.x'}
- dev: true
-
/es-get-iterator@1.1.3:
resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==}
dependencies:
@@ -5794,11 +5685,6 @@ packages:
resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
engines: {node: '>=0.10.0'}
- /eta@3.4.0:
- resolution: {integrity: sha512-tCsc7WXTjrTx4ZjYLplcqrI3o4mYJ+Z6YspeuGL8tbt/hHoMchwBwtKfwM09svEY86iRapY93vUqQttcNuIO5Q==}
- engines: {node: '>=6.0.0'}
- dev: true
-
/etag@1.8.1:
resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==}
engines: {node: '>= 0.6'}
@@ -5845,6 +5731,15 @@ packages:
homedir-polyfill: 1.0.3
dev: true
+ /express-urlrewrite@1.4.0:
+ resolution: {integrity: sha512-PI5h8JuzoweS26vFizwQl6UTF25CAHSggNv0J25Dn/IKZscJHWZzPrI5z2Y2jgOzIaw2qh8l6+/jUcig23Z2SA==}
+ dependencies:
+ debug: 4.3.4
+ path-to-regexp: 1.8.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
/express@4.19.2:
resolution: {integrity: sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==}
engines: {node: '>= 0.10.0'}
@@ -6476,11 +6371,6 @@ packages:
'@types/hast': 3.0.4
dev: true
- /header-range-parser@1.1.3:
- resolution: {integrity: sha512-B9zCFt3jH8g09LR1vHL4pcAn8yMEtlSlOUdQemzHMRKMImNIhhszdeosYFfNW0WXKQtXIlWB+O4owHJKvEJYaA==}
- engines: {node: '>=12.22.0'}
- dev: true
-
/homedir-polyfill@1.0.3:
resolution: {integrity: sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==}
engines: {node: '>=0.10.0'}
@@ -6607,11 +6497,6 @@ packages:
engines: {node: '>=8'}
dev: true
- /inflection@3.0.0:
- resolution: {integrity: sha512-1zEJU1l19SgJlmwqsEyFTbScw/tkMHFenUo//Y0i+XEP83gDFdMvPizAD/WGcE+l1ku12PcTVHQhO6g5E0UCMw==}
- engines: {node: '>=18.0.0'}
- dev: true
-
/inflight@1.0.6:
resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
dependencies:
@@ -6689,11 +6574,6 @@ packages:
engines: {node: '>= 0.10'}
dev: true
- /ipaddr.js@2.2.0:
- resolution: {integrity: sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==}
- engines: {node: '>= 10'}
- dev: true
-
/is-absolute-url@4.0.1:
resolution: {integrity: sha512-/51/TKE88Lmm7Gc4/8btclNXWS+g50wXhYJq8HWIBAGUBnoAdRu1aXeh364t/O7wXDAcTJDP8PNuNKWUDWie+A==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
@@ -6901,6 +6781,10 @@ packages:
resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==}
dev: true
+ /is-promise@2.2.2:
+ resolution: {integrity: sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==}
+ dev: true
+
/is-regex@1.1.4:
resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==}
engines: {node: '>= 0.4'}
@@ -6997,6 +6881,10 @@ packages:
is-docker: 2.2.1
dev: true
+ /isarray@0.0.1:
+ resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==}
+ dev: true
+
/isarray@1.0.0:
resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==}
dev: true
@@ -7086,6 +6974,10 @@ packages:
hasBin: true
dev: true
+ /jju@1.4.0:
+ resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==}
+ dev: true
+
/js-tokens@4.0.0:
resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
@@ -7187,6 +7079,12 @@ packages:
resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==}
dev: true
+ /json-parse-helpfulerror@1.0.3:
+ resolution: {integrity: sha512-XgP0FGR77+QhUxjXkwOMkC94k3WtqEBfcnjWqhRd82qTat4SWKRE+9kUnynz/shm3I4ea2+qISvTIeGTNU7kJg==}
+ dependencies:
+ jju: 1.4.0
+ dev: true
+
/json-schema-traverse@0.4.1:
resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
dev: true
@@ -7198,23 +7096,32 @@ packages:
resolution: {integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==}
dev: false
- /json-server@1.0.0-beta.1:
- resolution: {integrity: sha512-xOKYyxkVai66OTFZq5ulAaXYkqiKMbzVED9tRZ+CMg6v6iaSdIVYas5tIjSMw/mYwDL/nJFTCca308gaL0coyA==}
- engines: {node: '>=18.3'}
+ /json-server@0.17.4:
+ resolution: {integrity: sha512-bGBb0WtFuAKbgI7JV3A864irWnMZSvBYRJbohaOuatHwKSRFUfqtQlrYMrB6WbalXy/cJabyjlb7JkHli6dYjQ==}
+ engines: {node: '>=12'}
hasBin: true
dependencies:
- '@tinyhttp/app': 2.2.4
- '@tinyhttp/cors': 2.0.1
- chalk: 5.3.0
- chokidar: 3.6.0
- dot-prop: 9.0.0
- eta: 3.4.0
- inflection: 3.0.0
- json5: 2.2.3
- lowdb: 7.0.1
- milliparsec: 2.3.0
- sirv: 2.0.4
- sort-on: 6.0.0
+ body-parser: 1.20.2
+ chalk: 4.1.2
+ compression: 1.7.4
+ connect-pause: 0.1.1
+ cors: 2.8.5
+ errorhandler: 1.5.1
+ express: 4.19.2
+ express-urlrewrite: 1.4.0
+ json-parse-helpfulerror: 1.0.3
+ lodash: 4.17.21
+ lodash-id: 0.14.1
+ lowdb: 1.0.0
+ method-override: 3.0.0
+ morgan: 1.10.0
+ nanoid: 3.3.7
+ please-upgrade-node: 3.2.0
+ pluralize: 8.0.0
+ server-destroy: 1.0.1
+ yargs: 17.7.2
+ transitivePeerDependencies:
+ - supports-color
dev: true
/json-stable-stringify-without-jsonify@1.0.1:
@@ -7387,6 +7294,11 @@ packages:
p-locate: 6.0.0
dev: true
+ /lodash-id@0.14.1:
+ resolution: {integrity: sha512-ikQPBTiq/d5m6dfKQlFdIXFzvThPi2Be9/AHxktOnDSfSxE1j9ICbBT5Elk1ke7HSTgM38LHTpmJovo9/klnLg==}
+ engines: {node: '>= 4'}
+ dev: true
+
/lodash.camelcase@4.3.0:
resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==}
dev: true
@@ -7478,11 +7390,15 @@ packages:
get-func-name: 2.0.2
dev: true
- /lowdb@7.0.1:
- resolution: {integrity: sha512-neJAj8GwF0e8EpycYIDFqEPcx9Qz4GUho20jWFR7YiFeXzF1YMLdxB36PypcTSPMA+4+LvgyMacYhlr18Zlymw==}
- engines: {node: '>=18'}
+ /lowdb@1.0.0:
+ resolution: {integrity: sha512-2+x8esE/Wb9SQ1F9IHaYWfsC9FIecLOPrK4g17FGEayjUWH172H6nwicRovGvSE2CPZouc2MCIqCI7h9d+GftQ==}
+ engines: {node: '>=4'}
dependencies:
- steno: 4.0.2
+ graceful-fs: 4.2.11
+ is-promise: 2.2.2
+ lodash: 4.17.21
+ pify: 3.0.0
+ steno: 0.4.4
dev: true
/lru-cache@10.2.2:
@@ -7599,6 +7515,18 @@ packages:
resolution: {integrity: sha512-jz+Cfrg9GWOZbQAnDQ4hlVnQky+341Yk5ru8bZSe6sIDTCIg8n9i/u7hSQGSVOF3C7lH6mGtqjkiT9G4wFLL0w==}
dev: true
+ /method-override@3.0.0:
+ resolution: {integrity: sha512-IJ2NNN/mSl9w3kzWB92rcdHpz+HjkxhDJWNDBqSlas+zQdP8wBiJzITPg08M/k2uVvMow7Sk41atndNtt/PHSA==}
+ engines: {node: '>= 0.10'}
+ dependencies:
+ debug: 3.1.0
+ methods: 1.1.2
+ parseurl: 1.3.3
+ vary: 1.1.2
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
/methods@1.1.2:
resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==}
engines: {node: '>= 0.6'}
@@ -7611,11 +7539,6 @@ packages:
braces: 3.0.2
picomatch: 2.3.1
- /milliparsec@2.3.0:
- resolution: {integrity: sha512-b+6KYJw+DwQjk24qCUuq+lZvRXDpXJ02qsllKgKaDurHpQ0v7D5op9VAkdYM/pXRhFeh7uLYHmnwFnYvdXGa3A==}
- engines: {node: '>=12.4'}
- dev: true
-
/mime-db@1.52.0:
resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==}
engines: {node: '>= 0.6'}
@@ -7634,18 +7557,6 @@ packages:
hasBin: true
dev: true
- /mime@4.0.0-beta.1:
- resolution: {integrity: sha512-8/p99P1RV17prytee/A6D+8shNqdDzyvGJ/CVfiuXwh4cTsv3P3qGyaYSx2hdqnqbKKqYUfTC5zAjCtcd1BShw==}
- engines: {node: '>=16'}
- hasBin: true
- dev: true
-
- /mime@4.0.1:
- resolution: {integrity: sha512-5lZ5tyrIfliMXzFtkYyekWbtRXObT9OWa8IwQ5uxTBDHucNNwniRqo0yInflj+iYi5CBa6qxadGzGarDfuEOxA==}
- engines: {node: '>=16'}
- hasBin: true
- dev: true
-
/mimic-fn@2.1.0:
resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==}
engines: {node: '>=6'}
@@ -7728,6 +7639,19 @@ packages:
ufo: 1.5.3
dev: true
+ /morgan@1.10.0:
+ resolution: {integrity: sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==}
+ engines: {node: '>= 0.8.0'}
+ dependencies:
+ basic-auth: 2.0.1
+ debug: 2.6.9
+ depd: 2.0.0
+ on-finished: 2.3.0
+ on-headers: 1.0.2
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
/mrmime@2.0.0:
resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==}
engines: {node: '>=10'}
@@ -7922,6 +7846,13 @@ packages:
resolution: {integrity: sha512-zuHHiGTYTA1sYJ/wZN+t5HKZaH23i4yI1HMwbuXm24Nid7Dv0KcuRlKoNKS9UNfAVSBlnGLcuQrnOKWOZoEGaw==}
dev: true
+ /on-finished@2.3.0:
+ resolution: {integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==}
+ engines: {node: '>= 0.8'}
+ dependencies:
+ ee-first: 1.1.1
+ dev: true
+
/on-finished@2.4.1:
resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==}
engines: {node: '>= 0.8'}
@@ -8141,6 +8072,12 @@ packages:
resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==}
dev: true
+ /path-to-regexp@1.8.0:
+ resolution: {integrity: sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==}
+ dependencies:
+ isarray: 0.0.1
+ dev: true
+
/path-type@4.0.0:
resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
engines: {node: '>=8'}
@@ -8179,6 +8116,11 @@ packages:
hasBin: true
dev: true
+ /pify@3.0.0:
+ resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==}
+ engines: {node: '>=4'}
+ dev: true
+
/pify@4.0.1:
resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==}
engines: {node: '>=6'}
@@ -8217,6 +8159,17 @@ packages:
pathe: 1.1.2
dev: true
+ /please-upgrade-node@3.2.0:
+ resolution: {integrity: sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==}
+ dependencies:
+ semver-compare: 1.0.0
+ dev: true
+
+ /pluralize@8.0.0:
+ resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==}
+ engines: {node: '>=4'}
+ dev: true
+
/polished@4.3.1:
resolution: {integrity: sha512-OBatVyC/N7SCW/FaDHrSd+vn0o5cS855TOmYi4OkdWUMSJCET/xip//ch8xGUvtr3i44X9LVyWwQlRMTN3pwSA==}
engines: {node: '>=10'}
@@ -8595,11 +8548,6 @@ packages:
es-errors: 1.3.0
set-function-name: 2.0.2
- /regexparam@2.0.2:
- resolution: {integrity: sha512-A1PeDEYMrkLrfyOwv2jwihXbo9qxdGD3atBYQA9JJgreAx8/7rC6IUkWOw2NQlOxLp2wL0ifQbh1HuidDfYA6w==}
- engines: {node: '>=8'}
- dev: true
-
/regexpu-core@5.3.2:
resolution: {integrity: sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==}
engines: {node: '>=4'}
@@ -8839,6 +8787,10 @@ packages:
loose-envify: 1.4.0
dev: true
+ /semver-compare@1.0.0:
+ resolution: {integrity: sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==}
+ dev: true
+
/semver@5.7.2:
resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==}
hasBin: true
@@ -8893,6 +8845,10 @@ packages:
- supports-color
dev: true
+ /server-destroy@1.0.1:
+ resolution: {integrity: sha512-rb+9B5YBIEzYcD6x2VKidaa+cqYBJQKnU4oe4E3ANwRRN56yk/ua1YCJT1n21NTS8w6CcOclAKNP3PhdCXKYtQ==}
+ dev: true
+
/set-function-length@1.2.2:
resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==}
engines: {node: '>= 0.4'}
@@ -9011,13 +8967,6 @@ packages:
resolution: {integrity: sha512-g6T+p7QO8npa+/hNx9ohv1E5pVCmWrVCUzUXJyLdMmftX6ER0oiWY/w9knEonLpnOp6b6FenKnMfR8gqwWdwig==}
dev: false
- /sort-on@6.0.0:
- resolution: {integrity: sha512-d51VlJWoFQjp+cIZRyNusCyJdP5pLAw+H+sC4C2q6RhPBv+RAb/QXXck5q3Kdm7h/ot/kD2AlpGPDee8v+0qiA==}
- engines: {node: '>=18'}
- dependencies:
- dot-prop: 8.0.2
- dev: true
-
/source-map-js@1.2.0:
resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==}
engines: {node: '>=0.10.0'}
@@ -9092,9 +9041,10 @@ packages:
resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==}
dev: true
- /steno@4.0.2:
- resolution: {integrity: sha512-yhPIQXjrlt1xv7dyPQg2P17URmXbuM5pdGkpiMB3RenprfiBlvK415Lctfe0eshk90oA7/tNq7WEiMK8RSP39A==}
- engines: {node: '>=18'}
+ /steno@0.4.4:
+ resolution: {integrity: sha512-EEHMVYHNXFHfGtgjNITnka0aHhiAlo93F7z2/Pwd+g0teG9CnM3JIINM7hVVB5/rhw9voufD7Wukwgtw2uqh6w==}
+ dependencies:
+ graceful-fs: 4.2.11
dev: true
/stop-iteration-iterator@1.0.0:
@@ -9745,16 +9695,6 @@ packages:
engines: {node: '>=12.20'}
dev: true
- /type-fest@3.13.1:
- resolution: {integrity: sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==}
- engines: {node: '>=14.16'}
- dev: true
-
- /type-fest@4.21.0:
- resolution: {integrity: sha512-ADn2w7hVPcK6w1I0uWnM//y1rLXZhzB9mr0a3OirzclKF1Wp6VzevUmzz/NRAWunOT6E8HrnpGY7xOfc6K57fA==}
- engines: {node: '>=16'}
- dev: true
-
/type-is@1.6.18:
resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==}
engines: {node: '>= 0.6'}
diff --git a/routes.json b/routes.json
new file mode 100644
index 00000000..c039687a
--- /dev/null
+++ b/routes.json
@@ -0,0 +1,3 @@
+{
+ "/api/:resource/:id/my-pets": "/:resource/:id"
+}
diff --git a/src/layouts/app/components/SideMenu/index.js b/src/layouts/app/components/SideMenu/index.js
index 8cca34fd..04c9bb0b 100644
--- a/src/layouts/app/components/SideMenu/index.js
+++ b/src/layouts/app/components/SideMenu/index.js
@@ -1,4 +1,5 @@
import { Component } from 'pet-dex-utilities';
+import { UserService } from '../../../../services/userService';
import petUrl from '../../../../images/pet-dex.svg';
import configuracoes from './images/configuracoes.svg';
import conta from './images/conta.svg';
@@ -50,47 +51,13 @@ export default function SideMenu() {
const $container = this.selected.get('avatar-container');
- const pets = [
- {
- id: '1',
- title: 'Bolinha',
- imgSrc:
- 'https://images.unsplash.com/photo-1598628599796-2a454fa7d9c5?q=80&w=1674&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D',
- imgAlt: 'Bolinha',
- },
- {
- id: '2',
- title: 'Jake',
- imgSrc:
- 'https://images.unsplash.com/photo-1530281700549-e82e7bf110d6?q=80&w=1888&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D',
- imgAlt: 'Jake',
- },
- {
- id: '3',
- title: 'Tobias',
- imgSrc:
- 'https://images.unsplash.com/photo-1632165258904-21ca36a01ee0?q=80&w=1635&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D',
- imgAlt: 'Tobias',
- },
- {
- id: '4',
- title: 'Francis',
- imgSrc:
- 'https://images.unsplash.com/photo-1596921825946-d738194fac80?q=80&w=1886&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D',
- imgAlt: 'Francis',
- },
- {
- id: '5',
- title: 'Toyota',
- imgSrc:
- 'https://images.unsplash.com/photo-1694185643879-536f8d785fa6?q=80&w=1664&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D',
- imgAlt: 'Toyota',
- },
- ];
-
- pets.forEach((pet) => {
- const avatar = new PetAvatar(pet);
- avatar.mount($container);
+ const inputIdUser = 1; // ID simulando input usuário em componente futuro
+ // Para renderização do componente pets avatar, json-server deve está em execução.
+ UserService.getPets(inputIdUser).then((response) => {
+ response.forEach((pet) => {
+ const avatar = new PetAvatar(pet);
+ avatar.mount($container);
+ });
});
}
diff --git a/src/services/userService.js b/src/services/userService.js
index 2e3368a9..ef271be6 100644
--- a/src/services/userService.js
+++ b/src/services/userService.js
@@ -3,21 +3,22 @@ import { url } from './api';
export const UserService = {
getPets: async (userId) => {
try {
- const response = await fetch(`${url}/${userId}`);
+ const response = await fetch(`${url}/api/user/${userId}/my-pets`);
if (!response.ok) {
- throw new Error('Ocorreu um erro na requisição');
+ throw new Error('Failed request');
}
const { pets } = await response.json();
return pets;
} catch (error) {
- return `Ocorreu o seguinte erro: ${error}`;
+ console.error(`An error occurred: ${error}`);
+ return `An error occurred: ${error}`;
}
},
login: async (email, password) => {
try {
- const response = await fetch(`${url}/login`, {
+ const response = await fetch(`${url}/api/user/login`, {
method: 'POST',
body: JSON.stringify({ email, password }),
});
From a12dea8b80598a47dc292ac9adb0bb939ffd2a26 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Marcelli=20Assump=C3=A7=C3=A3o=20=28dev=29?=
<78447100+marceana@users.noreply.github.com>
Date: Sun, 11 Aug 2024 18:47:41 -0300
Subject: [PATCH 3/9] =?UTF-8?q?Issue=20220=20-=20Teste=20da=20p=C3=A1gina?=
=?UTF-8?q?=20de=20peso=20do=20pet=20(#252)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
* test: adiciona testes da página de peso do pet
* test: melhora testes na página de peso do pet
* test: melhora testes da página de peso do pet
* test: remove only
* test: adjust continue button test
---
.../app/pages/PetWeight/petWeightPage.spec.js | 89 +++++++++++++++++--
1 file changed, 83 insertions(+), 6 deletions(-)
diff --git a/src/layouts/app/pages/PetWeight/petWeightPage.spec.js b/src/layouts/app/pages/PetWeight/petWeightPage.spec.js
index ea9bc17e..f06841b8 100644
--- a/src/layouts/app/pages/PetWeight/petWeightPage.spec.js
+++ b/src/layouts/app/pages/PetWeight/petWeightPage.spec.js
@@ -1,16 +1,93 @@
import { describe, expect, it } from 'vitest';
-import PetWeightPage from './index';
+import { render, screen, userEvent, waitFor } from '@testing-library/vanilla';
+import PetWeightPage from '.';
const propsMock = {
petPhoto: 'https://via.placeholder.com/150',
};
-describe('PetWeightPage', () => {
- it('is a Function', () => {
- expect(PetWeightPage).toBeInstanceOf(Function);
+const makeComponent = (params) => render(new PetWeightPage(params));
+
+describe('Pet Weight page', () => {
+ it('renders image', async () => {
+ const page = makeComponent(propsMock.petPhoto);
+
+ render(page);
+ const image = screen.getByAltText('Imagem carregada');
+
+ expect(image).toBeInTheDocument();
+ });
+
+ it('KG radio is checked by default', () => {
+ const page = makeComponent(propsMock.petPhoto);
+ render(page);
+
+ const radioKG = screen.getByLabelText('KG');
+
+ expect(radioKG.checked).toBe(true);
});
- it.skip('returns an object', () => {
- expect(new PetWeightPage(propsMock)).toBeInstanceOf(Object);
+ it('selects radio buttons when clicked and desselects the other', async () => {
+ const page = makeComponent(propsMock.petPhoto);
+ render(page);
+
+ const radioButtonKG = screen.getByLabelText('KG');
+ const radioButtonLB = screen.getByLabelText('LB');
+
+ await userEvent.click(radioButtonKG);
+ expect(radioButtonKG).toBeChecked();
+ expect(radioButtonLB).not.toBeChecked();
+
+ await userEvent.click(radioButtonLB);
+ expect(radioButtonLB).toBeChecked();
+ expect(radioButtonKG).not.toBeChecked();
+ });
+
+ it('allows typing in the input field', async () => {
+ const page = makeComponent(propsMock.petPhoto);
+ render(page);
+
+ const input = screen.getByPlaceholderText('Peso');
+
+ await userEvent.type(input, '5');
+
+ expect(input).toHaveValue('5');
+ });
+
+ it('shows right value in slider when value changes in the input field', async () => {
+ const page = makeComponent(propsMock.petPhoto);
+ render(page);
+
+ const input = screen.getByPlaceholderText('Peso');
+ const slider = screen.getByText('10.0');
+
+ await userEvent.clear(input);
+ await userEvent.type(input, '5');
+
+ await waitFor(() => {
+ expect(slider).toHaveTextContent('5.0');
+ });
+ });
+
+ it('emits data when continue button is clicked', async () => {
+ const page = makeComponent(propsMock.petPhoto);
+ render(page);
+
+ const input = screen.getByPlaceholderText('Peso');
+ const radioKG = screen.getByLabelText('KG');
+ const continueButton = screen.getByRole('button', { name: 'Continuar' });
+
+ await userEvent.clear(input);
+ await userEvent.type(input, '5');
+ await userEvent.click(radioKG);
+
+ const mockEmit = vi.spyOn(page, 'emit');
+
+ await userEvent.click(continueButton);
+
+ expect(mockEmit).toHaveBeenCalledWith('submit', {
+ weight: 5.0,
+ weightUnit: 'kg',
+ });
});
});
From a538cf6c39bcb3236e70a3fb5facf550406b6d25 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jo=C3=A3o=20Burgarell?=
Date: Mon, 19 Aug 2024 22:02:40 -0300
Subject: [PATCH 4/9] feat: add user registration service (#293)
* feat: add user registration service
* chore: transform userRegister file into a userService method
---
src/components/RegisterForm/index.js | 13 ++++++++++++-
src/services/userService.js | 29 ++++++++++++++++++++++++++++
2 files changed, 41 insertions(+), 1 deletion(-)
diff --git a/src/components/RegisterForm/index.js b/src/components/RegisterForm/index.js
index 3cad6787..c37e0747 100644
--- a/src/components/RegisterForm/index.js
+++ b/src/components/RegisterForm/index.js
@@ -14,6 +14,7 @@ import {
import googleIcon from './images/google-icon.svg';
import facebookIcon from './images/facebook-icon.svg';
import './index.scss';
+import { UserService } from '../../services/userService';
const events = ['register'];
@@ -151,7 +152,7 @@ export default function RegisterForm() {
repeatPassword.mount($fields);
registerButton.mount($formButton);
- registerButton.listen('click', () => {
+ registerButton.listen('click', async () => {
const nameValue = name.getContent().getValue();
const surnameValue = surname.getContent().getValue();
const birthValue = birth.getContent().getValue();
@@ -270,6 +271,16 @@ export default function RegisterForm() {
passwordValid &&
repeatPasswordValid
) {
+ await UserService.registerUser({
+ name: nameValue,
+ surname: surnameValue,
+ birth: birthValue,
+ local: localValue,
+ email: emailValue,
+ phone: phoneValue,
+ password: passwordValue,
+ });
+
this.register();
}
});
diff --git a/src/services/userService.js b/src/services/userService.js
index ef271be6..3f2f2b75 100644
--- a/src/services/userService.js
+++ b/src/services/userService.js
@@ -16,6 +16,7 @@ export const UserService = {
return `An error occurred: ${error}`;
}
},
+
login: async (email, password) => {
try {
const response = await fetch(`${url}/api/user/login`, {
@@ -38,4 +39,32 @@ export const UserService = {
};
}
},
+
+ registerUser: async (userData) => {
+ try {
+ const response = await fetch(`${url}/naoSeiARota`, {
+ method: 'POST',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ body: JSON.stringify(userData),
+ });
+
+ if (!response.ok) {
+ throw new Error('Failed to register user');
+ }
+
+ const result = await response.json();
+ return {
+ success: true,
+ data: result,
+ };
+ } catch (error) {
+ console.error(`An error occurred: ${error}`);
+ return {
+ success: false,
+ message: error.message,
+ };
+ }
+ },
};
From 12e425f995d3fb5dee23a1bc0e32dda48642b62f Mon Sep 17 00:00:00 2001
From: Gustavo Gularte Arend <98916022+gustavogularte@users.noreply.github.com>
Date: Thu, 22 Aug 2024 18:46:04 -0300
Subject: [PATCH 5/9] feat: scroll quando houver mais de 6 pets (#296)
---
.../app/components/SideMenu/index.scss | 21 +++++++++++++++++--
1 file changed, 19 insertions(+), 2 deletions(-)
diff --git a/src/layouts/app/components/SideMenu/index.scss b/src/layouts/app/components/SideMenu/index.scss
index 99d8b35a..3ea4b4d3 100644
--- a/src/layouts/app/components/SideMenu/index.scss
+++ b/src/layouts/app/components/SideMenu/index.scss
@@ -85,11 +85,28 @@
}
&__avatars-yourpet {
+ max-height: calc(8.5rem * 2 + 2rem);
+ overflow-y: auto;
+
display: grid;
grid-template-columns: repeat(3, 6rem);
- grid-gap: 2rem;
+ gap: 2rem;
margin-top: 2rem;
+ padding: 0.4rem 0.2rem;
+
+ &::-webkit-scrollbar {
+ width: 0.4rem;
+ }
+
+ &::-webkit-scrollbar-track {
+ background: colors.$primary600;
+ }
+
+ &::-webkit-scrollbar-thumb {
+ background-color: colors.$primary700;
+ border-radius: 1rem;
+ }
}
&__itens {
@@ -142,7 +159,7 @@
}
.side-menu-content {
- width: 70%;
+ width: 80%;
&__menuitens {
transition: 0.3s;
From a20d5d95b02d07c35d92ac90789be3efcf6f4d36 Mon Sep 17 00:00:00 2001
From: Edilton Oliveira <86030948+EdiltonOliveira@users.noreply.github.com>
Date: Thu, 22 Aug 2024 18:48:20 -0300
Subject: [PATCH 6/9] =?UTF-8?q?refactor:=20centraliza=C3=A7=C3=A3o=20das?=
=?UTF-8?q?=20regras=20de=20valida=C3=A7=C3=A3o=20de=20senha=20#287=20(#29?=
=?UTF-8?q?7)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/components/ChangePassword/index.js | 16 ++++------------
src/components/LoginForm/index.js | 12 +++---------
2 files changed, 7 insertions(+), 21 deletions(-)
diff --git a/src/components/ChangePassword/index.js b/src/components/ChangePassword/index.js
index 05c309f6..e50f65fa 100644
--- a/src/components/ChangePassword/index.js
+++ b/src/components/ChangePassword/index.js
@@ -1,4 +1,5 @@
import { Component } from 'pet-dex-utilities';
+import { isPasswordValid } from '../../utils/validations';
import TextInput from '../TextInput';
import Button from '../Button';
import './index.scss';
@@ -28,22 +29,13 @@ const html = `
As senhas não coincidem
- Insira no mínimo 6 caracteres
+ Insira no mínimo 10 caracteres
A senha deve conter uma letra maiúscula
Deve conter um caractere especial
`;
-const validatePassword = (password) => {
- const hasMinLength = password.length >= 10;
- const hasUppercase = /[A-Z]/g.test(password);
- const hasNumber = /[0-9]/g.test(password);
- const hasSpecialCharacter = /[!@#$%^&*(),.?":{}|<>]/g.test(password);
-
- return hasMinLength && hasUppercase && hasNumber && hasSpecialCharacter;
-};
-
export default function ChangePassword() {
Component.call(this, { html, events });
const $changePasswordForm = this.selected.get('change-password');
@@ -123,8 +115,8 @@ export default function ChangePassword() {
confirmPasswordInput.selected.get('input-text').value;
const showErrorMessage = (field, error) => {
- const fieldValue = field.selected.get('input-text').value;
- if (!validatePassword(fieldValue)) {
+ const password = field.selected.get('input-text').value;
+ if (!isPasswordValid(password)) {
validPasswords = false;
error.classList.add('show-error');
field.inputError();
diff --git a/src/components/LoginForm/index.js b/src/components/LoginForm/index.js
index 1b50037d..327c28d8 100644
--- a/src/components/LoginForm/index.js
+++ b/src/components/LoginForm/index.js
@@ -1,4 +1,5 @@
import { Component } from 'pet-dex-utilities';
+import { isPasswordValid } from '../../utils/validations';
import TextInput from '../TextInput';
import Button from '../Button';
import Toggle from '../Toggle';
@@ -112,7 +113,7 @@ export default function LoginForm() {
emailInput.inputError();
}
- if (!this.validatePassword(password)) {
+ if (!this.isPasswordValid(password)) {
validPassword = false;
$passwordErrorMessage.classList.add('show-error');
$passwordErrorMessage.innerText =
@@ -138,12 +139,5 @@ LoginForm.prototype = Object.assign(LoginForm.prototype, Component.prototype, {
return emailRegex.test(email);
},
- validatePassword(password) {
- const hasMinLength = password.length >= 10;
- const hasUppercase = /[A-Z]/g.test(password);
- const hasNumber = /[0-9]/g.test(password);
- const hasSpecialCharacter = /[!@#$%^&*(),.?":{}|<>]/g.test(password);
-
- return hasMinLength && hasUppercase && hasNumber && hasSpecialCharacter;
- },
+ isPasswordValid,
});
From bc4dc918658629966589dbcac8b943da334133c7 Mon Sep 17 00:00:00 2001
From: Wendeson <82889172+wendesongomes@users.noreply.github.com>
Date: Thu, 29 Aug 2024 18:53:49 -0300
Subject: [PATCH 7/9] =?UTF-8?q?Adiciona=20roteamento=20ao=20clicar=20no=20?=
=?UTF-8?q?bot=C3=A3o=20"Cadastrar=20pet"=20(#298)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
* feat: add router when click on button
* refactor: refactor button listen
---
src/layouts/app/pages/NoPetRegirested/index.js | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/src/layouts/app/pages/NoPetRegirested/index.js b/src/layouts/app/pages/NoPetRegirested/index.js
index 032a20c6..94a93aea 100644
--- a/src/layouts/app/pages/NoPetRegirested/index.js
+++ b/src/layouts/app/pages/NoPetRegirested/index.js
@@ -1,4 +1,5 @@
import { Component } from 'pet-dex-utilities';
+import { Router } from 'vanilla-routing';
import Button from '../../../../components/Button';
import petUrl from './images/no-pet-regirested-page.png';
import './index.scss';
@@ -30,6 +31,10 @@ export default function NoPetRegirested() {
.get('button')
.classList.add('no-pet-regirested-page__button');
this.button.mount($container);
+
+ this.button.listen('click', () => {
+ Router.go('/add/addpets');
+ });
}
NoPetRegirested.prototype = Object.assign(
From e005f53be7a16a7545ddf0b8ef1c8c9affcf9376 Mon Sep 17 00:00:00 2001
From: Paulo Victor
Date: Tue, 3 Sep 2024 18:49:36 -0300
Subject: [PATCH 8/9] Fixed codestyle workflow (#271)
* feat: add dependencias entre workflows e ajust code-style7
* fix: removendo dependencias de workflows
* ajust workflows
* add setup env script
* change name to base fowflows
* add code owners
* add code owners
* ajust codewoners
---------
Co-authored-by: Alexandre Gomes
---
.github/CODEOWNERS | 1 +
.github/workflows/autoAssigned.yml | 21 ---------------
.github/workflows/base-workflows.yml | 11 ++++++++
.github/workflows/build.yml | 2 +-
.github/workflows/code-style.yml | 40 +++-------------------------
setup.mjs | 30 +++++++++++++++++++++
6 files changed, 47 insertions(+), 58 deletions(-)
create mode 100644 .github/CODEOWNERS
delete mode 100644 .github/workflows/autoAssigned.yml
create mode 100644 .github/workflows/base-workflows.yml
create mode 100644 setup.mjs
diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
new file mode 100644
index 00000000..00b0c9dd
--- /dev/null
+++ b/.github/CODEOWNERS
@@ -0,0 +1 @@
+* @devhatt/hatts @devhatt/petdex-frontend-administrators
diff --git a/.github/workflows/autoAssigned.yml b/.github/workflows/autoAssigned.yml
deleted file mode 100644
index f388bcb2..00000000
--- a/.github/workflows/autoAssigned.yml
+++ /dev/null
@@ -1,21 +0,0 @@
-name: Auto-assign on comment
-
-on:
- issue_comment:
- types: [created]
-
-jobs:
- auto-assign:
- runs-on: ubuntu-latest
- steps:
- - name: Check for "EU QUERO!!!" comment
- if: contains(github.event.comment.body, 'EU QUERO!!!')
- run: |
- # Extract the commenter's username
- commenter=$(jq -r .comment.user.login $GITHUB_EVENT_PATH)
-
- # Add the commenter as an assignee to the issue using a Personal Access Token
- echo "Assigning $commenter to the issue..."
- curl -X POST -H "Authorization: token ${{ secrets.PERSONAL_ACCESS_TOKEN }}" \
- -d "{\"assignees\": [\"$commenter\"]}" \
- "https://api.github.com/repos/${{ github.repository }}/issues/${{ github.event.issue.number }}/assignees"
diff --git a/.github/workflows/base-workflows.yml b/.github/workflows/base-workflows.yml
new file mode 100644
index 00000000..df126b4a
--- /dev/null
+++ b/.github/workflows/base-workflows.yml
@@ -0,0 +1,11 @@
+name: Base workflows
+
+on:
+ issue_comment:
+ types: [created]
+ pull_request:
+
+jobs:
+ assignes:
+ uses: devhatt/workflows/.github/workflows/auto-assign.yml@main
+ secrets: inherit
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 0752a3b0..4be2186a 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -21,7 +21,7 @@ jobs:
uses: actions/checkout@v3
- name: Setup deps
- uses: ./.github/actions/install-deps
+ uses: devhatt/workflows/.github/actions/pnpm-setup@main
- name: Build
run: pnpm build
diff --git a/.github/workflows/code-style.yml b/.github/workflows/code-style.yml
index 2b731759..d462ec8d 100644
--- a/.github/workflows/code-style.yml
+++ b/.github/workflows/code-style.yml
@@ -17,45 +17,13 @@ jobs:
uses: actions/checkout@v3
- name: Setup deps
- uses: ./.github/actions/install-deps
-
- - name: Get all changed files
- id: all-changed-files
- uses: tj-actions/changed-files@v41
- with:
- files: |
- !pnpm-lock.yaml
+ uses: devhatt/workflows/.github/actions/pnpm-setup@main
- name: Run prettier in all files
- if: steps.all-changed-files.outputs.any_changed == 'true'
- env:
- files: ${{ steps.all-changed-files.outputs.all_changed_files }}
- run: pnpm exec prettier $files --check --ignore-unknown
-
- - name: Get specific changed files
- id: changed-files
- uses: tj-actions/changed-files@v41
- with:
- files_yaml: |
- code:
- - '**.js'
- - '**.ts'
- - '**.tsx'
- - '**.jsx'
- - '**.mjs'
- - '**.cjs'
- style:
- - '**.scss'
+ run: pnpm exec prettier . --check --ignore-unknown
- name: Run stylelint in scss files
- if: steps.changed-files.outputs.style_any_changed == 'true'
- env:
- files: ${{ steps.changed-files.outputs.style_all_changed_files }}
- run: pnpm exec stylelint $files --allow-empty-input
+ run: pnpm exec stylelint . --allow-empty-input
- name: Run eslint in code files
- if: steps.changed-files.outputs.code_any_changed == 'true'
- env:
- files: ${{ steps.changed-files.outputs.code_all_changed_files }}
- run: pnpm exec eslint $files --report-unused-disable-directives --max-warnings 0 --output-file eslint_report.json --format json
- continue-on-error: true
+ run: pnpm exec eslint . --report-unused-disable-directives --max-warnings 0
diff --git a/setup.mjs b/setup.mjs
new file mode 100644
index 00000000..5398d1e4
--- /dev/null
+++ b/setup.mjs
@@ -0,0 +1,30 @@
+import fs from 'node:fs';
+import path from 'node:path';
+import { fileURLToPath } from 'node:url';
+
+const __filename = fileURLToPath(import.meta.url);
+const __dirname = path.dirname(__filename);
+
+const envFilePath = path.join(__dirname, '.env');
+
+async function setupDotEnv() {
+ if (fs.existsSync(envFilePath)) {
+ console.log(
+ 'O .env já existe, se você deseja recriá-lo, exclua o arquivo e execute este script novamente.',
+ );
+ return;
+ }
+
+ try {
+ console.log('Baixando o .env do repositório...');
+ const envData = await fetch(
+ 'https://raw.githubusercontent.com/devhatt/envs/main/petdex-front.env',
+ ).then((response) => response.text());
+ fs.writeFileSync(envFilePath, envData);
+ console.log('O arquivo .env foi criado com sucesso!');
+ } catch (error) {
+ console.error('Erro ao criar o arquivo .env:', error);
+ }
+}
+
+setupDotEnv();
From 843ded8666f9a04220be124f9c563bcb85651baa Mon Sep 17 00:00:00 2001
From: Diogo Ferreira Reis <88992612+diogocaronte@users.noreply.github.com>
Date: Thu, 5 Sep 2024 18:55:27 -0300
Subject: [PATCH 9/9] add sample page to routing (#299)
* feat: routes fix
* fix: identation
* fix: importing adjusts
* add sample page
* minor path fixes
* fix import order
---------
Co-authored-by: Rafael Lima
Co-authored-by: juliaM <35346206+juliaam@users.noreply.github.com>
Co-authored-by: Paulo Victor
---
jsconfig.json | 6 +-
package.json | 1 +
pnpm-lock.yaml | 12 +++
src/components/AddPet/index.js | 9 +-
src/layouts/app/index.html | 96 ------------------
.../components/Navigation/images/avatar.svg | 0
.../components/Navigation/images/bell.svg | 0
.../components/Navigation/images/exit.svg | 0
.../components/Navigation/images/menu.svg | 0
.../{app => }/components/Navigation/index.js | 2 +-
.../components/Navigation/index.scss | 0
.../SideMenu/images/configuracoes.svg | 0
.../components/SideMenu/images/conta.svg | 0
.../components/SideMenu/images/doacoes.svg | 0
.../components/SideMenu/images/exit.svg | 0
.../components/SideMenu/images/exitmenu.svg | 0
.../components/SideMenu/images/meuspets.svg | 0
.../SideMenu/images/notifications.svg | 0
.../components/SideMenu/images/perfil.svg | 0
.../components/SideMenu/images/petdex.svg | 0
.../{app => }/components/SideMenu/index.js | 36 +++++--
.../{app => }/components/SideMenu/index.scss | 0
src/layouts/index.html | 84 ++++++++++++++-
src/layouts/{app => }/index.js | 6 +-
src/layouts/{app => }/index.scss | 0
.../images/no-pet-regirested-page.png | Bin
.../{app => }/pages/NoPetRegirested/index.js | 2 +-
.../pages/NoPetRegirested/index.scss | 0
.../{app => }/pages/PetRegister/index.js | 4 +-
.../{app => }/pages/PetRegister/index.scss | 0
.../{app => }/pages/PetRegister/index.spec.js | 12 +--
.../pages/PetVet/images/cuidadosEspeciais.svg | 0
.../pages/PetVet/images/estetoscopio.svg | 0
src/layouts/{app => }/pages/PetVet/index.js | 10 +-
src/layouts/{app => }/pages/PetVet/index.scss | 0
.../{app => }/pages/PetVet/index.spec.js | 0
.../{app => }/pages/PetWeight/index.js | 10 +-
.../{app => }/pages/PetWeight/index.scss | 0
.../pages/PetWeight/petWeightPage.spec.js | 0
src/layouts/sample-page/index.html | 11 ++
.../{app => }/utils/scrollable-sidemenu.js | 0
src/router/main-router.js | 8 +-
.../routes/{ => app}/add-pet/add-pet.js | 0
.../{ => app}/add-pet/steps/birthday.js | 4 +-
.../routes/{ => app}/add-pet/steps/name.js | 4 +-
.../routes/{ => app}/add-pet/steps/petvet.js | 4 +-
.../routes/{ => app}/add-pet/steps/race.js | 4 +-
.../{ => app}/add-pet/steps/register.js | 4 +-
.../routes/{ => app}/add-pet/steps/size.js | 4 +-
.../routes/{ => app}/add-pet/steps/weight.js | 4 +-
.../{ => app}/main-routes/main-routes.js | 0
.../{ => app}/main-routes/routes/account.js | 4 +-
.../{ => app}/main-routes/routes/donates.js | 4 +-
.../{ => app}/main-routes/routes/error.js | 2 +-
.../{ => app}/main-routes/routes/home.js | 4 +-
.../{ => app}/main-routes/routes/pet-dex.js | 4 +-
.../{ => app}/main-routes/routes/settings.js | 4 +-
.../routes/{ => app}/my-pets/my-pets.js | 0
.../{ => app}/my-pets/steps/pet-profile.js | 4 +-
.../routes/{ => app}/my-pets/steps/pets.js | 4 +-
src/router/routes/create-account/account.js | 5 +
.../routes/create-account/create-account.js | 13 +++
src/stories/PetRegister.stories.js | 2 +-
src/stories/PetRegisterPage.stories.js | 2 +-
src/stories/PetVetPage.stories.js | 2 +-
src/stories/PetWeightPage.stories.js | 2 +-
vite.config.js | 7 +-
67 files changed, 224 insertions(+), 176 deletions(-)
delete mode 100644 src/layouts/app/index.html
rename src/layouts/{app => }/components/Navigation/images/avatar.svg (100%)
rename src/layouts/{app => }/components/Navigation/images/bell.svg (100%)
rename src/layouts/{app => }/components/Navigation/images/exit.svg (100%)
rename src/layouts/{app => }/components/Navigation/images/menu.svg (100%)
rename src/layouts/{app => }/components/Navigation/index.js (96%)
rename src/layouts/{app => }/components/Navigation/index.scss (100%)
rename src/layouts/{app => }/components/SideMenu/images/configuracoes.svg (100%)
rename src/layouts/{app => }/components/SideMenu/images/conta.svg (100%)
rename src/layouts/{app => }/components/SideMenu/images/doacoes.svg (100%)
rename src/layouts/{app => }/components/SideMenu/images/exit.svg (100%)
rename src/layouts/{app => }/components/SideMenu/images/exitmenu.svg (100%)
rename src/layouts/{app => }/components/SideMenu/images/meuspets.svg (100%)
rename src/layouts/{app => }/components/SideMenu/images/notifications.svg (100%)
rename src/layouts/{app => }/components/SideMenu/images/perfil.svg (100%)
rename src/layouts/{app => }/components/SideMenu/images/petdex.svg (100%)
rename src/layouts/{app => }/components/SideMenu/index.js (65%)
rename src/layouts/{app => }/components/SideMenu/index.scss (100%)
rename src/layouts/{app => }/index.js (89%)
rename src/layouts/{app => }/index.scss (100%)
rename src/layouts/{app => }/pages/NoPetRegirested/images/no-pet-regirested-page.png (100%)
rename src/layouts/{app => }/pages/NoPetRegirested/index.js (96%)
rename src/layouts/{app => }/pages/NoPetRegirested/index.scss (100%)
rename src/layouts/{app => }/pages/PetRegister/index.js (93%)
rename src/layouts/{app => }/pages/PetRegister/index.scss (100%)
rename src/layouts/{app => }/pages/PetRegister/index.spec.js (91%)
rename src/layouts/{app => }/pages/PetVet/images/cuidadosEspeciais.svg (100%)
rename src/layouts/{app => }/pages/PetVet/images/estetoscopio.svg (100%)
rename src/layouts/{app => }/pages/PetVet/index.js (95%)
rename src/layouts/{app => }/pages/PetVet/index.scss (100%)
rename src/layouts/{app => }/pages/PetVet/index.spec.js (100%)
rename src/layouts/{app => }/pages/PetWeight/index.js (93%)
rename src/layouts/{app => }/pages/PetWeight/index.scss (100%)
rename src/layouts/{app => }/pages/PetWeight/petWeightPage.spec.js (100%)
create mode 100644 src/layouts/sample-page/index.html
rename src/layouts/{app => }/utils/scrollable-sidemenu.js (100%)
rename src/router/routes/{ => app}/add-pet/add-pet.js (100%)
rename src/router/routes/{ => app}/add-pet/steps/birthday.js (73%)
rename src/router/routes/{ => app}/add-pet/steps/name.js (74%)
rename src/router/routes/{ => app}/add-pet/steps/petvet.js (74%)
rename src/router/routes/{ => app}/add-pet/steps/race.js (74%)
rename src/router/routes/{ => app}/add-pet/steps/register.js (73%)
rename src/router/routes/{ => app}/add-pet/steps/size.js (74%)
rename src/router/routes/{ => app}/add-pet/steps/weight.js (73%)
rename src/router/routes/{ => app}/main-routes/main-routes.js (100%)
rename src/router/routes/{ => app}/main-routes/routes/account.js (74%)
rename src/router/routes/{ => app}/main-routes/routes/donates.js (74%)
rename src/router/routes/{ => app}/main-routes/routes/error.js (81%)
rename src/router/routes/{ => app}/main-routes/routes/home.js (72%)
rename src/router/routes/{ => app}/main-routes/routes/pet-dex.js (74%)
rename src/router/routes/{ => app}/main-routes/routes/settings.js (74%)
rename src/router/routes/{ => app}/my-pets/my-pets.js (100%)
rename src/router/routes/{ => app}/my-pets/steps/pet-profile.js (73%)
rename src/router/routes/{ => app}/my-pets/steps/pets.js (74%)
create mode 100644 src/router/routes/create-account/account.js
create mode 100644 src/router/routes/create-account/create-account.js
diff --git a/jsconfig.json b/jsconfig.json
index 8d03554a..0b580cd3 100644
--- a/jsconfig.json
+++ b/jsconfig.json
@@ -3,7 +3,11 @@
"types": ["vitest/globals"],
"baseUrl": ".",
"paths": {
- "@testing-library/vanilla": ["src/__tests__/index.js"]
+ "@testing-library/vanilla": ["src/__tests__/index.js"],
+ "~src/*": ["src/*"],
+ "~styles/*": ["src/styles/*"],
+ "~stories/*": ["src/stories/*"],
+ "~layouts/*": ["src/layouts/*"]
}
}
}
diff --git a/package.json b/package.json
index eff3408f..9e05dc5a 100644
--- a/package.json
+++ b/package.json
@@ -57,6 +57,7 @@
"eslint": "^8.57.0",
"eslint-config-airbnb": "^19.0.4",
"eslint-config-prettier": "^9.1.0",
+ "eslint-import-resolver-alias": "1.1.2",
"eslint-import-resolver-jsconfig": "1.1.0",
"eslint-import-resolver-node": "0.3.9",
"eslint-plugin-import": "^2.29.1",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 9cf67d98..5593918a 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -94,6 +94,9 @@ devDependencies:
eslint-config-prettier:
specifier: ^9.1.0
version: 9.1.0(eslint@8.57.0)
+ eslint-import-resolver-alias:
+ specifier: 1.1.2
+ version: 1.1.2(eslint-plugin-import@2.29.1)
eslint-import-resolver-jsconfig:
specifier: 1.1.0
version: 1.1.0
@@ -5339,6 +5342,15 @@ packages:
eslint: 8.57.0
dev: true
+ /eslint-import-resolver-alias@1.1.2(eslint-plugin-import@2.29.1):
+ resolution: {integrity: sha512-WdviM1Eu834zsfjHtcGHtGfcu+F30Od3V7I9Fi57uhBEwPkjDcii7/yW8jAT+gOhn4P/vOxxNAXbFAKsrrc15w==}
+ engines: {node: '>= 4'}
+ peerDependencies:
+ eslint-plugin-import: '>=1.4.0'
+ dependencies:
+ eslint-plugin-import: 2.29.1(eslint@8.57.0)
+ dev: true
+
/eslint-import-resolver-jsconfig@1.1.0:
resolution: {integrity: sha512-MEiD/zyEkVVwnblRI058/0liYrKXMUwgAtM4EKrTldrThb1AvgPIQeR4emDKC2IotTuWF7KzekvGP+KLhtM3rw==}
dependencies:
diff --git a/src/components/AddPet/index.js b/src/components/AddPet/index.js
index 74730448..e7d59525 100644
--- a/src/components/AddPet/index.js
+++ b/src/components/AddPet/index.js
@@ -1,11 +1,10 @@
import { Component } from 'pet-dex-utilities';
-import Sliding from '../Sliding';
+import PetRegister from '~layouts/pages/PetRegister';
+import PetVetPage from '~layouts/pages/PetVet';
+import PetWeight from '~layouts/pages/PetWeight';
import ProgressBar from '../ProgressBar';
-
-import PetVetPage from '../../layouts/app/pages/PetVet';
-import PetWeight from '../../layouts/app/pages/PetWeight';
-import PetRegister from '../../layouts/app/pages/PetRegister';
+import Sliding from '../Sliding';
import arrowLeft from './assets/arrow-left.svg';
diff --git a/src/layouts/app/index.html b/src/layouts/app/index.html
deleted file mode 100644
index 1ddfd058..00000000
--- a/src/layouts/app/index.html
+++ /dev/null
@@ -1,96 +0,0 @@
-
-
-
-
-
-
-
-
-
- Pet Hat
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/layouts/app/components/Navigation/images/avatar.svg b/src/layouts/components/Navigation/images/avatar.svg
similarity index 100%
rename from src/layouts/app/components/Navigation/images/avatar.svg
rename to src/layouts/components/Navigation/images/avatar.svg
diff --git a/src/layouts/app/components/Navigation/images/bell.svg b/src/layouts/components/Navigation/images/bell.svg
similarity index 100%
rename from src/layouts/app/components/Navigation/images/bell.svg
rename to src/layouts/components/Navigation/images/bell.svg
diff --git a/src/layouts/app/components/Navigation/images/exit.svg b/src/layouts/components/Navigation/images/exit.svg
similarity index 100%
rename from src/layouts/app/components/Navigation/images/exit.svg
rename to src/layouts/components/Navigation/images/exit.svg
diff --git a/src/layouts/app/components/Navigation/images/menu.svg b/src/layouts/components/Navigation/images/menu.svg
similarity index 100%
rename from src/layouts/app/components/Navigation/images/menu.svg
rename to src/layouts/components/Navigation/images/menu.svg
diff --git a/src/layouts/app/components/Navigation/index.js b/src/layouts/components/Navigation/index.js
similarity index 96%
rename from src/layouts/app/components/Navigation/index.js
rename to src/layouts/components/Navigation/index.js
index 1f529662..a8059669 100644
--- a/src/layouts/app/components/Navigation/index.js
+++ b/src/layouts/components/Navigation/index.js
@@ -1,7 +1,7 @@
import { Component } from 'pet-dex-utilities';
import './index.scss';
-import petUrl from '../../../../images/pet-dex.svg';
+import petUrl from '../../../images/pet-dex.svg';
import avatarUrl from './images/avatar.svg';
import bellUrl from './images/bell.svg';
import exitUrl from './images/exit.svg';
diff --git a/src/layouts/app/components/Navigation/index.scss b/src/layouts/components/Navigation/index.scss
similarity index 100%
rename from src/layouts/app/components/Navigation/index.scss
rename to src/layouts/components/Navigation/index.scss
diff --git a/src/layouts/app/components/SideMenu/images/configuracoes.svg b/src/layouts/components/SideMenu/images/configuracoes.svg
similarity index 100%
rename from src/layouts/app/components/SideMenu/images/configuracoes.svg
rename to src/layouts/components/SideMenu/images/configuracoes.svg
diff --git a/src/layouts/app/components/SideMenu/images/conta.svg b/src/layouts/components/SideMenu/images/conta.svg
similarity index 100%
rename from src/layouts/app/components/SideMenu/images/conta.svg
rename to src/layouts/components/SideMenu/images/conta.svg
diff --git a/src/layouts/app/components/SideMenu/images/doacoes.svg b/src/layouts/components/SideMenu/images/doacoes.svg
similarity index 100%
rename from src/layouts/app/components/SideMenu/images/doacoes.svg
rename to src/layouts/components/SideMenu/images/doacoes.svg
diff --git a/src/layouts/app/components/SideMenu/images/exit.svg b/src/layouts/components/SideMenu/images/exit.svg
similarity index 100%
rename from src/layouts/app/components/SideMenu/images/exit.svg
rename to src/layouts/components/SideMenu/images/exit.svg
diff --git a/src/layouts/app/components/SideMenu/images/exitmenu.svg b/src/layouts/components/SideMenu/images/exitmenu.svg
similarity index 100%
rename from src/layouts/app/components/SideMenu/images/exitmenu.svg
rename to src/layouts/components/SideMenu/images/exitmenu.svg
diff --git a/src/layouts/app/components/SideMenu/images/meuspets.svg b/src/layouts/components/SideMenu/images/meuspets.svg
similarity index 100%
rename from src/layouts/app/components/SideMenu/images/meuspets.svg
rename to src/layouts/components/SideMenu/images/meuspets.svg
diff --git a/src/layouts/app/components/SideMenu/images/notifications.svg b/src/layouts/components/SideMenu/images/notifications.svg
similarity index 100%
rename from src/layouts/app/components/SideMenu/images/notifications.svg
rename to src/layouts/components/SideMenu/images/notifications.svg
diff --git a/src/layouts/app/components/SideMenu/images/perfil.svg b/src/layouts/components/SideMenu/images/perfil.svg
similarity index 100%
rename from src/layouts/app/components/SideMenu/images/perfil.svg
rename to src/layouts/components/SideMenu/images/perfil.svg
diff --git a/src/layouts/app/components/SideMenu/images/petdex.svg b/src/layouts/components/SideMenu/images/petdex.svg
similarity index 100%
rename from src/layouts/app/components/SideMenu/images/petdex.svg
rename to src/layouts/components/SideMenu/images/petdex.svg
diff --git a/src/layouts/app/components/SideMenu/index.js b/src/layouts/components/SideMenu/index.js
similarity index 65%
rename from src/layouts/app/components/SideMenu/index.js
rename to src/layouts/components/SideMenu/index.js
index 04c9bb0b..e38cfc95 100644
--- a/src/layouts/app/components/SideMenu/index.js
+++ b/src/layouts/components/SideMenu/index.js
@@ -1,6 +1,7 @@
import { Component } from 'pet-dex-utilities';
-import { UserService } from '../../../../services/userService';
-import petUrl from '../../../../images/pet-dex.svg';
+import PetAvatar from '../../../components/PetAvatar';
+import petUrl from '../../../images/pet-dex.svg';
+import { UserService } from '../../../services/userService';
import configuracoes from './images/configuracoes.svg';
import conta from './images/conta.svg';
import doacoes from './images/doacoes.svg';
@@ -10,7 +11,6 @@ import meusPets from './images/meuspets.svg';
import notificacoes from './images/notifications.svg';
import perfil from './images/perfil.svg';
import petdex from './images/petdex.svg';
-import PetAvatar from '../../../../components/PetAvatar';
import './index.scss';
const html = `
@@ -34,12 +34,32 @@ const html = `
diff --git a/src/layouts/app/components/SideMenu/index.scss b/src/layouts/components/SideMenu/index.scss
similarity index 100%
rename from src/layouts/app/components/SideMenu/index.scss
rename to src/layouts/components/SideMenu/index.scss
diff --git a/src/layouts/index.html b/src/layouts/index.html
index 9c2cfa1d..1ddfd058 100644
--- a/src/layouts/index.html
+++ b/src/layouts/index.html
@@ -7,16 +7,90 @@
Pet Hat
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
+
+
+