Skip to content

Commit dea6d51

Browse files
authored
Add premint chainId to Stablecoin and RWA tabs (#485)
1 parent bdec576 commit dea6d51

File tree

4 files changed

+47
-9
lines changed

4 files changed

+47
-9
lines changed

packages/ui/src/solidity/App.svelte

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -402,10 +402,10 @@
402402
<ERC1155Controls bind:opts={allOpts.ERC1155} />
403403
</div>
404404
<div class:hidden={tab !== 'Stablecoin'}>
405-
<StablecoinControls bind:opts={allOpts.Stablecoin} />
405+
<StablecoinControls bind:opts={allOpts.Stablecoin} errors={errors.Stablecoin} />
406406
</div>
407407
<div class:hidden={tab !== 'RealWorldAsset'}>
408-
<RealWorldAssetControls bind:opts={allOpts.RealWorldAsset} />
408+
<RealWorldAssetControls bind:opts={allOpts.RealWorldAsset} errors={errors.RealWorldAsset} />
409409
</div>
410410
<div class:hidden={tab !== 'Governor'}>
411411
<GovernorControls bind:opts={allOpts.Governor} errors={errors.Governor} />

packages/ui/src/solidity/ERC20Controls.svelte

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@
7575
<p class="subcontrol tooltip-container flex justify-between items-center pr-2">
7676
<label class="text-sm flex-1">
7777
&nbsp;Chain ID:
78-
<input type="number" bind:value={opts.premintChainId} placeholder={''} class="input-inline" use:resizeToFit use:error={errors?.premintChainId}>
78+
<input type="number" bind:value={opts.premintChainId} placeholder={''} pattern={chainIdPattern.source} class="input-inline" use:resizeToFit use:error={errors?.premintChainId}>
7979
</label>
8080
<HelpTooltip>Chain ID of the network on which to premint tokens.</HelpTooltip>
8181
</p>

packages/ui/src/solidity/RealWorldAssetControls.svelte

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
<script lang="ts">
22
import HelpTooltip from '../common/HelpTooltip.svelte';
33
4-
import type { KindedOptions } from '@openzeppelin/wizard';
5-
import { realWorldAsset, premintPattern, infoDefaults } from '@openzeppelin/wizard';
4+
import type { KindedOptions, OptionsErrorMessages } from '@openzeppelin/wizard';
5+
import { realWorldAsset, premintPattern, chainIdPattern, infoDefaults } from '@openzeppelin/wizard';
66
77
import AccessControlSection from './AccessControlSection.svelte';
88
import InfoSection from './InfoSection.svelte';
99
import ToggleRadio from '../common/inputs/ToggleRadio.svelte';
1010
import OPIcon from '../common/icons/OPIcon.svelte';
11+
import { error } from '../common/error-tooltip';
12+
import { resizeToFit } from '../common/resize-to-fit';
1113
import { superchainTooltipProps } from './superchain-tooltip';
1214
1315
export let opts: Required<KindedOptions['RealWorldAsset']> = {
@@ -19,6 +21,8 @@
1921
info: { ...infoDefaults }, // create new object since Info is nested
2022
};
2123
24+
export let errors: undefined | OptionsErrorMessages;
25+
2226
$: requireAccessControl = realWorldAsset.isAccessControlRequired(opts);
2327
2428
// Show notice when SuperchainERC20 is enabled
@@ -38,6 +42,11 @@
3842
}
3943
wasSuperchain = opts.crossChainBridging === 'superchain';
4044
}
45+
46+
let showChainId = false;
47+
$: {
48+
showChainId = opts.premint !== '' && opts.premint !== '0' && opts.crossChainBridging !== false;
49+
}
4150
</script>
4251

4352
<section class="controls-section">
@@ -66,8 +75,18 @@
6675
Premint
6776
<HelpTooltip>Create an initial amount of tokens for the deployer.</HelpTooltip>
6877
</span>
69-
<input bind:value={opts.premint} placeholder="0" pattern={premintPattern.source}>
78+
<input bind:value={opts.premint} placeholder="0" pattern={premintPattern.source} use:error={errors?.premint}>
7079
</label>
80+
81+
{#if showChainId}
82+
<p class="subcontrol tooltip-container flex justify-between items-center pr-2">
83+
<label class="text-sm flex-1">
84+
&nbsp;Chain ID:
85+
<input type="number" bind:value={opts.premintChainId} placeholder={''} pattern={chainIdPattern.source} class="input-inline" use:resizeToFit use:error={errors?.premintChainId}>
86+
</label>
87+
<HelpTooltip>Chain ID of the network on which to premint tokens.</HelpTooltip>
88+
</p>
89+
{/if}
7190
</section>
7291

7392
<section class="controls-section">

packages/ui/src/solidity/StablecoinControls.svelte

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
<script lang="ts">
22
import HelpTooltip from '../common/HelpTooltip.svelte';
33
4-
import type { KindedOptions } from '@openzeppelin/wizard';
5-
import { stablecoin, premintPattern, infoDefaults } from '@openzeppelin/wizard';
4+
import type { KindedOptions, OptionsErrorMessages } from '@openzeppelin/wizard';
5+
import { stablecoin, premintPattern, chainIdPattern, infoDefaults } from '@openzeppelin/wizard';
66
77
import AccessControlSection from './AccessControlSection.svelte';
88
import InfoSection from './InfoSection.svelte';
99
import ToggleRadio from '../common/inputs/ToggleRadio.svelte';
1010
import OPIcon from '../common/icons/OPIcon.svelte';
11+
import { error } from '../common/error-tooltip';
12+
import { resizeToFit } from '../common/resize-to-fit';
1113
import { superchainTooltipProps } from './superchain-tooltip';
1214
1315
export let opts: Required<KindedOptions['Stablecoin']> = {
@@ -17,6 +19,8 @@
1719
info: { ...infoDefaults }, // create new object since Info is nested
1820
};
1921
22+
export let errors: undefined | OptionsErrorMessages;
23+
2024
$: requireAccessControl = stablecoin.isAccessControlRequired(opts);
2125
2226
// Show notice when SuperchainERC20 is enabled
@@ -36,6 +40,11 @@
3640
}
3741
wasSuperchain = opts.crossChainBridging === 'superchain';
3842
}
43+
44+
let showChainId = false;
45+
$: {
46+
showChainId = opts.premint !== '' && opts.premint !== '0' && opts.crossChainBridging !== false;
47+
}
3948
</script>
4049

4150
<section class="controls-section">
@@ -64,8 +73,18 @@
6473
Premint
6574
<HelpTooltip>Create an initial amount of tokens for the deployer.</HelpTooltip>
6675
</span>
67-
<input bind:value={opts.premint} placeholder="0" pattern={premintPattern.source}>
76+
<input bind:value={opts.premint} placeholder="0" pattern={premintPattern.source} use:error={errors?.premint}>
6877
</label>
78+
79+
{#if showChainId}
80+
<p class="subcontrol tooltip-container flex justify-between items-center pr-2">
81+
<label class="text-sm flex-1">
82+
&nbsp;Chain ID:
83+
<input type="number" bind:value={opts.premintChainId} placeholder={''} pattern={chainIdPattern.source} class="input-inline" use:resizeToFit use:error={errors?.premintChainId}>
84+
</label>
85+
<HelpTooltip>Chain ID of the network on which to premint tokens.</HelpTooltip>
86+
</p>
87+
{/if}
6988
</section>
7089

7190
<section class="controls-section">

0 commit comments

Comments
 (0)