Hi there, Unfortunately Glimmer Native development has ceased. There were memory issues as well as issues with lists that I was unable to overcome. I would recommend not using this for any projects as of now. If anyone from the core team wants to help out directly, I am still interested in this
Have you ever wanted to use Ember/Glimmer to create a native mobile app? Well now you can! Keep in mind Glimmer Native is currently in an ALPHA state. Use in production at your own risk
Places this borrows code/concepts from: Svelte, Vue, Glimmer Embedding Tutorial, Nativescript Demo
ember new hello-glimmer-native -b glimmer-native-blueprint
in the command linetns run ios --bundle
(or to debug tns debug ios --bundle --debug-brk
)There is a default set of Glimmer Components available to you that render native elements
There is a built in action
helper, along with a built in on
modifier to allow for event handling
There is a LinkTo
component provided that allows for navigation. You pass a target
to it which tells GlimmerNative what component to render and navigate to. <LinkTo @target="Dashboard" @text="Dashboard" @model={{this.model}} />
would create a component that listens for a click. Once clicked, Glimmer Native would look up the Dashboard
Glimmer component, render it, and then navigate to it.
You MUST have the top level element be a Page
component in order to navigate to it (so in the Dashboard
component, the first element must be Page
)
<Page class="page">
<ActionBar class="action-bar">
<Label text={{this.title}} class="action-label" />
</ActionBar>
<TabView>
<TabViewItem title="ToDo">
<ScrollView>
<StackLayout class="tasks">
{{#each tasks key="@index" |task|}}
<Task @task={{task}} />
{{/each}}
</StackLayout>
</ScrollView>
</TabViewItem>
<TabViewItem title="Calendar">
<Button
text={{this.buttonText}}
class="btn"
{{on "tap" (action buttonClick)}} />
<Label text="Coming soon" />
</TabViewItem>
</TabView>
</Page>
and the component ts file:
import Component from '@glimmer/component';
import { tracked } from '@glimmer/tracking';
export default class Task extends Component {
@tracked
public title = 'Welcome to glimmer';
public buttonText = 'Click Me!';
public buttonClick() {
this.title = 'Tracked yo';
}
}
Sponsored in part by Gavant Software