1
0
mirror of https://gitlab.nic.cz/turris/reforis/foris-js.git synced 2025-06-15 13:36:35 +02:00

Compare commits

..

2 Commits

Author SHA1 Message Date
40309b4b4d Update Snapshots 2021-04-15 12:26:16 +02:00
8c929baeb5 Display input's error feedback only after focus 2021-04-15 12:20:58 +02:00
14 changed files with 16261 additions and 9513 deletions

25589
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,6 @@
{
"name": "foris",
"version": "5.1.12",
"version": "5.1.11",
"description": "Set of components and utils for Foris and its plugins.",
"author": "CZ.NIC, z.s.p.o.",
"repository": {
@ -39,7 +39,7 @@
"babel-loader": "^8.1.0",
"babel-polyfill": "^6.26.0",
"bootstrap": "^4.5.0",
"css-loader": "^5.2.4",
"css-loader": "^3.5.3",
"eslint": "^6.8.0",
"eslint-config-prettier": "^6.11.0",
"eslint-config-reforis": "^1.0.0",

View File

@ -1,11 +1,11 @@
/*
* Copyright (C) 2019 CZ.NIC z.s.p.o. (http://www.nic.cz/)
* Copyright (C) 2019-2021 CZ.NIC z.s.p.o. (http://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 React, { useState } from "react";
import { useUID } from "react-uid";
import PropTypes from "prop-types";
@ -36,8 +36,10 @@ export function Input({
...props
}) {
const uid = useUID();
const [initialErrorFeedbackState, setErrorFeedbackState] = useState(false);
const errorFeedbackIsVisible = !!(initialErrorFeedbackState && error);
const inputClassName = `form-control ${className || ""} ${
error ? "is-invalid" : ""
errorFeedbackIsVisible ? "is-invalid" : ""
}`.trim();
return (
<div className="form-group">
@ -49,14 +51,17 @@ export function Input({
className={inputClassName}
type={type}
id={uid}
onFocus={() => setErrorFeedbackState(true)}
{...props}
/>
{children}
</div>
{error ? <div className="invalid-feedback">{error}</div> : null}
{helpText ? (
{errorFeedbackIsVisible && (
<div className="invalid-feedback">{error}</div>
)}
{helpText && (
<small className="form-text text-muted">{helpText}</small>
) : null}
)}
</div>
);
}

View File

@ -20,7 +20,7 @@ ResetWiFiSettings.propTypes = {
endpoint: PropTypes.string.isRequired,
};
export function ResetWiFiSettings({ ws, endpoint }) {
export default function ResetWiFiSettings({ ws, endpoint }) {
const [isLoading, setIsLoading] = useState(false);
useEffect(() => {
@ -54,13 +54,14 @@ export function ResetWiFiSettings({ ws, endpoint }) {
<div className={formFieldsSize}>
<h2>{_("Reset Wi-Fi Settings")}</h2>
<p>
{_(`If a number of wireless cards doesn't match, you may try \
to reset the Wi-Fi settings. Note that this will remove the current Wi-Fi \
configuration and restore the default values.`)}
{_(`
If a number of wireless cards doesn't match, you may try to reset the Wi-Fi settings. Note that this will remove the
current Wi-Fi configuration and restore the default values.
`)}
</p>
<div className="text-right">
<Button
className="btn-primary"
className="btn-warning"
forisFormSize
loading={isLoading}
disabled={isLoading}

View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 2019-2021 CZ.NIC z.s.p.o. (http://www.nic.cz/)
* Copyright (C) 2019 CZ.NIC z.s.p.o. (http://www.nic.cz/)
*
* This is free software, licensed under the GNU General Public License v3.
* See /LICENSE for more information.
@ -163,10 +163,6 @@ function DeviceForm({
[deviceIndex]: {
hwmode: { $set: value },
channel: { $set: "0" },
htmode: {
$set:
value === "11a" ? "VHT80" : "HT20",
},
},
},
}))}

View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 2019-2021 CZ.NIC z.s.p.o. (http://www.nic.cz/)
* Copyright (C) 2019 CZ.NIC z.s.p.o. (http://www.nic.cz/)
*
* This is free software, licensed under the GNU General Public License v3.
* See /LICENSE for more information.
@ -10,7 +10,7 @@ import PropTypes from "prop-types";
import { ForisForm } from "../../form/components/ForisForm";
import WiFiForm from "./WiFiForm";
import { ResetWiFiSettings } from "./ResetWiFiSettings";
import ResetWiFiSettings from "./ResetWiFiSettings";
WiFiSettings.propTypes = {
ws: PropTypes.object.isRequired,

View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 2019-2021 CZ.NIC z.s.p.o. (http://www.nic.cz/)
* Copyright (C) 2019 CZ.NIC z.s.p.o. (http://www.nic.cz/)
*
* This is free software, licensed under the GNU General Public License v3.
* See /LICENSE for more information.
@ -14,7 +14,7 @@ import { mockJSONError } from "testUtils/network";
import { mockSetAlert } from "testUtils/alertContextMock";
import { ALERT_TYPES } from "../../../bootstrap/Alert";
import { ResetWiFiSettings } from "../ResetWiFiSettings";
import ResetWiFiSettings from "../ResetWiFiSettings";
describe("<ResetWiFiSettings/>", () => {
const webSockets = new WebSockets();

View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 2019-2021 CZ.NIC z.s.p.o. (http://www.nic.cz/)
* Copyright (C) 2019 CZ.NIC z.s.p.o. (http://www.nic.cz/)
*
* This is free software, licensed under the GNU General Public License v3.
* See /LICENSE for more information.
@ -116,7 +116,7 @@ describe("<WiFiSettings/>", () => {
enabled: true,
guest_wifi: { enabled: false },
hidden: false,
htmode: "HT80",
htmode: "HT40",
hwmode: "11a",
id: 0,
password: "TestPass",
@ -145,7 +145,7 @@ describe("<WiFiSettings/>", () => {
enabled: true,
guest_wifi: { enabled: false },
hidden: false,
htmode: "HT20",
htmode: "HT40",
hwmode: "11g",
id: 0,
password: "TestPass",
@ -181,7 +181,7 @@ describe("<WiFiSettings/>", () => {
password: "test_password",
},
hidden: false,
htmode: "HT80",
htmode: "HT40",
hwmode: "11a",
id: 0,
password: "TestPass",

View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 2019-2021 CZ.NIC z.s.p.o. (http://www.nic.cz/)
* Copyright (C) 2019 CZ.NIC z.s.p.o. (http://www.nic.cz/)
*
* This is free software, licensed under the GNU General Public License v3.
* See /LICENSE for more information.
@ -226,7 +226,7 @@ export function wifiSettingsFixture() {
password: "",
},
hidden: false,
htmode: "HT80",
htmode: "HT40",
hwmode: "11a",
id: 0,
password: "TestPass",
@ -349,7 +349,7 @@ const twoDevices = {
hidden: false,
htmode: "HT40",
hwmode: "11a",
id: 1,
id: 0,
password: "TestPass",
},
],
@ -376,7 +376,7 @@ const threeDevices = {
hidden: false,
htmode: "HT40",
hwmode: "11a",
id: 1,
id: 0,
password: "TestPass",
},
{
@ -387,7 +387,7 @@ const threeDevices = {
hidden: false,
htmode: "HT40",
hwmode: "11a",
id: 2,
id: 0,
password: "",
},
],

View File

@ -316,13 +316,16 @@ exports[`<WiFiSettings/> Snapshot both modules disabled. 1`] = `
Reset Wi-Fi Settings
</h2>
<p>
If a number of wireless cards doesn't match, you may try to reset the Wi-Fi settings. Note that this will remove the current Wi-Fi configuration and restore the default values.
If a number of wireless cards doesn't match, you may try to reset the Wi-Fi settings. Note that this will remove the
current Wi-Fi configuration and restore the default values.
</p>
<div
class="text-right"
>
<button
class="btn btn-primary col-sm-12 col-md-3 col-lg-2"
class="btn btn-warning col-sm-12 col-md-3 col-lg-2"
type="button"
>
Reset Wi-Fi Settings
@ -337,7 +340,7 @@ exports[`<WiFiSettings/> Snapshot guest network. 1`] = `
- First value
+ Second value
@@ -479,10 +479,94 @@
@@ -479,10 +479,89 @@
Parameters of the guest network can be set in the Guest network tab.
</small>
@ -395,7 +398,7 @@ exports[`<WiFiSettings/> Snapshot guest network. 1`] = `
+ >
+ <input
+ autocomplete=\\"new-password\\"
+ class=\\"form-control is-invalid\\"
+ class=\\"form-control\\"
+ id=\\"21\\"
+ required=\\"\\"
+ type=\\"password\\"
@ -414,11 +417,6 @@ exports[`<WiFiSettings/> Snapshot guest network. 1`] = `
+ </button>
+ </div>
+ </div>
+ <div
+ class=\\"invalid-feedback\\"
+ >
+ Password must contain at least 8 symbols
+ </div>
+ <small
+ class=\\"form-text text-muted\\"
+ >
@ -432,7 +430,7 @@ exports[`<WiFiSettings/> Snapshot guest network. 1`] = `
class=\\"form-group switch\\"
>
<div
@@ -506,10 +590,11 @@
@@ -506,10 +585,11 @@
<div
class=\\"text-right\\"
>

View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 2019-2021 CZ.NIC z.s.p.o. (http://www.nic.cz/)
* Copyright (C) 2019 CZ.NIC z.s.p.o. (http://www.nic.cz/)
*
* This is free software, licensed under the GNU General Public License v3.
* See /LICENSE for more information.
@ -39,7 +39,6 @@ export { Modal, ModalBody, ModalFooter, ModalHeader } from "./bootstrap/Modal";
// Common
export { RebootButton } from "./common/RebootButton";
export { WiFiSettings } from "./common/WiFiSettings/WiFiSettings";
export { ResetWiFiSettings } from "./common/WiFiSettings/ResetWiFiSettings";
// Form
export { ForisForm } from "./form/components/ForisForm";
export {

View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 2019-2021 CZ.NIC z.s.p.o. (http://www.nic.cz/)
* Copyright (C) 2019 CZ.NIC z.s.p.o. (http://www.nic.cz/)
*
* This is free software, licensed under the GNU General Public License v3.
* See /LICENSE for more information.
@ -18,7 +18,6 @@ export const ForisURLs = {
packageManagement: {
updateSettings: `${REFORIS_URL_PREFIX}/package-management/update-settings`,
updates: `${REFORIS_URL_PREFIX}/package-management/updates`,
packages: `${REFORIS_URL_PREFIX}/package-management/packages`,
},
storage: `${REFORIS_URL_PREFIX}/storage`,
@ -30,7 +29,7 @@ export const ForisURLs = {
approveUpdates: "/package-management/updates",
languages: "/package-management/languages",
maintenance: "/administration/maintenance",
rebootPage: "/administration/reboot",
luci: "/cgi-bin/luci",
// API

View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 2020 CZ.NIC z.s.p.o. (http://www.nic.cz/)
* Copyright (C) 2020-2021 CZ.NIC z.s.p.o. (http://www.nic.cz/)
*
* This is free software, licensed under the GNU General Public License v3.
* See /LICENSE for more information.
@ -7,8 +7,6 @@
/* eslint no-console: "off" */
import { ForisURLs } from "../utils/forisUrls";
const PROTOCOL = window.location.protocol === "http:" ? "ws" : "wss";
const URL = process.env.LIGHTTPD
@ -21,13 +19,7 @@ export class WebSockets {
constructor() {
this.ws = new WebSocket(URL);
this.ws.onerror = (e) => {
if (window.location.pathname !== ForisURLs.login) {
console.error(
"WS: Error observed, you aren't logged probably."
);
window.location.replace(ForisURLs.login);
}
console.error(`WS: Error: ${e}`);
console.error("WS: Error observed:", e);
};
this.ws.onmessage = (e) => {
console.debug(`WS: Received Message: ${e.data}`);

View File

@ -37,11 +37,11 @@ msgstr ""
#: src/common/RebootButton.js:27
msgid "Reboot request failed."
msgstr ""
msgstr "Reboot is required"
#: src/common/RebootButton.js:51
msgid "Reboot"
msgstr ""
msgstr "Reboot"
#: src/common/RebootButton.js:66
msgid "Warning!"
@ -87,15 +87,16 @@ msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:217
msgid "auto"
msgstr ""
msgstr "auto"
#: src/common/WiFiSettings/WiFiGuestForm.js:42
#, fuzzy
msgid "Enable Guest Wi-Fi"
msgstr ""
msgstr "Enable Guest Wifi"
#: src/common/WiFiSettings/WiFiGuestForm.js:80
msgid "Password"
msgstr ""
msgstr "Password"
#: src/common/WiFiSettings/WiFiQRCode.js:71
msgid "Wi-Fi QR Code"
@ -108,50 +109,52 @@ msgstr ""
#: src/common/WiFiSettings/WiFiSettings.js:78
#: src/common/WiFiSettings/WiFiSettings.js:90
msgid "SSID can't be longer than 32 symbols"
msgstr ""
msgstr "SSID can't be longer than 32 symbols"
#: src/common/WiFiSettings/WiFiSettings.js:79
#: src/common/WiFiSettings/WiFiSettings.js:92
msgid "SSID can't be empty"
msgstr ""
msgstr "SSID can't be empty"
#: src/common/WiFiSettings/WiFiSettings.js:81
#: src/common/WiFiSettings/WiFiSettings.js:94
#, fuzzy
msgid "SSID can't be longer than 32 bytes"
msgstr ""
msgstr "SSID can't be longer than 32 symbols"
#: src/common/WiFiSettings/WiFiSettings.js:84
#: src/common/WiFiSettings/WiFiSettings.js:97
msgid "Password must contain at least 8 symbols"
msgstr ""
msgstr "Password must contain at least 8 symbols"
#: src/common/WiFiSettings/constants.js:9
msgid "Disabled"
msgstr ""
msgstr "Disabled"
#: src/common/WiFiSettings/constants.js:10
msgid "802.11n - 20 MHz wide channel"
msgstr ""
msgstr "802.11n - 20 MHz wide channel"
#: src/common/WiFiSettings/constants.js:11
msgid "802.11n - 40 MHz wide channel"
msgstr ""
msgstr "802.11n - 40 MHz wide channel"
#: src/common/WiFiSettings/constants.js:12
msgid "802.11ac - 20 MHz wide channel"
msgstr ""
msgstr "802.11ac - 20 MHz wide channel"
#: src/common/WiFiSettings/constants.js:13
msgid "802.11ac - 40 MHz wide channel"
msgstr ""
msgstr "802.11ac - 40 MHz wide channel"
#: src/common/WiFiSettings/constants.js:14
msgid "802.11ac - 80 MHz wide channel"
msgstr ""
msgstr "802.11ac - 80 MHz wide channel"
#: src/common/WiFiSettings/constants.js:15
#, fuzzy
msgid "802.11ac - 160 MHz wide channel"
msgstr ""
msgstr "802.11ac - 80 MHz wide channel"
#: src/common/WiFiSettings/constants.js:22
msgid ""
@ -165,10 +168,13 @@ msgid ""
" WPA2 pre-shared key, that is required to connect to the network.\n"
" "
msgstr ""
"\n"
" WPA2 pre-shared key, that is required to connect to the network.\n"
" "
#: src/common/WiFiSettings/constants.js:28
msgid "If set, network is not visible when scanning for available networks."
msgstr ""
msgstr "If set, network is not visible when scanning for available networks."
#: src/common/WiFiSettings/constants.js:31
msgid ""
@ -179,6 +185,12 @@ msgid ""
"usually has less interference, but the signal\n"
" does not carry so well indoors."
msgstr ""
"\n"
" The 2.4 GHz band is more widely supported by clients, but tends "
"to have more interference. The 5 GHz band is a\n"
" newer standard and may not be supported by all your devices. It "
"usually has less interference, but the signal\n"
" does not carry so well indoors."
#: src/common/WiFiSettings/constants.js:35
msgid ""
@ -190,6 +202,13 @@ msgid ""
" option with 20 MHz wide channel.\n"
" "
msgstr ""
"\n"
" Change this to adjust 802.11n/ac mode of operation. 802.11n with "
"40 MHz wide channels can yield higher\n"
" throughput but can cause more interference in the network. If you"
" don't know what to choose, use the default\n"
" option with 20 MHz wide channel.\n"
" "
#: src/common/WiFiSettings/constants.js:40
msgid ""
@ -202,6 +221,14 @@ msgid ""
"tab.\n"
" "
msgstr ""
"\n"
" Enables Wi-Fi for guests, which is separated from LAN network. "
"Devices connected to this network are allowed to\n"
" access the internet, but aren't allowed to access other devices "
"and the configuration interface of the router.\n"
" Parameters of the guest network can be set in the Guest network "
"tab.\n"
" "
#: src/form/components/ForisForm.js:121
msgid "Settings saved successfully"
@ -213,15 +240,15 @@ msgstr ""
#: src/form/components/SubmitButton.js:31
msgid "Updating"
msgstr ""
msgstr "Updating"
#: src/form/components/SubmitButton.js:34
msgid "Load settings"
msgstr ""
msgstr "Load settings"
#: src/form/components/SubmitButton.js:37
msgid "Save"
msgstr ""
msgstr "Save"
#: src/utils/ErrorMessage.js:16
msgid "An error occurred while fetching data."
@ -229,31 +256,31 @@ msgstr ""
#: src/utils/validations.js:13
msgid "This is not a valid IPv4 address."
msgstr ""
msgstr "This is not a valid IPv4 address."
#: src/utils/validations.js:14
msgid "This is not a valid IPv6 address."
msgstr ""
msgstr "This is not a valid IPv6 address."
#: src/utils/validations.js:15
msgid "This is not a valid IPv6 prefix."
msgstr ""
msgstr "This is not a valid IPv6 prefix."
#: src/utils/validations.js:16
msgid "This is not a valid domain name."
msgstr ""
msgstr "This is not a valid domain name."
#: src/utils/validations.js:17
msgid "This is not a valid DUID."
msgstr ""
msgstr "This is not a valid DUID."
#: src/utils/validations.js:18
msgid "This is not a valid MAC address."
msgstr ""
msgstr "This is not a valid MAC address."
#: src/utils/validations.js:19
msgid "Doesn't contain a list of emails separated by commas."
msgstr ""
msgstr "Doesn't contain a list of emails separated by commas."
#~ msgid "An unknown error occurred. Check the console for more info."
#~ msgstr ""
@ -262,5 +289,5 @@ msgstr ""
#~ msgstr ""
#~ msgid "Enable"
#~ msgstr ""
#~ msgstr "Enable"