Skip to content

Window

The Window component provides a customizable floating window interface with features like dragging, resizing, minimizing, and maximizing. It can be used to create modal dialogs, information panels, or application windows.

  • Metro.Component
  • Metro.draggable
  • Metro.resizable
<!-- Basic usage -->
<div id="my-window" data-role="window" data-title="My Window">
Window content goes here
</div>
<!-- With custom options -->
<div data-role="window"
data-title="Custom Window"
data-icon="<span class='mif-apps'></span>"
data-width="640"
data-height="480"
data-place="center"
data-btn-min="true"
data-btn-max="true"
data-resizable="true">
<p>Window content goes here</p>
</div>

You can also create windows dynamically using JavaScript:

// Create window with options
var win = Metro.window.create({
title: "Dynamic Window",
content: "<div>Window content</div>",
width: 400,
height: 300,
place: "center",
icon: "<span class='mif-rocket'></span>"
});
ParameterTypeDefaultDescription
windowDeferredNumber0Defer initialization of component in milliseconds
hiddenBooleanfalseWhether window is initially hidden
widthString/Number"auto"Window width
heightString/Number"auto"Window height
btnCloseBooleantrueShow close button
btnMinBooleantrueShow minimize button
btnMaxBooleantrueShow maximize button
draggableBooleantrueAllow window to be dragged
dragElementString".window-caption .title"Element used for dragging
dragAreaString"parent"Area where window can be dragged
shadowBooleanfalseAdd shadow to window
iconString""Icon HTML for window caption
titleString"Window"Window title
contentString/Function/ElementnullWindow content
resizableBooleantrueAllow window to be resized
overlayBooleanfalseCreate overlay behind window
overlayColorString"transparent"Overlay color
overlayAlphaNumber0.5Overlay opacity
modalBooleanfalseMake window modal (disables minimize and maximize)
positionString"absolute"CSS position value
checkEmbedBooleantrueCheck if content is a video embed
topString/Number"auto"Initial top position
leftString/Number"auto"Initial left position
placeString"auto"Window placement: “auto” or positioning values like “top-left”, “center”, etc.
closeActionStringMetro.actions.HIDEAction on close: REMOVE or HIDE
customButtonsObjectnullCustom buttons for window caption
statusString""Status bar text
canCloseBooleantrueWhether window can be closed
canMaximizeBooleantrueWhether window can be maximized
canMinimizeBooleantrueWhether window can be minimized
clsCustomButtonString""Additional class for custom buttons
clsCaptionString""Additional class for caption
clsContentString""Additional class for content
clsWindowString""Additional class for window
minWidthNumber0Minimum window width
minHeightNumber0Minimum window height
maxWidthNumber0Maximum window width (0 = no limit)
maxHeightNumber0Maximum window height (0 = no limit)
EventDescription
onDragStartTriggered when window dragging starts
onDragStopTriggered when window dragging stops
onDragMoveTriggered when window is being dragged
onWindowClickTriggered when window is clicked
onCaptionClickTriggered when caption is clicked
onCaptionDblClickTriggered when caption is double-clicked
onCloseClickTriggered when close button is clicked
onMaxClickTriggered when maximize button is clicked
onMinClickTriggered when minimize button is clicked
onResizeStartTriggered when resizing starts
onResizeStopTriggered when resizing stops
onResizeTriggered when window is being resized
onWindowCreateTriggered after window creation
onShowTriggered when window is shown
onWindowDestroyTriggered before window is destroyed
onCanCloseFunction that determines if window can be closed
onMinimizeTriggered when window is minimized
onMaximizeTriggered when window is maximized
onCloseTriggered when window is closed

To access the window component API:

// Get window component
var window = Metro.getPlugin("#my-window", "window");
// Call method
window.setTitle("New Title");
  • width(value) - Get or set window width
  • height(value) - Get or set window height
  • maximize(event) - Maximize the window
  • minimize() - Minimize the window
  • close() - Close the window
  • hide() - Hide the window
  • show() - Show the window
  • toggle() - Toggle window visibility
  • isOpen() - Check if window is visible
  • min(toggle) - Set minimized state
  • max(toggle) - Set maximized state
  • setContent(content) - Set window content
  • setTitle(title) - Set window title
  • setIcon(icon) - Set window icon
  • getIcon() - Get window icon
  • getTitle() - Get window title
  • toggleDraggable(flag) - Enable/disable dragging
  • toggleResizable(flag) - Enable/disable resizing
  • pos(top, left) - Set window position
  • top(value) - Set window top position
  • left(value) - Set window left position

Metro.window provides static methods to control windows:

// Using static methods
Metro.window.min("#my-window", true);
Metro.window.close("#my-window");
  • Metro.window.min(el, flag) - Minimize window
  • Metro.window.max(el, flag) - Maximize window
  • Metro.window.show(el) - Show window
  • Metro.window.hide(el) - Hide window
  • Metro.window.toggle(el) - Toggle window visibility
  • Metro.window.isOpen(el) - Check if window is open
  • Metro.window.close(el) - Close window
  • Metro.window.pos(el, top, left) - Set window position
  • Metro.window.top(el, top) - Set window top position
  • Metro.window.left(el, left) - Set window left position
  • Metro.window.width(el, width) - Set window width
  • Metro.window.height(el, height) - Set window height
  • Metro.window.create(options, parent) - Create new window

The window component uses the following CSS variables that you can customize:

VariableDefault (Light)Dark ModeDescription
--window-scrollbar-size6px6pxScrollbar size
--window-scrollbar-track-radius00Scrollbar track radius
--window-border-size4px4pxWindow border size
--window-border-radius6px6pxWindow border radius
--window-border-color#f3f3f3#484b4cWindow border color
--window-background#fff#1e1f22Window background color
--window-color#191919#dbdfe7Window text color
--window-caption-color#191919#dbdfe7Caption text color
--window-scrollbar-thumb-color#a8a8a8#d1d1d1Scrollbar thumb color
--window-scrollbar-track-color#f1f1f1#2c2c2cScrollbar track color
--window-resize-element-color#a8a8a8#2c2c2cResize handle color
--window-sys-button-color#191919#ffffffSystem button color
--window-sys-button-backgroud-hover#d8d8d8#2c2c2cSystem button hover background
--window-close-button-backgroud-hover#C75050FF#C75050FFClose button hover background
--window-close-button-color-hover#ffffff#ffffffClose button hover text color
#my-window {
--window-border-radius: 10px;
--window-border-color: #0078d7;
--window-caption-color: #ffffff;
}
  • .window - Main window container
  • .window-caption - Window title bar
  • .window-content - Window content area
  • .window-status - Window status bar
  • .shadowed - Adds shadow to window
  • .modal - Modal window style
  • .minimized - Minimized window state
  • .maximized - Maximized window state
  • .resizable - Allows window to be resized
  • .info-window - Info-styled window
  • .alert-window - Alert-styled window
  • .warning-window - Warning-styled window
  • .success-window - Success-styled window
<!-- Info window -->
<div data-role="window" class="info-window">Info window</div>
<!-- Alert window -->
<div data-role="window" class="alert-window">Alert window</div>
<!-- Warning window -->
<div data-role="window" class="warning-window">Warning window</div>
<!-- Success window -->
<div data-role="window" class="success-window">Success window</div>

You can globally configure the window component using the Metro.windowSetup method:

Metro.windowSetup({
shadow: true,
draggable: true,
resizable: true,
btnMax: false,
place: "center"
});