npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

ember-cli-framework7

v0.1.0

Published

Ember CLI Framework7 breings the great mobile development framework to Ember CLI.

Downloads

41

Readme

Ember CLI Framework7

Ember CLI Framework7 brings the great mobile development framework to Ember CLI. We try to integrate it as good as possible, since the framework itself is developed for use with Angular JS.

Please note, that this version is kind of a minimal viable product at the moment but we will keep improving it. If you are interested to support us, we will be excited to receive your pull requests.

Installation

npm install --save-dev ember-cli-framework7
ember g ember-cli-framework7

Import Framework7 css files

For Material Design add to ember-cli-build.js

app.import('bower_components/framework7/dist/css/framework7.material.css');
app.import('bower_components/framework7/dist/css/framework7.material.colors.css');

For iOS Design add to ember-cli-build.js

app.import('bower_components/framework7/dist/css/framework7.ios.css');
app.import('bower_components/framework7/dist/css/framework7.ios.colors.css');

Usage

After you installed Ember CLI Framework7, you can just start using it within your app. Please refer to the Framework7 documentation to see the markup structure.

In order to be able to use the JavaScript based features of Framework7, a service is registered within the routes, controllers and components as f7. Within the further documentation we will use the EmberScript notation for explanations.

# EmberScript
@f7.alert 'Some alert'
# CoffeeScript
@get('f7').alert 'Some alert'
// JavaScript
this.get('f7').alert('Some alert');

We will also use the Emblem syntax to explain templates.

Since the f7 service extends an instance of the Framework7 class, it supports all JavaScript methods available for a Framework7 application. All this methods can be found in the Framework7 documentation.

Features

In order to simplify the work with Framework7 within Ember, we added some component and additional methods on the f7 service.

Page container

= f7-page-container
  .navbar
    / ...
  .page-content
    / ...

Navbar

Framework7 requires to call sizeNavbars after rendering a navbar in order to ensure the title is centered. Therefore we included a component creating the required markup for navbars and ensuring the title to be centered.

= f7-navbar
  .left
    a.link.icon-only href="#" click="toggleSidePanel"
      i.icon.icon-bars

Side Panel

For creating the side panel markup and knowing how to toggle it, please refer to the side panel documentation of Framework7.

In order to support opening and closing the side panel by swiping, you need to initialize the listeners within an initializer.

Framework7Initializer =
  name: 'framework7'
  after: 'framework7-service'
  initialize: (container, application) ->
    Ember.run.schedule 'afterRender', ->
      container.lookup('service:framework7').initSwipePanels 'left'

`export default Framework7Initializer`

Preloader

The preloader shows a loading mask as an overlay on the application. To see how it works, please refer to the preloader documentation of Framework7. In order to ensure to only show the preloader for long running requests, we added an delay option to it, so it only shows up if the request was not finished within the given amount of time.

# ...
actions:
  save: ->
    @f7.showPreloader delay: 300
    @model.save().then =>
      @f7.hidePreloader()
      @transitionToRoute 'index'
    , =>
      @f7.alert 'error'

Pull-to-refresh

Pull to refresh is supported by Framework7 but there is a bit work to do to make it run in Ember. In order to understand how pull-to-refresh works in Framework7, please refer to the pull-to-refresh documentation. To make it as easy as possible to integrate pull-to-refresh into your Ember application, we wrapped all the magic into the f7-page-content component.

.pages
  .page.navbar-fixed
    = f7-page-content onPullToRefresh="refresh"
      .list-block
        ul
          /...

The refresh action gets a deferred promise passed as the first parameter which must either be resolved or rejected in order to close the pull-to-refresh indicator.

# ...
actions:
  refresh: (deferred) ->
    Ember.run.later this, (->
      deferred.resolve()
    ), 1000

Infinite Scroll

Infinite scroll is also supported by Framework7 and available through the f7-page-content component.

.pages
  .page.navbar-fixed
    = f7-page-content onInfiniteScroll="loadMore"
      .list-block
        ul
          /...

The loadMore action gets a deferred promise as the first argument and the component as the second argument, so it's possible to detach the infinite scroll from the page if there is no more need for it.

# ...
hasMoreData: true
actions:
  loadMore: (deferred, component) ->
    Ember.run.later this, (->
      if @get('hasMoreData')
        deferred.resolve()
      else
        component.detachInfiniteScroll()
    ), 1000

Swipeout

To use Swipeout, you need to include the ApplicationViewMixin into the application view. In order to animate removing the item use the f7-swipeout component.

import Ember from 'ember';
import ApplicationViewMixin from 'ember-cli-framework7/mixins/application-view';

export default Ember.View.extend(ApplicationViewMixin, {
});
.list-block
  ul
    = each
      = f7-swipeout
        .swipeout-content
          a.item-link.item-content href="#" click="'itemClicked' this"
            .item-inner
              .item-title = this
        .swipeout-actions-left
          a href="#"
            | Action 1
          a href="#"
            | Action 2
        .swipeout-actions-right
          a href="#"
            | Action 1
          a.swipeout-delete.swipeout-overswipe" href="#" click="delete this"
            | Delete

Search bar

Use this component.

Options

  • searchList Selector of the search list (default: .list-block-search)
  • searchIn Selector of the list item element to search in. If this is set, Framework7 is filtering the data, if set to undefined, Framework7 will do nothing and you have to take care of filtering the data. (default: undefined)

Actions

  • action is called when the search term is changed and receives the new search term as a parameter.
= f7-search-bar action="filter"
  = f7-pull-to-refresh action="refresh"
    .list-block.list-block-search.searchbar-found
      ul
        = each
          .item-inner
            .item-title = this

Sortable

In order to use the sortable feature, add the required markup to the list item and add the ApplicationViewMixin to your application view. Then enable the sorting by using the f7 service and the methods described in the Framework7 documentation.

import Ember from 'ember';
import ApplicationViewMixin from 'ember-cli-framework7/mixins/application-view';

export default Ember.View.extend(ApplicationViewMixin, {
});

Running the dummy app

The dummy app is a small example of Framework7 within an Ember CLI application.

  • git clone [email protected]:ember-mobile/ember-cli-framework7.git
  • npm install
  • bower install
  • ember server
  • Visit your app at http://localhost:4200.

For more information on using ember-cli, visit http://www.ember-cli.com/.