-
Notifications
You must be signed in to change notification settings - Fork 325
/
Copy pathapi-form.js
73 lines (70 loc) · 2.98 KB
/
api-form.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
'use strict'
/* eslint-env browser, webextensions */
import browser from 'webextension-polyfill'
import html from 'choo/html/index.js'
import { guiURLString } from '../../lib/options.js'
import { braveNodeType } from '../../lib/ipfs-client/brave.js'
import switchToggle from '../../pages/components/switch-toggle.js'
export default function apiForm ({ ipfsNodeType, ipfsApiUrl, ipfsApiPollMs, automaticMode, onOptionChange }) {
const onIpfsApiUrlChange = onOptionChange('ipfsApiUrl', (url) => guiURLString(url, { useLocalhostName: false }))
const onIpfsApiPollMsChange = onOptionChange('ipfsApiPollMs')
const onAutomaticModeChange = onOptionChange('automaticMode')
const apiAddresEditable = ipfsNodeType === 'external'
const braveClass = ipfsNodeType === braveNodeType ? 'brave' : ''
return html`
<form>
<fieldset class="mb3 pa1 pa4-ns pa3 bg-snow-muted charcoal">
<h2 class="ttu tracked f6 fw4 teal mt0-ns mb3-ns mb1 mt2 ">${browser.i18n.getMessage('option_header_api')}</h2>
<div class="flex-row-ns pb0-ns">
<label for="ipfsApiUrl">
<dl>
<dt>${browser.i18n.getMessage('option_ipfsApiUrl_title')}</dt>
<dd>${browser.i18n.getMessage('option_ipfsApiUrl_description')}</dd>
</dl>
</label>
<input
class="bg-white navy self-center-ns ${braveClass}"
id="ipfsApiUrl"
type="url"
inputmode="url"
required
pattern="^https?://[^/]+/?$"
spellcheck="false"
title="${browser.i18n.getMessage(apiAddresEditable ? 'option_hint_url' : 'option_hint_readonly')}"
onchange=${onIpfsApiUrlChange}
${apiAddresEditable ? '' : 'disabled'}
value=${ipfsApiUrl} />
</div>
<div class="flex-row-ns pb0-ns">
<label for="ipfsApiPollMs">
<dl>
<dt>${browser.i18n.getMessage('option_ipfsApiPollMs_title')}</dt>
<dd>${browser.i18n.getMessage('option_ipfsApiPollMs_description')}</dd>
</dl>
</label>
<input
class="bg-white navy self-center-ns"
id="ipfsApiPollMs"
type="number"
inputmode="numeric"
min="1000"
max="60000"
step="1000"
required
onchange=${onIpfsApiPollMsChange}
value=${ipfsApiPollMs} />
</div>
<div class="flex-row-ns pb0-ns">
<label for="automaticMode">
<dl>
<dt>${browser.i18n.getMessage('option_automaticMode_title')}</dt>
<dd>${browser.i18n.getMessage('option_automaticMode_description')}</dd>
<p class="red i">${browser.i18n.getMessage('option_automaticMode_description_subtext')}</p>
</dl>
</label>
<div class="self-center-ns">${switchToggle({ id: 'automaticMode', checked: automaticMode, onchange: onAutomaticModeChange })}</div>
</div>
</fieldset>
</form>
`
}