@ -0,0 +1,12 @@ |
|||||||
|
$btn-no-border-bg: #fff !default; |
||||||
|
$btn-no-border-color: $primary !default; |
||||||
|
|
||||||
|
.btn-no-border { |
||||||
|
@include btn-line($btn-no-border-bg, $btn-no-border-color); |
||||||
|
|
||||||
|
border-color: $btn-no-border-bg; |
||||||
|
|
||||||
|
&:hover { |
||||||
|
border-color: $btn-no-border-color; |
||||||
|
} |
||||||
|
} |
@ -1,4 +1,4 @@ |
|||||||
.filter { |
.filter { |
||||||
min-width: 100%; |
min-width: 100%; |
||||||
transform: translate3d(1px, 26px, 0px) !important; |
transform: translate3d(0, 34px, 0px) !important; |
||||||
} |
} |
||||||
|
@ -0,0 +1,204 @@ |
|||||||
|
$new-smart-contract-container-tooltips-background-color: #fbfafc !default; |
||||||
|
$new-smart-contract-tooltips-width: 300px; |
||||||
|
$smart-contract-form-group-tooltip-color: #adb5bd !default; |
||||||
|
$new-smart-contract-center-column-margin-right: 30px; |
||||||
|
|
||||||
|
.new-smart-contract-container { |
||||||
|
background-color: #fff; |
||||||
|
background-image: linear-gradient( |
||||||
|
to bottom right, |
||||||
|
#{$new-smart-contract-container-tooltips-background-color} 100%, |
||||||
|
#{$new-smart-contract-container-tooltips-background-color} 100% |
||||||
|
); |
||||||
|
background-position: 100% 0; |
||||||
|
background-repeat: repeat-y; |
||||||
|
background-size: #{$new-smart-contract-tooltips-width} 1px; |
||||||
|
box-shadow: 0 0 25px 0 rgba(0, 0, 0, 0.15); |
||||||
|
margin-bottom: 3rem; |
||||||
|
padding: 50px 0 50px 22px; |
||||||
|
|
||||||
|
@include media-breakpoint-down(md) { |
||||||
|
background-image: none; |
||||||
|
padding-right: 22px; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
.smart-contract-title { |
||||||
|
color: #333; |
||||||
|
font-size: 18px; |
||||||
|
font-weight: normal; |
||||||
|
line-height: 1.2; |
||||||
|
margin: 0 0 70px 0; |
||||||
|
padding: 0; |
||||||
|
text-align: left; |
||||||
|
|
||||||
|
@include media-breakpoint-down(md) { |
||||||
|
margin-bottom: 30px; |
||||||
|
} |
||||||
|
|
||||||
|
&.margin-bottom-md { |
||||||
|
margin-bottom: 50px; |
||||||
|
|
||||||
|
@include media-breakpoint-down(md) { |
||||||
|
margin-bottom: 15px; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
.smart-contract-form-group { |
||||||
|
margin-bottom: 30px; |
||||||
|
|
||||||
|
@include media-breakpoint-down(md) { |
||||||
|
margin-bottom: 20px; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
.form-radios-group { |
||||||
|
display: flex; |
||||||
|
justify-content: flex-start; |
||||||
|
|
||||||
|
.radio-big { |
||||||
|
margin-right: 20px; |
||||||
|
|
||||||
|
&:last-child { |
||||||
|
margin-right: 0; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
.smart-contract-form-group-inner-wrapper { |
||||||
|
display: flex; |
||||||
|
justify-content: space-between; |
||||||
|
|
||||||
|
@include media-breakpoint-down(md) { |
||||||
|
flex-direction: column; |
||||||
|
} |
||||||
|
|
||||||
|
> label { |
||||||
|
color: #333; |
||||||
|
flex-grow: 0; |
||||||
|
font-size: 14px; |
||||||
|
font-weight: normal; |
||||||
|
line-height: 1.7; |
||||||
|
margin: 0; |
||||||
|
padding-right: 15px; |
||||||
|
text-align: left; |
||||||
|
width: 200px; |
||||||
|
|
||||||
|
@include media-breakpoint-down(md) { |
||||||
|
margin-bottom: 10px; |
||||||
|
padding-right: 0; |
||||||
|
width: auto; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
.center-column { |
||||||
|
flex-grow: 1; |
||||||
|
margin-right: $new-smart-contract-center-column-margin-right; |
||||||
|
|
||||||
|
@include media-breakpoint-down(md) { |
||||||
|
margin: 0; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
textarea.form-control { |
||||||
|
min-height: 98px; |
||||||
|
} |
||||||
|
|
||||||
|
.form-error { |
||||||
|
display: block; |
||||||
|
font-size: 13px; |
||||||
|
line-height: 1.2; |
||||||
|
padding-top: 10px; |
||||||
|
} |
||||||
|
|
||||||
|
.smart-contract-form-group-tooltip { |
||||||
|
color: $smart-contract-form-group-tooltip-color; |
||||||
|
flex-grow: 0; |
||||||
|
flex-shrink: 0; |
||||||
|
font-size: 12px; |
||||||
|
font-weight: normal; |
||||||
|
line-height: 1.5; |
||||||
|
padding: 0 30px; |
||||||
|
text-align: left; |
||||||
|
width: #{$new-smart-contract-tooltips-width}; |
||||||
|
|
||||||
|
@include media-breakpoint-down(md) { |
||||||
|
padding: 10px 0 0 0; |
||||||
|
width: auto; |
||||||
|
} |
||||||
|
|
||||||
|
&:empty { |
||||||
|
@include media-breakpoint-down(md) { |
||||||
|
display: none; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
a { |
||||||
|
color: $smart-contract-form-group-tooltip-color; |
||||||
|
text-decoration: underline; |
||||||
|
|
||||||
|
&:hover { |
||||||
|
text-decoration: none; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
.tooltip-quote { |
||||||
|
background: rgba(0, 0, 0, 0.08); |
||||||
|
border-radius: 2px; |
||||||
|
padding: 0 5px; |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
.add-contract-libraries-wrapper { |
||||||
|
border-bottom: 1px solid $base-border-color; |
||||||
|
margin-right: $new-smart-contract-center-column-margin-right + $new-smart-contract-tooltips-width; |
||||||
|
padding-bottom: 30px; |
||||||
|
|
||||||
|
@include media-breakpoint-down(md) { |
||||||
|
margin-right: 0; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
.smart-contract-form-buttons { |
||||||
|
align-items: center; |
||||||
|
border-top: 1px solid $base-border-color; |
||||||
|
display: flex; |
||||||
|
margin-right: $new-smart-contract-center-column-margin-right + $new-smart-contract-tooltips-width; |
||||||
|
margin-top: -1px; |
||||||
|
padding-top: 30px; |
||||||
|
position: relative; |
||||||
|
|
||||||
|
@include media-breakpoint-down(md) { |
||||||
|
margin-right: 0; |
||||||
|
} |
||||||
|
|
||||||
|
[class*="btn-"] { |
||||||
|
position: relative; |
||||||
|
z-index: 1; |
||||||
|
} |
||||||
|
|
||||||
|
.position-absolute { |
||||||
|
&, |
||||||
|
&:hover { |
||||||
|
opacity: 1; |
||||||
|
z-index: 12; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
.smart-contract-libraries-wrapper { |
||||||
|
display: none; |
||||||
|
padding-bottom: 30px; |
||||||
|
padding-top: 30px; |
||||||
|
} |
||||||
|
|
||||||
|
.contract-library-form-group { |
||||||
|
display: none; |
||||||
|
|
||||||
|
&.active { |
||||||
|
display: block; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,55 @@ |
|||||||
|
$radio-big-color: $primary !default; |
||||||
|
$radio-big-dimensions: 30px !default; |
||||||
|
|
||||||
|
.radio-big { |
||||||
|
align-items: center; |
||||||
|
display: flex; |
||||||
|
position: relative; |
||||||
|
|
||||||
|
input[type="radio"] { |
||||||
|
height: 100%; |
||||||
|
opacity: 0; |
||||||
|
position: absolute; |
||||||
|
width: 100%; |
||||||
|
z-index: 5; |
||||||
|
|
||||||
|
&:checked + .radio-icon::before { |
||||||
|
background-color: $radio-big-color; |
||||||
|
border-radius: 50%; |
||||||
|
content: ""; |
||||||
|
height: 12px; |
||||||
|
left: 50%; |
||||||
|
position: absolute; |
||||||
|
top: 50%; |
||||||
|
transform: translateX(-50%) translateY(-50%); |
||||||
|
width: 12px; |
||||||
|
} |
||||||
|
|
||||||
|
&:checked + .radio-icon { |
||||||
|
border-color: $radio-big-color; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
.radio-icon { |
||||||
|
border: 1px solid $base-border-color; |
||||||
|
border-radius: 50%; |
||||||
|
flex-grow: 0; |
||||||
|
flex-shrink: 0; |
||||||
|
height: $radio-big-dimensions; |
||||||
|
margin: 0 10px 0 0; |
||||||
|
position: relative; |
||||||
|
width: $radio-big-dimensions; |
||||||
|
z-index: 1; |
||||||
|
} |
||||||
|
|
||||||
|
.radio-text { |
||||||
|
color: #333; |
||||||
|
font-size: 14px; |
||||||
|
font-weight: normal; |
||||||
|
line-height: 1.2; |
||||||
|
margin: 0; |
||||||
|
position: relative; |
||||||
|
white-space: nowrap; |
||||||
|
z-index: 1; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,28 @@ |
|||||||
|
import $ from 'jquery' |
||||||
|
|
||||||
|
$(function () { |
||||||
|
$('.js-btn-add-contract-libraries').on('click', function () { |
||||||
|
$('.js-smart-contract-libraries-wrapper').show() |
||||||
|
$(this).hide() |
||||||
|
}) |
||||||
|
|
||||||
|
$('.js-smart-contract-form-reset').on('click', function () { |
||||||
|
$('.js-contract-library-form-group').removeClass('active') |
||||||
|
$('.js-contract-library-form-group').first().addClass('active') |
||||||
|
$('.js-smart-contract-libraries-wrapper').hide() |
||||||
|
$('.js-btn-add-contract-libraries').show() |
||||||
|
$('.js-add-contract-library-wrapper').show() |
||||||
|
}) |
||||||
|
|
||||||
|
$('.js-btn-add-contract-library').on('click', function () { |
||||||
|
let nextContractLibrary = $('.js-contract-library-form-group.active').next('.js-contract-library-form-group') |
||||||
|
|
||||||
|
if (nextContractLibrary) { |
||||||
|
nextContractLibrary.addClass('active') |
||||||
|
} |
||||||
|
|
||||||
|
if ($('.js-contract-library-form-group.active').length === $('.js-contract-library-form-group').length) { |
||||||
|
$('.js-add-contract-library-wrapper').hide() |
||||||
|
} |
||||||
|
}) |
||||||
|
}) |
After Width: | Height: | Size: 20 KiB |
After Width: | Height: | Size: 43 KiB |
After Width: | Height: | Size: 20 KiB |
After Width: | Height: | Size: 43 KiB |
After Width: | Height: | Size: 20 KiB |
After Width: | Height: | Size: 43 KiB |
After Width: | Height: | Size: 20 KiB |
After Width: | Height: | Size: 42 KiB |
After Width: | Height: | Size: 19 KiB |
After Width: | Height: | Size: 42 KiB |
After Width: | Height: | Size: 19 KiB |
After Width: | Height: | Size: 42 KiB |
After Width: | Height: | Size: 20 KiB |
After Width: | Height: | Size: 43 KiB |
After Width: | Height: | Size: 20 KiB |
After Width: | Height: | Size: 43 KiB |
After Width: | Height: | Size: 20 KiB |
After Width: | Height: | Size: 42 KiB |
@ -1,141 +1,256 @@ |
|||||||
<section class="container"> |
<section class="container new-smart-contract-container"> |
||||||
<div class="card"> |
<div class="new-smart-contract-form"> |
||||||
<div class="card-body"> |
<h1 class="smart-contract-title"><%= gettext "New Smart Contract Verification" %></h1> |
||||||
|
|
||||||
<h1 class="card-title"><%= gettext "New Smart Contract" %></h1> |
|
||||||
|
|
||||||
<%= form_for @changeset, |
<%= form_for @changeset, |
||||||
address_verify_contract_path(@conn, :create, @conn.params["address_id"]), |
address_verify_contract_path(@conn, :create, @conn.params["address_id"]), |
||||||
[], |
[], |
||||||
fn f -> %> |
fn f -> %> |
||||||
|
|
||||||
<div class="form-group"> |
<div class="smart-contract-form-group"> |
||||||
|
<div class="smart-contract-form-group-inner-wrapper"> |
||||||
<%= label f, :address_hash, gettext("Contract Address") %> |
<%= label f, :address_hash, gettext("Contract Address") %> |
||||||
<%= text_input f, :address_hash, class: "form-control", "aria-describedby": "contract-address-help-block", readonly: true %> |
<div class="center-column"> |
||||||
<%= error_tag f, :address_hash, id: "contract-address-help-block", class: "text-danger" %> |
<%= text_input f, :address_hash, class: "form-control border-rounded", "aria-describedby": "contract-address-help-block", readonly: true %> |
||||||
|
<%= error_tag f, :address_hash, id: "contract-address-help-block", class: "text-danger form-error" %> |
||||||
|
</div> |
||||||
|
<div class="smart-contract-form-group-tooltip">The 0x address supplied on contract creation.</div> |
||||||
|
</div> |
||||||
</div> |
</div> |
||||||
|
|
||||||
<div class="form-group"> |
<div class="smart-contract-form-group"> |
||||||
|
<div class="smart-contract-form-group-inner-wrapper"> |
||||||
<%= label f, :name, gettext("Contract Name") %> |
<%= label f, :name, gettext("Contract Name") %> |
||||||
<%= text_input f, :name, class: "form-control", "aria-describedby": "contract-name-help-block", "data-test": "contract_name" %> |
<div class="center-column"> |
||||||
<%= error_tag f, :name, id: "contract-name-help-block", class: "text-danger" %> |
<%= text_input f, :name, class: "form-control border-rounded", "aria-describedby": "contract-name-help-block", "data-test": "contract_name" %> |
||||||
|
<%= error_tag f, :name, id: "contract-name-help-block", class: "text-danger form-error" %> |
||||||
|
</div> |
||||||
|
<div class="smart-contract-form-group-tooltip">Must match the name specified in the code. For example, in <span class="tooltip-quote">contract MyContract {..}</span> <strong>MyContract</strong> is the contract name.</div> |
||||||
|
</div> |
||||||
</div> |
</div> |
||||||
|
|
||||||
<div class="form-group mb-4"> |
<div class="smart-contract-form-group"> |
||||||
|
<div class="smart-contract-form-group-inner-wrapper"> |
||||||
<%= label f, :compiler_version, gettext("Compiler") %> |
<%= label f, :compiler_version, gettext("Compiler") %> |
||||||
<%= select f, :compiler_version, @compiler_versions, class: "form-control", selected: "latest", "aria-describedby": "compiler-help-block" %> |
<div class="center-column"> |
||||||
<%= error_tag f, :compiler_version, id: "compiler-help-block", class: "text-danger" %> |
<%= select f, :compiler_version, @compiler_versions, class: "form-control border-rounded", selected: "latest", "aria-describedby": "compiler-help-block" %> |
||||||
|
<%= error_tag f, :compiler_version, id: "compiler-help-block", class: "text-danger form-error" %> |
||||||
|
</div> |
||||||
|
<div class="smart-contract-form-group-tooltip">The compiler version is specified in <span class="tooltip-quote">pragma solidity X.X.X</span>. Use the compiler version rather than the nightly build. If using the Solidity compiler, run <span class="tooltip-quote">solc —version</span> to check.</div> |
||||||
|
</div> |
||||||
</div> |
</div> |
||||||
|
|
||||||
<div class="form-group"> |
<div class="smart-contract-form-group"> |
||||||
|
<div class="smart-contract-form-group-inner-wrapper"> |
||||||
<%= label :evm_version, :evm_version, gettext("EVM Version") %> |
<%= label :evm_version, :evm_version, gettext("EVM Version") %> |
||||||
<%= select :evm_version, :evm_version, @evm_versions, class: "form-control", selected: "petersburg", "aria-describedby": "evm-version-help-block" %> |
<div class="center-column"> |
||||||
|
<%= select :evm_version, :evm_version, @evm_versions, class: "form-control border-rounded", selected: "petersburg", "aria-describedby": "evm-version-help-block" %> |
||||||
|
</div> |
||||||
|
<div class="smart-contract-form-group-tooltip">The EVM version the contract is written for. If the bytecode does not match the version, we try to verify using the latest EVM version. <a href="https://forum.poa.network/t/smart-contract-verification-evm-version-details/2318" target="_blank">EVM version details</a>.</div> |
||||||
|
</div> |
||||||
</div> |
</div> |
||||||
|
|
||||||
<div class="form-group mb-4"> |
<div class="smart-contract-form-group"> |
||||||
|
<div class="smart-contract-form-group-inner-wrapper"> |
||||||
<%= label f, "Optimization" %> |
<%= label f, "Optimization" %> |
||||||
|
<div class="center-column"> |
||||||
<div class="form-check mb-2"> |
<div class="form-radios-group"> |
||||||
<%= radio_button f, :optimization, false, checked: true, class: "form-check-input", "aria-describedby": "optimization-help-block" %> |
<div class="radio-big"> |
||||||
<%= label :smart_contract_optimization, :false, gettext("No"), class: "form-check-label" %> |
<%= radio_button f, :optimization, false, checked: true, class: "form-check-input" %> |
||||||
|
<div class="radio-icon"></div> |
||||||
|
<%= label :smart_contract_optimization, :false, gettext("No"), class: "radio-text" %> |
||||||
</div> |
</div> |
||||||
|
<div class="radio-big"> |
||||||
<div class="form-check"> |
|
||||||
<%= radio_button f, :optimization, true, class: "form-check-input", "aria-describedby": "optimization-help-block" %> |
<%= radio_button f, :optimization, true, class: "form-check-input", "aria-describedby": "optimization-help-block" %> |
||||||
<%= label :smart_contract_optimization, :true, gettext("Yes"), class: "form-check-label" %> |
<div class="radio-icon"></div> |
||||||
|
<%= label :smart_contract_optimization, :true, gettext("Yes"), class: "radio-text" %> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
<%= error_tag f, :optimization, id: "optimization-help-block", class: "text-danger form-error" %> |
||||||
|
</div> |
||||||
|
<div class="smart-contract-form-group-tooltip">If you enabled optimization during compilation, select yes.</div> |
||||||
</div> |
</div> |
||||||
|
|
||||||
<%= error_tag f, :optimization, id: "optimization-help-block", class: "text-danger" %> |
|
||||||
</div> |
</div> |
||||||
|
|
||||||
<div class="form-group"> |
<div class="smart-contract-form-group"> |
||||||
|
<div class="smart-contract-form-group-inner-wrapper"> |
||||||
<%= label f, :name, gettext("Optimization runs") %> |
<%= label f, :name, gettext("Optimization runs") %> |
||||||
<%= text_input :optimization, :runs, value: 200, class: "form-control", "aria-describedby": "optimization-runs-help-block", "data-test": "optimization-runs" %> |
<div class="center-column"> |
||||||
|
<%= text_input :optimization, :runs, value: 200, class: "form-control border-rounded", "aria-describedby": "optimization-runs-help-block", "data-test": "optimization-runs" %> |
||||||
|
</div> |
||||||
|
<div class="smart-contract-form-group-tooltip"></div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
|
||||||
|
<div class="smart-contract-form-group"> |
||||||
|
<div class="smart-contract-form-group-inner-wrapper"> |
||||||
|
<%= label f, :contract_source_code, gettext("Enter the Solidity Contract Code") %> |
||||||
|
<div class="center-column"> |
||||||
|
<%= textarea f, :contract_source_code, class: "form-control border-rounded monospace", rows: 3, "aria-describedby": "contract-source-code-help-block" %> |
||||||
|
<%= error_tag f, :contract_source_code, id: "contract-source-code-help-block", class: "text-danger form-error", "data-test": "contract-source-code-error" %> |
||||||
|
</div> |
||||||
|
<div class="smart-contract-form-group-tooltip">We recommend using flattened code. This is necessary if your code utilizes a library or inherits dependencies. Use the <a href="https://github.com/poanetwork/solidity-flattener" target="_blank">POA solidity flattener or the <a href="https://www.npmjs.com/package/truffle-flattener" target="_blank">truffle flattener</a>.</div> |
||||||
|
</div> |
||||||
</div> |
</div> |
||||||
|
|
||||||
<div class="form-group mb-4"> |
<div class="smart-contract-form-group"> |
||||||
<%= label f, :contract_source_code, gettext("Enter the Solidity Contract Code below") %> |
<div class="smart-contract-form-group-inner-wrapper"> |
||||||
<%= textarea f, :contract_source_code, class: "form-control monospace", rows: 3, "aria-describedby": "contract-source-code-help-block" %> |
<%= label f, :contructor_arguments, gettext("ABI-encoded Constructor Arguments (if required by the contract)") %> |
||||||
<%= error_tag f, :contract_source_code, id: "contract-source-code-help-block", class: "text-danger", "data-test": "contract-source-code-error" %> |
<div class="center-column"> |
||||||
|
<%= textarea f, :constructor_arguments, class: "form-control border-rounded monospace", rows: 3, "aria-describedby": "contract-constructor-arguments-help-block" %> |
||||||
|
<%= error_tag f, :constructor_arguments, id: "contract-constructor-arguments-help-block", class: "text-danger form-error", "data-test": "contract-constructor-arguments-error" %> |
||||||
|
</div> |
||||||
|
<div class="smart-contract-form-group-tooltip">Add arguments in <a href="https://solidity.readthedocs.io/en/develop/abi-spec.html" target="_blank">ABI hex encoded form</a>. Constructor arguments are written right to left, and will be found at the end of the input created bytecode. They may also be <a href="https://abi.hashex.org/" target="_blank">parsed here.</a></div> |
||||||
|
</div> |
||||||
</div> |
</div> |
||||||
|
|
||||||
<div class="form-group mb-4"> |
<div class="add-contract-libraries-wrapper"> |
||||||
<%= label f, :contructor_arguments, gettext("Enter constructor arguments if the contract had any") %> |
<span class="btn-line js-btn-add-contract-libraries">Add Contract Libraries</span> |
||||||
<%= textarea f, :constructor_arguments, class: "form-control monospace", rows: 3, "aria-describedby": "contract-constructor-arguments-help-block" %> |
|
||||||
<%= error_tag f, :constructor_arguments, id: "contract-constructor-arguments-help-block", class: "text-danger", "data-test": "contract-constructor-arguments-error" %> |
|
||||||
</div> |
</div> |
||||||
|
|
||||||
<h3 class="card-title"><%= gettext "Contract Libraries" %></h3> |
<div class="smart-contract-libraries-wrapper js-smart-contract-libraries-wrapper"> |
||||||
|
<h2 class="smart-contract-title margin-bottom-md"><%= gettext "Contract Libraries" %></h2> |
||||||
|
|
||||||
<div class="form-group"> |
<div class="contract-library-form-group js-contract-library-form-group active"> |
||||||
<%= label :external_libraries, :library1, gettext("1 Library Name") %> |
<div class="smart-contract-form-group"> |
||||||
<%= text_input :external_libraries, :library1_name, class: "form-control", "aria-describedby": "contract-name-help-block" %> |
<div class="smart-contract-form-group-inner-wrapper"> |
||||||
|
<%= label :external_libraries, :library1, gettext("Library Name") %> |
||||||
|
<div class="center-column"> |
||||||
|
<%= text_input :external_libraries, :library1_name, class: "form-control border-rounded", "aria-describedby": "contract-name-help-block" %> |
||||||
|
</div> |
||||||
|
<div class="smart-contract-form-group-tooltip">A library name called in the .sol file. Multiple libraries (up to 5) may be added for each contract. Click the Add Library button to add an additional one.</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
|
||||||
|
<div class="smart-contract-form-group"> |
||||||
|
<div class="smart-contract-form-group-inner-wrapper"> |
||||||
|
<%= label :external_libraries, :library1, gettext("Library Address") %> |
||||||
|
<div class="center-column"> |
||||||
|
<%= text_input :external_libraries, :library1_address, class: "form-control border-rounded", "aria-describedby": "contract-name-help-block" %> |
||||||
|
</div> |
||||||
|
<div class="smart-contract-form-group-tooltip">The 0x library address. This can be found in the generated json file or Truffle output (if using truffle).</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
</div> |
</div> |
||||||
|
|
||||||
<div class="form-group"> |
<div class="contract-library-form-group js-contract-library-form-group"> |
||||||
<%= label :external_libraries, :library1, gettext("1 Library Address") %> |
<div class="smart-contract-form-group"> |
||||||
<%= text_input :external_libraries, :library1_address, class: "form-control", "aria-describedby": "contract-name-help-block" %> |
<div class="smart-contract-form-group-inner-wrapper"> |
||||||
|
<%= label :external_libraries, :library2, gettext("Library Name") %> |
||||||
|
<div class="center-column"> |
||||||
|
<%= text_input :external_libraries, :library2_name, class: "form-control border-rounded", "aria-describedby": "contract-name-help-block" %> |
||||||
|
</div> |
||||||
|
<div class="smart-contract-form-group-tooltip"></div> |
||||||
|
</div> |
||||||
</div> |
</div> |
||||||
|
|
||||||
<div class="form-group"> |
<div class="smart-contract-form-group"> |
||||||
<%= label :external_libraries, :library2, gettext("2 Library Name") %> |
<div class="smart-contract-form-group-inner-wrapper"> |
||||||
<%= text_input :external_libraries, :library2_name, class: "form-control", "aria-describedby": "contract-name-help-block" %> |
<%= label :external_libraries, :library2, gettext("Library Address") %> |
||||||
|
<div class="center-column"> |
||||||
|
<%= text_input :external_libraries, :library2_address, class: "form-control border-rounded", "aria-describedby": "contract-name-help-block" %> |
||||||
|
</div> |
||||||
|
<div class="smart-contract-form-group-tooltip"></div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
</div> |
</div> |
||||||
|
|
||||||
<div class="form-group"> |
<div class="contract-library-form-group js-contract-library-form-group"> |
||||||
<%= label :external_libraries, :library2, gettext("2 Library Address") %> |
<div class="smart-contract-form-group"> |
||||||
<%= text_input :external_libraries, :library2_address, class: "form-control", "aria-describedby": "contract-name-help-block" %> |
<div class="smart-contract-form-group-inner-wrapper"> |
||||||
|
<%= label :external_libraries, :library3, gettext("Library Name") %> |
||||||
|
<div class="center-column"> |
||||||
|
<%= text_input :external_libraries, :library3_name, class: "form-control border-rounded", "aria-describedby": "contract-name-help-block" %> |
||||||
|
</div> |
||||||
|
<div class="smart-contract-form-group-tooltip"></div> |
||||||
|
</div> |
||||||
</div> |
</div> |
||||||
|
|
||||||
<div class="form-group"> |
<div class="smart-contract-form-group"> |
||||||
<%= label :external_libraries, :library3, gettext("3 Library Name") %> |
<div class="smart-contract-form-group-inner-wrapper"> |
||||||
<%= text_input :external_libraries, :library3_name, class: "form-control", "aria-describedby": "contract-name-help-block" %> |
<%= label :external_libraries, :library3, gettext("Library Address") %> |
||||||
|
<div class="center-column"> |
||||||
|
<%= text_input :external_libraries, :library3_address, class: "form-control border-rounded", "aria-describedby": "contract-name-help-block" %> |
||||||
|
</div> |
||||||
|
<div class="smart-contract-form-group-tooltip"></div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
</div> |
</div> |
||||||
|
|
||||||
<div class="form-group"> |
<div class="contract-library-form-group js-contract-library-form-group"> |
||||||
<%= label :external_libraries, :library3, gettext("3 Library Address") %> |
<div class="smart-contract-form-group"> |
||||||
<%= text_input :external_libraries, :library3_address, class: "form-control", "aria-describedby": "contract-name-help-block" %> |
<div class="smart-contract-form-group-inner-wrapper"> |
||||||
|
<%= label :external_libraries, :library4, gettext("Library Name") %> |
||||||
|
<div class="center-column"> |
||||||
|
<%= text_input :external_libraries, :library4_name, class: "form-control border-rounded", "aria-describedby": "contract-name-help-block" %> |
||||||
|
</div> |
||||||
|
<div class="smart-contract-form-group-tooltip"></div> |
||||||
|
</div> |
||||||
</div> |
</div> |
||||||
|
|
||||||
<div class="form-group"> |
<div class="smart-contract-form-group"> |
||||||
<%= label :external_libraries, :library4, gettext("4 Library Name") %> |
<div class="smart-contract-form-group-inner-wrapper"> |
||||||
<%= text_input :external_libraries, :library4_name, class: "form-control", "aria-describedby": "contract-name-help-block" %> |
<%= label :external_libraries, :library4, gettext("Library Address") %> |
||||||
|
<div class="center-column"> |
||||||
|
<%= text_input :external_libraries, :library4_address, class: "form-control border-rounded", "aria-describedby": "contract-name-help-block" %> |
||||||
|
</div> |
||||||
|
<div class="smart-contract-form-group-tooltip"></div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
</div> |
</div> |
||||||
|
|
||||||
<div class="form-group"> |
<div class="contract-library-form-group js-contract-library-form-group"> |
||||||
<%= label :external_libraries, :library4, gettext("4 Library Address") %> |
<div class="smart-contract-form-group"> |
||||||
<%= text_input :external_libraries, :library4_address, class: "form-control", "aria-describedby": "contract-name-help-block" %> |
<div class="smart-contract-form-group-inner-wrapper"> |
||||||
|
<%= label :external_libraries, :library5, gettext("Library Name") %> |
||||||
|
<div class="center-column"> |
||||||
|
<%= text_input :external_libraries, :library5_name, class: "form-control border-rounded", "aria-describedby": "contract-name-help-block" %> |
||||||
|
</div> |
||||||
|
<div class="smart-contract-form-group-tooltip"></div> |
||||||
|
</div> |
||||||
</div> |
</div> |
||||||
|
|
||||||
<div class="form-group"> |
<div class="smart-contract-form-group"> |
||||||
<%= label :external_libraries, :library5, gettext("5 Library Name") %> |
<div class="smart-contract-form-group-inner-wrapper"> |
||||||
<%= text_input :external_libraries, :library5_name, class: "form-control", "aria-describedby": "contract-name-help-block" %> |
<%= label f, :library5, gettext("Library Address") %> |
||||||
|
<div class="center-column"> |
||||||
|
<%= text_input f, :library5_address, class: "form-control border-rounded", "aria-describedby": "contract-name-help-block" %> |
||||||
|
</div> |
||||||
|
<div class="smart-contract-form-group-tooltip"></div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
</div> |
</div> |
||||||
|
|
||||||
<div class="form-group"> |
<div class="add-contract-library-wrapper js-add-contract-library-wrapper"> |
||||||
<%= label f, :library5, gettext("5 Library Address") %> |
<span class="btn-line js-btn-add-contract-library">Add Library</span> |
||||||
<%= text_input f, :library5_address, class: "form-control", "aria-describedby": "contract-name-help-block" %> |
</div> |
||||||
</div> |
</div> |
||||||
|
|
||||||
|
<div class="smart-contract-form-buttons"> |
||||||
<button |
<button |
||||||
type="button" |
class="position-absolute btn-full-primary d-none mr-2" |
||||||
name="button" |
|
||||||
id="loading" |
|
||||||
disabled="true" |
disabled="true" |
||||||
class="d-none px-4 position-absolute button button-primary button-sm mr-2"> |
id="loading" |
||||||
|
name="button" |
||||||
|
type="button" |
||||||
|
> |
||||||
<span class="loading-spinner-small mr-2"> |
<span class="loading-spinner-small mr-2"> |
||||||
<span class="loading-spinner-block-1"></span> |
<span class="loading-spinner-block-1"></span> |
||||||
<span class="loading-spinner-block-2"></span> |
<span class="loading-spinner-block-2"></span> |
||||||
</span> |
</span> |
||||||
<%= gettext("Loading....") %> |
<%= gettext("Loading....") %> |
||||||
</button> |
</button> |
||||||
<%= submit gettext("Verify & publish"), class: "button button-primary button-sm mr-2", "data-loading": "animation" %> |
<%= submit gettext("Verify & publish"), class: "btn-full-primary mr-2", "data-loading": "animation" %> |
||||||
<%= reset gettext("Reset"), class: "button button-secondary button-sm mr-2" %> |
<%= reset gettext("Reset"), class: "btn-line mr-2 js-smart-contract-form-reset" %> |
||||||
<%= link( |
<%= |
||||||
|
link( |
||||||
gettext("Cancel"), |
gettext("Cancel"), |
||||||
to: address_contract_path(@conn, :index, @conn.params["address_id"]), |
class: "btn-no-border", |
||||||
class: "button button-sm") %> |
to: address_contract_path(@conn, :index, @conn.params["address_id"]) |
||||||
<% end %> |
) |
||||||
|
%> |
||||||
</div> |
</div> |
||||||
|
<% end %> |
||||||
</div> |
</div> |
||||||
|
|
||||||
</section> |
</section> |
||||||
|
@ -0,0 +1,12 @@ |
|||||||
|
<section class="container"> |
||||||
|
<div class="block-not-found"> |
||||||
|
<div class="block-not-found-img"> |
||||||
|
<img alt="Page Not Found" src="/images/errors-img/poa-page-not-found.png" srcset="/images/errors-img/poa-page-not-found@2x.png 2x"> |
||||||
|
</div> |
||||||
|
<div class="block-not-found-content"> |
||||||
|
<h1 class="card-title error-title">Lorem Ipsum Dolor</h1> |
||||||
|
<p class="error-descr">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua</p> |
||||||
|
<a class="error-btn btn-line" href="/">Back Home</a> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</section> |