-
Notifications
You must be signed in to change notification settings - Fork 1.7k
Add a Playground for the UI Components #4301
Conversation
Feature request: Generate a test case from the example! |
NB: could use https://github.com/terpiljenya/import-glob to automatically import all |
left: 0; | ||
padding: 1em; | ||
display: flex; | ||
flex-direction: column; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Alphabetical order for properties. (Applies to the rest of the file as well)
overflow: auto; | ||
padding: 0.5em; | ||
background-color: #002b36; | ||
color: #93a1a1; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Since this is a new file, I would define the colors as variables on top of the file for easier extraction, i.e.
$codeBackground: #002b36;
$codeColor: #93a1a1;
...
.code {
background-color: $codeBackground;
color: $codeColor;
...
}
import { observer } from 'mobx-react'; | ||
import React, { Component } from 'react'; | ||
|
||
import PlaygroundStore from './store'; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Move these 2 beneath the ui-wide imports.
- external libraries
- imports with ~ (ui-wide)
- local imports with .
|
||
store = PlaygroundStore.get(); | ||
|
||
render () { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I would add at least a smoketest for any new components (i.e. it does render). While this is not meant for production, good habit to form and even the basic test does pick up some issues.
|
||
let instance = null; | ||
|
||
export default class PlaygroundStore { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
As per the component comment, I would add tests for the store - for the most part they are being tested (the older ones are in the process of acquiring tests where we have not been vigilant in the past)
]; | ||
|
||
if (process.env.NODE_ENV !== 'production') { | ||
const Playground = require('./playground').default; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Just add a TODO here - when Babel finally supports non-top-level imports, should probably be replaced.
</PlaygroundExample> | ||
|
||
<PlaygroundExample name='Simple Currency Symbol'> | ||
<CurrencySymbol |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I know it is an example, in this case however the example adds nothing the component test hasn't already done. (Keep it though, it sets the tone - in this case the component is just that simple and we must guard against overkill... for the time being, probably not needed, who knows where it ends up at.)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Well the whole purpose of having example is to be able to see what it looks like in addition than testing that it works correctly. So for this one it's a bit obvious, but still has another purpose than the tests
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
100% agreed on the final purpose - this one is funny since it is just a span. However, think the example could add value going forward, although maybe not quite initially. (Which is the function of the actual component implementation, not the intent of the example)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yep, I just picked this one because it's one component that isn't used in the UI
function mapStateToProps (state) { | ||
const { netChain } = state.nodeStatus; | ||
let netSymbol; | ||
renderSymbol () { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Since the method was added, the test needs to be updated to cater for this.
<PlaygroundExample name='Simple QRCode with margin'> | ||
<QrCode | ||
margin={ 10 } | ||
value='this is a test' |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Would make real values in here - so it can be compared to both ETH & BTC addresses. (It is more important to see that the output matches what is available elsewhere)
@@ -0,0 +1,17 @@ | |||
// Copyright 2015, 2016 Parity Technologies (UK) Ltd. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
2015-2017
(as per updates)
@@ -0,0 +1,87 @@ | |||
/* Copyright 2015, 2016 Parity Technologies (UK) Ltd. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
2015-2017
(as per updates)
@@ -0,0 +1,88 @@ | |||
// Copyright 2015, 2016 Parity Technologies (UK) Ltd. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
2015-2017
(as per updates)
@@ -0,0 +1,55 @@ | |||
// Copyright 2015, 2016 Parity Technologies (UK) Ltd. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
2015-2017
(as per updates)
@@ -0,0 +1,51 @@ | |||
// Copyright 2015, 2016 Parity Technologies (UK) Ltd. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
2015-2017
(as per updates)
@@ -0,0 +1,51 @@ | |||
// Copyright 2015, 2016 Parity Technologies (UK) Ltd. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
2015-2017
(as per updates)
@@ -0,0 +1,49 @@ | |||
// Copyright 2015, 2016 Parity Technologies (UK) Ltd. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
2015-2017
(as per updates)
@@ -0,0 +1,94 @@ | |||
// Copyright 2015, 2016 Parity Technologies (UK) Ltd. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
2015-2017
(as per updates, I've done the remainder - this left here as a reminder)
Still some unsorted properties remaining, but can fix that if I touch this component as part of other work and it is non-critical. |
* Playground // WIP * Linting * Add Examples with code * CSS Linting * Linting * Add Connected Currency Symbol * 2015-2017 * 2015-2017 * 2015-2017 * 2015-2017 * 2015-2017 * 2015-2017 * 2015-2017 * Added `renderSymbol` tests * PR grumbles * Add Eth and Btc QRCode examples * 2015-2017 * Add tests for playground * Fixing tests
* Playground // WIP * Linting * Add Examples with code * CSS Linting * Linting * Add Connected Currency Symbol * 2015-2017 * 2015-2017 * 2015-2017 * 2015-2017 * 2015-2017 * 2015-2017 * 2015-2017 * Added `renderSymbol` tests * PR grumbles * Add Eth and Btc QRCode examples * 2015-2017 * Add tests for playground * Fixing tests
* s/Delete Contract/Forget Contract/ (#4237) * Adjust the location of the signer snippet (#4155) * Additional building-block UI components (#4239) * Currency WIP * Expand tests * Pass className * Add QrCode * Export new components in ~/ui * s/this.props.netSymbol/netSymbol/ * Fix import case * ui/SectionList component (#4292) * array chunking utility * add SectionList component * Add TODOs to indicate possible future work * Add missing overlay style (as used in dapps at present) * Add a Playground for the UI Components (#4301) * Playground // WIP * Linting * Add Examples with code * CSS Linting * Linting * Add Connected Currency Symbol * 2015-2017 * 2015-2017 * 2015-2017 * 2015-2017 * 2015-2017 * 2015-2017 * 2015-2017 * Added `renderSymbol` tests * PR grumbles * Add Eth and Btc QRCode examples * 2015-2017 * Add tests for playground * Fixing tests * Split Dapp icon into ui/DappIcon (#4308) * Add QrCode & Copy to ShapeShift (#4322) * Extract CopyIcon to ~/ui/Icons * Add copy & QrCode address * Default size 4 * Add bitcoin: link * use protocol links applicable to coin exchanged * Remove .only * Display QrCode for accounts, addresses & contracts (#4329) * Allow Portal to be used as top-level modal (#4338) * Portal * Allow Portal to be used in as both top-level and popover * modal/popover variable naming * export Portal in ~/ui * Properly handle optional onKeyDown * Add simple Playground Example * Add proper event listener to Portal (#4359) * Display AccountCard name via IdentityName (#4235) * Fix signing (#4363) * Dapp Account Selection & Defaults (#4355) * Add parity_defaultAccount RPC (with subscription) (#4383) * Default Account selector in Signer overlay (#4375) * Typo, fixes #4271 (#4391) * Fix ParityBar account selection overflows (#4405) * Available Dapp selection alignment with Permissions (Portal) (#4374) * registry dapp: make lookup use lower case (#4409) * Dapps use defaultAccount instead of own selectors (#4386) * Poll for defaultAccount to update dapp & overlay subscriptions (#4417) * Poll for defaultAccount (Fixes #4413) * Fix nextTimeout on catch * Store timers * Re-enable default updates on change detection * Add block & timestamp conditions to Signer (#4411) * Extension installation overlay (#4423) * Extension installation overlay * Pr gumbles * Spelling * Update Chrome URL * Fix for non-included jsonrpc * Extend Portal component (as per Modal) #4392
Add a Playground to the UI, accessible via http://localhost:3000/#/playground
It's only available in non-dev environments (won't get included in production build).
Each UI Component can (and should) have a
foobar.example.js
that lists different uses-cases of the component, which props are passed, etc.