Semantic-Org / Semantic-UI-Angular

Semantic UI Angular Integrations
MIT License
557 stars 117 forks source link

Create Contributing Guidelines #20

Open m0t0r opened 9 years ago

RomainLanz commented 9 years ago

I think it could be a good idea to follow John Papa's style guide https://github.com/johnpapa/angular-styleguide

m0t0r commented 9 years ago

I'll try to get in here on the weekend. For this moment, if you're following:

you are good to go.

RomainLanz commented 9 years ago

But for the moment some directive do not follow John Papa's style guide. Do we need to refactor them?

RomainLanz commented 9 years ago

What do you think of...

The file need to have the name of the directive suffixed by directive. e.g. sm-accordion.directive.js

Your file need to contain only one directive! Your boilerplate need also to follow IIFE syntax and use use strict like below.

(function() {
    'use strict';

    //

})();

All of your function need to be named and you need to create them after the return statement. You also need to create nested function if necessary

(function() {
    'use strict';

    angular
        .module('app.widgets')
        .directive('smAccordion', smAccordion); // Named function

    function smAccordion() {
        var directive = {
            restrict: 'E',
            replace: true,
            transclude: true,
            template: template, // Named function
            link: link // Named function
        };

        return directive; // Return statement

        function link(scope, element, attrs, ctrl, transclude) {
            transclude(scope, transcludeFn); // Nested named function

            function transcludeFn(nodes) {
                // Transclude stuff
            }

        }

        function template() {
            return  '';
        }
    }
})();

The first expression of the link function should be transclude if it exists like the example above. After that you need to have all var's definitions and after all bindings to an element.

function link(scope, element, attrs, ctrl, transclude) {
    transclude(scope, transcludeFn);

    // Var's declarations
    var active = attrs.active || false;

    // Bindings
    element.on('click', toggle);

    // Functions
    function toggle() {
        // Toogle stuff
    }

    function transcludeFn(nodes) {
        // Transclude stuff
    }

}
jlukic commented 9 years ago

@m0t0r @caitp Please when you get a chance send me an email at jack@semantic-ui.com.

I'm hoping to send off a kickoff email to organize all the people interested in getting involved in this project and I don't have your e-mails.

marcotas commented 9 years ago

I totaly agree to use John Papa's styleguide. :+1:

thinq4yourself commented 8 years ago

+1

matheuspoleza commented 8 years ago

As we are thinking of using angular 1.4 with ES6 is legal research on things like: https://github.com/johnpapa/angular-styleguide/issues/390

kowsheek commented 8 years ago

Further to documentation and contribution guide, we should also chat about approach and goals of the project.

matheuspoleza commented 8 years ago

@kowsheek its a good scene. My intention was to create a first release with some references as: angular-bootstrap, angular material, but we need to discuss where to go.

kowsheek commented 8 years ago

Few thoughts I would like to share: