def on_submit_login(e): username, password = destruct(props["login_form"], "username_text", "password_text") if username and password: props.clear_login_form() props.login_user(username, password) e.preventDefault()
def render(self): data, fetch_users, set_user = \ destruct(self.props, "data", "fetch_users", "set_user") def render_item(enum_): i, user = enum_ on_click = lambda: set_user(user) return __pragma__("xtrans", None, "{}", """ ( <UserItem key={i} user={user} onClick={on_click} /> ); """) return __pragma__("xtrans", None, "{}", """ ( <div className="container"> <Button onClick={fetch_users} text="Fetch Users" className="btn btn-blue" /> <div id="users"> { map(render_item, enumerate(data.users)) } </div> </div> ); """)
def App(props): def render_login_panel(): return __pragma__("xtrans", None, "{}", """ ( <div> <h5>Please Login:</h5> <LoginFormContainer /> </div> ); """) def on_submit(e): e.preventDefault() def render_todo_panel(): return __pragma__("xtrans", None, "{}", """ ( <div> <TodoListContainer /> <Form className="padding" onSubmit={on_submit} > <FormPanelContainer /> <ButtonPanelContainer /> </Form> </div> ); """) logged_in, error = destruct(props["login_user"], "logged_in", "error") visible_component = render_todo_panel() if logged_in else render_login_panel() return __pragma__("xtrans", None, "{}", """ ( <Row> <Col lg={{size: 6, offset: 3}} md={{size: 8, offset: 2}} sm={{size: 10, offset: 1}} xs="12" > <Jumbotron> <div className="flex-column"> <div className="flex-center padding"> <h2>My Todos</h2> </div> {visible_component} <span className="red-text">{error}</span> </div> </Jumbotron> </Col> </Row> ); """)
def UserProfile(props): user_profile = props.user_profile title, first, last = \ destruct(user_profile["name"], "title", "first", "last") full_name = f"{title.capitalize()}. {first.capitalize()} {last.capitalize()}" if not user_profile: return __pragma__( "xtrans", None, "{}", """ ( <h1>Looks like you haven't selected a user</h1> ); """) return __pragma__( "xtrans", None, "{}", """ ( <div className="container"> <img src={user_profile.picture.large} /> <span>{full_name}</span> <span>{user_profile.email}</span> </div> ); """)
def AlbumDetail(props): artist, image, thumbnail_image, title, url = \ destruct(props.album, "artist", "image", "thumbnail_image", "title", "url") (header_content_style, header_text_style, thumbnail_style, thumbnail_container_style, image_style) = styles.values() def on_press(): return Linking.openURL(url) return __pragma__( "js", "{}", """ ( <Card> <CardSection> <View style={thumbnail_container_style}> <Image source={{ "uri": thumbnail_image }} style={thumbnail_style} /> </View> <View style={header_content_style}> <Text style={header_text_style}> {title} </Text> <Text>{artist}</Text> </View> </CardSection> <CardSection> <Image source={{ "uri": image }} style={image_style} /> </CardSection> <CardSection> <Button onPress={on_press}> Buy Now </Button> </CardSection> </Card> ); """)
from Component_py.stubs import require, __pragma__ # __:skip from Component_py.component import destruct React = require("react") FormGroup, Label, Input = destruct(require("reactstrap"), "FormGroup", "Label", "Input") def FormPanel(props): def on_text_change(e): props.form_panel_update(e.target.value) return __pragma__( "xtrans", None, "{}", """ ( <FormGroup> <Label for="text_input">Enter new todo text:</Label> <Input onChange={on_text_change} value={props.form_panel.text} id="text_input" placeholder="What to do?" /> </FormGroup> ); """)
from Component_py.stubs import require, __pragma__, window # __:skip from Component_py.component import Component, destruct React = require("react") ListGroup, ListGroupItem, Button = destruct(require("reactstrap"), "ListGroup", "ListGroupItem", "Button") RingLoader = require("react-spinners").RingLoader FontAwesomeIcon = require("react-fontawesome") class TodoList(Component): def componentDidMount(self): token = self.props.login_user["token"] self.props.fetch_all_todos(token) def on_click_complete(self, todo): token = self.props.login_user["token"] def closure(): if not todo["complete"]: self.props.complete_todo(todo["id"], token) return closure def on_click_delete(self, todo): token = self.props.login_user["token"] def closure(): should_delete = True if not todo["complete"] and not window.confirm( "Delete incomplete Todo?"):
from Component_py.stubs import require, __pragma__ # __:skip from Component_py.component import destruct React = require("react") Text, View = destruct(require("react-native"), "Text", "View") def Header(props): view_style, text_style = styles.values() return __pragma__( "js", "{}", """ ( <View style={view_style}> <Text style={text_style}>{props.header_text}</Text> </View> ); """) styles = _s = { "viewStyle": { "backgroundColor": "#F8F8F8", "justifyContent": "center", "alignItems": "center", "height": 80, "paddingTop": 25, "shadowColor": "#000", "shadowOffset": { "width": 0, "height": 2 }, "shadowOpacity": 0.2, "elevation": 2,
from Component_py.stubs import require, __pragma__ # __:skip from Component_py.component import destruct from reducers.todo_list import todo_list_reducer from reducers.login_user import login_user_reducer from reducers.login_form import login_form_reducer from reducers.form_panel import form_panel_reducer createStore, combineReducers, applyMiddleware = destruct( require("redux"), "createStore", "combineReducers", "applyMiddleware") logger = require("redux-logger").createLogger promise = require("redux-promise-middleware").js_default thunk = require("redux-thunk").js_default store = createStore( combineReducers({ "todo_list": todo_list_reducer, "login_user": login_user_reducer, "login_form": login_form_reducer, "form_panel": form_panel_reducer }), applyMiddleware( thunk, promise(), logger() ) )
def on_click_register(e): username, password = destruct(props["login_form"], "username_text", "password_text") if username and password: props.clear_login_form() props.register_user(username, password)
from Component_py.stubs import require, __pragma__ # __:skip from Component_py.component import destruct React = require("react") Form, FormGroup, Label, Input, Button = destruct(require("reactstrap"), "Form", "FormGroup", "Label", "Input", "Button") def LoginForm(props): def on_input_change(e): props.login_form_update(e.target.id, e.target.value) def on_submit_login(e): username, password = destruct(props["login_form"], "username_text", "password_text") if username and password: props.clear_login_form() props.login_user(username, password) e.preventDefault() def on_click_register(e): username, password = destruct(props["login_form"], "username_text", "password_text") if username and password: props.clear_login_form() props.register_user(username, password) return __pragma__( "xtrans", None, "{}", """ ( <Form className="padding" onSubmit={on_submit_login}>
from Component_py.stubs import require, __pragma__ # __:skip from Component_py.component import destruct from containers.LoginFormContainer import LoginFormContainer from containers.FormPanelContainer import FormPanelContainer from containers.ButtonPanelContainer import ButtonPanelContainer from containers.TodoListContainer import TodoListContainer React = require("react") Form, Row, Col, Jumbotron = destruct( require("reactstrap"), "Form", "Row", "Col", "Jumbotron") def App(props): def render_login_panel(): return __pragma__("xtrans", None, "{}", """ ( <div> <h5>Please Login:</h5> <LoginFormContainer /> </div> ); """) def on_submit(e): e.preventDefault() def render_todo_panel(): return __pragma__("xtrans", None, "{}", """ ( <div> <TodoListContainer /> <Form className="padding" onSubmit={on_submit}
from Component_py.stubs import require, __pragma__ # __:skip from Component_py.component import destruct React = require("react") Text, TouchableOpacity = \ destruct(require("react-native"), "Text", "TouchableOpacity") def Button(props): button_style, text_style = styles.values() return __pragma__("js", "{}", """ ( <TouchableOpacity style={button_style} onPress={props.onPress}> <Text style={text_style}> {props.children} </Text> </TouchableOpacity> ); """) styles = { "buttonStyle": { "flex": 1, "alignSelf": "stretch", "backgroundColor": "#FFF", "borderRadius": 5, "borderWidth": 1, "borderColor": "#007AFF", "marginLeft": 5, "marginRight": 5 },
from Component_py.stubs import require, console, __pragma__ # __:skip from Component_py.component import destruct from components.Card import Card from components.CardSection import CardSection from components.Button import Button React = require("react") View, Text, Image, Linking = \ destruct(require("react-native"), "View", "Text", "Image", "Linking") def AlbumDetail(props): artist, image, thumbnail_image, title, url = \ destruct(props.album, "artist", "image", "thumbnail_image", "title", "url") (header_content_style, header_text_style, thumbnail_style, thumbnail_container_style, image_style) = styles.values() def on_press(): return Linking.openURL(url) return __pragma__( "js", "{}", """ ( <Card> <CardSection> <View style={thumbnail_container_style}> <Image source={{ "uri": thumbnail_image }} style={thumbnail_style} /> </View> <View style={header_content_style}>