Giter VIP home page Giter VIP logo

angular-base-apps's Introduction

Angular Base Apps

An open source, community-driven fork of Foundation for Apps by Zurb (deprecated)

Build Status GitHub version

This is Angular Base Apps, an Angular-powered framework for building powerful responsive web apps and an unofficial fork of Foundation for Apps by Zurb.

Requirements

You'll need the following software installed to get started.

  • Node.js: Use the installer provided on the NodeJS website.
  • Git: Use the installer for your OS.
  • Gulp and Bower: Run [sudo] npm install -g gulp bower

Get Started

Stuck with Foundation for Apps? Try out Angular Base Apps 1.2.6 as a drop-in replacement!

Starting fresh? Check the installation docs to get started.

Templates

We've compiled a list of project templates for Angular Base Apps to help get you started quickly. If you have a template you would like added to the list let us know!

Documentation

Documentation for the latest release is available at https://base-apps.github.io/angular-base-apps/latest

Documentation is distributed with each release of Angular Base Apps. The docs for a specific release can be found at the url above with latest replaced with the version tag. For instance, you can find the v1.2.6 release docs at https://base-apps.github.io/angular-base-apps/v1.2.6

Building this Repo

If you want to work with the source code directly or compile our documentation, follow these steps:

git clone https://github.com/base-apps/angular-base-apps.git
cd angular-base-apps
npm install

While you're working on the code, run:

npm start

This will assemble the templates, static assets, Sass, and JavaScript. You can view the test server at this URL:

http://localhost:8080

The documentation can be viewed at the same URL as above.

Directory Structure

  • build: This is where our documentation is assembled. Don't edit these files directly, as they're overwritten every time you make a change!
  • docs: The Angular Base Apps documentation.
  • scss: The Sass components.
  • js: The Angular modules and directives, and other external libraries.
  • dist: Compiled CSS and JavaScript files, in minified and unminified flavors.
  • tests: Unit tests for the Angular modules.

Versioning

Angular Base Apps follows semver, so we won't introduce breaking changes in minor or patch versions. The master branch will always have the newest changes, so it's not necessarily production ready.

Contributing

We love feedback! Help us find bugs and suggest improvements or new features.

If you find a problem or have an idea, open a new issue on GitHub. When filing a bug report, make sure you specify the browser and operating system you're on, and toss us a screenshot or show us how we can recreate the issue.

angular-base-apps's People

Contributors

akiran avatar andy-polhill avatar antjanus avatar cmwinters avatar cvrebert avatar encounter avatar foobarth avatar gabysbrain avatar gakimball avatar gjungb avatar ilanbiala avatar joshuajohnson814 avatar kalisafalzone avatar kevinsalter avatar laurent-le-graverend avatar lozandier avatar mandimey avatar myabc avatar naneer avatar nirlah avatar romainfrancez avatar scottpledger avatar soumak77 avatar stryju avatar thedeerchild avatar thylo avatar tolyo avatar wldcordeiro avatar wtfribley avatar zurbchris avatar

Stargazers

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

Watchers

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

angular-base-apps's Issues

ModalFactory activate does not show dialog anymore

I'm using angular-base-apps v. 1.2 which I downloaded via bower. (I just switched from Foundation for Apps). When I use ModalFactory to create a dialog, and then call its activate() method, the dialog does not appear.

The modal-overlay div element is being appended to the body properly, but it does not get the 'is-active' class, so it remains hidden.

I suspect the issue was introduced in this commit but am not certain as I have not been able to track down the bug:
09eff9f

Happy to help with a fix if possible, but someone who knows the code can probably do a better job of this.

[Doc] Update the changelog page

https://base-apps.github.io/angular-base-apps/#!/changelog

I'm currently considering to migrate from foundation-apps to angular-base-apps but a properly updated changelog would help a lot to understand the changes between the two.

I want to know what I'll get, and if it is actually an interesting move to make.

The main question I am wondering are:

  • Is it a drop in replacement? It very much seems to be (up to 1.2.6) but it's hard to find a definitive answer. If not (or when 2.0 comes), where is the migration guide?
  • What bugfixes am I getting with it?
  • Any new features?
  • Is that doc even up to date? There is no date or version. What version is targeted by the doc? Changelog page indicates 1.2 (no change), while CND links seem to indicate 1.2.6. Readme says it's latest release, confirming it.

So I could find the answer to most questions by browsing around, eg. #9, #35, tags history, readme. But this is not ideal.

Pending releases

Conversation was started on #1, but the thread has grown to include topics that shouldn't be in the initial release. I want to ensure we are all on the same page in terms expectations for upcoming releases. Here is what I'm thinking so far and will update these requirements as needed:

  • Release 1.2.1 (Rebranding)
    • Description
      • Drop in replacement for Foundation for Apps 1.2. No changes should be required to consume this version.
      • Documentation for the release will still leverage Foundation for Apps docs.
    • TODO
      • Merge rebanding branch into master
      • Add gulp task to publish new version of distro files to github and tag them with the version
        • basically copy/paste example from gulp-tag-version and trigger after running build
      • Publish NPM/Bower packages
    • PRs
  • Release 1.2.2 (Bug Fixes and Documentation)
    • Description
      • Bug fixes on top of the 1.2.1 release. Minimal changes may or may not be required to consume this version.
      • Documentation for this release will be fully migrated to github pages.
    • TODO
  • Release 1.2.3 (Bug Fixes)
  • Release 1.2.4 (Tabs Fixes)
    • Improved tab functionality and documentation

Update from Zurb 18 Aug 2016

I talked to Zurb’s lead engineer yesterday evening at a Meetup at Zurb. Foundation for Apps is deprecated, although not officially, yet. The people who were working on it left the company about a year ago. They are discussing making Foundation for Sites plug-ins for Angular, Ember, and React but development is sometime in the future, at least a year away. There is a plugin for Angular 1 done by someone outside the company.

Zurb’s main product for their clients is design and they deliver 5 html pages with a style guide. They don’t seem to be developing single page apps and didn’t discuss that during the Meetup. They are looking for someone to head up their Foundation projects.

Hope this information is useful. Big thank you to those contributing to this project!!!

[Doc] Buttons bring back to the homepage

https://base-apps.github.io/angular-base-apps/#!/button

When clicking on buttons (any of them, except those under Segmented Button Group and Input Groups) we are back to the homepage.

This is pretty annoying. It would be better to do nothing instead, so the user can test the behaviour and the different (CSS) states of clicking on a button.

Open to debate. It could be argued that it is better this way since a real button will usually lead to another page.

Browser support

I was having the strangest bugs appear in my apps only on certain devices and couldn't for the life of me figure out what was going wrong. I then stumbled upon this line of code in the build:

.pipe($.autoprefixer({
  browsers: ['last 2 versions', 'ie 10']
}))

Recent browser releases have changed what this code actually does and therefore which browsers are actually supported by the framework. In my local build I've updated this to the following:

.pipe($.autoprefixer({
  browsers: ['> 1%', 'last 2 versions', 'ie >= 10', 'iOS >= 7', 'Safari >= 7', 'Opera >= 25', 'not ie <= 9']
}))

This should match the exact list provided in the compatibility docs regardless of future releases of any browser. Evergreen browsers such as firefox and chrome will autoupdate the user's browser automatically, so the first two checks should cover those browsers.

Remove iconic from compiled source

The iconic library is included as part of the distributed source code for angular base apps. This needs to changes as it messes with ES6 integration. The iconic library can be included as an additional dependency. It isn't a dependency for the core framework, but will be a dependency for #37.

Add angular-icons integration steps to docs

Angular base apps should be designed to work with any icon library and angular-icons is one step in that direction. All the iconic JS code has been moved into angular-icons and will need to be manually included by developers wishing to continue to use the default iconic support.

Add overlayDestroy to modals

Sparked by this issue, it would be useful to have an overlayDestroy property for modals. This new property would act similar to overlayClose, except that it would also destroy the modal after closing it. This way the modal is completely removed from the DOM when the overlay is clicked. As shown in the issue above, there is a memory leak if you attempt to use overlayClose without providing an ID. Using overlayDestroy in that case would solve the issue.

Fix tabs to work better within framework

The current implementation of tabs does not work well with angular and has resulted in many issues being posted against the old repository. In addition, the tabs don't conform to the internal sub/pub system as all other components, making it impossible to control outside the scope of the tabs. Tabs should be able to be opened and closed using the sub/pub system just like any other component.

Remove $foundation-version scss variable

Is anyone aware of the usage of the $foundation-version SCSS variable in the codebase? I see the comment "Meta styles are included in all builds, as they are a dependency of the Javascript.", however, only foundation-mq is used.

I'll remove it if it is not used, otherwise, the build will need to be updated to auto update the version with each build.

Decouple dynamic routing logic

Decouple the dynamic routing logic from the framework and put it in its own repository. The work was started with https://github.com/zurb/front-router to migrate the gulp task. The base.dynamicRouting and base.dynamicRouting.animations modules should also be moved.

The dynamic routing logic can then be an optional dependency included by applications and does not need to be supported with the core framework.

Icon Manager

Create an angular service (IconManager) which will be responsible for configuring which icons to use in the application. Currently the framework supports a subset of icons from Iconic. The desire is to be able to use any icon library such as Ionicons or Material Icons (or others down the line). The framework should allow configuring which icon library to use via an IconManagerProvider. Ideally, the framework will lazy load the icon library files so that only libraries enabled are loaded.

The IconManagerProvider should provide the following functionality:

  • A configuration object for iconic
    • Enabled by default
    • See current implementation for Iconic provider for other configuration options
  • A configuration object for ionicons
    • Disabled by default
  • A configuration object for materialicons
    • Disabled by default

The IconManager should provide the following functionality:

  • Support icons from Iconic
    • See current implementation for Iconic service and zf-iconic directive
  • Support icons from Ionicons
  • Support icons from Material Icons
  • Allow lazy loading library files
    • See https://github.com/urish/angular-load
    • Path to files can be part of config object. By default the paths can be configured to point to a CDN where the files are hosted. The developer can choose to override this with local paths if they want to host their own files.
    • Once lazy loading is supported, it should still allow the developer to not lazy load the files, in the event they want to include the icon library source in their application source for backwards compatibility.

Add following directives:

  • ba-iconic
    • should be interchangeable with zf-iconic since zf-iconic will become ba-iconic after prefix rename (#31)
  • ba-ionicons
    • options should be similar to ba-iconic for consistency
  • ba-material-icons
    • options should be similar to ba-iconic for consistency

Add no support detection to docs

If the framework is not supported by the browser, display an overlay indicating lack of support. Currently I use Modernizr's flex-box support as the way for determining whether the framework is supported. With Modernizr's automated custom build, the size of the additional dependencies for this feature can be minimized.

Provide steps in the docs on how to configure this in any application or possibly create an optional angular module to do it.

Allow displaced tab content to be placed anywhere in markup

Currently, if you attempt to place zf-tab-content above zf-tabs, the displaced functionality will not work. Example markup shown below:

<div zf-tab-content target="displaced-tabs">
</div>
<div zf-tabs id="displaced-tabs" displaced="true">
  <div zf-tab title="Tab 1">
    Tab 1
  </div>
  <div zf-tab title="Tab 2">
    Tab 2
  </div>
  <div zf-tab title="Tab 3">
     Tab 3
  </div>
</div>

Links inside zf-close aren't working

The following code will cause the link to not navigate to the desired page:

<div zf-close="anything">
  <a href="www.google.com" target="_blank">google</a>
</div>

As a workaround, you can use:

<div zf-close="anything">
  <a ng-click="navigate()">google</a>
</div>

Where navigate will programmatically change the url. This solution will not work for me however since the html used inside the div is generated via markdown.

Prompt Modal

Create a reusable PromptModal modal that can replace window.prompt. The implementation of PromptModal should simply use ModalFactory as shown in the docs for the ProgrammaticModal. The following JS options must be configurable for the PromptModal:

  • Title
  • Content
  • Input Type
    • value to use for the type attribute of the input
  • Enter Callback
    • callback should have one argument, that being the value entered by the user
  • Cancel Callback

The class prompt-modal can be added to the modal via the ModalFactory class option. This will allows others to style the modal as needed. A more robust SCSS solution can also be implemented.

New Features

With most of the framework stabilized as of v1.2.5, I'm looking for what to work on next for this framework. If anyone has opinions on new features or enhancements to existing ones, let's talk about it! Here are the current approved features:

Loading Symbols (#38) (v2.0)

A set of loading symbol directives that make it easy to change the style and color of the loading symbol. The directive should work flawlessly with ng-if, ng-show, and ng-hide to allow controlling the visibility of the symbol (i.e. show when loading data, hide when data is loaded).

I'm thinking this library would be cool to integrate: http://tobiasahlin.com/spinkit/

Confirm Modal (#39) (v1.2.6)

A directive to replace window.confirm. The directive would be built using a modal and allow for an asynchronous confirmation in the app. Various SCSS variables can be exposed to allow styling of the confirmation modal.

Prompt Modal (#40) (v1.2.6)

A directive to replace window.prompt. The directive would be built using a modal and allow for an asynchronous prompt in the app. Various SCSS variables can be exposed to allow styling of the confirmation modal.

Replace Font Iconic (#37) (v2.0)

Its a commercial webfont and icon set and including its free parts is plain advertising. Two great replacement options are either Ionicons or Android icons. Either choice will be a much better feature for us.

Animating Views (#42) (v2.0)

Does anybody actually use them? Its not valid HTML, it belongs in route definitions and if necessary, it can be moved to a separate directive. Do we need them?

Firebase Integration

I will be using firebase for an upcoming app and will be using the angularfire library to integrate with firebase. Once you integrate any type of backend with this apps framework, you'll find you need some way to block access to certain content, so it would make sense to provide a standard way to do this for any app. Once I have a better idea of the requirements I'll provide more details.

Allow tabs to be closed by default

Currently, the tabs component requires one tab to be one at all times. Update the component so that it can optionally allow not having a tab open. In this case, close all tabs to start and if a tab is open, allow close it by clicking the tab (the same way it was opened).

For consistency, use the same auto-open and collapsible attributes as the accordion

Confirm Modal

Create a reusable ConfirmModal modal that can replace window.confirm. The implementation of ConfirmModal should simply use ModalFactory as shown in the docs for the ProgrammaticModal. The following JS options must be configurable for the ConfirmModal:

  • Title
  • Content
  • Enter Callback
  • Cancel Callback

The class confirm-modal can be added to the modal via the ModalFactory class option. This will allows others to style the modal as needed. A more robust SCSS solution can also be implemented.

Wave loader not scaling perfectly

The wave loader does not scale properly. The spacing is off when the wave is small. The SCSS math needs to be updated so the wave looks correct for all sizes. The issues seem to do with fractional pixels.

Documentation updates

The following updates need to be made to the documentation:

  • Migrate docs to github pages branch
  • Enhance API documentation
  • Enhance examples with more real-world scenarios
    • communication between components via sub/pub system

Three bounce loader not scaling perfectly

The three bounce loader does not scale properly. The dots are not perfect circles when the three bounce is small. The SCSS math needs to be updated so the three bounce looks correct for all sizes. The issues seem to do with fractional pixels.

Betters docs for displaced tabs

I have no idea how displaced tabs work based on the example in the docs. No content is in the displaced html, so how is the example suppose to even showcase the feature...

Loading Symbol Directives

Create a set of loading symbol directives that make it easy to change the style and color of the loading symbol. The loading symbols from SpinKit would be a good place to start. All the loading symbols are created with SCSS and will plug in nicely with this framework.

Add secondary to $foundation-colors

Add $secondary-color to $foundation-colors scss variable. This will allow using the secondary class for labels, cards, and iconic coloring. These are the only components in the codebase which currently use $foundation-colors.

Fix accordions to work better within framework

The current implementation of accordions does not work well with angular and has resulted in many issues being posted against the old repository. In addition, the accordions don't conform to the internal sub/pub system as all other components, making it impossible to control outside the scope of the accordions. Accordions should be able to be opened and closed using the sub/pub system just like any other component.

Remove reference to foundation in all files

Remove references to all foundation modules and files. This release will require developers use the new base modules and distro files as defined in the 1.2.1 release.

  • replace zf references with ba (in framework and docs)
  • remove foundation modules
  • remove foundation distro files
  • remove foundation in docs
  • replace foundation in code base (#44)

Documentation Rebranding

The docs heavily references Zurb / Foundation and there are many links to their various sites. These references need to be removed or updated throughout the docs.

Host multiple versions of the docs

This will allow users to view the docs for 1.x and 2.x without having to manually git clone the older docs.

This will be a bit tricky though, since both sets of docs create the same angular application. The docs are hosted on github pages, so we can't simply route the urls to point to the correct version of the docs. Some type of master controller can be added which can bootstrap the correct version of the docs, though that may be overkill.

Perhaps we can simply host the docs for 1.2.6 somewhere else and leave the github pages to always be the latest version. Maybe create a separate repo for the 1.2.6 docs and host those through github pages? This isn't scalable for the future, but would be enough for 2.0.

What needs to be done for initial release

We need to release angular-base to NPM but before that gets done, there is a lot of work to do, mainly having to do with other open source projects related to Foundation for Apps, and branding as well as deciding on the structure of the leadership behind this fork.

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.