Repository navigation
Expand file tree
/
Copy pathguide.json
More file actions
1 lines (1 loc) · 67.4 KB
/
Copy pathguide.json
File metadata and controls
1 lines (1 loc) · 67.4 KB
1
[{"html":"\n\t\t\t\t\t\t<h3>\n\t\t\t\t\t\t\t<span id=\"this-is-a-community-project\" class=\"offset-anchor\"></span>\n\t\t\t\t\t\t\t<a href=\"guide#this-is-a-community-project\" class=\"anchor\" aria-hidden=\"true\"></a>\n\t\t\t\t\t\t\tThis is a community project\n\t\t\t\t\t\t</h3><p>Svelte Native is developed by members of the the Svelte community who wish to have the same smooth development experience on mobile devices as they have on the web. This project is not an officially supported product of either the NativeScript or Svelte projects.</p>\n<p>Yet.</p>\n","metadata":{"title":"Important note"},"subsections":[{"slug":"this-is-a-community-project","title":"This is a community project"}],"slug":"important-note","file":"0-important-note.md"},{"html":"<h4>What is NativeScript?</h4><p> <a href=\"https://www.nativescript.org/\">NativeScript</a> is an open-source framework to develop apps on the Apple iOS and Android platforms. It is open source and can be found on <a href=\"https://github.com/nativescript/nativescript\">github</a></p>\n<h4>What is Svelte?</h4><p><a href=\"https://svelte.technology\">Svelte</a> is a radical new approach to building user interfaces. Whereas traditional frameworks like React and Vue do the bulk of their work in the browser, Svelte shifts that work into a compile step that happens when you build your app.</p>\n<p>Instead of using techniques like virtual DOM diffing, Svelte writes code that surgically updates the DOM when the state of your app changes.</p>\n<h4>What is Svelte Native</h4><p>Svelte Native is a tool for building mobile applications. It combines NativeScript's access to the native platform views and Svelte's fast and efficient view updates to allow you to build native mobile experiences using tools such as HTML, CSS and Javascript.</p>\n<p><a href=\"/blog/svelte-g
8000
oes-native\">Read the introductory blog post</a>.</p>\n<p><img src=\"/logos_combined.svg\" alt=\"NativeScript + Svelte = Svelte Native\"></p>\n","metadata":{"title":"Introduction"},"subsections":[],"slug":"introduction","file":"00-introduction.md"},{"html":"\n\t\t\t\t\t\t<h3>\n\t\t\t\t\t\t\t<span id=\"quick-start\" class=\"offset-anchor\"></span>\n\t\t\t\t\t\t\t<a href=\"guide#quick-start\" class=\"anchor\" aria-hidden=\"true\"></a>\n\t\t\t\t\t\t\tQuick Start\n\t\t\t\t\t\t</h3><h4>Install Nativescript</h4><p>Svelte-Native works on top of NativeScript. To install NativeScript:</p>\n<div class='code-block'><pre class='language-bash'><code>$ <span class=\"token function\">npm</span> <span class=\"token function\">install</span> -g nativescript</code></pre></div><p>Check it worked by running <code>tns</code></p>\n<p><img src=\"/media/tns-success.png\" alt=\"Success\"></p>\n<h4>Install the NativeScript Playground app</h4><p>Svelte-Native really is native, so it needs a mobile device to run. The build setup for iOS or Android can be a pain, so the wizards at Progress have created the NativeScript playground app. This allows us to run Svelte-Native application code without having to build the full mobile application.</p>\n<p><a href=\"https://itunes.apple.com/us/app/nativescript-playground/id1263543946?mt=8&ls=1\"><img src=\"/media/app-store.png\" alt=\"Get if rom the App Store\"></a>\n<a href=\"https://play.google.com/store/apps/details?id=org.nativescript.play\"><img src=\"/media/google-play.png\" alt=\"Get it from Google Play\"></a></p>\n<h4>Create a new Svelte-Native app</h4><p>The easiest way to get started is to use the <a href=\"https://github.com/halfnelson/svelte-native-template\">latest template app</a></p>\n<div class='code-block'><pre class='language-bash'><code>$ degit halfnelson/svelte-native-template myapp</code></pre></div><p>A fresh svelte-native app will be found in the <code>myapp</code> folder</p>\n<h4>Launch It</h4><p>Launch your app with:</p>\n<div class='code-block'><pre class='language-bash'><code>$ <span class=\"token function\">cd</span> myapp\n$ tns preview --bundle</code></pre></div><p>You will need to scan the ascii art QR code using the "Playground" app you installed previously.</p>\n<img src=\"/media/quick-start-screenshot.png\" width=200 alt=\"Running App\" >\n\n\n\n\t\t\t\t\t\t<h3>\n\t\t\t\t\t\t\t<span id=\"advanced-install\" class=\"offset-anchor\"></span>\n\t\t\t\t\t\t\t<a href=\"guide#advanced-install\" class=\"anchor\" aria-hidden=\"true\"></a>\n\t\t\t\t\t\t\tAdvanced Install\n\t\t\t\t\t\t</h3><p>To compile your apps for distribution, you will need to use setup your system for local compilation.</p>\n<p>Svelte-Native runs on top of an unmodified NativeScript platform. Installation instructions for your operating system can be found in the <a href=\"https://docs.nativescript.org/start/quick-setup\">Native Script Guide</a></p>\n<p>Check you have the NativeScript build environment configured correctly by using the Nativescript doctor command:</p>\n<div class='code-block'><pre class='language-bash'><code>$ tns doctor</code></pre></div><p>Once that is happy you can do a full compile and launch of your application with</p>\n<div class='code-block'><pre class='language-bash'><code>$ tns run android --bundle</code></pre></div><p>or</p>\n<div class='code-block'><pre class='language-bash'><code>$ tns run ios --bundle</code></pre></div>","metadata":{"title":"Getting Started"},"subsections":[{"slug":"quick-start","title":"Quick Start"},{"slug":"advanced-install","title":"Advanced Install"}],"slug":"getting-started","file":"01-getting-started.md"},{"html":"\n\t\t\t\t\t\t<h3>\n\t\t\t\t\t\t\t<span id=\"the-goal\" class=\"offset-anchor\"></span>\n\t\t\t\t\t\t\t<a href=\"guide#the-goal\" class=\"anchor\" aria-hidden=\"true\"></a>\n\t\t\t\t\t\t\tThe Goal\n\t\t\t\t\t\t</h3><p>Sometimes it can be easier to learn something if you have a goal to work towards. In this section we will build a Todo app with Svelte Native. It will have the following functionality:</p>\n<ul>\n<li>Basic design<ul>\n<li>Two-tab layout</li>\n<li>One tab shows active tasks and lets you add new tasks</li>\n<li>Second tab lists completed tasks</li>\n</ul>\n</li>\n<li>Basic functionality<ul>\n<li>Add tasks: Users can add tasks as text</li>\n<li>View tasks: Newly added tasks are listed as active and can be tapped</li>\n<li>Complete tasks: Tapping an active task shows an action dialog with options</li>\n<li>Delete tasks: Tapping an active or completed task shows an action dialog with options</li>\n</ul>\n</li>\n<li>Advanced design<ul>\n<li>Input and button for adding tasks are styled</li>\n<li>Tabs are styled</li>\n<li>Active tasks are styled</li>\n<li>Completed tasks are styled</li>\n</ul>\n</li>\n</ul>\n<p><img src=\"/media/todoapp/nativescript-svelte-todo2.gif\" alt=\"TodoApp\"></p>\n\n\t\t\t\t\t\t<h3>\n\t\t\t\t\t\t\t<span id=\"prerequisites\" class=\"offset-anchor\"></span>\n\t\t\t\t\t\t\t<a href=\"guide#prerequisites\" class=\"anchor\" aria-hidden=\"true\"></a>\n\t\t\t\t\t\t\tPrerequisites\n\t\t\t\t\t\t</h3><p>Before you start, please ensure you have at least followed the <a href=\"#quick-start\">Quick Start Guide</a> and can get an application to run on your mobile device or emulator.</p>\n<p>This guide assumes a existing familiarity with the Svelte framework. Run through <a href=\"https://v3.svelte.technology/tutorial\">Svelte's excellent tutorial</a> to get up to speed.</p>\n\n\t\t\t\t\t\t<h3>\n\t\t\t\t\t\t\t<span id=\"basic-design\" class=\"offset-anchor\"></span>\n\t\t\t\t\t\t\t<a href=\"guide#basic-design\" class=\"anchor\" aria-hidden=\"true\"></a>\n\t\t\t\t\t\t\tBasic Design\n\t\t\t\t\t\t</h3><p>We will start our from a fresh app template:</p>\n<div class='code-block'><pre class='language-bash'><code>$ degit halfnelson/svelte-native-template todoapp\n$ <span class=\"token function\">cd</span> todoapp\n$ <span class=\"token function\">npm</span> <span class=\"token function\">install</span></code></pre></div><p>Remove the default <code>.btn</code> rule from <code>app.css</code> and set the contents of App.svelte to:</p>\n<div class='code-block named'><span class='filename'> App.svelte</span><pre class='language-markup'><code><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span>page</span> <span class=\"token attr-name\">class</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>page<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span>\n\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span>actionBar</span> <span class=\"token attr-name\">title</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>My Tasks<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">class</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>action-bar<span class=\"token punctuation\">\"</span></span> <span class=\"token punctuation\">/></span></span>\n\n\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span>tabView</span> <span class=\"token attr-name\">height</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>100%<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">androidTabsPosition</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>bottom<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span>\n\n\t <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span>tabViewItem</span> <span class=\"token attr-name\">title</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>To Do<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">textWrap</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>true<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span>\n\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span>label</span><span class=\"token punctuation\">></span></span>\n\t\t\tThis tab will list active tasks and will let users add new tasks.\n\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"></</span>label</span><span class=\"token punctuation\">></span></span>\n\t <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"></</span>tabViewItem</span><span class=\"token punctuation\">></span></span>\n\n\t <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span>tabViewItem</span> <span class=\"token attr-name\">title</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>Completed<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span>\n\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span>label</span> <span class=\"token attr-name\">text</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>This tab will list completed tasks for tracking.<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">textWrap</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>true<span class=\"token punctuation\">\"</span></span> <span class=\"token punctuation\">/></span></span>\n\t <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"></</span>tabViewItem</span><span class=\"token punctuation\">></span></span>\n\n\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"></</span>tabView</span><span class=\"token punctuation\">></span></span>\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"></</span>page</span><span class=\"token punctuation\">></span></span></code></pre></div><blockquote>\n<p><strong>NOTE</strong> Notice that all tags start with a lower case letter. This is different to other NativeScript implementations. The lower case letter lets the Svelte compiler know that these are NativeScript views and not Svelte components. Think of <code><page></code> and <code><actionBar></code> as just another set of application building blocks like <code><ul></code> and <code><div></code>.</p>\n</blockquote>\n<h4>What's all that then?</h4><p>The <code><page></code> element is the top-level user interface element of every Svelte-Native app. All other user interface elements are nested within.</p>\n<p>The <code><actionBar></code> element shows an action bar for the <code><page></code>. A <code><page></code> cannot contain more than one <code><actionBar></code>.</p>\n<p>Typically, after the <code><actionBar></code>, you will have navigation components (such as a drawer or a tab view) or layout components. These elements control the layout of your app and let you determine how to place other user interface elements inside.</p>\n<p>The class names on <code>page</code> and <code>actionBar</code> are to help with styling, the default stylesheet includes a reference to the NativeScript core theme. More information on the core theme can be found in the <a href=\"https://docs.nativescript.org/ui/theme\">Nativescript Docs</a></p>\n<p>The <code><label></code> tags have been used differently. One has the <code>text=</code> attribute, while the other has the text between the opening and closing tags. Plain text between tags will be automatically assigned to the <code>text</code> attribute of the tag.</p>\n<h4>Progress So Far</h4><p><img src=\"/media/todoapp/todo-basic-design-1.png\" alt=\"tab 1\" width=300> <img src=\"/media/todoapp/todo-basic-design-2.png\" alt=\"tab 2\" width=300></p>\n\n\t\t\t\t\t\t<h3>\n\t\t\t\t\t\t\t<span id=\"basic-functionality-add-tasks\" class=\"offset-anchor\"></span>\n\t\t\t\t\t\t\t<a href=\"guide#basic-functionality-add-tasks\" class=\"anchor\" aria-hidden=\"true\"></a>\n\t\t\t\t\t\t\tBasic Functionality: Add Tasks\n\t\t\t\t\t\t</h3><p>We have our basic design, lets allow the user to add some tasks.</p>\n<p>Replace the contents of the first <code><tabViewItem></code> with:</p>\n<div class='code-block'><pre class='language-markup'><code><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span>stackLayout</span> <span class=\"token attr-name\">orientation</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>vertical<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">width</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>100%<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">height</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>100%<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span>\n\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span>gridLayout</span> <span class=\"token attr-name\">columns</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>2*,*<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">rows</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>*<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">width</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>100%<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">height</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>25%<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span>\n\t\t<span class=\"token comment\"><!-- Configures the text field and ensures that pressing Return on the keyboard \n\t\t\t produces the same result as tapping the button. --></span>\n\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span>textField</span> <span class=\"token attr-name\">col</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>0<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">row</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>0<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\"><span class=\"token namespace\">bind:</span>text</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>{textFieldValue}<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">hint</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>Type new task...<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">editable</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>true<span class=\"token punctuation\">\"</span></span>\n\t\t\t<span class=\"token attr-name\"><span class=\"token namespace\">on:</span>returnPress</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>{onButtonTap}<span class=\"token punctuation\">\"</span></span> <span class=\"token punctuation\">/></span></span>\n\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span>button</span> <span class=\"token attr-name\">col</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>1<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">row</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>0<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">text</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>Add task<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\"><span class=\"token namespace\">on:</span>tap</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>{onButtonTap}<span class=\"token punctuation\">\"</span></span> <span class=\"token punctuation\">/></span></span>\n\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"></</span>gridLayout</span><span class=\"token punctuation\">></span></span>\n\n\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span>listView</span> <span class=\"token attr-name\">class</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>list-group<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">items</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>{todos}<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\"><span class=\"token namespace\">on:</span>itemTap</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>{onItemTap}<span class=\"token punctuation\">\"</span></span><span class=\"token style-attr language-css\"><span class=\"token attr-name\"> <span class=\"token attr-name\">style</span></span><span class=\"token punctuation\">=\"</span><span class=\"token attr-value\"><span class=\"token property\">height</span><span class=\"token punctuation\">:</span>75%</span><span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span>\n\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span>Template</span> <span class=\"token attr-name\"><span class=\"token namespace\">let:</span>item</span><span class=\"token punctuation\">></span></span>\n\t\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span>label</span> <span class=\"token attr-name\">text</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>{item.name}<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">class</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>list-group-item-heading<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">textWrap</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>true<span class=\"token punctuation\">\"</span></span> <span class=\"token punctuation\">/></span></span>\n\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"></</span>Template</span><span class=\"token punctuation\">></span></span>\n\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"></</span>listView</span><span class=\"token punctuation\">></span></span>\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"></</span>stackLayout</span><span class=\"token punctuation\">></span></span></code></pre></div><p>and to the bottom of the file add a script tag:</p>\n<div class='code-block'><pre class='language-markup'><code><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span>script</span><span class=\"token punctuation\">></span></span><span class=\"token script language-javascript\">\n\t<span class=\"token keyword\">import</span> <span class=\"token punctuation\">{</span> Template <span class=\"token punctuation\">}</span> <span class=\"token keyword\">from</span> <span class=\"token string\">'svelte-native/components'</span>\n\n\t<span class=\"token keyword\">let</span> todos <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span>\n\t<span class=\"token keyword\">let</span> textFieldValue <span class=\"token operator\">=</span> <span class=\"token string\">\"\"</span>\n\n\t<span class=\"token keyword\">function</span> <span class=\"token function\">onItemTap</span><span class=\"token punctuation\">(</span>args<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n\t console<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span><span class=\"token string\">'Item with index: '</span> <span class=\"token operator\">+</span> args<span class=\"token punctuation\">.</span>index <span class=\"token operator\">+</span> <span class=\"token string\">' tapped'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t<span class=\"token punctuation\">}</span>\n\n\t<span class=\"token keyword\">function</span> <span class=\"token function\">onButtonTap</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\"
8000
;>)</span> <span class=\"token punctuation\">{</span>\n\t <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>textFieldValue <span class=\"token operator\">===</span> <span class=\"token string\">\"\"</span><span class=\"token punctuation\">)</span> <span class=\"token keyword\">return</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">// Prevents users from entering an empty string.</span>\n\t console<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"New task added: \"</span> <span class=\"token operator\">+</span> textFieldValue <span class=\"token operator\">+</span> <span class=\"token string\">\".\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">// Logs the newly added task in the console for debugging.</span>\n\t todos <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span><span class=\"token punctuation\">{</span> name<span class=\"token punctuation\">:</span> textFieldValue <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span> <span class=\"token operator\">...</span>todos<span class=\"token punctuation\">]</span> <span class=\"token comment\">// Adds tasks in the ToDo array. Newly added tasks are immediately shown on the screen.</span>\n\t textFieldValue <span class=\"token operator\">=</span> <span class=\"token string\">\"\"</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">// Clears the text field so that users can start adding new tasks immediately.</span>\n\t<span class=\"token punctuation\">}</span>\n</span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"></</span>script</span><span class=\"token punctuation\">></span></span></code></pre></div><h4>What did we just do?</h4><p>To allow the user to enter a todo item, we need to capture the name of the task. We did this by adding a <code><textField></code>. A <code><button></code> was added to submit the task and a <code><listView></code> to display the task.</p>\n<p>Since this functionality required adding 3 elements to the tabview, we use layouts to tell NativeScript where to place each item. <code><stackLayout></code> places items in a row either vertical or horizontal. We used it to place our input form above the <code><listView></code>. <code><gridView></code> is used to layout items in a predefined grid. It is used to place the <code><button></code> to the right and take up half the space of the <code><textInput></code>.</p>\n<p>The <code><listView></code> contains a <code><Template></code> which is a Svelte component used to render each item. The template component needs to be imported just like all Svelte components.</p>\n<p>When <code>onButtonTap</code> callback is fired, the code we added to the script element, will build a new <code>todos</code> array including the added item, and clear the text field. The <code>onItemTap</code> callback will just log which list item index was tapped using <code>console.log</code> which works fine in NativeScript.</p>\n<blockquote>\n<p><strong>NOTE</strong> <code><listView></code> will look for the first <code><Template></code> component in its children. The template component acts similar to a slot and will render its content for each item. This is exposed to the content as <code>item</code> via the <code>let:item</code> on the template element.</p>\n</blockquote>\n<h4>Progress So Far</h4><img alt=\"We can add items\" src=\"/media/todoapp/todo-add-item.png\" width=350>\n\n<p>It isn't pretty, but it works!</p>\n\n\t\t\t\t\t\t<h3>\n\t\t\t\t\t\t\t<span id=\"basic-functionality-complete-delete-tasks\" class=\"offset-anchor\"></span>\n\t\t\t\t\t\t\t<a href=\"guide#basic-functionality-complete-delete-tasks\" class=\"anchor\" aria-hidden=\"true\"></a>\n\t\t\t\t\t\t\tBasic functionality: Complete/Delete Tasks\n\t\t\t\t\t\t</h3><p>Nobody likes a todo list that only gets longer. We should add the ability to mark a task as complete, or to remove it if we added it by accident.</p>\n<p>At the very top of the script tag, add this import</p>\n<div class='code-block'><pre class='language-javascript'><code> <span class=\"token keyword\">import</span> <span class=\"token punctuation\">{</span> action <span class=\"token punctuation\">}</span> <span class=\"token keyword\">from</span> <span class=\"token string\">\"tns-core-modules/ui/dialogs\"</span><span class=\"token punctuation\">;</span></code></pre></div><p>Near the top of the script tag after the <code>let todos=[]</code> add another declaration <code>let dones=[]</code> so completed tasks have somewhere to go.</p>\n<p>Then replace our <code>onItemTap</code> function with this new one:</p>\n<div class='code-block'><pre class='language-javascript'><code> <span class=\"token keyword\">function</span> <span class=\"token function\">onItemTap</span><span class=\"token punctuation\">(</span>args<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n\t<span class=\"token function\">action</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"What do you want to do with this task?\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"Cancel\"</span><span class=\"token punctuation\">,</span> <span class=\"token punctuation\">[</span>\n\t <span class=\"token string\">\"Mark completed\"</span><span class=\"token punctuation\">,</span>\n\t <span class=\"token string\">\"Delete forever\"</span>\n\t<span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span><span class=\"token function\">then</span><span class=\"token punctuation\">(</span>result <span class=\"token operator\">=></span> <span class=\"token punctuation\">{</span>\n\t console<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span>result<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">// Logs the selected option for debugging.</span>\n\t <span class=\"token keyword\">let</span> item <span class=\"token operator\">=</span> todos<span class=\"token punctuation\">[</span>args<span class=\"token punctuation\">.</span>index<span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n\t <span class=\"token keyword\">switch</span> <span class=\"token punctuation\">(</span>result<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n\t\t<span class=\"token keyword\">case</span> <span class=\"token string\">\"Mark completed\"</span><span class=\"token punctuation\">:</span>\n\t\t dones <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span>item<span class=\"token punctuation\">,</span> <span class=\"token operator\">...</span>dones<span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">// Places the tapped active task at the top of the completed tasks.</span>\n\t\t todos <span class=\"token operator\">=</span> todos<span class=\"token punctuation\">.</span><span class=\"token function\">filter</span><span class=\"token punctuation\">(</span>t <span class=\"token operator\">=></span> t <span class=\"token operator\">!=</span> item<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">// Removes the tapped active task.</span>\n\t\t <span class=\"token keyword\">break</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token keyword\">case</span> <span class=\"token string\">\"Delete forever\"</span><span class=\"token punctuation\">:</span>\n\t\t todos <span class=\"token operator\">=</span> todos<span class=\"token punctuation\">.</span><span class=\"token function\">filter</span><span class=\"token punctuation\">(</span>t <span class=\"token operator\">=></span> t <span class=\"token operator\">!=</span> item<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">// Removes the tapped active task.</span>\n\t\t <span class=\"token keyword\">break</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token keyword\">case</span> <span class=\"token string\">\"Cancel\"</span> <span class=\"token operator\">||</span> undefined<span class=\"token punctuation\">:</span> <span class=\"token comment\">// Dismisses the dialog</span>\n\t\t <span class=\"token keyword\">break</span><span class=\"token punctuation\">;</span>\n\t <span class=\"token punctuation\">}</span>\n\t<span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n <span class=\"token punctuation\">}</span></code></pre></div><h4>Breaking it down</h4><p>Native script comes with a <code>dialogs</code> module that allows us to show small modal windows to obtain data from a user. We added an import to this module so that we could use the <code>action</code> method we added to the <code>onItemTap</code> method. When the user selects "Mark completed" we find the item using the <code>args.index</code> we get from the event, and remove the item from the <code>todos</code>, then we add the item to our new <code>dones</code> array. The delete command just removes the item from the <code>todos</code>.</p>\n<blockquote>\n<p><strong>NOTE</strong> Notice that we reassign the <code>dones</code> and <code>todos</code> variables during delete or complete operations. Svelte's reactive variables work at the top level and cannot detect changes in an array. By assigning a new value to <code>dones</code> and <code>todos</code> we are ensuring that any template that depends on those variables will be updated.</p>\n</blockquote>\n<h4>Progress So Far</h4><img alt=\"Popup In Action\" src=\"/media/todoapp/todo-mark-compete.png\" width=350>\n\n\n\n\n\t\t\t\t\t\t<h3>\n\t\t\t\t\t\t\t<span id=\"basic-functionality-the-completed-tab\" class=\"offset-anchor\"></span>\n\t\t\t\t\t\t\t<a href=\"guide#basic-functionality-the-completed-tab\" class=\"anchor\" aria-hidden=\"true\"></a>\n\t\t\t\t\t\t\tBasic functionality: The Completed Tab\n\t\t\t\t\t\t</h3><p>To get that sense of satisfaction from completing an item on your todo list, it would be good to be able to see the item on the completed tab. In this section we will add a listview to display the items and allow you to delete them or restore them to the todos using an action.</p>\n<p>First add the <code>listView</code> below to the second tab replacing the <code>label</code></p>\n<div class='code-block'><pre class='language-markup'><code><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span>listView</span> <span class=\"token attr-name\">class</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>list-group<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">items</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>{dones}<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\"><span class=\"token namespace\">on:</span>itemTap</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>{onDoneTap}<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span>\n\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span>Template</span> <span class=\"token attr-name\"><span class=\"token namespace\">let:</span>item</span><span class=\"token punctuation\">></span></span>\n\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span>label</span> <span class=\"token attr-name\">text</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>{item.name}<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">class</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>list-group-item-heading<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">textWrap</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>true<span class=\"token punctuation\">\"</span></span> <span class=\"token punctuation\">/></span></span>\n\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"></</span>Template</span><span class=\"token punctuation\">></span></span>\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"></</span>listView</span><span class=\"token punctuation\">></span></span></code></pre></div><p>Then add the code for the onDoneTap to the script block:</p>\n<div class='code-block'><pre class='language-javascript'><code><span class=\"token keyword\">function</span> <span class=\"token function\">onDoneTap</span><span class=\"token punctuation\">(</span>args<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n <span class=\"token function\">action</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"What do you want to do with this task?\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"Cancel\"</span><span class=\"token punctuation\">,</span> <span class=\"token punctuation\">[</span>\n\t<span class=\"token string\">\"Mark To Do\"</span><span class=\"token punctuation\">,</span>\n\t<span class=\"token string\">\"Delete forever\"</span>\n <span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span><span class=\"token function\">then</span><span class=\"token punctuation\">(</span>result <span class=\"token operator\">=></span> <span class=\"token punctuation\">{</span>\n\tconsole<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span>result<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">// Logs the selected option for debugging.</span>\n\t<span class=\"token keyword\">let</span> item <span class=\"token operator\">=</span> dones<span class=\"token punctuation\">[</span>args<span class=\"token punctuation\">.</span>index<span class=\"token punctuation\">]</span>\n\t<span class=\"token keyword\">switch</span> <span class=\"token punctuation\">(</span>result<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n\t <span class=\"token keyword\">case</span> <span class=\"token string\">\"Mark To Do\"</span><span class=\"token punctuation\">:</span>\n\t\ttodos <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span>item<span class=\"token punctuation\">,</span> <span class=\"token operator\">...</span>todos<span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">// Places the tapped active task at the top of the completed tasks.</span>\n\t\tdones <span class=\"token operator\">=</span> dones<span class=\"token punctuation\">.</span><span class=\"token function\">filter</span><span class=\"token punctuation\">(</span>t <span class=\"token operator\">=></span> t <span class=\"token operator\">!=</span> item<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">// Removes the tapped active task.</span>\n\t\t<span class=\"token keyword\">break</span><span class=\"token punctuation\">;</span>\n\t <span class=\"token keyword\">case</span> <span class=\"token string\">\"Delete forever\"</span><span class=\"token punctuation\">:</span>\n\t\tdones <span class=\"token operator\">=</span> dones<span class=\"token punctuation\">.</span><span class=\"token function\">filter</span><span class=\"token punctuation\">(</span>t <span class=\"token operator\">=></span> t <span class=\"token operator\">!=</span> item<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">// Removes the tapped active task.</span>\n\t\t<span class=\"token keyword\">break</span><span class=\"token punctuation\">;</span>\n\t <span class=\"token keyword\">case</span> <span class=\"token string\">\"Cancel\"</span> <span class=\"token operator\">||</span> undefined<span class=\"token punctuation\">:</span> <span class=\"token comment\">// Dismisses the dialog</span>\n\t\t<span class=\"token keyword\">break</span><span class=\"token punctuation\">;</span>\n\t<span class=\"token punctuation\">}</span>\n <span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span></code></pre></div><h4>What we just did</h4><p>To display our done items we added the <code>listView</code> to the "completed" <code>tabViewItem</code> and bound it to the <code>dones</code> variable we defined in last step.</p>\n<p>We added an event handler to handle taps on the "completed" items. This handler is very similar to the hander added in the last section, except that it works on the <code>dones</code> array and not the <code>todos</code>.</p>\n\n\t\t\t\t\t\t<h3>\n\t\t\t\t\t\t\t<span id=\"advanced-design-styled-input\" class=\"offset-anchor\"></span>\n\t\t\t\t\t\t\t<a href=\"guide#advanced-design-styled-input\" class=\"anchor\" aria-hidden=\"true\"></a>\n\t\t\t\t\t\t\tAdvanced design: Styled input\n\t\t\t\t\t\t</h3><p>The basic functionality of the todo app is complete. But it isn't going to win any beauty contests. To delight our users we will take a few minutes to apply some styling. In this section we will style the text box and button elements.</p>\n<p>At the bottom of <code>App.svelte</code> add the following style tag:</p>\n<div class='code-block'><pre class='language-markup'><code><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span>style</span><span class=\"token punctuation\">></span></span><span class=\"token style language-css\">\n <span class=\"token selector\">button</span> <span class=\"token punctuation\">{</span> \n\t <span class=\"token property\">font-size</span><span class=\"token punctuation\">:</span> 15<span class=\"token punctuation\">;</span> \n\t <span class=\"token property\">font-weight</span><span class=\"token punctuation\">:</span> bold<span class=\"token punctuation\">;</span> \n\t <span class=\"token property\">color</span><span class=\"token punctuation\">:</span> white<span class=\"token punctuation\">;</span> \n\t <span class=\"token property\">background-color</span><span class=\"token punctuation\">:</span> #2847D2<span class=\"token punctuation\">;</span> \n\t <span class=\"token property\">height</span><span class=\"token punctuation\">:</span> 40<span class=\"token punctuation\">;</span>\n\t <span class=\"token property\">margin-top</span><span class=\"token punctuation\">:</span> 10<span class=\"token punctuation\">;</span> \n\t <span class=\"token property\">margin-bottom</span><span class=\"token punctuation\">:</span> 10<span class=\"token punctuation\">;</span> \n\t <span class=\"token property\">margin-right</span><span class=\"token punctuation\">:</span> 10<span class=\"token punctuation\">;</span> \n\t <span class=\"token property\">margin-left</span><span class=\"token punctuation\">:</span> 10<span class=\"token punctuation\">;</span> \n\t <span class=\"token property\">border-radius</span><span class=\"token punctuation\">:</span> 20px<span class=\"token punctuation\">;</span> \n <span class=\"token punctuation\">}</span>\n\n <span class=\"token selector\">textField</span> <span class=\"token punctuation\">{</span>\n\t <span class=\"token property\">font-size</span><span class=\"token punctuation\">:</span> 20<span class=\"token punctuation\">;</span>\n\t <span class=\"token property\">color</span><span class=\"token punctuation\">:</span> #2847D2<span class=\"token punctuation\">;</span>\n\t <span class=\"token property\">margin-top</span><span class=\"token punctuation\">:</span> 10<span class=\"token punctuation\">;</span>\n\t <span class=\"token property\">margin-bottom</span><span class=\"token punctuation\">:</span> 10<span class=\"token punctuation\">;</span>\n\t <span class=\"token property\">margin-right</span><span class=\"token punctuation\">:</span> 5<span class=\"token punctuation\">;</span>\n\t <span class=\"token property\">margin-left</span><span class=\"token punctuation\">:</span> 20<span class=\"token punctuation\">;</span>\n <span class=\"token punctuation\">}</span>\n</span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"></</span>style</span><span class=\"token punctuation\">></span></span></code></pre></div><h4>A style tag in a native application!?</h4><p>When you work with NativeScript and Svelte, you can use application-wide CSS, scoped CSS, or inline CSS to style your app. Application-wide CSS is applied first and is handled in <code>app.css</code> in the root of your project. This tutorial does not explore application-wide CSS. See also: <a href=\"https://docs.nativescript.org/ui/styling\">Styling</a>.</p>\n<p>Scoped CSS is applied to the current component only and is handled in each component's <code><style></code> block. This tutorial relies almost exclusively on scoped CSS and inline CSS. See also: <a href=\"https://v3.svelte.technology/docs#scoped-styles\">Scoped Styles</a>.</p>\n<p>With type selectors, you can select a UI component and apply styling to it. To select a type, use the component name as provided in the code. For example, to select the tab view, use <code>TabView</code>.</p>\n<h4>Progress So Far</h4><img alt=\"style button\" src=\"/media/todoapp/todo-styled-button.png\" width=350>\n\n\n\n\t\t\t\t\t\t<h3>\n\t\t\t\t\t\t\t<span id=\"advanced-design-styled-tabs\" class=\"offset-anchor\"></span>\n\t\t\t\t\t\t\t<a href=\"guide#advanced-design-styled-tabs\" class=\"anchor\" aria-hidden=\"true\"></a>\n\t\t\t\t\t\t\tAdvanced design: Styled tabs\n\t\t\t\t\t\t</h3><p>The application is looking better, but we can do something about those tabs.</p>\n<p>Add the <code>selectedTabTextColor</code> and <code>tabTextFontSize</code> property to the <code><TabView></code>.</p>\n<div class='code-block'><pre class='language-markup'><code> <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span>tabView&
8000
lt;/span> <span class=\"token attr-name\">height</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>100%<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">androidTabsPosition</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>bottom<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">selectedTabTextColor</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>#2847D2<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">tabTextFontSize</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>15<span class=\"token punctuation\">\"</span></span> <span class=\"token punctuation\">></span></span></code></pre></div><p>Apply the <code>textTransform</code> property to the separate tabs. You can use this property only on the <code><TabViewItem></code> level.</p>\n<div class='code-block'><pre class='language-markup'><code> <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span>tabViewItem</span> <span class=\"token attr-name\">title</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>To Do<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">textTransform</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>uppercase<span class=\"token punctuation\">\"</span></span> <span class=\"token punctuation\">></span></span></code></pre></div><div class='code-block'><pre class='language-markup'><code> <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span>tabViewItem</span> <span class=\"token attr-name\">title</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>Completed<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">textTransform</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>uppercase<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span></code></pre></div><h4>That is not CSS!</h4><p><code><TabView></code> provides some styling properties out of the box. You can apply a text transform to each tab title (<code>textTransform</code>) and change the font size and color globally (<code>tabTextFontSize</code>, <code>tabTextColor</code>, <code>selectedTabTextColor</code>). You can also change the background color of your tabs <code>tabBackgroundColor</code>.</p>\n<blockquote>\n<p><strong>TIP</strong> Most css properties in NativeScript have a corresponding attribute you can apply directly to the element</p>\n</blockquote>\n<h4>Progress So Far</h4><img alt=\"style button\" src=\"/media/todoapp/todo-styled-tabs.png\" width=350>\n\n\n\n\t\t\t\t\t\t<h3>\n\t\t\t\t\t\t\t<span id=\"advanced-design-styled-lists\" class=\"offset-anchor\"></span>\n\t\t\t\t\t\t\t<a href=\"guide#advanced-design-styled-lists\" class=\"anchor\" aria-hidden=\"true\"></a>\n\t\t\t\t\t\t\tAdvanced design: Styled Lists\n\t\t\t\t\t\t</h3><p>The list items are a little bunched up. Lets add some padding to them, and make the active todo items coloured and the completed items crossed out.</p>\n<p>Edit the two <code><listView></code> tags and add the <code>separatorColor="transparent"</code> as an attribute:</p>\n<div class='code-block'><pre class='language-markup'><code><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span>listView</span> <span class=\"token attr-name\">class</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>list-group<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">items</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>{todos}<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\"><span class=\"token namespace\">on:</span>itemTap</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>{onItemTap}<span class=\"token punctuation\">\"</span></span><span class=\"token style-attr language-css\"><span class=\"token attr-name\"> <span class=\"token attr-name\">style</span></span><span class=\"token punctuation\">=\"</span><span class=\"token attr-value\"><span class=\"token property\">height</span><span class=\"token punctuation\">:</span>75%</span><span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">separatorColor</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>transparent<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span></code></pre></div><p>and </p>\n<div class='code-block'><pre class='language-markup'><code><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span>listView</span> <span class=\"token attr-name\">class</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>list-group<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">items</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>{dones}<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\"><span class=\"token namespace\">on:</span>itemTap</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>{onDoneTap}<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">separatorColor</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>transparent<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span></code></pre></div><p>To the label in the <code>listView</code> for the <code>todos</code> add <code>todo-item active</code> to the class attribute</p>\n<div class='code-block'><pre class='language-markup'><code> <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span>label</span> <span class=\"token attr-name\">text</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>{item.name}<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">class</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>list-group-item-heading todo-item active<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">textWrap</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>true<span class=\"token punctuation\">\"</span></span> <span class=\"token punctuation\">/></span></span></code></pre></div><p>to the dones label add <code>todo-item completed</code></p>\n<div class='code-block'><pre class='language-markup'><code> <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span>label</span> <span class=\"token attr-name\">text</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>{item.name}<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">class</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>list-group-item-heading todo-item completed<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">textWrap</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>true<span class=\"token punctuation\">\"</span></span> <span class=\"token punctuation\">/></span></span></code></pre></div><p>Add the following CSS rules to the <code>style</code> tag</p>\n<div class='code-block'><pre class='language-css'><code>\n<span class=\"token selector\">.todo-item</span> <span class=\"token punctuation\">{</span>\n <span class=\"token property\">font-size</span><span class=\"token punctuation\">:</span> 20<span class=\"token punctuation\">;</span>\n <span class=\"token property\">margin-left</span><span class=\"token punctuation\">:</span> 20<span class=\"token punctuation\">;</span>\n <span class=\"token property\">padding-top</span><span class=\"token punctuation\">:</span> 5<span class=\"token punctuation\">;</span>\n <span class=\"token property\">padding-bottom</span><span class=\"token punctuation\">:</span> 10<span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span>\n\n<span class=\"token selector\">.todo-item.active</span> <span class=\"token punctuation\">{</span>\n <span class=\"token property\">font-weight</span><span class=\"token punctuation\">:</span> bold<span class=\"token punctuation\">;</span>\n <span class=\"token property\">color</span><span class=\"token punctuation\">:</span> #2847D2<span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span>\n\n<span class=\"token selector\">.todo-item.completed</span> <span class=\"token punctuation\">{</span>\n <span class=\"token property\">color</span><span class=\"token punctuation\">:</span> #d3d3d3<span class=\"token punctuation\">;</span>\n <span class=\"token property\">text-decoration</span><span class=\"token punctuation\">:</span> line-through<span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span>\n</code></pre></div><h4>I see what you did there</h4><p>In NativeScript you aren't restricted to just using element names as CSS selectors. We added some classes to the labels and applied CSS rules to those classes.\nWe also applied a <code>separatorColor</code> attribute directly to <code>listView</code> to remove the lines between the items for a cleaner list.</p>\n<h4>Our Finished Product</h4><img alt=\"todos\" src=\"/media/todoapp/todo-styled-list1.png\" width=350>\n<img alt=\"dones\" src=\"/media/todoapp/todo-styled-list2.png\" width=350>\n\n","metadata":{"title":"Your First App"},"subsections":[{"slug":"the-goal","title":"The Goal"},{"slug":"prerequisites","title":"Prerequisites"},{"slug":"basic-design","title":"Basic Design"},{"slug":"basic-functionality-add-tasks","title":"Basic Functionality: Add Tasks"},{"slug":"basic-functionality-complete-delete-tasks","title":"Basic functionality: Complete/Delete Tasks"},{"slug":"basic-functionality-the-completed-tab","title":"Basic functionality: The Completed Tab"},{"slug":"advanced-design-styled-input","title":"Advanced design: Styled input"},{"slug":"advanced-design-styled-tabs","title":"Advanced design: Styled tabs"},{"slug":"advanced-design-styled-lists","title":"Advanced design: Styled Lists"}],"slug":"todo-app-example","file":"05-todo-app-example.md"},{"html":"<p>Since Svelte Native is a thin bridge between Svelte and NativeScript. It is best if you familiarize yourself with the core concept of <a href=\"https://docs.nativescript.org/core-concepts/navigation\">routing in NativeScript</a></p>\n<p>Routing in Svelte Native is designed to be very similar and the <code>svelte-native</code> module exposes the following functions:</p>\n\n\t\t\t\t\t\t<h3>\n\t\t\t\t\t\t\t<span id=\"navigate\" class=\"offset-anchor\"></span>\n\t\t\t\t\t\t\t<a href=\"guide#navigate\" class=\"anchor\" aria-hidden=\"true\"></a>\n\t\t\t\t\t\t\tnavigate\n\t\t\t\t\t\t</h3><p>Specify the destination page with the mandatory <code>page</code> option. This takes a <code>Svelte</code> component class.</p>\n<div class='code-block'><pre class='language-markup'><code><span class=\"token comment\"><!-- { filename: App.svelte } --></span>\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span>page</span><span class=\"token punctuation\">></span></span>\n\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span>actionBar</span> <span class=\"token attr-name\">title</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>Master<span class=\"token punctuation\">\"</span></span> <span class=\"token punctuation\">/></span></span>\n\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span>stackLayout</span><span class=\"token punctuation\">></span></span>\n\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span>button</span> <span class=\"token attr-name\">text</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>To Details directly<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\"><span class=\"token namespace\">on:</span>tap</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>{ () => navigate({ page: Detail }) }<span class=\"token punctuation\">\"</span></span> <span class=\"token punctuation\">/></span></span>\n\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"></</span>stackLayout</span><span class=\"token punctuation\">></span></span>\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"></</span>page</span><span class=\"token punctuation\">></span></span>\n\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span>script</span><span class=\"token punctuation\">></span></span><span class=\"token script language-javascript\">\n\t<span class=\"token keyword\">import</span> Detail <span class=\"token keyword\">from</span> <span class=\"token string\">'./Detail.svelte'</span>\n\t<span class=\"token keyword\">import</span> <span class=\"token punctuation\">{</span> navigate <span class=\"token punctuation\">}</span> <span class=\"token keyword\">from</span> <span class=\"token string\">'svelte-native'</span>\n</span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"></</span>script</span><span class=\"token punctuation\">></span></span></code></pre></div><h4>Passing props to the target component</h4><p>You can specify the props used to create the Svelte component using the <code>props</code> option.</p>\n<div class='code-block'><pre class='language-markup'><code><span class=\"token comment\"><!-- { filename: App.svelte } --></span>\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span>page</span><span class=\"token punctuation\">></span></span>\n\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span>actionBar</span> <span class=\"token attr-name\">title</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>Master<span class=\"token punctuation\">\"</span></span> <span class=\"token punctuation\">/></span></span>\n\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span>stackLayout</span><span class=\"token punctuation\">></span></span>\n\t\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span>button</span> <span class=\"token attr-name\">text</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>To Details directly<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\"><span class=\"token namespace\">on:</span>tap</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>{showDetailWithProps}<span class=\"token punctuation\">\"</span></span> <span class=\"token punctuation\">/></span></span>\n\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"></</span>stackLayout</span><span class=\"token punctuation\">></span></span>\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"></</span>page</span><span class=\"token punctuation\">></span></span>\n\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"><</span>script</span><span class=\"token punctuation\">></span></span><span class=\"token script language-javascript\">\n\t<span class=\"token keyword\">import</span> Detail <span class=\"token keyword\">from</span> <span class=\"token string\">'./Detail.svelte'</span>\n\t<span class=\"token keyword\">import</span> <span class=\"token punctuation\">{</span> navigate <span class=\"token punctuation\">}</span> <span class=\"token keyword\">from</span> <span class=\"token string\">'svelte-native'</span>\n\n\t<span class=\"token keyword\">function</span> <span class=\"token function\">showDetailWithProps</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n\t\t<span class=\"token function\">navigate</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">{</span> \n\t\t\tpage<span class=\"token punctuation\">:</span> Detail<span class=\"token punctuation\">,</span>\n\t\t\tprops<span class=\"token punctuation\">:</span> <span class=\"token punctuation\">{</span> message<span class=\"token punctuation\">:</span> <span class=\"token string\">\"Hello from master\"</span> <span class=\"token punctuation\">}</span>\n\t\t<span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t<span class=\"token punctuation\">}</span>\n</span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\"></</span>script</span><span class=\"token punctuation\">></span></span></code></pre></div><h4>Specifying a Frame</h4><p>Each <code><frame></code> element has its own navigation stack. If you are using multiple frames, you may want to specify in which frame the navigation will occur. For example, having a button in the side bar that changes the page in the main area. You can do this by adding the <code>frame</code> option:</p>\n<div class='code-block'><pre class='language-javascript'><code><span class=\"token function\">navigate</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">{</span> \n\tpage<span class=\"token punctuation\">:</span> Detail<span class=\"token punctuation\">,</span>\n\tframe<span class=\"token punctuation\">:</span> <span class=\"token string\">'<id, or ref, or instance>'</span>\n<span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre></div><p>The value for the <code>frame</code> option can be one of the following:</p>\n<ul>\n<li>the <code>id</code> of the <code><frame></code> component (for example: <code><frame id="main-frame"></code>)</li>\n<li>a reference to the <code><frame></code> (for example: <code><frame bind:this="{mainFrame}"></code>)</li>\n<li>a NativeScript <code>Frame</code> instance.</li>\n</ul>\n<p>If no frame is specified, the navigation will occur on the <a href=\"https://docs.nativescript.org/api-reference/modules/_ui_frame_#topmost\">topmost</a> frame.</p>\n<h4>Other Options</h4><p>For more information about the options that you can pass, see <a href=\"https://docs.nativescript.org/api-reference/interfaces/_ui_frame_.navigationentry\">NavigationEntry</a>.</p>\n\n\t\t\t\t\t\t<h3>\n\t\t\t\t\t\t\t<span id=\"goback\" class=\"offset-anchor\"></span>\n\t\t\t\t\t\t\t<a href=\"guide#goback\" class=\"anchor\" aria-hidden=\"true\"></a>\n\t\t\t\t\t\t\tgoBack\n\t\t\t\t\t\t</h3>\n\t\t\t\t\t\t<h3>\n\t\t\t\t\t\t\t<span id=\"showmodal\" class=\"offset-anchor\"></span>\n\t\t\t\t\t\t\t<a href=\"guide#showmodal\" class=\"anchor\" aria-hidden=\"true\"></a>\n\t\t\t\t\t\t\tshowModal\n\t\t\t\t\t\t</h3>","metadata":{"title":"Navigation/Routing"},"subsections":[{"slug":"navigate","title":"navigate"},{"slug":"goback","title":"goBack"},{"slug":"showmodal","title":"showModal"}],"slug":"routing","file":"10-routing.md"},{"html":"<p>This documentation is still a work-in-progress, like Svelte Native itself. If there are particular things that are missing or could be improved, then <a href=\"https://github.com/halfnelson/svelte-native\">please raise an issue on GitHub</a>!</p>\n","metadata":{"title":"TODO..."},"subsections":[],"slug":"still-to-come","file":"99-still-to-come.md"}]