in packages/sanddance-app/src/dataSourcePicker.tsx [185:278]
render() {
const closeDialog = () => {
this.setState({ dialogMode: null });
};
let shortcut: string;
if (this.state.url && !invalidUrlError(this.state.url) && !this.state.urlError) {
shortcut = this.getUrlShortcut(this.state.url, this.state.urlType);
}
return [(
<controls.Dialog
key='local'
hidden={!(this.state.dialogMode === 'local')}
onDismiss={closeDialog}
dialogContentProps={{
className: `sanddance-dialog ${this.props.theme}`,
type: base.fluentUI.DialogType.normal,
title: strings.dialogTitleLocal,
subText: strings.dialogSubtextLocal
}}
>
<input
type="file"
onChange={e => this.upload(e)}
disabled={this.state.working}
/>
{this.state.uploadFormatError && (
<div className="error">{this.state.uploadFormatError}</div>
)}
</controls.Dialog>
), (
<controls.Dialog
key='url'
hidden={!(this.state.dialogMode === 'url')}
onDismiss={closeDialog}
dialogContentProps={{
className: `sanddance-dialog ${this.props.theme}`,
type: base.fluentUI.DialogType.normal,
title: strings.dialogTitleUrl
}}
buttons={[
(
<base.fluentUI.PrimaryButton
key={0}
onClick={e => this.loadUrl()}
iconProps={{ iconName: 'CloudDownload' }}
text={strings.dialogLoadButton}
disabled={this.state.working}
/>
)
]}
>
<section>
<base.fluentUI.TextField
label={strings.labelUrl}
placeholder={strings.urlInputPlaceholder}
onKeyUp={e => e.keyCode === 13 && this.loadUrl()}
onChange={(e, url) =>
this.setState({ url, urlError: '' })
}
value={this.state.url}
disabled={this.state.working}
/>
{this.state.urlError && (
<div className="error">{this.state.urlError}</div>
)}
</section>
<section>
<base.fluentUI.ChoiceGroup
options={
DataSourcePicker.urlTypes.map((urlType, i) => {
return {
key: `${i}`,
text: urlType,
disabled: this.state.working,
checked: i === 0
} as FluentUITypes.IChoiceGroupOption;
})
}
onChange={(ev: React.FormEvent<HTMLInputElement>, option: FluentUITypes.IChoiceGroupOption) =>
this.setState({ urlType: option.text as DataFileType, urlError: '' })
}
label={strings.labelDataFormat}
/>
</section>
<section className='tip' style={{ visibility: !invalidUrlError(this.state.url) && !this.state.urlError ? 'visible' : 'hidden' }} >
{strings.labelDataUrlShortcut} <a
href={shortcut}
title={strings.labelLinkDescription}
aria-label={strings.labelLinkDescription}
>{strings.labelLink}</a>
</section>
</controls.Dialog>
)];
}