v2 Enable local development (#52)

- Create local dev environment
- Add gas-client and google-apps-script-webpack-dev-server packages for development
- Add dev/ wrapper app
- Update webpack config to support development environment
- Redesigned READMEs
- Support typescript
- Update npm scripts
- Organize and update .gitignore file
- Add .vscode settings for clasp files
- Remove tracking for files in dist/
This commit is contained in:
Elisha Nuchi
2020-08-15 13:09:04 -04:00
committed by GitHub
parent 5030a2f81e
commit 35a641d0f7
30 changed files with 5392 additions and 1742 deletions
@@ -6,26 +6,28 @@ import SheetButton from './SheetButton';
// This is a wrapper for google.script.run that lets us use promises.
import server from '../../utils/server';
const { serverFunctions } = server;
const SheetEditor = () => {
const [names, setNames] = useState([]);
useEffect(() => {
// Call a server global function here and handle the response with .then() and .catch()
server
serverFunctions
.getSheetsData()
.then(setNames)
.catch(alert);
}, []);
const deleteSheet = sheetIndex => {
server
serverFunctions
.deleteSheet(sheetIndex)
.then(setNames)
.catch(alert);
};
const setActiveSheet = sheetName => {
server
serverFunctions
.setActiveSheet(sheetName)
.then(setNames)
.catch(alert);
@@ -35,15 +37,24 @@ const SheetEditor = () => {
// (This does the same thing as .then().catch() in the above handlers.)
const submitNewSheet = async newSheetName => {
try {
const response = await server.addSheet(newSheetName);
const response = await serverFunctions.addSheet(newSheetName);
setNames(response);
} catch (error) {
// eslint-disable-next-line no-alert
alert(error);
}
};
return (
<div>
<p>
<b>☀️ React demo! ☀️</b>
</p>
<p>
This is a sample page that demonstrates a simple React app. Enter a name
for a new sheet, hit enter and the new sheet will be created. Click the
red &times; next to the sheet name to delete it.
</p>
<FormInput submitNewSheet={submitNewSheet} />
<TransitionGroup className="sheet-list">
{names.length > 0 &&