implement quo2 inputs - locked input component
Co-authored-by: tumanov-alex <uwontrememberthis@gmail.com> Co-authored-by: Jamie Caprani <jamiecaprani@gmail.com>
Before Width: | Height: | Size: 527 B |
Before Width: | Height: | Size: 899 B |
Before Width: | Height: | Size: 947 B After Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.7 KiB |
Before Width: | Height: | Size: 1006 B After Width: | Height: | Size: 809 B |
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.2 KiB |
|
@ -0,0 +1,24 @@
|
||||||
|
(ns quo2.components.inputs.locked-input.component-spec
|
||||||
|
(:require [quo2.components.inputs.locked-input.view :as locked-input]
|
||||||
|
[test-helpers.component :as h]))
|
||||||
|
|
||||||
|
(h/describe "Locked Input"
|
||||||
|
(h/test "renders label, value and icon"
|
||||||
|
(h/render [locked-input/locked-input
|
||||||
|
{:label "Label"
|
||||||
|
:icon :i/gas} "Value"])
|
||||||
|
(h/is-truthy (h/query-by-text "Label"))
|
||||||
|
(h/is-truthy (h/get-by-text "Value")))
|
||||||
|
|
||||||
|
(h/test "no value"
|
||||||
|
(h/render [locked-input/locked-input
|
||||||
|
{:label "Label"
|
||||||
|
:icon :i/gas}])
|
||||||
|
(h/is-null (h/query-by-text "Value"))
|
||||||
|
(h/is-truthy (h/get-by-text "Label")))
|
||||||
|
|
||||||
|
(h/test "no emoji"
|
||||||
|
(h/render [locked-input/locked-input
|
||||||
|
{:label "Label"} "Value"])
|
||||||
|
(h/is-truthy (h/get-by-text "Label"))
|
||||||
|
(h/is-truthy (h/get-by-text "Value"))))
|
|
@ -0,0 +1,20 @@
|
||||||
|
(ns quo2.components.inputs.locked-input.style
|
||||||
|
(:require [quo2.foundations.colors :as colors]))
|
||||||
|
|
||||||
|
(defn info-box-container
|
||||||
|
[theme]
|
||||||
|
{:flex-direction :row
|
||||||
|
:border-radius 12
|
||||||
|
:align-items :center
|
||||||
|
:background-color (colors/theme-colors colors/neutral-10
|
||||||
|
colors/neutral-80-opa-80
|
||||||
|
theme)
|
||||||
|
:height 40
|
||||||
|
:padding-horizontal 12
|
||||||
|
:padding-vertical 9
|
||||||
|
:margin-top 4})
|
||||||
|
|
||||||
|
(defn info-box-label
|
||||||
|
[theme]
|
||||||
|
{:color (colors/theme-colors colors/black colors/white theme)
|
||||||
|
:margin-left 8})
|
|
@ -0,0 +1,43 @@
|
||||||
|
(ns quo2.components.inputs.locked-input.view
|
||||||
|
(:require [react-native.core :as rn]
|
||||||
|
[quo2.foundations.colors :as colors]
|
||||||
|
[quo2.components.icon :as icons]
|
||||||
|
[quo2.components.inputs.locked-input.style :as style]
|
||||||
|
[quo2.theme :as quo.theme]
|
||||||
|
[quo2.components.markdown.text :as text]))
|
||||||
|
|
||||||
|
(defn- info-box
|
||||||
|
[{:keys [icon value-text theme]}]
|
||||||
|
[rn/view
|
||||||
|
{:style (style/info-box-container theme)}
|
||||||
|
[rn/view
|
||||||
|
(when icon
|
||||||
|
[icons/icon icon
|
||||||
|
{:color (colors/theme-colors colors/neutral-50 colors/neutral-40 theme)}])]
|
||||||
|
[text/text
|
||||||
|
{:size :paragraph-1
|
||||||
|
:style (style/info-box-label theme)} value-text]])
|
||||||
|
|
||||||
|
(defn- locked-input-internal
|
||||||
|
[{:keys [label icon container-style theme]} value]
|
||||||
|
[rn/view {:style container-style}
|
||||||
|
[text/text
|
||||||
|
{:size :paragraph-2
|
||||||
|
:weight :medium
|
||||||
|
:style {:color (colors/theme-colors colors/neutral-50 colors/neutral-40 theme)}}
|
||||||
|
label]
|
||||||
|
[info-box
|
||||||
|
{:theme theme
|
||||||
|
:icon icon
|
||||||
|
:value-text value}]])
|
||||||
|
|
||||||
|
(def locked-input
|
||||||
|
"Options:
|
||||||
|
|
||||||
|
:label - string (default nil) - Text to display above the input
|
||||||
|
:icon - keyword (default nil) - Icon to display in the info box
|
||||||
|
:container-style - style map (default nil) - Override style for the container
|
||||||
|
:theme - :light/:dark (passed from with-theme HOC)
|
||||||
|
|
||||||
|
:value - string (default nil) - value to display in the info box"
|
||||||
|
(quo.theme/with-theme locked-input-internal))
|
|
@ -45,6 +45,7 @@
|
||||||
quo2.components.info.info-message
|
quo2.components.info.info-message
|
||||||
quo2.components.info.information-box.view
|
quo2.components.info.information-box.view
|
||||||
quo2.components.inputs.input.view
|
quo2.components.inputs.input.view
|
||||||
|
quo2.components.inputs.locked-input.view
|
||||||
quo2.components.inputs.profile-input.view
|
quo2.components.inputs.profile-input.view
|
||||||
quo2.components.inputs.recovery-phrase.view
|
quo2.components.inputs.recovery-phrase.view
|
||||||
quo2.components.inputs.search-input.view
|
quo2.components.inputs.search-input.view
|
||||||
|
@ -201,6 +202,7 @@
|
||||||
|
|
||||||
;;;; INPUTS
|
;;;; INPUTS
|
||||||
(def input quo2.components.inputs.input.view/input)
|
(def input quo2.components.inputs.input.view/input)
|
||||||
|
(def locked-input quo2.components.inputs.locked-input.view/locked-input)
|
||||||
(def profile-input quo2.components.inputs.profile-input.view/profile-input)
|
(def profile-input quo2.components.inputs.profile-input.view/profile-input)
|
||||||
(def recovery-phrase-input quo2.components.inputs.recovery-phrase.view/recovery-phrase-input)
|
(def recovery-phrase-input quo2.components.inputs.recovery-phrase.view/recovery-phrase-input)
|
||||||
(def search-input quo2.components.inputs.search-input.view/search-input)
|
(def search-input quo2.components.inputs.search-input.view/search-input)
|
||||||
|
|
|
@ -24,6 +24,7 @@
|
||||||
[quo2.components.graph.wallet-graph.component-spec]
|
[quo2.components.graph.wallet-graph.component-spec]
|
||||||
[quo2.components.inputs.input.component-spec]
|
[quo2.components.inputs.input.component-spec]
|
||||||
[quo2.components.inputs.profile-input.component-spec]
|
[quo2.components.inputs.profile-input.component-spec]
|
||||||
|
[quo2.components.inputs.locked-input.component-spec]
|
||||||
[quo2.components.inputs.recovery-phrase.component-spec]
|
[quo2.components.inputs.recovery-phrase.component-spec]
|
||||||
[quo2.components.inputs.title-input.component-spec]
|
[quo2.components.inputs.title-input.component-spec]
|
||||||
[quo2.components.keycard.component-spec]
|
[quo2.components.keycard.component-spec]
|
||||||
|
|
|
@ -0,0 +1,42 @@
|
||||||
|
(ns status-im2.contexts.quo-preview.inputs.locked-input
|
||||||
|
(:require [quo2.foundations.colors :as colors]
|
||||||
|
[react-native.core :as rn]
|
||||||
|
[quo2.core :as quo]
|
||||||
|
[reagent.core :as reagent]
|
||||||
|
[status-im2.contexts.quo-preview.preview :as preview]))
|
||||||
|
|
||||||
|
(def descriptor
|
||||||
|
[{:label "show icon"
|
||||||
|
:key :icon
|
||||||
|
:type :boolean}
|
||||||
|
{:label "label"
|
||||||
|
:key :label
|
||||||
|
:type :text}
|
||||||
|
{:label "Value"
|
||||||
|
:key :value
|
||||||
|
:type :text}])
|
||||||
|
|
||||||
|
(defn preview-locked-input
|
||||||
|
[]
|
||||||
|
(let [state (reagent/atom {:value "$1,648.34"
|
||||||
|
:label "Network fee"})]
|
||||||
|
(fn []
|
||||||
|
(let [{:keys [label value icon]} @state]
|
||||||
|
[rn/view
|
||||||
|
{:background-color (colors/theme-colors colors/white colors/neutral-90)
|
||||||
|
:flex 1
|
||||||
|
:flex-direction :column
|
||||||
|
:padding-top 20
|
||||||
|
:padding-left 20}
|
||||||
|
[rn/view {:style {:height 200}}
|
||||||
|
[preview/customizer state descriptor]]
|
||||||
|
[rn/view
|
||||||
|
{:style {:margin-top 11
|
||||||
|
:flex-direction :row}}
|
||||||
|
[quo/locked-input
|
||||||
|
{:icon (when icon :i/gas)
|
||||||
|
:label label
|
||||||
|
:container-style {:margin-right 20
|
||||||
|
:margin-horizontal 20
|
||||||
|
:flex 1}}
|
||||||
|
value]]]))))
|
|
@ -46,6 +46,7 @@
|
||||||
[status-im2.contexts.quo-preview.info.info-message :as info-message]
|
[status-im2.contexts.quo-preview.info.info-message :as info-message]
|
||||||
[status-im2.contexts.quo-preview.info.information-box :as information-box]
|
[status-im2.contexts.quo-preview.info.information-box :as information-box]
|
||||||
[status-im2.contexts.quo-preview.inputs.input :as input]
|
[status-im2.contexts.quo-preview.inputs.input :as input]
|
||||||
|
[status-im2.contexts.quo-preview.inputs.locked-input :as locked-input]
|
||||||
[status-im2.contexts.quo-preview.inputs.recovery-phrase-input :as recovery-phrase-input]
|
[status-im2.contexts.quo-preview.inputs.recovery-phrase-input :as recovery-phrase-input]
|
||||||
[status-im2.contexts.quo-preview.inputs.profile-input :as profile-input]
|
[status-im2.contexts.quo-preview.inputs.profile-input :as profile-input]
|
||||||
[status-im2.contexts.quo-preview.inputs.search-input :as search-input]
|
[status-im2.contexts.quo-preview.inputs.search-input :as search-input]
|
||||||
|
@ -240,6 +241,9 @@
|
||||||
:inputs [{:name :input
|
:inputs [{:name :input
|
||||||
:options {:topBar {:visible true}}
|
:options {:topBar {:visible true}}
|
||||||
:component input/preview-input}
|
:component input/preview-input}
|
||||||
|
{:name :locked-input
|
||||||
|
:options {:topBar {:visible true}}
|
||||||
|
:component locked-input/preview-locked-input}
|
||||||
{:name :profile-input
|
{:name :profile-input
|
||||||
:options {:topBar {:visible true}}
|
:options {:topBar {:visible true}}
|
||||||
:component profile-input/preview-profile-input}
|
:component profile-input/preview-profile-input}
|
||||||
|
|
|
@ -738,6 +738,7 @@
|
||||||
"join-decentralised-communities": "Join Decentralized Communities",
|
"join-decentralised-communities": "Join Decentralized Communities",
|
||||||
"http-gateway-error": "Oops, request failed!",
|
"http-gateway-error": "Oops, request failed!",
|
||||||
"sign-request-failed": "Could not sign message",
|
"sign-request-failed": "Could not sign message",
|
||||||
|
"simple": "Simple",
|
||||||
"invite-friends": "Invite friends",
|
"invite-friends": "Invite friends",
|
||||||
"invite-people": "Invite people",
|
"invite-people": "Invite people",
|
||||||
"invite-people-from-contacts": "Invite people from contact list",
|
"invite-people-from-contacts": "Invite people from contact list",
|
||||||
|
@ -784,6 +785,7 @@
|
||||||
"dapp-starter-pack-title": "Starter Pack",
|
"dapp-starter-pack-title": "Starter Pack",
|
||||||
"dapp-starter-pack-description": "Here’s some crypto to get you started! Use it to get stickers, an ENS name and try dapps",
|
"dapp-starter-pack-description": "Here’s some crypto to get you started! Use it to get stickers, an ENS name and try dapps",
|
||||||
"dapp-starter-pack-accept": "Accept and Open",
|
"dapp-starter-pack-accept": "Accept and Open",
|
||||||
|
"duration-estimate": "Duration estimate",
|
||||||
"starter-pack-coming": "Starter Pack coming your way",
|
"starter-pack-coming": "Starter Pack coming your way",
|
||||||
"starter-pack-coming-description": "Can take a few minutes to hours",
|
"starter-pack-coming-description": "Can take a few minutes to hours",
|
||||||
"starter-pack-received": "Starter Pack received",
|
"starter-pack-received": "Starter Pack received",
|
||||||
|
|