Research
Security News
Malicious npm Package Targets Solana Developers and Hijacks Funds
A malicious npm package targets Solana developers, rerouting funds in 2% of transactions to a hardcoded address.
exarcheia-vue-silentbox
Advanced tools
A second version of the lightweight lightbox inspired component for Vue.js with local video support and more features coming. If you're interested, see demo.
npm install --save vue-silentbox
Import the plugin into Vue:
import Vue from 'vue'
import VueSilentbox from 'vue-silentbox'
Vue.use(VueSilentbox)
Define an array of images in the data object of your Vue instance or component.
const app = new Vue({
el: '#application',
data: {
images: [
{
src: 'images/image001.jpg',
srcSet: '/images/image001-640.jpg 640w,/images/image001-1280.jpg 1280w,/images/image001-1920.jpg 1920w',
description: 'Sunken dreams II. by Arbebuk',
},
{
src: 'images/image002.jpg',
srcSet: '/images/image002-640.jpg 640w,/images/image002-1280.jpg 1280w,/images/image003-1920.jpg 1920w',
description: 'Tunnel View Sunrise by Porbital',
},
{
sources: [
{
src: 'images/image003.webp',
srcSet: '/images/image003-640.webp 640w,/images/image003-1280.webp 1280w,/images/image003-1920.webp 1920w',
media: '(max-width: 799px)',
type: 'image/webp'
}
],
thumbnail: 'images/image-resize-001.jpg',
thumbnailSources: [
{
src: 'images/image001.webp',
srcSet: '/images/image-resize-001-640.webp 640w,/images/image-resize-001-1280.webp 1280w,/images/image-resize-001-1920.webp 1920w',
media: '(max-width: 799px)',
type: 'image/webp'
}
],
src: 'images/image002.jpg',
srcSet: '/images/image002-640.jpg 640w,/images/image002-1280.jpg 1280w,/images/image003-1920.jpg 1920w',
description: 'Tunnel View Sunrise by Porbital',
}
]
},
})
Then in the template you use a silent-box
component to display the gallery.
<silent-box :gallery="images"><!-- your additional content --></silent-box>
Or you can show a single image by just renaming the property.
<silent-box :image="images[0]"><!-- your additional content --></silent-box>
In case you don't like the default image previews that SilentBox provides, you can
set your own activators - text, button or even a video! SilentBox provides a named slot for this - silentbox-item
. The slot provides variable called silentboxItem
which
provides you access to all properties you set on image object.
<!--
In this example only alt text is displayed as an activator.
-->
<silent-box :gallery="images">
<h2 class="tw-text-3xl tw-font-bold tw-mb-2">Gallery</h2>
<p class="tw-font-light tw-mb-3">
Items could be merged into groups that make galleries.
</p>
<template v-slot:silentbox-item="{ silentboxItem }">
<p>{{ silentboxItem.alt }}</p>
</template>
</silent-box>
You can set the following attributes to the image object to change the behaviour
of the SilentBox or display additional information. On the other hand, if you're
lazy, only the src
attribute is required.
Attribute | required | type | Description |
---|---|---|---|
src | yes | string | Media source, it could be an image, video or a YouTube / Vimeo embed link |
sources | no | array | Array from various sources |
srcSet | no | string | SrcSet to make use of responsive images |
thumbnail | no | string | Image used for thumbnail |
thumbnailSources | no | array | Array from various sources of image used for thumbnail |
thumbnailHeight | no | string | Height of the thumbnail in px |
thumbnailWidth | no | string | Width of the thumbnail in px |
description | no | string | Short description below image (doesn't work below videos yet) |
alt | no | string | Alt description for images |
autoplay | no | bool | To autoplay youtube / Vimeo video |
controls | no | bool | Works only for youtube videos, setting false will hide video controls |
These attributes can change the gallery element behaviour.
Attribute | required | type | Description |
---|---|---|---|
gallery | no | array | list of image objects that will be displayed in the gallery |
image | no | object | image object that will be displayed in the gallery |
lazy-loading | no | bool | whether images should be lazy loaded |
preview-count | no | number | number of images that should be displayed in the gallery |
SilentBox also fires several events that can be further used in your Vue.js application. Each event has a payload that contains the
item
object which holds information about the currently displayed item.
Event name | When is event fired |
---|---|
silentbox-overlay-opened | when the overlay is opened |
silentbox-overlay-hidden | when the overlay is closed (button or ESC key) |
silentbox-overlay-next-item-displayed | when the user moves to the next picture (arrow or key) |
silentbox-overlay-previous-item-displayed | when the user moves to the previous picture (arrow or key) |
SilentBox provides two options how to open the overlay programatically. If you need to open an existing gallery, the best option
is to use the ref
attribute and then call the method openOverlay
on the $refs
object in your method. See example:
<silent-box ref="silentbox" :gallery="images"></silent-box>
and then the method openOverlay
can be called from your method:
// ...
methods: {
// the index parameter is optional, however it should be set if you're opening
// the overlay on different position than the beginning of the gallery
openOverlayProgramaticallyWithContext (item, index = 0) {
this.$refs.silentbox.openOverlay(item, index)
}
}
// ...
However, in case you just want to open an item without any context, it might be a better choice to call the global open
method that SilentBox provides.
// ...
methods: {
openOverlayProgramaticallyWithoutContext (item) {
this.$silentbox.open(item)
}
}
// ...
Version 2 brought many breaking changes. There are no more two separate components
to display a single image or gallery. So, change all your silentbox-group
and silentbox-single
components to silent-box
.
The source of images must be an array of objects or a single object with previously mentioned attributes.
All contributions are welcomed, however give me some time to review your requests. Please, use emoji in your commits, so it is easier to identify what your commits do. There are several emoji guides on the internet. Please stick with mine which is inspired by Atom contributing guidelines, see emoji in commits.
FAQs
A simple lightbox inspired Vue.js component.
The npm package exarcheia-vue-silentbox receives a total of 6 weekly downloads. As such, exarcheia-vue-silentbox popularity was classified as not popular.
We found that exarcheia-vue-silentbox 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
Security News
A malicious npm package targets Solana developers, rerouting funds in 2% of transactions to a hardcoded address.
Security News
Research
Socket researchers have discovered malicious npm packages targeting crypto developers, stealing credentials and wallet data using spyware delivered through typosquats of popular cryptographic libraries.
Security News
Socket's package search now displays weekly downloads for npm packages, helping developers quickly assess popularity and make more informed decisions.