
Research
Malicious fezbox npm Package Steals Browser Passwords from Cookies via Innovative QR Code Steganographic Technique
A malicious package uses a QR code as steganography in an innovative technique.
v-accordion
Advanced tools
ng-repeat
If you use bower or npm, just bower/npm install v-accordion
. If not, download files from the github repo.
Include angular.js
, angular-animate.js
, v-accordion.js
, and v-accordion.css
:
<link href="v-accordion.css" rel="stylesheet" />
<script src="angular.js"></script>
<script src="angular-animate.js"></script>
<script src="v-accordion.js"></script>
vAccordion
as a dependency to your application module:angular.module('myApp', ['vAccordion']);
<!-- add `multiple` attribute to allow multiple sections to open at once -->
<v-accordion class="vAccordion--default" multiple>
<!-- add expanded attribute to open the section -->
<v-pane expanded>
<v-pane-header>
Pane header #1
</v-pane-header>
<v-pane-content>
Pane content #1
</v-pane-content>
</v-pane>
<v-pane disabled>
<v-pane-header>
Pane header #2
</v-pane-header>
<v-pane-content>
Pane content #2
</v-pane-content>
</v-pane>
</v-accordion>
v-accordion
with ng-repeat
:<v-accordion class="vAccordion--default">
<v-pane ng-repeat="pane in panes" expanded="$first">
<v-pane-header>
{{ ::pane.header }}
</v-pane-header>
<v-pane-content>
{{ ::pane.content }}
<!-- accordions can be nested :) -->
<v-accordion ng-if="pane.subpanes">
<v-pane ng-repeat="subpane in pane.subpanes">
<v-pane-header>
{{ ::subpane.header }}
</v-pane-header>
<v-pane-content>
{{ ::subpane.content }}
</v-pane-content>
</v-pane>
</v-accordion>
</v-pane-content>
</v-pane>
</v-accordion>
Add control
attribute and use following methods to control vAccordion from it's parent scope:
toggle(indexOrId)
expand(indexOrId)
collapse(indexOrId)
expandAll()
collapseAll()
hasExpandedPane()
<v-accordion id="my-accordion" multiple control="accordion">
<v-pane id="{{ pane.id }}" ng-repeat="pane in panes">
<v-pane-header>
{{ ::pane.header }}
</v-pane-header>
<v-pane-content>
{{ ::pane.content }}
</v-pane-content>
</v-pane>
</v-accordion>
<button ng-click="accordion.toggle(0)">Toggle first pane</button>
<button ng-click="accordion.expandAll()">Expand all</button>
<button ng-click="accordion.collapseAll()">Collapse all</button>
$scope.$on('my-accordion:onReady', function () {
var firstPane = $scope.panes[0];
$scope.accordion.toggle(firstPane.id);
});
$accordion
and $pane
scope properties allows you to control the directive from it's transcluded scope.
toggle(indexOrId)
expand(indexOrId)
collapse(indexOrId)
expandAll()
collapseAll()
hasExpandedPane()
toggle()
expand()
collapse()
isExpanded()
<v-accordion multiple>
<v-pane ng-repeat="pane in panes">
<v-pane-header inactive>
{{ ::pane.header }}
<button ng-click="$pane.toggle()">Toggle me</button>
</v-pane-header>
<v-pane-content>
{{ ::pane.content }}
</v-pane-content>
</v-pane>
<button ng-click="$accordion.expandAll()">Expand all</button>
</v-accordion>
vAccordion:onReady
or yourAccordionId:onReady
vAccordion:onExpand
or yourAccordionId:onExpand
vAccordion:onExpandAnimationEnd
or yourAccordionId:onExpandAnimationEnd
vAccordion:onCollapse
or yourAccordionId:onCollapse
vAccordion:onCollapseAnimationEnd
or yourAccordionId:onCollapseAnimationEnd
Use these callbacks to get expanded/collapsed pane index and id:
<v-accordion onexpand="expandCallback(index, id)" oncollapse="collapseCallback(index, id)">
<v-pane id="{{ ::pane.id }}" ng-repeat="pane in panes">
<v-pane-header>
{{ ::pane.header }}
</v-pane-header>
<v-pane-content>
{{ ::pane.content }}
</v-pane-content>
</v-pane>
</v-accordion>
$scope.expandCallback = function (index, id) {
console.log('expanded pane:', index, id);
};
$scope.collapseCallback = function (index) {
console.log('collapsed pane:', index, id));
};
vAccordion manages keyboard focus and adds some common aria-* attributes. BUT you should additionally place the aria-controls
and aria-labelledby
as follows:
<v-accordion>
<v-pane ng-repeat="pane in panes">
<v-pane-header id="{{ ::pane.id }}-header" aria-controls="{{ ::pane.id }}-content">
{{ ::pane.header }}
</v-pane-header>
<v-pane-content id="{{ ::pane.id }}-content" aria-labelledby="{{ ::pane.id }}-header">
{{ ::pane.content }}
</v-pane-content>
</v-pane>
</v-accordion>
<v-accordion multiple control="myAccordion" onexpand="expandCb(index, id)">
<v-pane id="myPane1">
<v-pane-header>
First pane header
</v-pane-header>
<v-pane-content>
First pane content
</v-pane-content>
</v-pane>
<v-pane id="myPane2">
<v-pane-header>
Second pane header
</v-pane-header>
<v-pane-content>
Second pane content
<v-accordion multiple control="mySubAccordion">
<v-pane id="mySubPane1">
<v-pane-header inactive>
First pane header
<button ng-click="$pane.toggle()">Toggle me</button>
</v-pane-header>
<v-pane-content>
First pane content
</v-pane-content>
</v-pane>
</v-accordion>
</v-pane-content>
</v-pane>
</v-accordion>
myApp.controller('myAccordionController', function ($scope) {
$scope.expandCb = function (index, id) {
if (id === 'pane1') {
$scope.mySubAccordion.collapse('mySubPane1');
}
};
});
FAQs
vAccordion - AngularJS multi-level accordion component
The npm package v-accordion receives a total of 2,139 weekly downloads. As such, v-accordion popularity was classified as popular.
We found that v-accordion demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
A malicious package uses a QR code as steganography in an innovative technique.
Research
/Security News
Socket identified 80 fake candidates targeting engineering roles, including suspected North Korean operators, exposing the new reality of hiring as a security function.
Application Security
/Research
/Security News
Socket detected multiple compromised CrowdStrike npm packages, continuing the "Shai-Hulud" supply chain attack that has now impacted nearly 500 packages.