![JavaScript Style Guide](https://img.shields.io/badge/code_style-standard-brightgreen.svg)
You can view a live demo here
Install
To get add Dromo to your own project:
npm install --save dromo-uploader-react
To get the example running locally:
- Clone this repo
npm install
to install all req'd dependenciesnpm run build
to build the packagecd example
to enter into the example foldernpm install
(again) to install all req'd dependenciesnpm start
to start the example
Usage
Check out our developer documentation here
import React, { useState } from "react";
import { isoCountries } from "./DemoData";
import "./styles.css";
import DromoUploader from "dromo-uploader-react";
import { IColumnHookInput, IColumnHookOutput, IDeveloperField, IDeveloperSettings, IRowHookInput, IRowHookOutput } from "../../dist/interfaces";
export default function App() {
const [results, setResults] = useState("");
const fields: IDeveloperField[] = [
{
label: "Geography",
key: "geography",
alternateMatches: ["region"],
description: "Region of the sale",
validators: [{ validate: "required" }]
},
{
label: "Country",
key: "country"
},
{
label: "Order Number",
key: "orderNumber",
validators: [{ validate: "unique" }]
},
{
label: "Priority",
key: "priority"
},
{
label: "Sold Offline?",
key: "soldOffline",
type: "checkbox",
validators: [
{
validate: "regex_match",
regex: "^$|^(1|0|yes|no|true|false|on|off)$",
regexOptions: { ignoreCase: true }
}
]
},
{
label: "Type",
key: "type",
type: "select",
selectOptions: [
{ label: "Food", value: "food" },
{ label: "Clothing", value: "clothing" },
{ label: "Household Items", value: "household_items" },
{ label: "Produce", value: "produce" }
],
validators: [{ validate: "required" }]
},
{
label: "Amount Sold",
key: "amountSold",
validators: [{ validate: "regex_match", regex: "^[0-9]*$" }]
},
{
label: "Profit",
key: "profit"
}
];
const settings: IDeveloperSettings = {
importIdentifier: "Sales",
displayEncoding: true,
allowInvalidSubmit: true,
backendSync: false,
manualInputDisabled: false,
manualInputOnly: false,
allowCustomFields: true,
maxRecords: null,
developmentMode: true
};
const user = {
id: "1",
name: "Jane Doe",
email: "jane@dromo.io",
companyId: "Dromo",
companyName: "12345"
};
const rowHooks = [(record: IRowHookInput) => {
const newRecord: IRowHookOutput = record;
if (record.index < 10) {
if (newRecord.row.geography) {
newRecord.row.geography.info = [{
message: "Prepend 0 to value",
level: "error"
}];
newRecord.row.geography.value = "0" + newRecord.row.geography.value;
}
}
return newRecord;
}];
const columnHooks = [{
fieldName: "country",
callback: (values: Array<IColumnHookInput>) => {
const newValues = new Array<IColumnHookOutput>();
values.forEach((row) => {
if (isoCountries[row.value]) {
const newRow: IColumnHookOutput = {
index: row.index,
value: isoCountries[row.value],
info: [{
message: "Update to use ISO country code",
level: "info"
}]
};
newValues.push(newRow);
}
});
return newValues;
}
}];
return (
<div>
<div>
<DromoUploader
licenseKey="TEST_KEY"
style={{ padding: 15, border: 0 }}
settings={settings}
fields={fields}
user={user}
rowHooks={rowHooks}
columnHooks={columnHooks}
onResults={(data: any) => setResults(JSON.stringify(data, null, 2))}
>
Launch Dromo
</DromoUploader>
</div>
<textarea readOnly id="response" value={results} />
</div>
);
}