Giter VIP home page Giter VIP logo

vkui-navigator's Introduction

VKUI Navigator (WARN: DEPRECATED!)

Данный модуль позволяет быстро и просто создать базовую логику навигации для сервиса на платформе VK Mini Apps. Поддерживает все необходимые функции и инкапсулирует в себе базовое поведение на всех платформах (такое как свайпы на iOS и кнопка "назад" на Android)

Демо приложение 📱

Установка 📦

Выполните yarn add vkui-navigator или npm i vkui-navigator

Быстрый старт 🚀

import { Stack, Page } from "vkui-navigator/dist";

// simple usage
<Stack activePage="page1">
    <Page id="page1" activePanel="welcome">
        <Welcome id="welcome"/>
    </Page>
</Stack>

Принцип работы

Вокруг ваших панелей создается View со втроенной базовой логикой. Каждой панели передается в props объект navigator. В нем содержаться методы и параметры, который вы передали из предыдущей панели. Также есть поддержка модальных окон и попапов

API Справочник

Stack

▸ Корневой элемент навигации

Props:

Название Тип Описание
activePage string, required Идентификатор активной страницы
modals array of node Массив модальных окон

Page

▸ Основная единица модуля. Включает в себя логику навигации между панелями

Props:

Название Тип Описание
id string, required Идентификатор, который передается View внутри компонента
activePanel string Идентификатор начальной панели
header bool Показать/скрыть header (эквивалент header во View)
title string Название пункта в таббаре (при его использовании)
icon string Иконка пункта в таббаре (при его использовании)

Tabbar

▸ Умный таббар

Props:

Название Тип Описание
id string, required Идентификатор, который передается Epic внутри компонента
activeStory string, required Идентификатор начальной страницы (Page)

Navigator

▸ Объект, передаваемый в props всем панелям и модальным окнам.

Structure:

Название Тип Описание
go(id:String, params={}) func Переход на панель с идентификатором id
goPage(id:String, params={}) func Переходит на другу страницу Page (из Stack)
goBack func Возвращает на одну панель назад
showModal(id:String, params={}) func Показывает модальное окно с идентификатором id
hideModal func Скрывает все активные модальные окна
showPopout(popout:Node) func Показывает переданный попаут
hidePopout func Скрывает все активные попауты
showLoader func Показывает спиннер загрузки
hideLoader func Скрывает спиннер загрузки
params object Параметры, которые передаются через go или showModal

Примеры 📚

Пример с панелью

const Panel1 = ({ id, navigator }) => (
    <Panel id={id}>
        <PanelHeader>
            Панель 1
        </PanelHeader>
        <Group>
            <Button onClick={() => navigator.go("panel2")}>
                Вперед
            </Button>
        </Group>
    </Panel>
);

const Panel2 = ({ id, navigator }) => (
    <Panel id={id}>
        <PanelHeader>
            Панель 2
        </PanelHeader>
        <Group>
            <Button onClick={() => navigator.goBack()}>
                Назад
            </Button>
        </Group>
    </Panel>
);

<Stack activePage="page1">
    <Page id="page1" activePanel="panel1">
        <Panel1 id="panel1"/>
        <Panel2 id="panel2"/>
    </Page>
</Stack>

Авторы 🎨

vkui-navigator's People

Contributors

batformat avatar hit2hat avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

Forkers

duceum samids

vkui-navigator's Issues

Параметры страницы исчезают раньше чем заканчивается анимация смены страниц

Открываем пример https://vk.com/app7171285

Кликаем по кнопке (Перейти на панель 2 + параметры)

Жмем кнопку назад в браузере

На видео скорость анимации замедленна, видно что параметры пропали во время анимации
bug

Навигация по hash

Неплохо было бы реализовать в библиотеке, возможность навигации по hash с дополнительной передачей параметров для панели.

Появляется пустой View header

Пустой хедер отображается, если не передать header={false} В Page компонент. Возможно это только в версии 1.4.8
Selection_255

Обновить readme для новой версии

Selection_256

Убрать hidePopout (сейчас кстати скрыть popout можно только так "showPopout(null)", но мне лично не принципиально), добавить пояснения для goBack, но может быть что-то еще не заметил)

Не работает settlingHeight={100} на ios.

Задаю settlingHeight={100}, но на iphone все равно сразу не открывается на полную высоту.
Cам компонент модального окна в отдельном компоненте.

Задаю вот так:

<ConfigProvider webviewType="vkapps" isWebView={true}>
<Stack activePage={this.state.activePage}
			 modals={[
				 	<ItemModal id="itemModal"/>
					
			 ]}
			 >
</Stack>
</ConfigProvider>

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.