If you have technical questions, please create a support ticket in the DevExpress Support Center.
$(() => {
let employee = null;
const popupContentTemplate = function () {
return $('<div>').append(
$(`<p>Full Name: <span>${employee.FirstName}</span>
<span>${employee.LastName}</span></p>`),
$(`<p>Birth Date: <span>${employee.BirthDate}</span></p>`),
$(`<p>Address: <span>${employee.Address}</span></p>`),
$(`<p>Hire Date: <span>${employee.HireDate}</span></p>`),
$(`<p>Position: <span>${employee.Position}</span></p>`),
);
};
const popup = $('#popup').dxPopup({
contentTemplate: popupContentTemplate,
width: 300,
height: 280,
container: '.dx-viewport',
showTitle: true,
title: 'Information',
visible: false,
dragEnabled: false,
hideOnOutsideClick: true,
showCloseButton: false,
position: {
at: 'bottom',
my: 'center',
collision: 'fit',
},
toolbarItems: [{
locateInMenu: 'always',
widget: 'dxButton',
toolbar: 'top',
options: {
text: 'More info',
onClick() {
const message = `More info about ${employee.FirstName} ${employee.LastName}`;
DevExpress.ui.notify({
message,
position: {
my: 'center top',
at: 'center top',
},
}, 'success', 3000);
},
},
}, {
widget: 'dxButton',
toolbar: 'bottom',
location: 'before',
options: {
icon: 'email',
stylingMode: 'contained',
text: 'Send',
onClick() {
const message = `Email is sent to ${employee.FirstName} ${employee.LastName}`;
DevExpress.ui.notify({
message,
position: {
my: 'center top',
at: 'center top',
},
}, 'success', 3000);
},
},
}, {
widget: 'dxButton',
toolbar: 'bottom',
location: 'after',
options: {
text: 'Close',
stylingMode: 'outlined',
type: 'normal',
onClick() {
popup.hide();
},
},
}],
}).dxPopup('instance');
employees.forEach((currentEmployee) => {
$('<li>').append(
$('<img>')
.attr('alt', `${currentEmployee.FirstName} ${currentEmployee.LastName}`)
.attr('src', currentEmployee.Picture)
.attr('id', `image${currentEmployee.ID}`),
$('<br>'),
$('<span>').html(`<i>${currentEmployee.FirstName}</i>`),
$('<span>').html(` <i>${currentEmployee.LastName}</i>`),
$('<br>'),
$('<div>')
.addClass('button-info')
.dxButton({
text: 'Details',
onClick() {
employee = currentEmployee;
popup.option({
contentTemplate: () => popupContentTemplate(),
'position.of': `#image${employee.ID}`,
});
popup.show();
},
}),
).appendTo($('#employees'));
});
});
xxxxxxxxxx
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
<head></head>
<body class="dx-viewport">
<div class="demo-container">
<div id="container">
<div class="header">Employees</div>
<ul id="employees"></ul>
<div id="popup"></div>
</div>
</div>
</body>
</html>
xxxxxxxxxx
.header {
font-size: 34px;
text-align: center;
}
#container {
padding: 10px;
}
#container ul {
list-style-type: none;
text-align: center;
}
#container ul li {
display: inline-block;
width: 160px;
margin: 10px;
}
#container ul li img {
width: 100px;
}
.button-info {
margin: 10px;
}
.dx-popup-content p {
margin-bottom: 10px;
margin-top: 0;
}
xxxxxxxxxx
const employees = [{
ID: 7,
FirstName: 'Sandra',
LastName: 'Johnson',
Prefix: 'Mrs.',
Position: 'Controller',
Picture: 'images/employees/06.png',
BirthDate: '1974/11/15',
HireDate: '2005/05/11',
Notes: "Sandra is a CPA and has been our controller since 2008. She loves to interact with staff so if you've not met her, be certain to say hi.\r\n\r\nSandra has 2 daughters both of whom are accomplished gymnasts.",
Address: '4600 N Virginia Rd.',
}, {
ID: 10,
FirstName: 'Kevin',
LastName: 'Carter',
Prefix: 'Mr.',
Position: 'Shipping Manager',
Picture: 'images/employees/07.png',
BirthDate: '1978/01/09',
HireDate: '2009/08/11',
Notes: 'Kevin is our hard-working shipping manager and has been helping that department work like clockwork for 18 months.\r\n\r\nWhen not in the office, he is usually on the basketball court playing pick-up games.',
Address: '424 N Main St.',
}, {
ID: 11,
FirstName: 'Cynthia',
LastName: 'Stanwick',
Prefix: 'Ms.',
Position: 'HR Assistant',
Picture: 'images/employees/08.png',
BirthDate: '1985/06/05',
HireDate: '2008/03/24',
Notes: 'Cindy joined us in 2008 and has been in the HR department for 2 years. \r\n\r\nShe was recently awarded employee of the month. Way to go Cindy!',
Address: '2211 Bonita Dr.',
}, {
ID: 30,
FirstName: 'Kent',
LastName: 'Samuelson',
Prefix: 'Dr.',
Position: 'Ombudsman',
Picture: 'images/employees/02.png',
BirthDate: '1972/09/11',
HireDate: '2009/04/22',
Notes: 'As our ombudsman, Kent is on the front-lines solving customer problems and helping our partners address issues out in the field. He is a classically trained musician and is a member of the Chamber Orchestra.',
Address: '12100 Mora Dr',
}];
Show and Hide the JavaScript Popup
Call the show() method to display the JavaScript Popup. To close a JavaScript Popup, choose one of the following options:
-
Built-in close button
Enable the showCloseButton property to display the Close button in a JavaScript Popup's top toolbar. -
Custom close button
This demo shows how to add custom buttons to the JavaScript Popup. One of them uses an onClick handler to call the hide() method that closes the JavaScript Popup. Refer to the next section (Configure the JavaScript Popup) to learn how you can populate a popup with custom controls. -
On outside click
Enable the hideOnOutsideClick property to allow users to hide the JavaScript Popup by clicking outside the component.
Configure the JavaScript Popup
The JavaScript Popup inner area is divided into three parts:
-
Top toolbar
-
Predefined
Set showTitle totrue
and use the title property to specify the caption. The Close button will appear if you do not disable the showCloseButton property. -
Custom
Add toolbarItems markup and set each item's toolbar property totop
. If you want to display an item in the overflow menu, as shown in this demo, set the item's locateInMenu property toalways
. You can also assignnever
to this property to keep the item outside the overflow menu, or you can assignauto
to hide the item in the menu if the JavaScript Popup's width decreases.
-
-
Content area
To populate the JavaScript Popup with content, use the contentTemplate property. -
Bottom toolbar
To enable the bottom toolbar, declare the toolbarItems array as shown in this demo. Set each item's toolbar property tobottom
. To learn more about toolbar configuration, refer to the following tutorial: Getting Started with Toolbar
Resize and Position
To specify JavaScript Popup size, use the height and width properties.
In this demo, each JavaScript Popup's location is relative to the image. The code specifies the my, at, and of properties of the position object. The configuration in the demo reads as follows: "place my center
side at the bottom
side of the #image${employee.ID}
element."
Use the container property to select the container in which you want to render the JavaScript Popup. If you set the container property to an element on the page, the shading applies to this element.
Turn on the dragEnabled option to allow users to move the JavaScript Popup around the page.