Compare commits

...
Author SHA1 Message Date
Sarooj bukhari 30b858c1bc Make all modals UI consistent (#229) 2023-07-12 17:35:55 +02:00
Sarooj bukhari e82b269ff5 fix network routes pages (#228) 2023-07-11 09:06:08 +02:00
braginini 23a4b79f01 Fix disabled links 2023-07-10 18:13:08 +02:00
Sarooj bukhari cc5a9b1033 Fix table loading glitch (#227) 2023-07-10 16:49:52 +02:00
17 changed files with 604 additions and 577 deletions

No files matched your search

+24 -14
View File
@@ -457,11 +457,7 @@ const AccessControlEdit = () => {
},
]}
/>
<Card
bordered={true}
// title={setupKey.name}
style={{ marginBottom: "7px" }}
>
<Card bordered={true} style={{ marginBottom: "7px" }}>
<div style={{ maxWidth: "550px" }}>
<Form
layout="vertical"
@@ -508,7 +504,6 @@ const AccessControlEdit = () => {
<Form.Item
name="name"
label=""
style={{ margin: "0" }}
rules={[
{
required: true,
@@ -532,7 +527,7 @@ const AccessControlEdit = () => {
{!editDescription ? (
<div
style={{
margin: "12px 0 30px",
margin: "0 0 39px",
lineHeight: "22px",
cursor: "pointer",
}}
@@ -551,7 +546,7 @@ const AccessControlEdit = () => {
<Form.Item
name="description"
label="Description"
style={{ marginTop: 24, fontWeight: "500" }}
style={{ marginTop: 10, fontWeight: "500" }}
>
<Input
placeholder="Add description..."
@@ -568,7 +563,7 @@ const AccessControlEdit = () => {
</Row>
</Header>
</Col>
<Col span={24}>
<Col span={24} style={{ marginBottom: "15px" }}>
<Form.Item name="enabled" label="">
<div
style={{
@@ -579,6 +574,7 @@ const AccessControlEdit = () => {
<Switch
onChange={handleChangeDisabled}
defaultChecked={policy.enabled}
size="small"
/>
<div>
<label
@@ -784,7 +780,7 @@ const AccessControlEdit = () => {
</Col>
</Row>
</Col>
<Col span={24}>
<Col span={24} style={{ marginBottom: "15px" }}>
<Paragraph
type={"secondary"}
style={{ marginTop: "-15px", marginBottom: "30px" }}
@@ -793,7 +789,7 @@ const AccessControlEdit = () => {
protocol below
</Paragraph>
</Col>
<Col span={24}>
<Col span={24} style={{ marginBottom: "15px" }}>
<Row>
<Col span={10}>
<Form.Item
@@ -830,7 +826,14 @@ const AccessControlEdit = () => {
maxWidth: "260px",
fontWeight: "500",
}}
placeholder={<div color={"rgba(0,0,0,0.25)"} className="arimo-font">Select ports</div>}
placeholder={
<div
color={"rgba(0,0,0,0.25)"}
className="arimo-font"
>
Select ports
</div>
}
className="menlo-font"
value={formPolicyCopy}
disabled={true}
@@ -862,7 +865,14 @@ const AccessControlEdit = () => {
maxWidth: "260px",
fontWeight: "500",
}}
placeholder={<div color={"rgba(0,0,0,0.25)"} className="arimo-font">Select ports</div>}
placeholder={
<div
color={"rgba(0,0,0,0.25)"}
className="arimo-font"
>
Select ports
</div>
}
tagRender={grayTagRender}
onChange={handleChangePorts}
className="menlo-font"
@@ -890,7 +900,7 @@ const AccessControlEdit = () => {
justifyContent: "start",
padding: 0,
gap: "10px",
marginTop: "30px",
marginTop: "12px",
}}
key={0}
>
+20 -8
View File
@@ -456,18 +456,20 @@ const AccessControlNew = () => {
textAlign: "start",
whiteSpace: "pre-line",
fontSize: "18px",
margin: "0px",
fontWeight: "500",
}}
>
Create Rule
Create rule
</Paragraph>
<Paragraph
type={"secondary"}
style={{
textAlign: "start",
whiteSpace: "pre-line",
paddingBottom: "15px",
marginTop: "-20px",
fontSize: "14px",
paddingBottom: "25px",
marginBottom: "4px",
}}
>
Use this rule to restrict access to groups of resources
@@ -767,6 +769,8 @@ const AccessControlNew = () => {
color: "rgba(0, 0, 0, 0.88)",
fontSize: "14px",
fontWeight: "500",
padding: "0 0 2px",
display: "inline-block",
}}
>
Ports
@@ -828,9 +832,16 @@ const AccessControlNew = () => {
className="menlo-font"
placeholder={
formPolicy.protocol === "all" ||
formPolicy.protocol === "icmp"
? "All"
: (<div color={"rgba(0,0,0,0.25)"} className="arimo-font">Select ports</div>)
formPolicy.protocol === "icmp" ? (
"All"
) : (
<div
color={"rgba(0,0,0,0.25)"}
className="arimo-font"
>
Select ports
</div>
)
}
tagRender={grayTagRender}
onChange={handleChangePorts}
@@ -859,6 +870,7 @@ const AccessControlNew = () => {
}}
>
<Switch
size="small"
onChange={handleChangeDisabled}
defaultChecked={true}
/>
@@ -890,7 +902,7 @@ const AccessControlNew = () => {
</Col>
<Col
span={24}
style={{ marginTop: "20px", marginBottom: "25px" }}
style={{ marginTop: "10px", marginBottom: "24px" }}
>
<Text type={"secondary"}>
Learn more about
@@ -900,7 +912,7 @@ const AccessControlNew = () => {
href="https://docs.netbird.io/how-to/manage-network-access"
>
{" "}
Access Controls
access controls
</a>
</Text>
</Col>
+124 -125
View File
@@ -331,121 +331,117 @@ const NameServerGroupAdd = () => {
{ add, remove }: any,
{ errors }: any
) => (
<Col>
<div style={{ width: "100%", maxWidth: "360px" }}>
<label
style={{
color: "rgba(0, 0, 0, 0.88)",
fontSize: "14px",
fontWeight: "500",
marginBottom: "10px",
display: "block",
}}
>
Nameservers
</label>
<div style={{ width: "100%", maxWidth: "360px" }}>
<label
style={{
color: "rgba(0, 0, 0, 0.88)",
fontSize: "14px",
fontWeight: "500",
marginBottom: "10px",
display: "block",
}}
>
Nameservers
</label>
{!!fields.length && (
<Row align="middle">
<Col span={4} style={{ textAlign: "left" }}>
<Typography.Text
style={{ color: "#818183", paddingLeft: "5px" }}
></Typography.Text>
</Col>
<Col span={10} style={{ textAlign: "left" }}>
<Typography.Text style={{ color: "#818183", paddingLeft: "5px" }}>
Nameserver IP
</Typography.Text>
</Col>
<Col span={4} style={{ textAlign: "left" }}>
<Typography.Text style={{ color: "#818183", paddingLeft: "5px" }}>
Port
</Typography.Text>
</Col>
<Col span={4} />
</Row>
)}
{fields.map((field, index) => {
return (
<Row key={index}>
<Col span={4} style={{ textAlign: "left" }}>
<Form.Item
style={{ margin: "3px" }}
name={[field.name, "ns_type"]}
rules={[
{ required: true, message: "Missing first protocol" },
]}
initialValue={"udp"}
>
<Select
disabled
style={{ width: "100%" }}
className="style-like-text"
>
<Option value="udp">UDP</Option>
</Select>
</Form.Item>
</Col>
<Col span={10} style={{ margin: "1px" }}>
<Form.Item
style={{ margin: "1px" }}
name={[field.name, "ip"]}
rules={[{ validator: ipValidator }]}
>
<Input
placeholder="e.g. X.X.X.X"
style={{ width: "100%" }}
autoComplete="off"
/>
</Form.Item>
</Col>
<Col span={4} style={{ textAlign: "center" }}>
<Form.Item
style={{ margin: "1px" }}
name={[field.name, "port"]}
rules={[{ required: true, message: "Missing port" }]}
initialValue={53}
>
<InputNumber placeholder="Port" style={{ width: "100%" }} />
</Form.Item>
</Col>
<Col
span={2}
style={{
textAlign: "center",
display: "flex",
alignItems: "center",
justifyContent: "center",
}}
>
<MinusCircleOutlined onClick={() => remove(field.name)} />
</Col>
</Row>
);
})}
<Row>
<Col span={20}>
<Form.Item>
<Button
type="dashed"
onClick={() => add()}
block
style={{
maxWidth: "270px",
marginTop: "5px",
}}
disabled={fields.length > 1}
icon={<PlusOutlined />}
>
Add Nameserver
</Button>
<Form.ErrorList errors={errors} />
</Form.Item>
{!!fields.length && (
<Row align="middle">
<Col span={4} style={{ textAlign: "left" }}>
<Typography.Text
style={{ color: "#818183", paddingLeft: "5px" }}
></Typography.Text>
</Col>
<Col span={10} style={{ textAlign: "left" }}>
<Typography.Text style={{ color: "#818183", paddingLeft: "5px" }}>
Nameserver IP
</Typography.Text>
</Col>
<Col span={4} style={{ textAlign: "left" }}>
<Typography.Text style={{ color: "#818183", paddingLeft: "5px" }}>
Port
</Typography.Text>
</Col>
<Col span={4} />
</Row>
</div>
</Col>
)}
{fields.map((field, index) => {
return (
<Row key={index}>
<Col span={4} style={{ textAlign: "left" }}>
<Form.Item
style={{ margin: "3px" }}
name={[field.name, "ns_type"]}
rules={[{ required: true, message: "Missing first protocol" }]}
initialValue={"udp"}
>
<Select
disabled
style={{ width: "100%" }}
className="style-like-text"
>
<Option value="udp">UDP</Option>
</Select>
</Form.Item>
</Col>
<Col span={10} style={{ margin: "1px" }}>
<Form.Item
style={{ margin: "1px" }}
name={[field.name, "ip"]}
rules={[{ validator: ipValidator }]}
>
<Input
placeholder="e.g. X.X.X.X"
style={{ width: "100%" }}
autoComplete="off"
/>
</Form.Item>
</Col>
<Col span={4} style={{ textAlign: "center" }}>
<Form.Item
style={{ margin: "1px" }}
name={[field.name, "port"]}
rules={[{ required: true, message: "Missing port" }]}
initialValue={53}
>
<InputNumber placeholder="Port" style={{ width: "100%" }} />
</Form.Item>
</Col>
<Col
span={2}
style={{
textAlign: "center",
display: "flex",
alignItems: "center",
justifyContent: "center",
}}
>
<MinusCircleOutlined onClick={() => remove(field.name)} />
</Col>
</Row>
);
})}
<Row>
<Col span={20}>
<Form.Item>
<Button
type="dashed"
onClick={() => add()}
block
style={{
maxWidth: "270px",
marginTop: "5px",
}}
disabled={fields.length > 1}
icon={<PlusOutlined />}
>
Add nameserver
</Button>
<Form.ErrorList errors={errors} />
</Form.Item>
</Col>
</Row>
</div>
);
// @ts-ignore
@@ -470,9 +466,9 @@ const NameServerGroupAdd = () => {
<Paragraph
type={"secondary"}
style={{
marginTop: "-2",
marginTop: "-4px",
fontWeight: "400",
marginBottom: "0",
marginBottom: "4px",
}}
>
Add domain if you want to have a specific one
@@ -556,18 +552,20 @@ const NameServerGroupAdd = () => {
textAlign: "start",
whiteSpace: "pre-line",
fontSize: "18px",
margin: "0px",
fontWeight: "500",
}}
>
Add Nameserver
Add nameserver
</Paragraph>
<Paragraph
type={"secondary"}
style={{
textAlign: "start",
whiteSpace: "pre-line",
paddingBottom: "0",
marginTop: "-20px",
fontSize: "14px",
paddingBottom: "25px",
marginBottom: "4px",
}}
>
Use this nameserver to resolve domains in your network
@@ -706,7 +704,7 @@ const NameServerGroupAdd = () => {
</Row>
</Header>
</Col>
<Col span={24} flex="auto">
<Col span={24}>
<Form.List
name="nameservers"
rules={[{ validator: formListValidator }]}
@@ -714,7 +712,7 @@ const NameServerGroupAdd = () => {
{renderNSList}
</Form.List>
</Col>
<Col span={24} flex="auto">
<Col span={24}>
<Form.List name="domains">{renderDomains}</Form.List>
</Col>
<Col span={24}>
@@ -730,9 +728,9 @@ const NameServerGroupAdd = () => {
<Paragraph
type={"secondary"}
style={{
marginTop: "-2",
marginTop: "-4px",
fontWeight: "400",
marginBottom: "0",
marginBottom: "4px",
}}
>
Advertise this route to peers that belong to the following
@@ -787,8 +785,9 @@ const NameServerGroupAdd = () => {
marginBottom: "0",
}}
>
Disable this server if you don't want it to apply
immediately
{formNSGroup.enabled
? "Disable this server if you don't want it to apply immediately"
: " Enable this server if you want it to apply immediately"}
</Paragraph>
</div>
</div>
@@ -796,7 +795,7 @@ const NameServerGroupAdd = () => {
</Col>
<Col
span={24}
style={{ marginTop: "10px", marginBottom: "20px" }}
style={{ marginTop: "10px", marginBottom: "24px" }}
>
<Text type={"secondary"}>
Learn more about
@@ -830,7 +829,7 @@ const NameServerGroupAdd = () => {
onClick={handleFormSubmit}
disabled={savedNSGroup.loading}
>
Create Nameserver
Create nameserver
</Button>
</Space>
</Col>
+159 -162
View File
@@ -313,117 +313,121 @@ const NameServerGroupUpdate = () => {
{ add, remove }: any,
{ errors }: any
) => (
<Col>
<div style={{ width: "100%", maxWidth: "360px" }}>
<label
style={{
color: "rgba(0, 0, 0, 0.88)",
fontSize: "14px",
fontWeight: "500",
marginBottom: "10px",
display: "block",
}}
>
Nameservers
</label>
<Row>
<Col>
<div style={{ width: "100%", maxWidth: "360px" }}>
<label
style={{
color: "rgba(0, 0, 0, 0.88)",
fontSize: "14px",
fontWeight: "500",
marginBottom: "10px",
display: "block",
}}
>
Nameservers
</label>
{!!fields.length && (
<Row align="middle">
<Col span={4} style={{ textAlign: "left" }}>
<Text style={{ color: "#818183", paddingLeft: "5px" }}></Text>
</Col>
<Col span={10} style={{ textAlign: "left" }}>
<Text style={{ color: "#818183", paddingLeft: "5px" }}>
Nameserver IP
</Text>
</Col>
<Col span={4} style={{ textAlign: "left" }}>
<Text style={{ color: "#818183", paddingLeft: "5px" }}>Port</Text>
</Col>
<Col span={4} />
</Row>
)}
{fields.map((field, index) => {
return (
<Row key={index}>
{!!fields.length && (
<Row align="middle">
<Col span={4} style={{ textAlign: "left" }}>
<Form.Item
style={{ margin: "3px" }}
name={[field.name, "ns_type"]}
rules={[
{ required: true, message: "Missing first protocol" },
]}
initialValue={"udp"}
>
<Select
disabled
style={{ width: "100%" }}
className="style-like-text"
>
<Option value="udp">UDP</Option>
</Select>
</Form.Item>
<Text style={{ color: "#818183", paddingLeft: "5px" }}></Text>
</Col>
<Col span={10} style={{ margin: "1px" }}>
<Form.Item
style={{ margin: "1px" }}
name={[field.name, "ip"]}
rules={[{ validator: ipValidator }]}
>
<Input
placeholder="e.g. X.X.X.X"
style={{ width: "100%" }}
autoComplete="off"
/>
</Form.Item>
<Col span={10} style={{ textAlign: "left" }}>
<Text style={{ color: "#818183", paddingLeft: "5px" }}>
Nameserver IP
</Text>
</Col>
<Col span={4} style={{ textAlign: "center" }}>
<Form.Item
style={{ margin: "1px" }}
name={[field.name, "port"]}
rules={[{ required: true, message: "Missing port" }]}
initialValue={53}
>
<InputNumber placeholder="Port" style={{ width: "100%" }} />
</Form.Item>
</Col>
<Col
span={2}
style={{
textAlign: "center",
display: "flex",
alignItems: "center",
justifyContent: "center",
}}
>
<MinusCircleOutlined onClick={() => remove(field.name)} />
<Col span={4} style={{ textAlign: "left" }}>
<Text style={{ color: "#818183", paddingLeft: "5px" }}>
Port
</Text>
</Col>
<Col span={4} />
</Row>
);
})}
)}
{fields.map((field, index) => {
return (
<Row key={index}>
<Col span={4} style={{ textAlign: "left" }}>
<Form.Item
style={{ margin: "3px" }}
name={[field.name, "ns_type"]}
rules={[
{ required: true, message: "Missing first protocol" },
]}
initialValue={"udp"}
>
<Select
disabled
style={{ width: "100%" }}
className="style-like-text"
>
<Option value="udp">UDP</Option>
</Select>
</Form.Item>
</Col>
<Col span={10} style={{ margin: "1px" }}>
<Form.Item
style={{ margin: "1px" }}
name={[field.name, "ip"]}
rules={[{ validator: ipValidator }]}
>
<Input
placeholder="e.g. X.X.X.X"
style={{ width: "100%" }}
autoComplete="off"
/>
</Form.Item>
</Col>
<Col span={4} style={{ textAlign: "center" }}>
<Form.Item
style={{ margin: "1px" }}
name={[field.name, "port"]}
rules={[{ required: true, message: "Missing port" }]}
initialValue={53}
>
<InputNumber placeholder="Port" style={{ width: "100%" }} />
</Form.Item>
</Col>
<Col
span={2}
style={{
textAlign: "center",
display: "flex",
alignItems: "center",
justifyContent: "center",
}}
>
<MinusCircleOutlined onClick={() => remove(field.name)} />
</Col>
</Row>
);
})}
<Row>
<Col span={20}>
<Form.Item>
<Button
type="dashed"
onClick={() => add()}
block
style={{
maxWidth: "270px",
marginTop: "5px",
}}
disabled={fields.length > 1}
icon={<PlusOutlined />}
>
Add Nameserver
</Button>
<Form.ErrorList errors={errors} />
</Form.Item>
</Col>
</Row>
</div>
</Col>
<Row>
<Col span={20}>
<Form.Item>
<Button
type="dashed"
onClick={() => add()}
block
style={{
maxWidth: "270px",
marginTop: "5px",
}}
disabled={fields.length > 1}
icon={<PlusOutlined />}
>
Add Nameserver
</Button>
<Form.ErrorList errors={errors} />
</Form.Item>
</Col>
</Row>
</div>
</Col>
</Row>
);
// @ts-ignore
@@ -448,24 +452,13 @@ const NameServerGroupUpdate = () => {
<Paragraph
type={"secondary"}
style={{
marginTop: "-2",
fontWeight: "400",
marginBottom: "0",
marginBottom: "10px",
}}
>
Add domain if you want to have a specific one
</Paragraph>
</Col>
{/* <Col>
<Tooltip
title="Only queries to domains specified here will be resolved by these nameservers."
className={"ant-form-item-tooltip"}
>
<QuestionCircleOutlined
style={{ color: "rgba(0, 0, 0, 0.45)", cursor: "help" }}
/>
</Tooltip>
</Col> */}
</Space>
</Row>
{fields.map((field, index) => {
@@ -631,7 +624,7 @@ const NameServerGroupUpdate = () => {
className={
"access-control input-text ant-drawer-subtitle"
}
style={{ marginTop: "0" }}
style={{ margin: "0 0 39px 0px" }}
onClick={() => toggleEditDescription(true)}
>
{formNSGroup.description &&
@@ -641,7 +634,7 @@ const NameServerGroupUpdate = () => {
</div>
) : (
<Row>
<Col span={8}>
<Col span={8} style={{ marginBottom: "15px" }}>
<div
style={{ lineHeight: "15px", marginTop: "24px" }}
>
@@ -676,7 +669,51 @@ const NameServerGroupUpdate = () => {
</Row>
</Header>
</Col>
<Col span={24}>
<Col span={24} style={{ marginBottom: "15px" }}>
<Form.List
name="nameservers"
rules={[{ validator: formListValidator }]}
>
{renderNSList}
</Form.List>
</Col>
<Col span={24} style={{ marginBottom: "15px" }}>
<Form.List name="domains">{renderDomains}</Form.List>
</Col>
<Col span={24} style={{ marginBottom: "15px" }}>
<label
style={{
color: "rgba(0, 0, 0, 0.88)",
fontSize: "14px",
fontWeight: "500",
marginBottom: "5px",
display: "block",
}}
>
Distribution groups
</label>
<Form.Item
name="groups"
rules={[{ validator: selectValidator }]}
style={{ maxWidth: "380px" }}
>
<Select
mode="tags"
style={{ width: "100%" }}
placeholder="Associate groups with the NS group"
tagRender={blueTagRender}
onChange={handleChangeTags}
dropdownRender={dropDownRender}
>
{tagGroups.map((m) => (
<Option key={m}>{optionRender(m)}</Option>
))}
</Select>
</Form.Item>
</Col>
<Col span={24} style={{ marginBottom: "15px" }}>
<Form.Item name="enabled" label="">
<div
style={{
@@ -708,54 +745,14 @@ const NameServerGroupUpdate = () => {
marginBottom: "0",
}}
>
Disable this server if you don't want it to apply
immediately
{formNSGroup.enabled
? "Disable this server if you don't want it to apply immediately"
: " Enable this server if you want it to apply immediately"}
</Paragraph>
</div>
</div>
</Form.Item>
</Col>
<Col span={24}>
<Form.List
name="nameservers"
rules={[{ validator: formListValidator }]}
>
{renderNSList}
</Form.List>
</Col>
<Col span={24}>
<Form.List name="domains">{renderDomains}</Form.List>
</Col>
<Col span={24}>
<label
style={{
color: "rgba(0, 0, 0, 0.88)",
fontSize: "14px",
fontWeight: "500",
}}
>
Distribution groups
</label>
<Form.Item
name="groups"
rules={[{ validator: selectValidator }]}
style={{ maxWidth: "380px" }}
>
<Select
mode="tags"
style={{ width: "100%" }}
placeholder="Associate groups with the NS group"
tagRender={blueTagRender}
onChange={handleChangeTags}
dropdownRender={dropDownRender}
>
{tagGroups.map((m) => (
<Option key={m}>{optionRender(m)}</Option>
))}
</Select>
</Form.Item>
</Col>
<Col
style={{
width: "100%",
+4 -4
View File
@@ -426,7 +426,7 @@ const RouteAddNew = (selectedPeer: any) => {
disabled={savedRoute.loading}
onClick={handleFormSubmit}
>
Add Route
Add route
</Button>
</Space>
}
@@ -455,7 +455,7 @@ const RouteAddNew = (selectedPeer: any) => {
marginBottom: "25px",
}}
>
Add Route
Add route
</Paragraph>
{!!selectedPeer.selectedPeer && (
@@ -887,7 +887,7 @@ const RouteAddNew = (selectedPeer: any) => {
</Col>
<Col
span={24}
style={{ marginTop: "20px", marginBottom: "25px" }}
style={{ marginTop: "24px", marginBottom: "12px" }}
>
<Text type={"secondary"}>
Learn more about
@@ -897,7 +897,7 @@ const RouteAddNew = (selectedPeer: any) => {
href="https://docs.netbird.io/how-to/routing-traffic-to-private-networks"
>
{" "}
Network Routes
network routes
</a>
</Text>
</Col>
+1 -1
View File
@@ -291,7 +291,7 @@ const RoutePeerUpdate = () => {
requiredMark={false}
onValuesChange={onChange}
style={{ width: "100%", maxWidth: "600px" }}
className="route-form"
className="route-form edit-form-wrapper"
>
<Row gutter={16}>
<Col span={24}>
+7 -6
View File
@@ -310,7 +310,7 @@ const RouteAddNew = () => {
disabled={savedRoute.loading}
onClick={handleFormSubmit}
>
Add Route
Add route
</Button>
</Space>
}
@@ -334,9 +334,7 @@ const RouteAddNew = () => {
textAlign: "start",
whiteSpace: "pre-line",
fontSize: "18px",
margin: "0px",
fontWeight: 500,
marginBottom: "0",
}}
>
Add new routing peer
@@ -344,9 +342,12 @@ const RouteAddNew = () => {
<Paragraph
type={"secondary"}
style={{
marginTop: "-2",
fontWeight: "400",
marginBottom: "25px",
textAlign: "start",
whiteSpace: "pre-line",
marginTop: "-23px",
fontSize: "14px",
paddingBottom: "25px",
marginBottom: "4px",
}}
>
When you add multiple routing peers, NetBird enables high
+9 -16
View File
@@ -275,7 +275,13 @@ const SetupKeyNew = () => {
/>
<Card bordered={true} style={{ marginBottom: "7px", border: "none" }}>
<div style={{ maxWidth: "800px" }}>
<h3 style={{ fontSize: "22px", fontWeight: "500",marginBottom:"30px" }}>
<h3
style={{
fontSize: "22px",
fontWeight: "500",
marginBottom: "30px",
}}
>
{setupKey.name}
</h3>
<Form
@@ -361,7 +367,7 @@ const SetupKeyNew = () => {
</Col>
</Row>
<Row style={{ marginTop: "30px" }}>
<Row style={{ marginTop: "39px" }}>
<Col
xs={24}
sm={24}
@@ -419,20 +425,6 @@ const SetupKeyNew = () => {
</Row>
</Col>
</Row>
<Row style={{ marginTop: "40px", marginBottom: "28px" }}>
<Text type={"secondary"}>
Learn more about
<a
target="_blank"
rel="noreferrer"
href="https://docs.netbird.io/how-to/register-machines-using-setup-keys"
>
{" "}
Setup Keys
</a>
</Text>
</Row>
</Form>
</div>
<Container
@@ -442,6 +434,7 @@ const SetupKeyNew = () => {
justifyContent: "start",
padding: 0,
gap: "10px",
marginTop: "24px",
}}
key={0}
>
+14 -10
View File
@@ -31,7 +31,7 @@ import { Container } from "./Container";
import Paragraph from "antd/es/typography/Paragraph";
import { CheckOutlined, CopyOutlined } from "@ant-design/icons";
import { copyToClipboard } from "../utils/common";
import {useGetGroupTagHelpers} from "../utils/groups";
import { useGetGroupTagHelpers } from "../utils/groups";
const { Option } = Select;
const { Text } = Typography;
@@ -105,7 +105,7 @@ const SetupKeyNew = () => {
(s) => !allGroupsNames.includes(s)
);
const expiresIn = formSetupKey.expires_in * 24 * 3600 // the api expects seconds we have days
const expiresIn = formSetupKey.expires_in * 24 * 3600; // the api expects seconds we have days
return {
id: formSetupKey.id,
name: formSetupKey.name,
@@ -345,8 +345,7 @@ const SetupKeyNew = () => {
textAlign: "start",
whiteSpace: "pre-line",
fontSize: "18px",
margin: "0px",
fontWeight:"500"
fontWeight: "500",
}}
>
{showPlainToken
@@ -358,6 +357,10 @@ const SetupKeyNew = () => {
style={{
textAlign: "start",
whiteSpace: "pre-line",
marginTop: "-20px",
fontSize: "14px",
paddingBottom: "25px",
marginBottom: "4px",
}}
>
{showPlainToken
@@ -398,7 +401,7 @@ const SetupKeyNew = () => {
</Col>
</Row>
<Row style={{ marginTop: "20px" }} justify={"space-between"}>
<Row style={{ marginTop: "24px" }} justify={"space-between"}>
<Col span={18}>
<Paragraph
style={{
@@ -420,6 +423,7 @@ const SetupKeyNew = () => {
<Row justify={"end"}>
<Form.Item name="reusable" valuePropName="checked">
<Switch
size="small"
onChange={(checked) => {
setFormSetupKey({
...formSetupKey,
@@ -432,7 +436,7 @@ const SetupKeyNew = () => {
</Col>
</Row>
<Row style={{ marginTop: "10px" }}>
<Row style={{ marginTop: "16px" }}>
<Col span={24}>
<Paragraph
style={{
@@ -470,7 +474,7 @@ const SetupKeyNew = () => {
</Col>
</Row>
<Row style={{ marginTop: "20px" }}>
<Row style={{ marginTop: "24px" }}>
<Col span={24}>
<Paragraph
style={{
@@ -505,7 +509,7 @@ const SetupKeyNew = () => {
</Col>
</Row>
<Row style={{ marginTop: "20px" }}>
<Row style={{ marginTop: "24px" }}>
<Col span={24}>
<Paragraph
style={{
@@ -529,7 +533,7 @@ const SetupKeyNew = () => {
>
<Select
mode="tags"
style={{ width: "100%"}}
style={{ width: "100%" }}
placeholder="Associate groups with the key"
tagRender={blueTagRender}
dropdownRender={dropDownRender}
@@ -543,7 +547,7 @@ const SetupKeyNew = () => {
</Form.Item>
</Col>
</Row>
<Row style={{ marginTop: "40px", marginBottom: "28px" }}>
<Row style={{ marginTop: "24px", marginBottom: "24px" }}>
<Text type={"secondary"}>
Learn more about
<a
+12 -3
View File
@@ -177,9 +177,18 @@ const AddPATPopup = () => {
</Form.Item>
<Paragraph type={"secondary"} style={{fontSize: "14px", marginTop: "-18px"}}>Should be between 1 and 365 days</Paragraph>
</Col>
<Col span={24}>
<Button icon={<QuestionCircleFilled/>} type="link" target="_blank" disabled={true} style={{marginTop: "20px", marginBottom: "20px"}}
href="https://docs.netbird.io/how-to/access-netbird-public-api">Learn more about personal access tokens</Button>
<Col span={24} style={{marginTop: "15px"}}>
<Text type={"secondary"}>
Learn more about
<a
target="_blank"
rel="noreferrer"
href="https://docs.netbird.io/how-to/access-netbird-public-api"
>
{" "}
access tokens
</a>
</Text>
</Col>
</Row>
</Form>}
+11 -10
View File
@@ -343,16 +343,17 @@ const InviteUserPopup = () => {
</Form.Item>
</Col>
<Col span={24}>
<Button
icon={<QuestionCircleFilled />}
type="link"
target="_blank"
disabled={true}
style={{ marginTop: "20px", marginBottom: "20px" }}
href="https://docs.netbird.io/how-to/access-netbird-public-api"
>
Learn more about user
</Button>
<Text type={"secondary"}>
Learn more about
<a
target="_blank"
rel="noreferrer"
href="https://docs.netbird.io/how-to/add-users-to-your-network"
>
{" "}
user management
</a>
</Text>
</Col>
</Row>
</Form>
+10 -1
View File
@@ -433,7 +433,7 @@ ul.ant-list-items {
}
.route-form .ant-form-item {
margin-bottom: 20px;
margin-bottom: 24px;
}
.nb-code {
@@ -467,4 +467,13 @@ ul.ant-list-items {
.style-like-text .ant-select-arrow {
display: none !important;
}
.ant-spin-nested-loading .ant-spin-spinning {
min-height: 300px;
}
.route-form.edit-form-wrapper .ant-form-item{
margin-bottom: 39px;
}
+43 -43
View File
@@ -473,7 +473,7 @@ export const AccessControl = () => {
};
const renderPorts = (ports: string[]) => {
if (!ports) {
if (!ports) {
return (
<Tag style={{ marginRight: 3 }}>
<span className="menlo-font">ALL</span>
@@ -644,7 +644,7 @@ export const AccessControl = () => {
disabled={savedPolicy.loading}
onClick={onClickAddNewPolicy}
>
Add Rule
Add rule
</Button>
</Col>
</Row>
@@ -661,7 +661,46 @@ export const AccessControl = () => {
/>
)}
<Card bodyStyle={{ padding: 0 }}>
{!showTutorial && (
{showTutorial && !loading ? (
<Space
direction="vertical"
size="small"
align="center"
style={{
display: "flex",
padding: "45px 15px",
justifyContent: "center",
}}
>
<Title level={4} style={{ textAlign: "center" }}>
Create New Rule
</Title>
<Paragraph
style={{
textAlign: "center",
whiteSpace: "pre-line",
}}
>
It looks like you don't have any rules. {"\n"}
Get started with access control by adding a new one.
<a
target="_blank"
rel="noreferrer"
href="https://docs.netbird.io/how-to/manage-network-access"
>
{" "}
Learn more
</a>
</Paragraph>
<Button
size={"middle"}
type="primary"
onClick={() => onClickAddNewPolicy()}
>
Add rule
</Button>
</Space>
) : (
<Table
pagination={{
current: currentPage,
@@ -683,6 +722,7 @@ export const AccessControl = () => {
}`}
showSorterTooltip={false}
scroll={{ x: true }}
style={{ minHeight: "300px" }}
loading={tableSpin(loading)}
dataSource={dataTable}
>
@@ -825,46 +865,6 @@ export const AccessControl = () => {
/>
</Table>
)}
{showTutorial && (
<Space
direction="vertical"
size="small"
align="center"
style={{
display: "flex",
padding: "45px 15px",
justifyContent: "center",
}}
>
<Title level={4} style={{ textAlign: "center" }}>
Create New Rule
</Title>
<Paragraph
style={{
textAlign: "center",
whiteSpace: "pre-line",
}}
>
It looks like you don't have any rules. {"\n"}
Get started with access control by adding a new one.
<a
target="_blank"
rel="noreferrer"
href="https://docs.netbird.io/how-to/manage-network-access"
>
{" "}
Learn more
</a>
</Paragraph>
<Button
size={"middle"}
type="primary"
onClick={() => onClickAddNewPolicy()}
>
Add rule
</Button>
</Space>
)}
</Card>
</Space>
</Col>
+42 -42
View File
@@ -523,7 +523,7 @@ export const Nameservers = () => {
onClick={onClickAddNewNSGroup}
disabled={savedNSGroup.loading}
>
Add Nameserver
Add nameserver
</Button>
)}
</Col>
@@ -540,7 +540,46 @@ export const Nameservers = () => {
/>
)}
<Card bodyStyle={{ padding: 0 }}>
{!showTutorial && (
{showTutorial && !loading ? (
<Space
direction="vertical"
size="small"
align="center"
style={{
display: "flex",
padding: "45px 15px",
justifyContent: "center",
}}
>
<Title level={4} style={{ textAlign: "center" }}>
Create Nameserver
</Title>
<Paragraph
style={{
textAlign: "center",
whiteSpace: "pre-line",
}}
>
It looks like you don't have any nameservers. {"\n"}
Get started by adding one to your network.
<a
target="_blank"
rel="noreferrer"
href="https://docs.netbird.io/how-to/manage-dns-in-your-network"
>
{" "}
Learn more
</a>
</Paragraph>
<Button
size={"middle"}
type="primary"
onClick={() => onClickAddNewNSGroup()}
>
Add nameserver
</Button>
</Space>
) : (
<Table
pagination={{
pageSize,
@@ -555,6 +594,7 @@ export const Nameservers = () => {
}`}
showSorterTooltip={false}
scroll={{ x: true }}
style={{ minHeight: "300px" }}
loading={tableSpin(loading)}
dataSource={dataTable}
>
@@ -651,46 +691,6 @@ export const Nameservers = () => {
/>
</Table>
)}
{showTutorial && (
<Space
direction="vertical"
size="small"
align="center"
style={{
display: "flex",
padding: "45px 15px",
justifyContent: "center",
}}
>
<Title level={4} style={{ textAlign: "center" }}>
Create Nameserver
</Title>
<Paragraph
style={{
textAlign: "center",
whiteSpace: "pre-line",
}}
>
It looks like you don't have any nameservers. {"\n"}
Get started by adding one to your network.
<a
target="_blank"
rel="noreferrer"
href="https://docs.netbird.io/how-to/manage-dns-in-your-network"
>
{" "}
Learn more
</a>
</Paragraph>
<Button
size={"middle"}
type="primary"
onClick={() => onClickAddNewNSGroup()}
>
Add nameserver
</Button>
</Space>
)}
</Card>
</Space>
</>
+54 -45
View File
@@ -206,8 +206,6 @@ export const Peers = () => {
}
}, [deletedPeer]);
const filterDataTable = (): Peer[] => {
const t = textToSearch.toLowerCase().trim();
let f: Peer[] = filter(peers, (f: Peer) => {
@@ -511,7 +509,14 @@ export const Peers = () => {
let loginExpire = peer.login_expired ? (
<Tooltip title="The peer is offline and needs to be re-authenticated because its login has expired ">
<Tag color="red"><Text style={{fontSize: "10px", color: "rgba(210, 64, 64, 0.85)"}} type={"secondary"}>needs login</Text></Tag>
<Tag color="red">
<Text
style={{ fontSize: "10px", color: "rgba(210, 64, 64, 0.85)" }}
type={"secondary"}
>
needs login
</Text>
</Tag>
</Tooltip>
) : (
""
@@ -519,9 +524,11 @@ export const Peers = () => {
const userEmail = users?.find((u) => u.id === peer.user_id)?.email;
let expiry = !peer.login_expiration_enabled ? (
<Tag>
<Text type="secondary" style={{ fontSize: 10 }}>expiration disabled</Text>
</Tag>
<Tag>
<Text type="secondary" style={{ fontSize: 10 }}>
expiration disabled
</Text>
</Tag>
) : null;
if (!userEmail) {
return (
@@ -573,12 +580,14 @@ export const Peers = () => {
<Col span={24}>
<Title className="page-heading">Peers</Title>
{peers.length ? (
<Paragraph style={{marginTop: "5px"}}>
A list of all machines and devices connected to your private network. Use this view to manage peers
<Paragraph style={{ marginTop: "5px" }}>
A list of all machines and devices connected to your private
network. Use this view to manage peers
</Paragraph>
) : (
<Paragraph style={{marginTop: "5px"}} type={"secondary"}>
A list of all machines and devices connected to your private network. Use this view to manage peers
<Paragraph style={{ marginTop: "5px" }} type={"secondary"}>
A list of all machines and devices connected to your private
network. Use this view to manage peers
</Paragraph>
)}
@@ -632,7 +641,7 @@ export const Peers = () => {
type="primary"
onClick={() => setAddPeerModalOpen(true)}
>
Add Peer
Add peer
</Button>
)}
</Col>
@@ -649,7 +658,39 @@ export const Peers = () => {
/>
)}
<Card bodyStyle={{ padding: 0 }}>
{!showTutorial && (
{showTutorial && !loading ? (
<Space
direction="vertical"
size="small"
align="center"
style={{
display: "flex",
padding: "45px 15px",
justifyContent: "center",
}}
>
<Title level={4} style={{ textAlign: "center" }}>
Get Started
</Title>
<Paragraph
style={{
textAlign: "center",
whiteSpace: "pre-line",
}}
>
It looks like you don't have any connected machines.{" "}
{"\n"}
Get started by adding one to your network.
</Paragraph>
<Button
size={"middle"}
type="primary"
onClick={() => setAddPeerModalOpen(true)}
>
Add new peer
</Button>
</Space>
) : (
<Table
pagination={{
pageSize,
@@ -666,6 +707,7 @@ export const Peers = () => {
scroll={{ x: true }}
loading={tableSpin(loading)}
dataSource={dataTable}
style={{ minHeight: "300px" }}
>
<Column
title="Name"
@@ -804,39 +846,6 @@ export const Peers = () => {
/>
</Table>
)}
{showTutorial && (
<Space
direction="vertical"
size="small"
align="center"
style={{
display: "flex",
padding: "45px 15px",
justifyContent: "center",
}}
>
<Title level={4} style={{ textAlign: "center" }}>
Get Started
</Title>
<Paragraph
style={{
textAlign: "center",
whiteSpace: "pre-line",
}}
>
It looks like you don't have any connected machines.{" "}
{"\n"}
Get started by adding one to your network.
</Paragraph>
<Button
size={"middle"}
type="primary"
onClick={() => setAddPeerModalOpen(true)}
>
Add new peer
</Button>
</Space>
)}
</Card>
</Space>
</Col>
+14 -15
View File
@@ -463,9 +463,11 @@ export const Routes = () => {
</>
) : (
<>
<Tag color="default">
<Text type="secondary" style={{ fontSize: 12 }}>off</Text>
</Tag>
<Tag color="default">
<Text type="secondary" style={{ fontSize: 12 }}>
off
</Text>
</Tag>
<Button
type="link"
style={{ padding: "0" }}
@@ -497,16 +499,13 @@ export const Routes = () => {
let name = selectedGroup ? selectedGroup.network_id : "";
confirm({
icon: <ExclamationCircleOutlined />,
title: (
<span className="font-500">
Delete routes to network {name}
</span>
),
title: <span className="font-500">Delete routes to network {name}</span>,
width: 600,
content: (
<Space direction="vertical" size="small">
<Paragraph>
This operation will delete all routes to the network {name}. Are you sure?
This operation will delete all routes to the network {name}. Are you
sure?
</Paragraph>
<Alert
message={
@@ -645,7 +644,7 @@ export const Routes = () => {
disabled={savedRoute.loading}
onClick={onClickAddNewRoute}
>
Add Route
Add route
</Button>
</Col>
</Row>
@@ -808,7 +807,11 @@ export const Routes = () => {
</Col>
</Row>
{showTutorial ? (
{loading || loadingPeer ? (
<div className="container-spinner">
<Spin size={"large"} />
</div>
) : showTutorial ? (
<Card bodyStyle={{ padding: 0 }}>
<Space
direction="vertical"
@@ -849,10 +852,6 @@ export const Routes = () => {
</Button>
</Space>
</Card>
) : loading || loadingPeer ? (
<div className="container-spinner">
<Spin size={"large"} />
</div>
) : (
<div className="routes-accordian">
<Collapse onChange={callback}>
+56 -72
View File
@@ -360,26 +360,6 @@ export const SetupKeys = () => {
);
};
const setUpdateGroupsVisible = (
setupKeyToAction: SetupKey,
status: boolean
) => {
if (status) {
dispatch(setupKeyActions.setSetupKey({ ...setupKeyToAction }));
dispatch(setupKeyActions.setSetupNewKeyVisible(true));
return;
}
const autoGroups: string[] = [];
dispatch(
setupKeyActions.setSetupKey({
name: "",
type: "one-off",
auto_groups: autoGroups,
} as SetupKey)
);
dispatch(setupKeyActions.setSetupNewKeyVisible(false));
};
return (
<>
<Container style={{ paddingTop: "40px" }}>
@@ -388,24 +368,26 @@ export const SetupKeys = () => {
<Col span={24}>
<Title className="page-heading">Setup Keys</Title>
{setupKeys.length ? (
<Paragraph style={{marginTop: "5px"}}>
Setup keys are pre-authentication keys that allow to register new machines in your network.
<Paragraph style={{ marginTop: "5px" }}>
Setup keys are pre-authentication keys that allow to register
new machines in your network.
<a
target="_blank"
rel="noreferrer"
href="https://docs.netbird.io/how-to/register-machines-using-setup-keys"
>
{" "}
Learn more
</a>
>
{" "}
Learn more
</a>
</Paragraph>
) : (
<Paragraph style={{marginTop: "5px"}} type={"secondary"}>
Setup key is a pre-authentication key that allows to register new machines in your network
<Paragraph style={{ marginTop: "5px" }} type={"secondary"}>
Setup key is a pre-authentication key that allows to register
new machines in your network
<a
target="_blank"
rel="noreferrer"
href="https://docs.netbird.io/how-to/register-machines-using-setup-keys"
target="_blank"
rel="noreferrer"
href="https://docs.netbird.io/how-to/register-machines-using-setup-keys"
>
{" "}
Learn more
@@ -463,7 +445,7 @@ export const SetupKeys = () => {
type="primary"
onClick={onClickAddNewSetupKey}
>
Add Key
Add key
</Button>
</Col>
</Row>
@@ -481,47 +463,48 @@ export const SetupKeys = () => {
closable
/>
)}
{showTutorial ? (
<Card bodyStyle={{ padding: 0 }}>
<Space
direction="vertical"
size="small"
align="center"
style={{
display: "flex",
padding: "45px 15px",
justifyContent: "center",
}}
{showTutorial && !loading ? (
<Card bodyStyle={{ padding: 0 }}>
<Space
direction="vertical"
size="small"
align="center"
style={{
display: "flex",
padding: "45px 15px",
justifyContent: "center",
}}
>
<Title level={4} style={{ textAlign: "center" }}>
Create Setup Key
</Title>
<Paragraph
style={{
textAlign: "center",
whiteSpace: "pre-line",
}}
>
Add a setup key to register new machines in your
network. {"\n"} The key links machines to your account
during initial setup.{" "}
<a
target="_blank"
rel="noreferrer"
href="https://docs.netbird.io/how-to/register-machines-using-setup-keys"
>
<Title level={4} style={{ textAlign: "center" }}>
Create Setup Key
</Title>
<Paragraph
style={{
textAlign: "center",
whiteSpace: "pre-line",
}}
>
Add a setup key to register new machines in your
network. {"\n"} The key links machines to your account during
initial setup. <a
target="_blank"
rel="noreferrer"
href="https://docs.netbird.io/how-to/register-machines-using-setup-keys"
>
{" "}
Learn more
</a>
</Paragraph>
<Button
size={"middle"}
type="primary"
onClick={() => onClickAddNewSetupKey()}
>
Add setup key
</Button>
</Space>
</Card>
{" "}
Learn more
</a>
</Paragraph>
<Button
size={"middle"}
type="primary"
onClick={() => onClickAddNewSetupKey()}
>
Add setup key
</Button>
</Space>
</Card>
) : (
<Card bodyStyle={{ padding: 0 }}>
<Table
@@ -536,6 +519,7 @@ export const SetupKeys = () => {
scroll={{ x: true }}
loading={tableSpin(loading)}
dataSource={dataTable}
style={{ minHeight: "300px" }}
>
<Column
title="Name"