0.8.23 • Published 5 months ago

@noughts/svelte-uikit v0.8.23

Weekly downloads
-
License
MIT
Repository
github
Last release
5 months ago

Svelte UIKit

A framework for prototyping mobile apps in Svelte. The goal is to reproduce the general navigation of a mobile application.

The system design is equivalent to Apple's UIKit API.

Motivation

TBD

Setup

In Safari on the iPhone, Pull To Refresh is triggered when flicking down at the top of the screen, and the flick event does not work as expected.

This can be avoided by specifying overflow:hidden; in the body style.

<!DOCTYPE html>
<html lang="en">
<head>...</head>
<body style="overflow: hidden;">%sveltekit.body%</body>
</html>

Basics

The code to implement standard tab bar navigation in iOS is as follows

<!-- src/routes/+page.svelte -->

<script lang="ts">
    import { UISceneController, UITabBarController, UIView, UIViewController, App } from "@noughts/svelte-uikit";
    // imports some Svelte Components here. e.g.: import WorldClockView from "./WorldClockView.svelte";
</script>

<App
    viewController={new UISceneController(
        new UITabBarController([
            new UIViewController(new UIView(WorldClockView), { tabBarItem: { title: "World Clock", icon: "language" } }),
            new UIViewController(new UIView(AlermView), { tabBarItem: { title: "Alarm", icon: "alarm" } }),
            new UIViewController(new UIView(BedtimeView), { tabBarItem: { title: "Bedtime", icon: "bed" } }),
            new UIViewController(new UIView(StopwatchView), { tabBarItem: { title: "Stopwatch", icon: "timer" } }),
            new UIViewController(new UIView(TimerView), { tabBarItem: { title: "Timer", icon: "pace" } }),
        ])
    )}
/>

<style>
    :global(*) {
        padding: 0;
        margin: 0;
        box-sizing: border-box;
        --ui-tint-color:orange !important;
    }
</style>

Add a SubView to NavigationView.

For example, if you want to place a floating button on a View represented by UINavigationController, you can do it as follows.

<!-- +page.svelte -->
<App
    viewController={new UITabBarController([
        new UINavigationController(
            new UIViewController(new UIView(LandmarkList), {
                hidesNavigationBarWhenPushed: true,
            }),
            {tabBarItem: { title: "wo/NavBar", icon: { name: "home" } }},
            new UIView(Fab)
        )
    ])}
/>
<!-- Fab.svelte -->
<script lang="ts">
    import { UIView } from "$lib/UIView.js";
    import { UIViewController } from "$lib/UIViewController.js";
    import DemoScreen from "./DemoScreen.svelte";
    export let viewController: UIViewController;
    function onFabClick() {
        viewController.present(new UIViewController(new UIView(DemoScreen), {}));
    }
</script>

<button class="fab" on:click={onFabClick}>FAB</button>

<style>
    .fab {
        position: absolute;
        width: 88px;
        height: 88px;
        left: 22px;
        bottom: 22px;
        z-index: 100;
    }
</style>
0.8.23

5 months ago

0.8.22

5 months ago

0.8.21

5 months ago

0.8.20

5 months ago

0.8.19

5 months ago

0.8.18

5 months ago

0.8.17

5 months ago

0.8.16

5 months ago

0.8.15

5 months ago

0.8.14

5 months ago

0.8.13

5 months ago

0.8.12

6 months ago

0.8.11

6 months ago

0.8.9

6 months ago

0.8.8

6 months ago

0.8.7

6 months ago

0.8.5

6 months ago

0.8.4

6 months ago

0.8.3

6 months ago

0.8.1

6 months ago

0.7.2

7 months ago

0.7.1

7 months ago

0.7.0

7 months ago

0.6.1

7 months ago

0.5.1

7 months ago

0.5.0

7 months ago

0.4.7

7 months ago

0.4.5

8 months ago

0.4.4

8 months ago

0.4.3

8 months ago

0.4.2

8 months ago

0.4.1

8 months ago

0.3.3

8 months ago

0.3.2

8 months ago

0.3.1

8 months ago

0.2.3

8 months ago

0.2.2

8 months ago

0.2.1

8 months ago

0.1.15

8 months ago

0.1.13

8 months ago

0.1.12

8 months ago

0.1.11

8 months ago

0.1.10

8 months ago

0.1.9

8 months ago

0.1.8

8 months ago

0.1.7

8 months ago

0.1.6

8 months ago

0.1.5

8 months ago

0.1.4

8 months ago

0.1.3

8 months ago

0.1.2

8 months ago

0.1.1

8 months ago

0.0.22

8 months ago