Panel

misc

Element with header, toolbar, buttons, menu, content, feedback and footer.

Example

Title

Description

Toolbar
Panel content

Save

Cancel

HTML code
<div class="panel panel--floating ui-draggable" style="width: 340px; display: block; position: relative; z-index: 0;">
<form>
  <div class="panel-heading ui-draggable-handle">
    <div class="columns">
      <div class="column-left" data-role="icon">
        <span class="button button--plain button--icon"><i class="fa fa-app-action"></i></span>
      </div>
      <div class="column-left" data-role="title">
        <h2>Title</h2>
        <p>Description</p>
      </div>
      <div class="column-right js-menu">
        <button class="button button--plain button--icon is-selected" value="" name="edit" tooltip="Muokkaa" data-role="tab__nav" type="button"><i class="fa fa-app-edit"></i></button>
        <button class="button button--plain button--icon" value="" name="reminder" tooltip="Muistutus" data-role="tab__nav" type="button"><i class="fa fa-app-reminder"></i></button>
      <span class="button button--plain button--icon" data-role="close"><i class="fa fa-close"></i></span>
    </div>
  </div>
  </div>
  <div class="panel-toolbar">Toolbar</div>
  <div class="panel-body js-content">
    <div data-role="tab__content" name="edit" style="padding-top: 8px;">Panel content</div>
    <div data-role="tab__content" name="reminder" style="display: none;"></div>
  </div>
  <div class="panel-footer">Footer</div>
  <div class="panel-feedback">
     <div class="alert"><h4>Alert</h4></div>
  </div>
  <div class="panel-button">
    <div class="group">
      <span class="button button--success"><i class="fa fa-app-save"></i><h4>Save</h4></span>
      <span class="button"><i class="fa fa-app-remove"></i><h4>Cancel</h4></span>
    </div>
  </div>
</form>
</div>
Type molecule
Group misc
Elements title, description, icon
Documentation

### Parameters

Parameter  Type  Description
id  string Panel identifier, is set to: data-id.
title  string Panel main title.
titleText html Content after title.
description  string Panel additional description.
icon  mixed Panel icon. See cms.ui.renderIcon().
form bool Wrap panel content with form. Default: false.
menu  string Additional menu content. See cms.ui.renderIcon().
button  mixed Button -content. See cms.ui.renderButton().
toolbar  html Content that is added to toolbar.
contentHeader html Shown before panel content.
content  html Main content.
footer  {} Content to footer.
- left html Footer left content.
- center html Footer center content.
- right html Footer right content.
parent element Element panel is appended in.
target element Element panel is positioned at.
display string How to display panel: inline, floating, fixed (moves content away)
position html
- vertical html
- - - panel string Position: top,middle,bottom.
- - - target string Position: top,middle,bottom.
- - - offset html Offset in pixels.
- horizontal {}
- - - panel html Position: left,center,right.
- - - target html Position: left,center,right.
- - - offset html Offset in pixels.
close_type string What happens when panel is closed: remove/hide. Default: remove.
contentHeight  int Height of the main content. Overflow scroll.
style string List of style attributes
width int Panel width.
height  string Panel height.
attrText  string Additional attr -text added inside panel main element.
Deprec  Type  Description
appendTo  element parent
appendTo  element target
element

jQuery, DOM, selector

cms.panel Functions

Functions Return Description
.create(param) panel Create new panel from given params.
.get(panelId) panel Return any panel by panel ID.
.getElement() DOM Panel DOM element.
.elemTitle() DOM Panel title DOM element.
.elemToolbar() DOM Panel toolbar DOM element.
.elemContent() DOM Panel content DOM element.
.elemButton() DOM Panel buttons DOM element.
.elemFooter() DOM Panel footer DOM element.
.isOpen() bool Return true, if panel is open.
.open() Open, load content !!!!!????
.focus() this Activate, bring to front.
.refresh() this Update panel position.
.close() this Close panel (hide or remove).
.toggle() this Show/hide panel
.show([target]) Show panel.
.hide() Hide panel.
.load(name,param) panel Load predefined panel from server and open it.
Overridable Return  Description
.onload() -  Function to run after panel is loaded??
.onrender() - Function to run after panel is rendered.
.onopen() -  Function to run after panel is opened.
.onclose() -  Function to run before panel is closed (hide or remove).
.onhide() -  Function to run before panel is hidden.
.onshow() -  Function to run before panel is showed.
.onfocus() -  Function to run before panel is activated
.onremove() -  Function to run before panel is removed.
.onrefresh() -  Function to run before panel is refreshed.

PHP

Wrapper to use element through PHP

Extends eUiElement
Render html
Create arguments
Methods
Method name Description
addButton()
addMenu()
addHidden()
Code example

PHP use

$Panel = $this->get('ui', 'panel', Array(
  icon     => 'app-addnew',
  title    => 'Title text',
  position => 'inline', // Inline HTML
  action   => 'url',
  hidden   => Array(
    'hidden_name' => 'hidden_value'
  ),
  button   => Array(
    Array(
      'icon'   => 'addnew',
      'title'  => 'Save',
      'color'  => 'Green',
      'name'   => 'submit'
    )
  ),
  menu   => Array(
    Array(
      'icon'   => 'addnew',
      'onlick' => 'runMe()'
    )
  ),
  content  => 'Panel content'
));

Javascript

Wrapper to use element through Javascript

Methods
Method name Description
addTab(parameters) Add new tab to panel.
openTab(name) Add new tab.
elemTab(name) Get tab contents jQuery element.
isLoading(flag) Flag to indicate that panel is loading something.
addHidden(parameters) Add hidden INPUT element.
addButton(parameters) Add button to panel.
addSaveButton(parameters) Add a save -button to panel.
addDeleteButton(parameters) Add a delete -button to panel.
addClearButton(parameters) Add a clear -button to panel.
addReadyButton(parameters) Add a ready -button to panel.
addCancelButton(parameters) Add a cancel -button to panel.
addMenu(parameters) Add meu to panel.
newFeedback(parameters) Add feedback to panel and return its- jQuery element.
addFeedback(parameters) Add feedback to panel.
setFeedback(parameters) Clear feedbacks and add feedback to panel.
clearFeedback() Clear all feedbacks in this panel.
setTitle() Set title text.
setDescription() Set description text.
setIcon(icon) Set panel icon.
setContent() Clear contentn and add data to panel content.
addContent() Add data to panel content.
addContentViewtype(type, param) Load viewtype and add it as panel content.
elemTitle() Get title jQuery element.
elemDescription() Get description jQuery element.
elemHeader() Get header jQuery element.
elemToolbar() Get toolbar jQuery element.
elemContent() Get content jQuery element.
elemFeedback() Get feedback jQuery element.
elemFooter() Get footer jQuery element.
Code example

Simple use

var $Panel = cms.get('ui', 'panel', {
  icon:     'app-addnew',
  title:    'Title text',
  content:  'Panel content'
});

Additional parameters

var $Panel = cms.get('ui', 'panel', {
  id:          'id',      // Is set as data-id
  role:        'role',    // Is set as data-role
  description: 'Additional text under title',
  style:       '',        // menu, condensed.
  close_type:  'remove',  // Remove/hide on close.
  modal:       false,     // If true, panel is shown as modal panel. (prevents other interaction with the page)
  tabs:        [{}],      // Tabs content

  // Menu: In end of the row. Same parameters as button.
  menu: [{
    icon: 'app-addnew'
    onclick: function(){
      alert('Menu clicked');
    }
  }]
});

Form panel

var $Panel = cms.get('ui', 'panel', {
  form:   true,     // Add FROM tag to panel.
  button: [{
    icon: 'app-edit',
    color: 'red',
    onclick: function(){
      alert('Button clicked');
    }
  }],
  // Hidden values as name=value -pairs
  hidden: {
      id:        Todo.id,
      table_id:  Todo.table_id,
      record_id: Todo.record_id
  },
  // Hidden values as List of objects
  hidden: [{
      name:  'name',
      value:  123
  }],
});

Header and footer

var $Panel = cms.get('ui', 'panel',{
  toolbar:   '',
  toolbar: {
    left:      '',
    center:    '',
    right:     ''
  },
  footer:    '',
  footer: {
    left:      '',
    center:    '',
    right:     ''
  }
});

Size and positioning

var $Panel = cms.get('ui', 'panel', {
  width:         400,   // Panel width
  height:        400,   // Panel height
  contentHeight: 400,   // body div height
  closed:        false, // Initial state (true, if is used via toggle)
  target:        '',    // Element that panel is positioned at
  parent:        '#wrapper-float', // Selector of the DOM element that panel is appended to.
  position:      'atop', // over, under ... As in .anchorTo()
  position: {
    vertical: {
      panel:  'top',
      target: 'bottom',
      offset: '4'
    },
    horizontal: {
      panel:  'left',
      target: 'left',
      offset: '0'
    }
  },
});

Inline panel

var $Panel = cms.get('ui', 'panel', {
  title: 'Panel title',
  display: 'inline',
  content: 'Inline content'
});

Panel Tabs

var $Panel = cms.get('ui', 'panel',{
  tab_position: 'menu' // title, header
});
$Panel.addTab({
  icon:      'app-config',
  name:      'mytab',
  title:     'Title',     // Text to show under icon
  tooltip:   'Tooltip text',
  data: {
    showButtons: 'true'   // Show buttons when this tab is open
  },
  onclick:   function(){}
});

// Modify tab content
$Panel.elemTab('mytab').append('Content')

Panel Feedback

// Add feedback
var $Feedback = $Panel.newFeedback({
  icon:  'app-warning',
  title: 'Something went wrong'
});

// Remove feedback using jQuery
$Feedback.remove();

Styles

Elements Css style

inline
Panel that is in page content.
floating
Panel that is floating on top of the page.
fullscreen
Whole screen
top
If with fullscreen, renders under the header
condensed
No paddings
list
Contains list. Row.col are added with overflow:auto -functionality
menu
Popup -menu: Datepicker etc
select
Match with form select -elements. (autocomplete etc)
leftside
From left side of the screen
rightside
From tight side of the screen