73fcde9219
* added null check for el * added customElements field * renamed dashed to kebabCased * refactored and exposed addViewRender and buildHandler * exposed build handler * added types for customElements * increased version * added customElements Class extending ability * minor change version bump * testing custom elements with animated circle * added missing element definition * fixed ns-animated circle issue |
||
---|---|---|
.github | ||
.vscode | ||
app | ||
App_Resources | ||
doc | ||
elm-native@8cf98ba481 | ||
elm-native-js | ||
examples | ||
hooks/before-checkForChanges | ||
.editorconfig | ||
.gitignore | ||
.gitmodules | ||
elm-code-wrap-loader.js | ||
elm.json | ||
LICENSE | ||
nativescript.config.ts | ||
package.json | ||
README.md | ||
references.d.ts | ||
tsconfig.json | ||
webpack.config.js | ||
yarn.lock |
Elm Native
Build mobile apps with elm using NativeScript API. elm/http
works with this library as well!
We can build simple apps like counter
https://user-images.githubusercontent.com/5707049/224556167-e4cc713f-79da-4c75-b1c6-9333d911f2f3.mp4
or something like a blog
https://user-images.githubusercontent.com/5707049/224556315-ff8ffaf5-c38c-4147-8bf8-0ab5018b1ed8.mp4
or even complex app with page transitions, modals, dialog, and much more!
https://user-images.githubusercontent.com/5707049/224556409-61d6b92f-f25f-4e83-9203-5f008f6fe627.mp4
How it works
We will use CustomElements feature to create mobile UI elements with nativescript objects and control the nativescript object from elm.
Here's a simple representation of how UI elements are created
Elm
-> Nativescript
-> Mobile
When we listen for / receive an event,
Mobile
-> Nativescript
-> Elm
Consider this flow while building an application. This will help you to overcome performance issues if you encounter them.
Use the attributes from Native.Attributes
and NOT Html.Attributes
Checkout examples
Supported Features
- Dialog
- Page transitions animations
- Modal page
- Execution of OS specific property assignment and Native code (Be careful)
- Navigating page back and forth using frame functions
- Has bindings for all Nativescript UI elements
- Calling methods/setting attributes in the event object within elm (Will be improved in future)
- Simple and complex listviews templates and much more
More features will be added soon.
This project tooks months of research and days of work. If you feel like it is valuable to the elm community, please consider supporting this project
Get Started
-
Clone the blank template
git clone https://github.com/hariroshan/template-blank-elm
-
Install dependencies using
yarn
ornpm install
-
Follow the instructions to setup your mobile development enviroment
-
Run project using
yarn run run:ios
ornpm run run:ios
for iOSyarn run run:android
ornpm run run:android
for Android
TODO
- Convert raw js into rescript
- Build a starter template with elm support with bindings pre-installed
- Support animations