@ -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 { |
||||
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"> |
||||
<div class="card"> |
||||
<div class="card-body"> |
||||
|
||||
<h1 class="card-title"><%= gettext "New Smart Contract" %></h1> |
||||
<section class="container new-smart-contract-container"> |
||||
<div class="new-smart-contract-form"> |
||||
<h1 class="smart-contract-title"><%= gettext "New Smart Contract Verification" %></h1> |
||||
|
||||
<%= form_for @changeset, |
||||
address_verify_contract_path(@conn, :create, @conn.params["address_id"]), |
||||
[], |
||||
fn f -> %> |
||||
|
||||
<div class="form-group"> |
||||
<%= label f, :address_hash, gettext("Contract Address") %> |
||||
<%= text_input f, :address_hash, class: "form-control", "aria-describedby": "contract-address-help-block", readonly: true %> |
||||
<%= error_tag f, :address_hash, id: "contract-address-help-block", class: "text-danger" %> |
||||
<div class="smart-contract-form-group"> |
||||
<div class="smart-contract-form-group-inner-wrapper"> |
||||
<%= label f, :address_hash, gettext("Contract Address") %> |
||||
<div class="center-column"> |
||||
<%= 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 class="form-group"> |
||||
<%= label f, :name, gettext("Contract Name") %> |
||||
<%= text_input f, :name, class: "form-control", "aria-describedby": "contract-name-help-block", "data-test": "contract_name" %> |
||||
<%= error_tag f, :name, id: "contract-name-help-block", class: "text-danger" %> |
||||
<div class="smart-contract-form-group"> |
||||
<div class="smart-contract-form-group-inner-wrapper"> |
||||
<%= label f, :name, gettext("Contract Name") %> |
||||
<div class="center-column"> |
||||
<%= 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 class="form-group mb-4"> |
||||
<%= label f, :compiler_version, gettext("Compiler") %> |
||||
<%= select f, :compiler_version, @compiler_versions, class: "form-control", selected: "latest", "aria-describedby": "compiler-help-block" %> |
||||
<%= error_tag f, :compiler_version, id: "compiler-help-block", class: "text-danger" %> |
||||
<div class="smart-contract-form-group"> |
||||
<div class="smart-contract-form-group-inner-wrapper"> |
||||
<%= label f, :compiler_version, gettext("Compiler") %> |
||||
<div class="center-column"> |
||||
<%= 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 class="form-group"> |
||||
<%= 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="smart-contract-form-group"> |
||||
<div class="smart-contract-form-group-inner-wrapper"> |
||||
<%= label :evm_version, :evm_version, gettext("EVM Version") %> |
||||
<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 class="form-group mb-4"> |
||||
<%= label f, "Optimization" %> |
||||
|
||||
<div class="form-check mb-2"> |
||||
<%= radio_button f, :optimization, false, checked: true, class: "form-check-input", "aria-describedby": "optimization-help-block" %> |
||||
<%= label :smart_contract_optimization, :false, gettext("No"), class: "form-check-label" %> |
||||
<div class="smart-contract-form-group"> |
||||
<div class="smart-contract-form-group-inner-wrapper"> |
||||
<%= label f, "Optimization" %> |
||||
<div class="center-column"> |
||||
<div class="form-radios-group"> |
||||
<div class="radio-big"> |
||||
<%= 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 class="radio-big"> |
||||
<%= radio_button f, :optimization, true, class: "form-check-input", "aria-describedby": "optimization-help-block" %> |
||||
<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> |
||||
|
||||
<div class="form-check"> |
||||
<%= 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="smart-contract-form-group"> |
||||
<div class="smart-contract-form-group-inner-wrapper"> |
||||
<%= label f, :name, gettext("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> |
||||
|
||||
<%= error_tag f, :optimization, id: "optimization-help-block", class: "text-danger" %> |
||||
</div> |
||||
|
||||
<div class="form-group"> |
||||
<%= 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="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 class="form-group mb-4"> |
||||
<%= label f, :contract_source_code, gettext("Enter the Solidity Contract Code below") %> |
||||
<%= textarea f, :contract_source_code, class: "form-control 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", "data-test": "contract-source-code-error" %> |
||||
<div class="smart-contract-form-group"> |
||||
<div class="smart-contract-form-group-inner-wrapper"> |
||||
<%= label f, :contructor_arguments, gettext("ABI-encoded Constructor Arguments (if required by the contract)") %> |
||||
<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 class="form-group mb-4"> |
||||
<%= label f, :contructor_arguments, gettext("Enter constructor arguments if the contract had any") %> |
||||
<%= 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 class="add-contract-libraries-wrapper"> |
||||
<span class="btn-line js-btn-add-contract-libraries">Add Contract Libraries</span> |
||||
</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"> |
||||
<%= label :external_libraries, :library1, gettext("1 Library Name") %> |
||||
<%= text_input :external_libraries, :library1_name, class: "form-control", "aria-describedby": "contract-name-help-block" %> |
||||
</div> |
||||
<div class="contract-library-form-group js-contract-library-form-group active"> |
||||
<div class="smart-contract-form-group"> |
||||
<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="form-group"> |
||||
<%= label :external_libraries, :library1, gettext("1 Library Address") %> |
||||
<%= text_input :external_libraries, :library1_address, class: "form-control", "aria-describedby": "contract-name-help-block" %> |
||||
</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 class="form-group"> |
||||
<%= label :external_libraries, :library2, gettext("2 Library Name") %> |
||||
<%= text_input :external_libraries, :library2_name, class: "form-control", "aria-describedby": "contract-name-help-block" %> |
||||
</div> |
||||
<div class="contract-library-form-group js-contract-library-form-group"> |
||||
<div class="smart-contract-form-group"> |
||||
<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 class="form-group"> |
||||
<%= label :external_libraries, :library2, gettext("2 Library Address") %> |
||||
<%= text_input :external_libraries, :library2_address, class: "form-control", "aria-describedby": "contract-name-help-block" %> |
||||
</div> |
||||
<div class="smart-contract-form-group"> |
||||
<div class="smart-contract-form-group-inner-wrapper"> |
||||
<%= 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 class="form-group"> |
||||
<%= label :external_libraries, :library3, gettext("3 Library Name") %> |
||||
<%= text_input :external_libraries, :library3_name, class: "form-control", "aria-describedby": "contract-name-help-block" %> |
||||
</div> |
||||
<div class="contract-library-form-group js-contract-library-form-group"> |
||||
<div class="smart-contract-form-group"> |
||||
<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 class="form-group"> |
||||
<%= label :external_libraries, :library3, gettext("3 Library Address") %> |
||||
<%= text_input :external_libraries, :library3_address, class: "form-control", "aria-describedby": "contract-name-help-block" %> |
||||
</div> |
||||
<div class="smart-contract-form-group"> |
||||
<div class="smart-contract-form-group-inner-wrapper"> |
||||
<%= 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 class="form-group"> |
||||
<%= label :external_libraries, :library4, gettext("4 Library Name") %> |
||||
<%= text_input :external_libraries, :library4_name, class: "form-control", "aria-describedby": "contract-name-help-block" %> |
||||
</div> |
||||
<div class="contract-library-form-group js-contract-library-form-group"> |
||||
<div class="smart-contract-form-group"> |
||||
<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 class="form-group"> |
||||
<%= label :external_libraries, :library4, gettext("4 Library Address") %> |
||||
<%= text_input :external_libraries, :library4_address, class: "form-control", "aria-describedby": "contract-name-help-block" %> |
||||
</div> |
||||
<div class="smart-contract-form-group"> |
||||
<div class="smart-contract-form-group-inner-wrapper"> |
||||
<%= 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 class="form-group"> |
||||
<%= label :external_libraries, :library5, gettext("5 Library Name") %> |
||||
<%= text_input :external_libraries, :library5_name, class: "form-control", "aria-describedby": "contract-name-help-block" %> |
||||
</div> |
||||
<div class="contract-library-form-group js-contract-library-form-group"> |
||||
<div class="smart-contract-form-group"> |
||||
<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 class="smart-contract-form-group"> |
||||
<div class="smart-contract-form-group-inner-wrapper"> |
||||
<%= 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 class="form-group"> |
||||
<%= label f, :library5, gettext("5 Library Address") %> |
||||
<%= text_input f, :library5_address, class: "form-control", "aria-describedby": "contract-name-help-block" %> |
||||
<div class="add-contract-library-wrapper js-add-contract-library-wrapper"> |
||||
<span class="btn-line js-btn-add-contract-library">Add Library</span> |
||||
</div> |
||||
</div> |
||||
|
||||
<button |
||||
type="button" |
||||
name="button" |
||||
id="loading" |
||||
disabled="true" |
||||
class="d-none px-4 position-absolute button button-primary button-sm mr-2"> |
||||
<span class="loading-spinner-small mr-2"> |
||||
<span class="loading-spinner-block-1"></span> |
||||
<span class="loading-spinner-block-2"></span> |
||||
</span> |
||||
<%= gettext("Loading....") %> |
||||
</button> |
||||
<%= submit gettext("Verify & publish"), class: "button button-primary button-sm mr-2", "data-loading": "animation" %> |
||||
<%= reset gettext("Reset"), class: "button button-secondary button-sm mr-2" %> |
||||
<%= link( |
||||
gettext("Cancel"), |
||||
to: address_contract_path(@conn, :index, @conn.params["address_id"]), |
||||
class: "button button-sm") %> |
||||
<div class="smart-contract-form-buttons"> |
||||
<button |
||||
class="position-absolute btn-full-primary d-none mr-2" |
||||
disabled="true" |
||||
id="loading" |
||||
name="button" |
||||
type="button" |
||||
> |
||||
<span class="loading-spinner-small mr-2"> |
||||
<span class="loading-spinner-block-1"></span> |
||||
<span class="loading-spinner-block-2"></span> |
||||
</span> |
||||
<%= gettext("Loading....") %> |
||||
</button> |
||||
<%= submit gettext("Verify & publish"), class: "btn-full-primary mr-2", "data-loading": "animation" %> |
||||
<%= reset gettext("Reset"), class: "btn-line mr-2 js-smart-contract-form-reset" %> |
||||
<%= |
||||
link( |
||||
gettext("Cancel"), |
||||
class: "btn-no-border", |
||||
to: address_contract_path(@conn, :index, @conn.params["address_id"]) |
||||
) |
||||
%> |
||||
</div> |
||||
<% end %> |
||||
</div> |
||||
</div> |
||||
|
||||
</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> |