From 5f1372bb37e8cb6d61e7806fb8407f23128a0c70 Mon Sep 17 00:00:00 2001 From: Aleksandr Gumroian Date: Thu, 22 Aug 2024 15:43:34 +0200 Subject: [PATCH 1/2] Migrate to FontAwesome v6 --- package-lock.json | 101 +++++++++++++++++++++++--- package.json | 5 +- src/bootstrap/NumberInput.js | 6 +- src/bootstrap/PasswordInput.js | 8 +- src/common/WiFiSettings/WiFiQRCode.js | 11 ++- src/testUtils/setup.js | 9 ++- 6 files changed, 118 insertions(+), 22 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7306098..0c1736f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,6 +9,10 @@ "version": "6.0.3", "license": "GPL-3.0", "dependencies": { + "@fortawesome/fontawesome-svg-core": "^6.6.0", + "@fortawesome/free-regular-svg-icons": "^6.6.0", + "@fortawesome/free-solid-svg-icons": "^6.6.0", + "@fortawesome/react-fontawesome": "^0.2.2", "axios": "^1.7.2", "immutability-helper": "^3.1.1", "moment": "^2.30.1", @@ -22,7 +26,6 @@ "@babel/plugin-transform-runtime": "^7.24.7", "@babel/preset-env": "^7.24.7", "@babel/preset-react": "^7.24.7", - "@fortawesome/fontawesome-free": "^6.5.2", "@testing-library/react": "^8.0.9", "babel-loader": "^8.1.0", "babel-polyfill": "^6.26.0", @@ -2085,16 +2088,59 @@ "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/@fortawesome/fontawesome-free": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-6.5.2.tgz", - "integrity": "sha512-hRILoInAx8GNT5IMkrtIt9blOdrqHOnPBH+k70aWUAqPZPgopb9G5EQJFpaBx/S8zp2fC+mPW349Bziuk1o28Q==", - "dev": true, - "hasInstallScript": true, + "node_modules/@fortawesome/fontawesome-common-types": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.6.0.tgz", + "integrity": "sha512-xyX0X9mc0kyz9plIyryrRbl7ngsA9jz77mCZJsUkLl+ZKs0KWObgaEBoSgQiYWAsSmjz/yjl0F++Got0Mdp4Rw==", "engines": { "node": ">=6" } }, + "node_modules/@fortawesome/fontawesome-svg-core": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.6.0.tgz", + "integrity": "sha512-KHwPkCk6oRT4HADE7smhfsKudt9N/9lm6EJ5BVg0tD1yPA5hht837fB87F8pn15D8JfTqQOjhKTktwmLMiD7Kg==", + "dependencies": { + "@fortawesome/fontawesome-common-types": "6.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/free-regular-svg-icons": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/@fortawesome/free-regular-svg-icons/-/free-regular-svg-icons-6.6.0.tgz", + "integrity": "sha512-Yv9hDzL4aI73BEwSEh20clrY8q/uLxawaQ98lekBx6t9dQKDHcDzzV1p2YtBGTtolYtNqcWdniOnhzB+JPnQEQ==", + "dependencies": { + "@fortawesome/fontawesome-common-types": "6.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/free-solid-svg-icons": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.6.0.tgz", + "integrity": "sha512-IYv/2skhEDFc2WGUcqvFJkeK39Q+HyPf5GHUrT/l2pKbtgEIv1al1TKd6qStR5OIwQdN1GZP54ci3y4mroJWjA==", + "dependencies": { + "@fortawesome/fontawesome-common-types": "6.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/react-fontawesome": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@fortawesome/react-fontawesome/-/react-fontawesome-0.2.2.tgz", + "integrity": "sha512-EnkrprPNqI6SXJl//m29hpaNzOp1bruISWaOiRtkMi/xSvHJlzc2j2JAYS7egxt/EbjSNV/k6Xy0AQI6vB2+1g==", + "dependencies": { + "prop-types": "^15.8.1" + }, + "peerDependencies": { + "@fortawesome/fontawesome-svg-core": "~1 || ~6", + "react": ">=16.3" + } + }, "node_modules/@humanwhocodes/config-array": { "version": "0.11.14", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", @@ -20216,11 +20262,42 @@ "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", "dev": true }, - "@fortawesome/fontawesome-free": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-6.5.2.tgz", - "integrity": "sha512-hRILoInAx8GNT5IMkrtIt9blOdrqHOnPBH+k70aWUAqPZPgopb9G5EQJFpaBx/S8zp2fC+mPW349Bziuk1o28Q==", - "dev": true + "@fortawesome/fontawesome-common-types": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.6.0.tgz", + "integrity": "sha512-xyX0X9mc0kyz9plIyryrRbl7ngsA9jz77mCZJsUkLl+ZKs0KWObgaEBoSgQiYWAsSmjz/yjl0F++Got0Mdp4Rw==" + }, + "@fortawesome/fontawesome-svg-core": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.6.0.tgz", + "integrity": "sha512-KHwPkCk6oRT4HADE7smhfsKudt9N/9lm6EJ5BVg0tD1yPA5hht837fB87F8pn15D8JfTqQOjhKTktwmLMiD7Kg==", + "requires": { + "@fortawesome/fontawesome-common-types": "6.6.0" + } + }, + "@fortawesome/free-regular-svg-icons": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/@fortawesome/free-regular-svg-icons/-/free-regular-svg-icons-6.6.0.tgz", + "integrity": "sha512-Yv9hDzL4aI73BEwSEh20clrY8q/uLxawaQ98lekBx6t9dQKDHcDzzV1p2YtBGTtolYtNqcWdniOnhzB+JPnQEQ==", + "requires": { + "@fortawesome/fontawesome-common-types": "6.6.0" + } + }, + "@fortawesome/free-solid-svg-icons": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.6.0.tgz", + "integrity": "sha512-IYv/2skhEDFc2WGUcqvFJkeK39Q+HyPf5GHUrT/l2pKbtgEIv1al1TKd6qStR5OIwQdN1GZP54ci3y4mroJWjA==", + "requires": { + "@fortawesome/fontawesome-common-types": "6.6.0" + } + }, + "@fortawesome/react-fontawesome": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@fortawesome/react-fontawesome/-/react-fontawesome-0.2.2.tgz", + "integrity": "sha512-EnkrprPNqI6SXJl//m29hpaNzOp1bruISWaOiRtkMi/xSvHJlzc2j2JAYS7egxt/EbjSNV/k6Xy0AQI6vB2+1g==", + "requires": { + "prop-types": "^15.8.1" + } }, "@humanwhocodes/config-array": { "version": "0.11.14", diff --git a/package.json b/package.json index 6ef0153..557621a 100644 --- a/package.json +++ b/package.json @@ -14,6 +14,10 @@ "license": "GPL-3.0", "main": "./src/index.js", "dependencies": { + "@fortawesome/fontawesome-svg-core": "^6.6.0", + "@fortawesome/free-regular-svg-icons": "^6.6.0", + "@fortawesome/free-solid-svg-icons": "^6.6.0", + "@fortawesome/react-fontawesome": "^0.2.2", "axios": "^1.7.2", "immutability-helper": "^3.1.1", "moment": "^2.30.1", @@ -34,7 +38,6 @@ "@babel/plugin-transform-runtime": "^7.24.7", "@babel/preset-env": "^7.24.7", "@babel/preset-react": "^7.24.7", - "@fortawesome/fontawesome-free": "^6.5.2", "@testing-library/react": "^8.0.9", "babel-loader": "^8.1.0", "babel-polyfill": "^6.26.0", diff --git a/src/bootstrap/NumberInput.js b/src/bootstrap/NumberInput.js index 3da4bc6..1a825a5 100644 --- a/src/bootstrap/NumberInput.js +++ b/src/bootstrap/NumberInput.js @@ -7,6 +7,8 @@ import React from "react"; +import { faMinus, faPlus } from "@fortawesome/free-solid-svg-icons"; +import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import PropTypes from "prop-types"; import Input from "./Input"; @@ -60,7 +62,7 @@ function NumberInput({ onChange, inlineText, value, ...props }) { onMouseUp={() => enableIncrease(false)} aria-label="Increase" > - + ); diff --git a/src/bootstrap/PasswordInput.js b/src/bootstrap/PasswordInput.js index 104d18a..510db1d 100644 --- a/src/bootstrap/PasswordInput.js +++ b/src/bootstrap/PasswordInput.js @@ -7,6 +7,8 @@ import React, { useState } from "react"; +import { faEye, faEyeSlash } from "@fortawesome/free-solid-svg-icons"; +import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import PropTypes from "prop-types"; import Input from "./Input"; @@ -44,8 +46,10 @@ function PasswordInput({ withEye, newPass, ...props }) { setHidden((shouldBeHidden) => !shouldBeHidden); }} > - )} diff --git a/src/common/WiFiSettings/WiFiQRCode.js b/src/common/WiFiSettings/WiFiQRCode.js index 9930ba7..08bffdd 100644 --- a/src/common/WiFiSettings/WiFiQRCode.js +++ b/src/common/WiFiSettings/WiFiQRCode.js @@ -7,6 +7,7 @@ import React, { useState } from "react"; +import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import PropTypes from "prop-types"; import QRCode from "qrcode.react"; @@ -37,10 +38,11 @@ export default function WiFiQRCode({ SSID, password }) { setModal(true); }} > - {modal ? ( @@ -84,7 +86,10 @@ function QRCodeModal({ shown, setShown, SSID, password }) { createAndDownloadPdf(SSID, password); }} > - + {_("Download PDF")} diff --git a/src/testUtils/setup.js b/src/testUtils/setup.js index 6340751..3563c33 100644 --- a/src/testUtils/setup.js +++ b/src/testUtils/setup.js @@ -1,10 +1,10 @@ /* - * Copyright (C) 2019 CZ.NIC z.s.p.o. (http://www.nic.cz/) + * Copyright (C) 2019-2024 CZ.NIC z.s.p.o. (https://www.nic.cz/) * * This is free software, licensed under the GNU General Public License v3. * See /LICENSE for more information. */ - +import React from "react"; import mockAxios from "jest-mock-axios"; import moment from "moment-timezone"; import "./mockGlobals"; @@ -26,3 +26,8 @@ jest.doMock("moment", () => { return moment; }); Date.now = jest.fn(() => new Date(Date.UTC(2019, 1, 1, 12, 13, 14)).valueOf()); + +// Mock Font Awesome v6 library +jest.mock("@fortawesome/react-fontawesome", () => ({ + FontAwesomeIcon: () => , +})); From b97ba379ecb6c010d8879ab5181c837bed150707 Mon Sep 17 00:00:00 2001 From: Aleksandr Gumroian Date: Thu, 22 Aug 2024 16:03:14 +0200 Subject: [PATCH 2/2] Update Snapshots --- .../__snapshots__/NumberInput.test.js.snap | 4 ++-- .../__snapshots__/WiFiSettings.test.js.snap | 20 ++++++++----------- 2 files changed, 10 insertions(+), 14 deletions(-) diff --git a/src/bootstrap/__tests__/__snapshots__/NumberInput.test.js.snap b/src/bootstrap/__tests__/__snapshots__/NumberInput.test.js.snap index 6fceddc..306ab26 100644 --- a/src/bootstrap/__tests__/__snapshots__/NumberInput.test.js.snap +++ b/src/bootstrap/__tests__/__snapshots__/NumberInput.test.js.snap @@ -25,7 +25,7 @@ exports[` Render number input 1`] = ` type="button" > diff --git a/src/common/WiFiSettings/__tests__/__snapshots__/WiFiSettings.test.js.snap b/src/common/WiFiSettings/__tests__/__snapshots__/WiFiSettings.test.js.snap index 2e5c12c..cdfd252 100644 --- a/src/common/WiFiSettings/__tests__/__snapshots__/WiFiSettings.test.js.snap +++ b/src/common/WiFiSettings/__tests__/__snapshots__/WiFiSettings.test.js.snap @@ -5,7 +5,7 @@ exports[` Snapshot 2.4 GHz 1`] = ` - First value + Second value -@@ -242,207 +242,95 @@ +@@ -240,207 +240,95 @@ value="0" > auto @@ -339,7 +339,7 @@ exports[` Snapshot guest network. 1`] = ` - First value + Second value -@@ -526,10 +526,93 @@ +@@ -524,10 +524,91 @@ Enables Wi-Fi for guests, which is separated from LAN network. Devices connected to this network are allowed to access the internet, but aren't allowed to access other devices and the configuration interface of the router. Parameters of the guest network can be set in the Guest network tab. @@ -371,9 +371,7 @@ exports[` Snapshot guest network. 1`] = ` + type="button" + > + + + @@ -411,7 +409,7 @@ exports[` Snapshot guest network. 1`] = ` + type="button" + > + + + @@ -433,7 +431,7 @@ exports[` Snapshot guest network. 1`] = ` class="form-check form-switch mb-3 d-flex align-items-center" > @@ -452,7 +450,7 @@ exports[` Snapshot one module enabled. 1`] = ` - First value + Second value -@@ -21,10 +21,515 @@ +@@ -21,10 +21,513 @@ > Wi-Fi 1 @@ -482,9 +480,7 @@ exports[` Snapshot one module enabled. 1`] = ` + type="button" + > + + + @@ -521,7 +517,7 @@ exports[` Snapshot one module enabled. 1`] = ` + type="button" + > + + +