Skip to content

🪟🎉 Connector builder: Add copy to/from stream buttons #20816

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 230 commits into from
Jan 5, 2023
Merged
Show file tree
Hide file tree
Changes from 227 commits
Commits
Show all changes
230 commits
Select commit Hold shift + click to select a range
699470e
move connector builder components into the same shared components/con…
lmossman Dec 1, 2022
827532b
move diff over from poc branch
lmossman Dec 1, 2022
4899673
save current progress
lmossman Dec 3, 2022
a1b62f1
add modal for adding streams
lmossman Dec 3, 2022
d2ed762
improve some types
Dec 5, 2022
f474a1c
Merge remote-tracking branch 'upstream/master' into chore-improve-con…
Dec 5, 2022
5b0521f
improve further
Dec 5, 2022
39e8ba8
focus stream after adding and reset button style
lmossman Dec 5, 2022
2352ef9
add reset confirm modal and select view on add
lmossman Dec 6, 2022
df492fa
style global config and streams buttons
lmossman Dec 6, 2022
5a99c7a
styling improvements
lmossman Dec 6, 2022
62fc08c
handle long stream names better
lmossman Dec 6, 2022
7b26b78
pull in connector manifest schema directly
lmossman Dec 6, 2022
af659fd
Merge remote-tracking branch 'upstream/master' into chore-improve-con…
Dec 6, 2022
1cd3bbb
clean up a bit more
Dec 6, 2022
807c436
refactor loading state
Dec 6, 2022
6c76e0f
Merge remote-tracking branch 'upstream/master' into flash1293/connect…
Dec 6, 2022
05c3107
move loading state up
Dec 6, 2022
eee4303
remove isLoading references
Dec 6, 2022
7d6f977
remove unused props and make fetch connector error work
Dec 6, 2022
0fe11f0
remove special component for name
Dec 6, 2022
34d4814
remove top level state for unifinished flows
Dec 6, 2022
67d62c5
Merge remote-tracking branch 'upstream/master' into flash1293/connect…
Dec 6, 2022
afea882
Merge branch 'flash1293/connector-form-name-override' into flash1293/…
Dec 6, 2022
c7e7475
Merge branch 'master' into flash1293/connector-form-loading-state
Dec 6, 2022
cc7f65f
Merge branch 'chore-improve-connector-form-types' into flash1293/conn…
Dec 6, 2022
a1c6cbd
start removing uiwidget
Dec 6, 2022
9be8337
Update airbyte-webapp/src/views/Connector/ConnectorCard/ConnectorCard…
Dec 6, 2022
37cee8f
Merge remote-tracking branch 'upstream/master' into flash1293/connect…
Dec 6, 2022
5686241
Merge branch 'flash1293/connector-form-loading-state' of github.com:a…
Dec 6, 2022
7b73364
remove undefined option for selected id
Dec 6, 2022
7058d26
Merge branch 'flash1293/connector-form-loading-state' into flash1293/…
Dec 6, 2022
dd7e82a
Merge branch 'flash1293/connector-form-name-override' into flash1293/…
Dec 6, 2022
71a88f1
add box shadows to resizable panels
lmossman Dec 6, 2022
d7bee54
upgrade orval and use connector manifest schema directly
lmossman Dec 6, 2022
162ecf2
remove airbyte protocol from connector builder api spec
lmossman Dec 6, 2022
def60b0
Merge branch 'master' into lmossman/use-connector-manifest-schema-dir…
lmossman Dec 6, 2022
ff9aa76
generate python models from openapi change
lmossman Dec 6, 2022
3678956
merge with lmossman/use-connector-manifest-schema-directly
lmossman Dec 6, 2022
b16d4a8
fix position of yaml toggle
lmossman Dec 6, 2022
67fb9dd
handle no stream case with better looking message
lmossman Dec 7, 2022
bb42007
group global fields into single object and fix console error
lmossman Dec 7, 2022
9bb1812
confirmation modal on toggling dirty form + cleanup
lmossman Dec 7, 2022
587ca2f
merge with master
lmossman Dec 7, 2022
81cf108
fix connector name display
lmossman Dec 7, 2022
094a045
undo change to manifest schema
lmossman Dec 7, 2022
d1c8c80
remove commented code
lmossman Dec 7, 2022
aebac20
remove unnecessary change
lmossman Dec 7, 2022
6d4c7d3
Merge remote-tracking branch 'upstream/master' into flash1293/connect…
Dec 7, 2022
d624792
Merge branch 'flash1293/connector-form-loading-state' into flash1293/…
Dec 7, 2022
36cf941
Merge branch 'flash1293/connector-form-name-override' into flash1293/…
Dec 7, 2022
b7a6322
Merge remote-tracking branch 'upstream/master' into flash1293/connect…
Dec 7, 2022
72b602a
Merge branch 'flash1293/connector-form-loading-state' into flash1293/…
Dec 7, 2022
5e47a4a
Merge branch 'flash1293/connector-form-name-override' into flash1293/…
Dec 7, 2022
1e39be4
fix spacing
lmossman Dec 7, 2022
09cf875
use shadow mixin for connector img
lmossman Dec 7, 2022
ec65d67
add comment about connector img
lmossman Dec 7, 2022
6c71028
Merge remote-tracking branch 'origin/master' into flash1293/connector…
Dec 8, 2022
809625f
remove unused prop
Dec 8, 2022
10446eb
Merge branch 'flash1293/connector-form-loading-state' into flash1293/…
Dec 8, 2022
4a7a885
Merge branch 'flash1293/connector-form-name-override' into flash1293/…
Dec 8, 2022
2024b60
Merge branch 'flash1293/connector-form-unifinished-flows' into flash1…
Dec 8, 2022
ee30092
fix types
Dec 8, 2022
d91df38
remove uiwidget state
Dec 8, 2022
f9a3fa1
Merge remote-tracking branch 'origin/master' into lmossman/connector-…
Dec 8, 2022
603820a
change onSubmit to no-op
lmossman Dec 8, 2022
cb2f299
remove console log
lmossman Dec 8, 2022
d1672a0
clean up styling
lmossman Dec 8, 2022
7255784
simplify sidebar to remove StreamSelectButton component
lmossman Dec 8, 2022
65cd42b
swap colors of toggle
lmossman Dec 8, 2022
10d7893
move FormikPatch to src/core/form
lmossman Dec 8, 2022
fc89001
move types up to connectorBuilder/ level
lmossman Dec 8, 2022
24eaaff
use grid display for ui yaml toggle button
lmossman Dec 8, 2022
de604f6
use spread instead of setting array index directly
lmossman Dec 8, 2022
e696e57
add intl in missing places
lmossman Dec 8, 2022
5952f70
merge with master
lmossman Dec 8, 2022
b7c08f6
pull connector manifest schema in through separate openapi spec
lmossman Dec 8, 2022
93fe558
Merge remote-tracking branch 'origin/master' into flash1293/connector…
Dec 9, 2022
cbc023a
Merge branch 'flash1293/connector-form-name-override' into flash1293/…
Dec 9, 2022
ec54d38
Merge branch 'flash1293/connector-form-unifinished-flows' into flash1…
Dec 9, 2022
47152ea
clean up
Dec 9, 2022
6ec0e10
adjust comment
Dec 9, 2022
1aa7829
handle errors in a nice way
Dec 9, 2022
7b90088
do not respect default on oneOf fields
Dec 9, 2022
fbefbdd
rename to formblock
Dec 9, 2022
6b3e5e2
reduce re-renders
Dec 9, 2022
dd04e61
erge branch 'lmossman/connector-builder-config-ui' of github.com:airb…
Dec 9, 2022
d6f10b4
use correct intl string id
lmossman Dec 9, 2022
5ffe20e
throttle setting json manifest in yaml editor
lmossman Dec 9, 2022
b82ba2a
use button prop instead of manually styling
lmossman Dec 9, 2022
b9580b4
consolidate AddStreamButton styles
lmossman Dec 9, 2022
1587243
fix sidebar flex styles
lmossman Dec 9, 2022
62a60e5
use specific flex properties instead of flex
lmossman Dec 9, 2022
092821d
clean up download and reset button styles
lmossman Dec 10, 2022
7b8dec8
use row-reverse for yaml editor download button
lmossman Dec 10, 2022
6d68db9
fix stream selector styles to remove margins
lmossman Dec 10, 2022
91bc357
give connector setup guide panel same corner and shadow styles
lmossman Dec 10, 2022
4ffb969
remove blur from page display
lmossman Dec 10, 2022
70afdf8
set view to stream when selected in test panel
lmossman Dec 10, 2022
f656506
add placeholder when stream name is empty
lmossman Dec 10, 2022
c437d30
switch to index-based stream selection to preserve testing panel sele…
lmossman Dec 10, 2022
3cdbc70
handle empty name in stream selector
lmossman Dec 10, 2022
9aa3f80
Merge remote-tracking branch 'origin/master' into flash1293/connector…
Dec 12, 2022
c765003
Merge branch 'flash1293/connector-form-unifinished-flows' into flash1…
Dec 12, 2022
831f574
Merge branch 'lmossman/connector-builder-config-ui' of github.com:air…
Dec 12, 2022
e2730fe
Merge branch 'lmossman/connector-builder-config-ui' into flash1293/in…
Dec 12, 2022
269ae82
make connector form work in connector builder
Dec 12, 2022
901fc63
wip
Dec 12, 2022
5cd77ec
pass error to secure inputs
Dec 12, 2022
5dfbc22
Merge remote-tracking branch 'origin/master' into flash1293/connector…
Dec 13, 2022
a6aa741
simplify and improve styling
Dec 13, 2022
95717d2
align top
Dec 13, 2022
40d162d
Merge branch 'flash1293/connector-form-unifinished-flows' into flash1…
Dec 13, 2022
4944d3f
Merge branch 'flash1293/connector-form-remove-ui-widget-state' into f…
Dec 13, 2022
3255298
fix small stuff
Dec 13, 2022
b9384ee
Merge remote-tracking branch 'origin/master' into flash1293/connector…
Dec 13, 2022
333fb0b
Merge branch 'flash1293/connector-form-remove-ui-widget-state' into f…
Dec 13, 2022
cec206f
Merge branch 'flash1293/integrate-connector-form' into flash1293/allo…
Dec 13, 2022
ba28014
add basic input UI
Dec 13, 2022
582a5f2
code review
Dec 13, 2022
18d6ce8
remove comment
Dec 13, 2022
60c1f1c
Merge branch 'master' into flash1293/connector-form-remove-ui-widget-…
Dec 14, 2022
53ad55f
Merge branch 'flash1293/connector-form-remove-ui-widget-state' into f…
Dec 14, 2022
5300933
Merge remote-tracking branch 'origin/master' into flash1293/integrate…
Dec 14, 2022
935188b
Merge branch 'flash1293/integrate-connector-form' into flash1293/allo…
Dec 14, 2022
b694dc5
user inputs
Dec 14, 2022
e7d81ea
make most of inputs configuration work
Dec 14, 2022
9cb595d
Merge remote-tracking branch 'origin/master' into flash1293/connector…
Dec 15, 2022
fe74a45
review comments
Dec 15, 2022
5c00ad0
rename file
Dec 15, 2022
bd0dffc
be strict about boolean values
Dec 15, 2022
1ff8c13
add example
Dec 15, 2022
c6ee526
track form error in error boundary
Dec 15, 2022
05bbd6f
Merge branch 'flash1293/connector-form-remove-ui-widget-state' of git…
Dec 15, 2022
3de021a
Merge branch 'flash1293/connector-form-remove-ui-widget-state' into f…
Dec 15, 2022
552fc65
Merge branch 'flash1293/integrate-connector-form' into flash1293/allo…
Dec 15, 2022
ace1299
fix a bunch of stuff
Dec 15, 2022
7fa1752
handle unknown config types
Dec 15, 2022
fff4703
Merge remote-tracking branch 'origin/master' into flash1293/connector…
Dec 16, 2022
94ba866
review comments
Dec 16, 2022
97bb0a7
handle unexpected cases better
Dec 16, 2022
633b9b2
Merge branch 'master' into flash1293/connector-form-remove-ui-widget-…
Dec 16, 2022
7196409
Merge branch 'flash1293/connector-form-remove-ui-widget-state' into f…
Dec 16, 2022
4a37a67
add warning label
Dec 16, 2022
10fa73e
Merge branch 'flash1293/integrate-connector-form' into flash1293/allo…
Dec 16, 2022
7e48ba5
fix label
Dec 16, 2022
75db697
fix some styling
Dec 16, 2022
e47517f
Merge branch 'master' into flash1293/connector-form-remove-ui-widget-…
Dec 16, 2022
b340ef4
Merge branch 'flash1293/connector-form-remove-ui-widget-state' into f…
Dec 16, 2022
98c146c
Merge branch 'flash1293/integrate-connector-form' into flash1293/allo…
Dec 16, 2022
e931956
Merge remote-tracking branch 'origin/master' into feature/connector-b…
Dec 16, 2022
9835a5c
review comments
Dec 18, 2022
6889f66
enrich error with connector id
Dec 19, 2022
7b60406
Merge branch 'flash1293/connector-form-remove-ui-widget-state' into f…
Dec 19, 2022
c352df0
Merge branch 'feature/connector-builder' into flash1293/integrate-con…
Dec 19, 2022
ed43eab
Merge branch 'flash1293/integrate-connector-form' into flash1293/allo…
Dec 19, 2022
7958ef1
improve state management and error handling
Dec 19, 2022
d5e56eb
Merge branch 'master' into flash1293/connector-form-remove-ui-widget-…
Dec 19, 2022
35a74ba
Merge branch 'flash1293/connector-form-remove-ui-widget-state' into f…
Dec 19, 2022
beb4968
Merge branch 'feature/connector-builder' into flash1293/integrate-con…
Dec 19, 2022
b3cfb8f
Merge branch 'flash1293/integrate-connector-form' into flash1293/allo…
Dec 19, 2022
49f55a1
Merge branch 'flash1293/allow-configuring-inputs' of github.com:airby…
Dec 19, 2022
04d87cf
allow auth configuration
Dec 19, 2022
b796201
check for conflicts with the inferred inputs
Dec 19, 2022
02c8096
🪟🎉 Add copy stream button (#20577)
Dec 19, 2022
18498c7
fix invisible inputs
Dec 19, 2022
9ffa34e
handle stored form values that don't contain new fields properly
lmossman Dec 19, 2022
8c4b6c7
Merge branch 'flash1293/allow-configuring-inputs' into flash1293/conn…
lmossman Dec 19, 2022
526adfc
rename prop
Dec 20, 2022
7d49233
🪟🎉 Connector builder: Integrate connector form for test input (#20385)
Dec 20, 2022
c0350d3
Merge branch 'flash1293/allow-configuring-inputs' of github.com:airby…
Dec 20, 2022
e98ebc1
Merge branch 'feature/connector-builder' into flash1293/allow-configu…
Dec 20, 2022
fb1ec21
Merge branch 'flash1293/allow-configuring-inputs' into flash1293/conn…
Dec 20, 2022
a17ab05
session token and oauth authentication
Dec 20, 2022
7b6470e
fill in session token variable
Dec 20, 2022
c5da764
Merge remote-tracking branch 'origin/master' into flash1293/connector…
Dec 20, 2022
6c0bf9d
Merge branch 'flash1293/connector-form-remove-ui-widget-state' into f…
Dec 20, 2022
477977f
use request_body_json instead of request_body_data
lmossman Dec 20, 2022
200cfe7
:window: :art: Move `Add` button into the line of Connector Builder k…
lmossman Dec 21, 2022
23f4fbe
fix merge of default values
lmossman Dec 20, 2022
d4975bf
add primaryKey and cursorField to builder types, and consolidate defa…
lmossman Dec 20, 2022
32213f8
add cursor and primary key fields to ui
lmossman Dec 20, 2022
3e20324
save
lmossman Dec 20, 2022
3ee0ffb
add page size and token option inputs
lmossman Dec 21, 2022
0576478
fixes after rebase
lmossman Dec 21, 2022
5e45f59
add pagination
lmossman Dec 21, 2022
f101602
fix pagination types
lmossman Dec 21, 2022
5fb62e2
handle empty field_name better
lmossman Dec 21, 2022
7cce350
Update airbyte-webapp/src/locales/en.json
Dec 21, 2022
20e8044
Update airbyte-webapp/src/components/connectorBuilder/Builder/InputsV…
Dec 21, 2022
50bddcb
inputs editing weirdness
Dec 21, 2022
0ca37ad
input form reset
Dec 21, 2022
8095fda
using the Label component
Dec 21, 2022
fbeb2e1
Merge branch 'flash1293/allow-configuring-inputs' into flash1293/conn…
Dec 21, 2022
1bccbbd
reduce redundancy and hide advanced input options for inferred inputs
Dec 21, 2022
eaec279
unnecessary validation
Dec 21, 2022
a338590
typo
Dec 21, 2022
2429d29
unnecessary effect hook
Dec 21, 2022
6dd02d9
build spec even for invalid forms but do not update stream list
Dec 21, 2022
84803ce
Merge branch 'flash1293/connector-builder-authentication' into flash1…
Dec 21, 2022
4bd0bdc
typos
Dec 21, 2022
ca0219b
make sure validation error does not go away
Dec 21, 2022
134fc17
Merge branch 'flash1293/oauth-session-auth' into lmossman/connector-b…
Dec 21, 2022
67408af
build copy in and out buttons
Dec 21, 2022
c7fd310
🪟🎉 Connector builder: Allow defining inputs (#20431)
Dec 22, 2022
e0e3796
fix merge conflict with dropdown prop being renamed to control
Dec 22, 2022
e23a6d8
[Connector Builder] Add paginator (#20698)
lmossman Dec 22, 2022
610e668
[Connector Builder] Add stream slicer (#20748)
lmossman Dec 22, 2022
e68ff49
debounce form builder values update to reduce load
Dec 22, 2022
9ccf294
Merge branch 'master' into flash1293/connector-form-remove-ui-widget-…
Dec 22, 2022
ae9a229
Merge branch 'flash1293/connector-form-remove-ui-widget-state' into f…
Dec 22, 2022
a9e1d09
🪟🔧 Connector builder: use new lowcode manifest (#20715)
Dec 22, 2022
dca8cd5
Merge branch 'feature/connector-builder' into flash1293/copy-components
Dec 22, 2022
1c6aa34
add copy from/to buttons
Dec 22, 2022
3ca2399
remove unused thing
Dec 22, 2022
7dbcd3f
use label for checkbox to make it clickable
Dec 22, 2022
e4f7bba
debounce validation as well
Dec 27, 2022
16c71ae
Merge branch 'master' into flash1293/connector-form-remove-ui-widget-…
Jan 2, 2023
54c070d
Merge branch 'flash1293/connector-form-remove-ui-widget-state' into f…
Jan 2, 2023
16a316a
Merge branch 'feature/connector-builder' into flash1293/copy-components
Jan 2, 2023
2e20fa6
akways show stream test button in error state if there are errors
Jan 2, 2023
65199d0
fix type of oauth input
Jan 2, 2023
92722e0
Merge branch 'master' into flash1293/connector-form-remove-ui-widget-…
Jan 3, 2023
718c233
Merge branch 'flash1293/connector-form-remove-ui-widget-state' into f…
Jan 3, 2023
408ad4a
Merge branch 'feature/connector-builder' into flash1293/copy-components
Jan 3, 2023
6a8be0b
Merge remote-tracking branch 'origin/master' into feature/connector-b…
Jan 3, 2023
01080f6
Merge branch 'feature/connector-builder' into flash1293/copy-components
Jan 3, 2023
edc0fa7
Merge remote-tracking branch 'origin/master' into flash1293/copy-comp…
Jan 4, 2023
7f0dfd0
review comments
Jan 4, 2023
f7cb2d1
Merge remote-tracking branch 'origin/master' into flash1293/copy-comp…
Jan 5, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -36,11 +36,10 @@ $border-width: variables.$border-thick;
white-space: nowrap;
}

.dropdown {
.control {
margin-left: auto;
padding: 0 variables.$spacing-xs;
background-color: colors.$white;
min-width: calc(50% - 100px);
}

.content {
Expand Down
14 changes: 11 additions & 3 deletions airbyte-webapp/src/components/GroupControls/GroupControls.tsx
Original file line number Diff line number Diff line change
@@ -1,21 +1,29 @@
import classNames from "classnames";
import React from "react";

import styles from "./GroupControls.module.scss";

interface GroupControlsProps {
label: React.ReactNode;
dropdown?: React.ReactNode;
control?: React.ReactNode;
controlClassName?: string;
name?: string;
}

const GroupControls: React.FC<React.PropsWithChildren<GroupControlsProps>> = ({ label, dropdown, children, name }) => {
const GroupControls: React.FC<React.PropsWithChildren<GroupControlsProps>> = ({
label,
control,
children,
name,
controlClassName,
}) => {
return (
// This outer div is necessary for .content > :first-child padding to be properly applied in the case of nested GroupControls
<div>
<div className={styles.container}>
<div className={styles.title}>
<div className={styles.label}>{label}</div>
<div className={styles.dropdown}>{dropdown}</div>
<div className={classNames(styles.control, controlClassName)}>{control}</div>
</div>
<div className={styles.content} data-testid={name}>
{children}
Expand Down
19 changes: 19 additions & 0 deletions airbyte-webapp/src/components/GroupControls/index.stories.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import { ComponentStory, ComponentMeta } from "@storybook/react";

import { Button } from "components/ui/Button";
import { Card } from "components/ui/Card";

import { FormBlock, FormConditionItem } from "core/form/types";
Expand Down Expand Up @@ -73,3 +74,21 @@ WithContent.args = {
</>
),
};

export const EmptyWithControl = Template.bind({});
EmptyWithControl.args = {
label,
control: <Button variant="secondary">Control</Button>,
};

export const ControlAndContent = Template.bind({});
ControlAndContent.args = {
label,
control: <Button variant="secondary">Control</Button>,
children: (
<>
<SectionContainer>Content part 1</SectionContainer>
<SectionContainer>Content part 2</SectionContainer>
</>
),
};
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
import { Form, Formik, useField } from "formik";
import merge from "lodash/merge";
import { useState } from "react";
import React from "react";
import { FormattedMessage, useIntl } from "react-intl";

import { Button } from "components/ui/Button";
Expand All @@ -8,7 +10,7 @@ import { Modal, ModalBody, ModalFooter } from "components/ui/Modal";
import { FormikPatch } from "core/form/FormikPatch";

import { ReactComponent as PlusIcon } from "../../connection/ConnectionOnboarding/plusIcon.svg";
import { BuilderStream } from "../types";
import { BuilderStream, DEFAULT_BUILDER_STREAM_VALUES } from "../types";
import styles from "./AddStreamButton.module.scss";
import { BuilderField } from "./BuilderField";

Expand All @@ -19,40 +21,40 @@ interface AddStreamValues {

interface AddStreamButtonProps {
onAddStream: (addedStreamNum: number) => void;
button?: React.ReactElement;
initialValues?: Partial<BuilderStream>;
}

export const AddStreamButton: React.FC<AddStreamButtonProps> = ({ onAddStream }) => {
export const AddStreamButton: React.FC<AddStreamButtonProps> = ({ onAddStream, button, initialValues }) => {
const { formatMessage } = useIntl();
const [isOpen, setIsOpen] = useState(false);
const [streamsField, , helpers] = useField<BuilderStream[]>("streams");
const numStreams = streamsField.value.length;

const buttonClickHandler = () => {
setIsOpen(true);
};

return (
<>
<Button
className={styles.addButton}
onClick={() => {
setIsOpen(true);
}}
icon={<PlusIcon />}
/>
{button ? (
React.cloneElement(button, {
onClick: buttonClickHandler,
})
) : (
<Button className={styles.addButton} onClick={buttonClickHandler} icon={<PlusIcon />} />
)}
{isOpen && (
<Formik
initialValues={{ streamName: "", urlPath: "" }}
onSubmit={(values: AddStreamValues) => {
helpers.setValue([
...streamsField.value,
{
merge({}, DEFAULT_BUILDER_STREAM_VALUES, {
...initialValues,
name: values.streamName,
urlPath: values.urlPath,
fieldPointer: [],
httpMethod: "GET",
requestOptions: {
requestParameters: [],
requestHeaders: [],
requestBody: [],
},
},
}),
]);
setIsOpen(false);
onAddStream(numStreams);
Expand All @@ -71,13 +73,13 @@ export const AddStreamButton: React.FC<AddStreamButtonProps> = ({ onAddStream })
<ModalBody className={styles.body}>
<BuilderField
path="streamName"
type="text"
type="string"
label={formatMessage({ id: "connectorBuilder.addStreamModal.streamNameLabel" })}
tooltip={formatMessage({ id: "connectorBuilder.addStreamModal.streamNameTooltip" })}
/>
<BuilderField
path="urlPath"
type="text"
type="string"
label={formatMessage({ id: "connectorBuilder.addStreamModal.urlPathLabel" })}
tooltip={formatMessage({ id: "connectorBuilder.addStreamModal.urlPathTooltip" })}
/>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,179 @@
import { BuilderCard } from "./BuilderCard";
import { BuilderField } from "./BuilderField";
import { BuilderOneOf } from "./BuilderOneOf";
import { BuilderOptional } from "./BuilderOptional";
import { KeyValueListField } from "./KeyValueListField";
import { UserInputField } from "./UserInputField";

export const AuthenticationSection: React.FC = () => {
return (
<BuilderCard>
<BuilderOneOf
path="global.authenticator"
label="Authentication"
tooltip="Authentication method to use for requests sent to the API"
options={[
{ label: "No Auth", typeValue: "NoAuth" },
{
label: "API Key",
typeValue: "ApiKeyAuthenticator",
default: {
api_token: "{{ config['api_key'] }}",
header: "",
},
children: (
<>
<BuilderField
type="string"
path="global.authenticator.header"
label="Header"
tooltip="HTTP header which should be set to the API Key"
/>
<UserInputField
label="API Key"
tooltip="The API key issued by the service. Fill it in in the user inputs"
/>
</>
),
},
{
label: "Bearer",
typeValue: "BearerAuthenticator",
default: {
api_token: "{{ config['api_key'] }}",
},
children: (
<UserInputField
label="API Key"
tooltip="The API key issued by the service. Fill it in in the user inputs"
/>
),
},
{
label: "Basic HTTP",
typeValue: "BasicHttpAuthenticator",
default: {
username: "{{ config['username'] }}",
password: "{{ config['password'] }}",
},
children: (
<>
<UserInputField label="Username" tooltip="The username for the login. Fill it in in the user inputs" />
<UserInputField label="Password" tooltip="The password for the login. Fill it in in the user inputs" />
</>
),
},
{
label: "OAuth",
typeValue: "OAuthAuthenticator",
default: {
client_id: "{{ config['client_id'] }}",
client_secret: "{{ config['client_secret'] }}",
refresh_token: "{{ config['client_refresh_token'] }}",
refresh_request_body: [],
token_refresh_endpoint: "",
},
children: (
<>
<BuilderField
type="string"
path="global.authenticator.token_refresh_endpoint"
label="Token refresh endpoint"
tooltip="The URL to call to obtain a new access token"
/>
<UserInputField label="Client ID" tooltip="The OAuth client ID" />
<UserInputField label="Client secret" tooltip="The OAuth client secret" />
<UserInputField label="Refresh token" tooltip="The OAuth refresh token" />
<BuilderOptional>
<BuilderField
type="array"
path="global.authenticator.scopes"
optional
label="Scopes"
tooltip="Scopes to request"
/>
<BuilderField
type="string"
path="global.authenticator.token_expiry_date_format"
optional
label="Token expiry date format"
tooltip="The format of the expiry date of the access token as obtained from the refresh endpoint"
/>
<BuilderField
type="string"
path="global.authenticator.expires_in_name"
optional
label="Token expiry property name"
tooltip="The name of the property which contains the token exipiry date in the response from the token refresh endpoint"
/>
<BuilderField
type="string"
path="global.authenticator.access_token_name"
optional
label="Access token property name"
tooltip="The name of the property which contains the access token in the response from the token refresh endpoint"
/>
<BuilderField
type="string"
path="global.authenticator.grant_type"
optional
label="Grant type"
tooltip="The grant type to request for access_token"
/>
<KeyValueListField
path="global.authenticator.refresh_request_body"
label="Request Parameters"
tooltip="The request body to send in the refresh request"
/>
</BuilderOptional>
</>
),
},
{
label: "Session token",
typeValue: "SessionTokenAuthenticator",
default: {
username: "{{ config['username'] }}",
password: "{{ config['password'] }}",
session_token: "{{ config['session_token'] }}",
},
children: (
<>
<BuilderField
type="string"
path="global.authenticator.header"
label="Header"
tooltip="Specific HTTP header of source API for providing session token"
/>
<BuilderField
type="string"
path="global.authenticator.session_token_response_key"
label="Session token response key"
tooltip="Key for retrieving session token from api response"
/>
<BuilderField
type="string"
path="global.authenticator.login_url"
label="Login url"
tooltip="Url for getting a specific session token"
/>
<BuilderField
type="string"
path="global.authenticator.validate_session_url"
label="Validate session url"
tooltip="Url to validate passed session token"
/>
<UserInputField label="Username" tooltip="The username" />
<UserInputField label="Password" tooltip="The password" />
<UserInputField
label="Session token"
tooltip="Session token generated by user (if provided username and password are not required)"
/>
</>
),
},
]}
/>
</BuilderCard>
);
};
Original file line number Diff line number Diff line change
Expand Up @@ -18,4 +18,6 @@
.form {
flex: 1;
padding: variables.$spacing-xl;
padding-right: 80px;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: apply this padding to the left as well, so that the form is centered in its containing div

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

80px is a lot of horizontal screen space to lose, instead I made this styling conditional based on whether there are multiple streams in the first place. Also solves the issue of not having an unnecessary gap on user input and global views.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice, I like that approach 👍

overflow: auto;
}
Loading