Browse Source

Updating docs to include more tabbed navs

pull/2229/head
jlukic 11 years ago
parent
commit
2090798557
7 changed files with 844 additions and 836 deletions
  1. 1
      RELEASE NOTES.md
  2. 481
      server/documents/module.html.eco
  3. 28
      server/documents/modules/accordion.html.eco
  4. 81
      server/documents/modules/checkbox.html.eco
  5. 1082
      server/documents/modules/dropdown.html.eco
  6. 1
      server/files/javascript/semantic.js
  7. 6
      server/files/stylesheets/semantic.css

1
RELEASE NOTES.md

@ -24,6 +24,7 @@
- Fixes some code samples not being properly indented
**Updates**
- Block header now uses RGBA instead of solid color by default
- Increased padding on attached labels
- Leading on bulleted and ordered list slightly increased
- Horizontal padding on icon list slightly increased

481
server/documents/module.html.eco

@ -7,267 +7,268 @@ description : 'Modules are interface elements whose behavior is an essential par
type : 'Semantic'
---
<%- @partial('header') %>
<%- @partial('header', { tabs: { overview: 'Overview', init: 'Initializing', behavior: 'Behaviors', settings: 'Settings'} }) %>
<div class="main container">
<div class="peek">
<div class="ui vertical pointing secondary menu">
<a class="active item">Overview</a>
<a class="item">Initializing</a>
<a class="item">Behaviors</a>
<a class="item">Settings</a>
</div>
</div>
<h2 class="ui dividing header">Overview</h2>
<p>All official javascript modules in Semantic are designed using a singular design pattern. This pattern allows several useful features common to all javascript components</p>
<div class="ui relaxed list">
<div class="item">
<i class="check icon"></i>
<div class="content">
<div class="header">Run-time Performance Analysis</div>
<p>Semantic modules all provide the ability to log performance traces to the console, allowing you to see which aspects of the module are more or less performant and to track total init time <code>onDomReady</code></p>
<div class="ui tab" data-tab="overview">
<p>All official javascript modules in Semantic are designed using a singular design pattern. This pattern allows several useful features common to all javascript components</p>
<div class="ui relaxed list">
<div class="item">
<i class="check icon"></i>
<div class="content">
<div class="header">Run-time Performance Analysis</div>
<p>Semantic modules all provide the ability to log performance traces to the console, allowing you to see which aspects of the module are more or less performant and to track total init time <code>onDomReady</code></p>
</div>
</div>
</div>
<div class="item">
<i class="check icon"></i>
<div class="content">
<div class="header">Human Readable Traces</div>
<p>Unlike other component libraries which hides explanations of behavior in inline comments which can only be read by combing the source, semantic modules provide run-time debug output to the javascript console telling you what each component is doing as it is doing it.</p>
<div class="item">
<i class="check icon"></i>
<div class="content">
<div class="header">Human Readable Traces</div>
<p>Unlike other component libraries which hides explanations of behavior in inline comments which can only be read by combing the source, semantic modules provide run-time debug output to the javascript console telling you what each component is doing as it is doing it.</p>
</div>
</div>
</div>
<div class="item">
<i class="check icon"></i>
<div class="content">
<div class="header">Settings can be overwritten after initialization</div>
<p>Semantic provides methods to set default settings, set settings at initialization, and set settings after initialization, allowing complete flexibility over component behaviors.</p>
<div class="item">
<i class="check icon"></i>
<div class="content">
<div class="header">Settings can be overwritten after initialization</div>
<p>Semantic provides methods to set default settings, set settings at initialization, and set settings after initialization, allowing complete flexibility over component behaviors.</p>
</div>
</div>
</div>
<div class="item">
<i class="check icon"></i>
<div class="content">
<div class="header">All modules include an initialize and destroy method</div>
<p>All events and metadata are namespaced and can be removed after initialization, modules automatically handle destroy/init events to allow users to lazy-initialize a plugin multiple times with no issues.</p>
<div class="item">
<i class="check icon"></i>
<div class="content">
<div class="header">All modules include an initialize and destroy method</div>
<p>All events and metadata are namespaced and can be removed after initialization, modules automatically handle destroy/init events to allow users to lazy-initialize a plugin multiple times with no issues.</p>
</div>
</div>
</div>
<div class="item">
<i class="check icon"></i>
<div class="content">
<div class="header">Instance available in metadata</div>
<p>Modules store their instance in metadata meaning that, in a pinch, you can directly modify the instance of a UI element by modifying its properties.</p>
<div class="item">
<i class="check icon"></i>
<div class="content">
<div class="header">Instance available in metadata</div>
<p>Modules store their instance in metadata meaning that, in a pinch, you can directly modify the instance of a UI element by modifying its properties.</p>
</div>
</div>
</div>
<a class="ui secondary labeled icon button" href="/spec/docs/module.commented.html">
<i class="book icon"></i>
View Commented Example
</a>
</div>
<a class="ui secondary labeled icon button" href="/spec/docs/module.commented.html">
<i class="book icon"></i>
View Commented Example
</a>
<h2 class="ui dividing header">Initializing</h2>
<p>UI Modules are not automatically initialized on page load. You must attach event handlers to trigger the behavior you require for each element</p>
<p>Its okay to initialize an element multiple times, the element will automatically destroy the previous instance and re-initiale with the settings provided.</p>
<div class="evaluated code" data-type="javascript">
$(document)
.ready(function() {
// just initializing
$('.help.icon')
.popup()
;
// initializing with settings
$('.ui.image')
.popup({
position: 'top right'
})
;
})
;
</div>
<div class="code" data-type="html" data-preview="true">
<i class="help link icon" data-content="This appears in the default location"></i>
<img class="ui medium image" src="/images/demo/photo.jpg" data-content="This pop-up appears to the top right">
<div class="ui tab" data-tab="init">
<p>UI Modules are not automatically initialized on page load. You must attach event handlers to trigger the behavior you require for each element</p>
<p>Its okay to initialize an element multiple times, the element will automatically destroy the previous instance and re-initialize with the settings provided.</p>
<div class="code" data-type="html" data-preview="true">
<div class="ui medium image">
<div class="ui corner label">
<i class="help link icon" data-content="This appears to the right"></i>
</div>
<img src="/images/demo/photo.jpg" data-content="This appears in the default location">
</div>
</div>
<div class="evaluated code" data-type="javascript">
$(document)
.ready(function() {
// just initializing
$('.ui.image img')
.popup()
;
// initializing with settings
$('.ui.image .help')
.popup({
position: 'right center'
})
;
})
;
</div>
</div>
<div class="ui tab" data-tab="behavior">
<h3 class="ui header">Triggering a Behavior</h3>
<p>Behaviors are an element's API. They invoke functionality or return aspects of the current state for an element</p>
<p>Behaviors can be called using spaced words, camelcase or dot notation. The preferred method however is <b>spaced words</b>. Method lookup is done automatically internally.</p>
<div class="code">
// Sets a popup to top left position with an offset of negative five
$('.popup.icon')
.popup('set position', 'top left', -5)
;
</div>
<div class="code">
// returns boolean value instead of jQuery chain
$('.popup.icon').popup('is visible');
</div>
<div class="code">
// if selector size > 1 returns array of values [boolean, boolean...]
$('.many.popup').popup('is visible');
</div>
<h2 class="ui dividing header">Behaviors</h2>
<p>Behaviors are an elements API. These can be invoke functionality or return aspects of the current state for an element</p>
<h3 class="ui header">Overriding Internals</h3>
<p>Internal methods can be overwritten at run-time for individual instances of a module as well. For example:</p>
<div class="code">
// this instance will popup an alert for each log
$('.popup.icon')
.popup('internal', 'debug', function() {
window.alert(arguments[0]);
})
;
</div>
<h3 class="ui header">Triggering a Behavior</h3>
<p>Behaviors are triggered in Semantic using a familiar syntax. API behaviors can be called using spaced words, camelcase or dot notation. The preferred method however is <b>spaced words</b>. Method lookup is done internally.</p>
<div class="code" data-title="Invoking Behaviors with arguments">
// Sets a popup to top left position with an offset of negative five
$('.popup.icon')
.popup('set position', 'top left', -5)
;
</div>
<div class="code" data-title="Invoking Behaviors that does not Chain">
// returns boolean value instead of jQuery chain
$('.popup.icon').popup('is visible');
</div>
<div class="code" data-title="Returning multiple values">
// if selector size > 1 returns array of values [boolean, boolean...]
$('.many.popup').popup('is visible');
</div>
<h3 class="ui header">Overriding Internals</h3>
<p>Internal methods can be overwritten at run-time for individual instances of a module as well. For example:</p>
<div class="code" data-title="Changing Popup Logging">
// this instance will popup an alert for each log
$('.popup.icon')
.popup('internal', 'debug', function() {
window.alert(arguments[0]);
})
;
<h3 class="ui header">Common Behaviors</h3>
<p>All modules have a set of core behaviors which allow you to configure the component</p>
<table class="ui celled definition sortable table segment">
<thead>
<th>Name</th>
<th>Usage</th>
</thead>
<tbody>
<tr>
<td>initialize</td>
<td>Initializes an element, adding page event handlers and init data</td>
</tr>
<tr>
<td>destroy</td>
<td>Removes all changes to the page made by initialization</td>
</tr>
<tr>
<td>refresh</td>
<td>Refreshes cached values for a component</td>
</tr>
<tr>
<td>setting(setting, value)</td>
<td>Allows you to modify or read a component setting</td>
</tr>
<tr>
<td>invoke(query, passedArguments, instance)</td>
<td>Internal method used for translating sentence case method into an internal method</td>
</tr>
<tr>
<td>debug(comment, values)</td>
<td>Displays a log if a user has logging enabled</td>
</tr>
<tr>
<td>verbose(comment, values)</td>
<td>Displays a log if a user has verbose logging enabled</td>
</tr>
<tr>
<td>error(name)</td>
<td>Displays a name error message from the component's settings</td>
</tr>
<tr>
<td>performance log(comment, value)</td>
<td>Adds a performance trace for an element</td>
</tr>
<tr>
<td>performance display</td>
<td>Displays current element performance trace</td>
</tr>
</tbody>
</table>
</div>
<div class="ui tab" data-tab="settings">
<p>Unlike many javascript components, anything arbitrary in Semantic is a setting. This means no need to dig inside the internals of the component to alter an expected css selector or class name, simply alter the settings object</p>
<h3 class="ui header">Common Behaviors</h3>
<p>All modules have a set of core behaviors which allow you to configure the component</p>
<table class="ui celled definition sortable table segment">
<thead>
<th>Name</th>
<th>Usage</th>
</thead>
<tbody>
<tr>
<td>initialize</td>
<td>Initializes an element, adding page event handlers and init data</td>
</tr>
<tr>
<td>destroy</td>
<td>Removes all changes to the page made by initialization</td>
</tr>
<tr>
<td>refresh</td>
<td>Refreshes cached values for a component</td>
</tr>
<tr>
<td>setting(setting, value)</td>
<td>Allows you to modify or read a component setting</td>
</tr>
<tr>
<td>invoke(query, passedArguments, instance)</td>
<td>Internal method used for translating sentence case method into an internal method</td>
</tr>
<tr>
<td>debug(comment, values)</td>
<td>Displays a log if a user has logging enabled</td>
</tr>
<tr>
<td>verbose(comment, values)</td>
<td>Displays a log if a user has verbose logging enabled</td>
</tr>
<tr>
<td>error(name)</td>
<td>Displays a name error message from the component's settings</td>
</tr>
<tr>
<td>performance log(comment, value)</td>
<td>Adds a performance trace for an element</td>
</tr>
<tr>
<td>performance display</td>
<td>Displays current element performance trace</td>
</tr>
</tbody>
</table>
<h3 class="ui header">Common Settings</h3>
<p>That means class names, selectors, error output, dom metadata etc can all be controlled by altering the settings object.</p>
<p>The following is a list of common settings usually found in each javascript module.
<table class="ui celled sortable definition table segment">
<thead>
<th>Name</th>
<th>Usage</th>
</thead>
<tbody>
<tr>
<td>name</td>
<td>Name used in debug logs to differentiate this widget from other debug statements.</td>
</tr>
<tr>
<td>debug</td>
<td>Provides standard debug output to console.</td>
</tr>
<tr>
<td>performance</td>
<td>Provides performance logging to console of internal method calls.</td>
</tr>
<tr>
<td>verbose</td>
<td>Provides extra debug output to console</td>
</tr>
<tr>
<td>namespace</td>
<td>Namespace used for DOM event and metadata namespacing. Allows module's destroy method to not affect other modules.</td>
</tr>
<tr>
<td>metadata</td>
<td>An object containing any metadata attributes used.</td>
</tr>
<tr>
<td>selectors</td>
<td>An object containing all selectors used in the module, these are usually children of the module.</td>
</tr>
<tr>
<td>classNames</td>
<td>An object containing all classnames used in the module.</td>
</tr>
<tr>
<td>errors</td>
<td colspan="2">A javascript array of error statements used in the plugin. These may sometimes appear to the user, but most often appear in debug statements.
</td>
</tr>
</tbody>
</table>
<h2 class="ui dividing header">Settings</h2>
<p>Unlike many javascript components, anything arbitrary in Semantic is a setting. This means no need to dig inside the internals of the component to alter an expected css selector or class name, simply alter the settings object</p>
<h3 class="ui header">Common Settings</h3>
<p>That means class names, selectors, error output, dom metadata etc can all be controlled by altering the settings object.</p>
<p>The following is a list of common settings usually found in each javascript module.
<table class="ui celled sortable definition table segment">
<thead>
<th>Name</th>
<th>Usage</th>
</thead>
<tbody>
<tr>
<td>name</td>
<td>Name used in debug logs to differentiate this widget from other debug statements.</td>
</tr>
<tr>
<td>debug</td>
<td>Provides standard debug output to console.</td>
</tr>
<tr>
<td>performance</td>
<td>Provides performance logging to console of internal method calls.</td>
</tr>
<tr>
<td>verbose</td>
<td>Provides extra debug output to console</td>
</tr>
<tr>
<td>namespace</td>
<td>Namespace used for DOM event and metadata namespacing. Allows module's destroy method to not affect other modules.</td>
</tr>
<tr>
<td>metadata</td>
<td>An object containing any metadata attributes used.</td>
</tr>
<tr>
<td>selectors</td>
<td>An object containing all selectors used in the module, these are usually children of the module.</td>
</tr>
<tr>
<td>classNames</td>
<td>An object containing all classnames used in the module.</td>
</tr>
<tr>
<td>errors</td>
<td colspan="2">A javascript array of error statements used in the plugin. These may sometimes appear to the user, but most often appear in debug statements.
</td>
</tr>
</tbody>
</table>
<h3 class="ui header">Changing Settings</h3>
<p>The following examples use <a href="/modules/popup.html">popup</a> as an example for how to modify settings</p>
<div class="ui ordered very relaxed list">
<div class="item">
<div class="header">Setting module defaults</div>
Default settings for the module can be overridden by modifying <b>$.fn.module.settings</b>.
<br><div class="code" data-title="Example: Overriding a Popup's Log Name">$.fn.popup.settings.moduleName = 'Godzilla';</div>
</div>
<div class="item">
<div class="header">At initialization</div>
A settings object can be passed in when initializing the plugin
<br>
<div class="code" data-title="Example: Settings popup's log name at initialization">
$('.foo')
.popup({
moduleName : 'Godzilla',
verbose : true
})
;
</div>
</div>
<div class="item">
<div class="header">After initialization</div>
Settings can be changed after a module is initialized by calling the 'settings' method on the module with either a settings object or a name, value pair.
<br>
<div class="code" data-title="Example: Changing a Popup's log name after Initialization">
$('.foo')
// lets initialize that!
.popup()
// oh wait forgot something
.popup('setting', 'moduleName', 'Godzilla')
// and some more things
.popup('setting', {
debug : true,
verbose : true
})
;
<h3 class="ui header">Changing Settings</h3>
<p>The following examples use <a href="/modules/popup.html">popup</a> as an example for how to modify settings</p>
<div class="ui ordered very relaxed list">
<div class="item">
<div class="header">Setting module defaults</div>
Default settings for the module can be overridden by modifying <b>$.fn.module.settings</b>.
<br>
<div class="code">
$.fn.popup.settings.moduleName = 'Godzilla';
</div>
</div>
<div class="item">
<div class="header">At initialization</div>
A settings object can be passed in when initializing the plugin
<br>
<div class="code">
$('.foo')
.popup({
moduleName : 'Godzilla',
verbose : true
})
;
</div>
</div>
<div class="item">
<div class="header">After initialization</div>
Settings can be changed after a module is initialized by calling the 'settings' method on the module with either a settings object or a name, value pair.
<br>
<div class="code">
$('.foo')
// lets initialize that!
.popup()
// oh wait forgot something
.popup('setting', 'moduleName', 'Godzilla')
// and some more things
.popup('setting', {
debug : true,
verbose : true
})
;
</div>
</div>
</div>
<h3 class="ui header">Reading Settings</h3>
<p>Settings can also be read programmatically:
<div class="code">
// outputs 'godzilla' (1) or ['godzilla', 'godzilla'...] (2 or more)
$('.foo').popup('setting', 'moduleName');
</div>
</div>
<h3 class="ui header">Reading Settings</h3>
<p>Settings can also be read programmatically:
<div class="code" data-title="Reading Settings">
// outputs 'godzilla' (1) or ['godzilla', 'godzilla'...] (2 or more)
$('.foo').popup('setting', 'moduleName');
</div>
</div>
</body>

28
server/documents/modules/accordion.html.eco

@ -137,6 +137,8 @@ type : 'UI Module'
<div class="ui tab" data-tab="examples">
<h2 class="ui dividing header">Examples</h2>
<div class="example">
<h3 class="ui header">Form</h3>
<p>An accordion can be used anywhere where content can be shown or hidden. For example, to show optional form fields.</p>
@ -181,30 +183,26 @@ type : 'UI Module'
<div class="field">
<div class="ui radio checkbox">
<input type="radio" name="size" value="small" />
<label></label>
<label>Small</label>
</div>
<label>Small</label>
</div>
<div class="field">
<div class="ui radio checkbox">
<input type="radio" name="size" value="medium" />
<label></label>
<label>Medium</label>
</div>
<label>Medium</label>
</div>
<div class="field">
<div class="ui radio checkbox">
<input type="radio" name="size" value="large" />
<label></label>
<label>Large</label>
</div>
<label>Large</label>
</div>
<div class="field">
<div class="ui radio checkbox">
<input type="radio" name="size" value="x-large" />
<label></label>
<label>X-Large</label>
</div>
<label>X-Large</label>
</div>
</div>
</div>
@ -221,30 +219,26 @@ type : 'UI Module'
<div class="field">
<div class="ui checkbox">
<input type="checkbox" name="small" />
<label></label>
<label>Red</label>
</div>
<label>Red</label>
</div>
<div class="field">
<div class="ui checkbox">
<input type="checkbox" name="medium" />
<label></label>
<label>Orange</label>
</div>
<label>Orange</label>
</div>
<div class="field">
<div class="ui checkbox">
<input type="checkbox" name="large" />
<label></label>
<label>Green</label>
</div>
<label>Green</label>
</div>
<div class="field">
<div class="ui checkbox">
<input type="checkbox" name="x-large" />
<label></label>
<label>Blue</label>
</div>
<label>Blue</label>
</div>
</div>
</div>
@ -255,8 +249,8 @@ type : 'UI Module'
</div>
<div class="ui tab" data-tab="usage">
<h2 class="ui dividing header">Usage</h2>
<h3 class="ui header">Initializing an accordion</h3>
<p>After including accordion html in a page you can attach behaviors with javascript</p>
<div class="test code">
$('.ui.accordion')
.accordion()

81
server/documents/modules/checkbox.html.eco

@ -124,40 +124,31 @@ type : 'UI Module'
<div class="ui tab" data-tab="usage">
<h2 class="ui dividing header">Usage</h2>
<h3 class="ui header">Check Box</h3>
<p>A checkbox can be initialized with javascript for increase programmatic control</p>
<div class="example">
<h4 class="ui header">Check Box</h4>
<p>A checkbox can be initialized with javascript</p>
<div class="ui language label">Javascript</div>
<div class="code">
$('.ui.checkbox')
.checkbox()
;
</div>
<div class="ui language label">HTML</div>
<div class="code" data-type="html" data-preview="true">
<div class="code">
$('.ui.checkbox')
.checkbox()
;
</div>
<div class="code" data-type="html">
<div class="ui checkbox">
<input type="checkbox">
<label>Poodle</label>
</div>
</div>
</div>
<div class="static example">
<h4 class="ui header">Check Box without Javascript</h4>
<p>A checkbox can also be used without using javascript by matching the <code>id</code> attribute of the input field to the <code>for</code> attribute of the accompanying label</p>
<div class="ui language label">HTML Only</div>
<div class="code" data-type="html" data-preview="true">
<h3 class="ui header">Check Box without Javascript</h3>
<p>A checkbox can also be used without using javascript by matching the <code>id</code> attribute of the input field to the <code>for</code> attribute of the accompanying label</p>
<div class="code" data-type="html">
<div class="ui checkbox">
<input type="checkbox" id="unique-id" />
<label for="unique-id">Poodle</label>
</div>
</div>
</div>
</div>
</div>
<div class="ui tab" data-tab="examples">
@ -170,7 +161,6 @@ type : 'UI Module'
$('.enable.button')
.on('click', function() {
$(this)
.parent()
.nextAll('.checkbox')
.checkbox('enable')
;
@ -179,7 +169,6 @@ type : 'UI Module'
$('.disable.button')
.on('click', function() {
$(this)
.parent()
.nextAll('.checkbox')
.checkbox('disable')
;
@ -188,18 +177,15 @@ type : 'UI Module'
$('.toggle.button')
.on('click', function() {
$(this)
.parent()
.nextAll('.checkbox')
.checkbox('toggle')
;
})
;
</div>
<div class="ui buttons">
<div class="ui enable button">Enable</div>
<div class="ui disable button">Disable</div>
<div class="ui toggle button">Toggle</div>
</div>
<div class="ui toggle button">Toggle</div>
<div class="ui positive enable button">Enable</div>
<div class="ui negative disable button">Disable</div>
<br><br>
<div class="ui slider checkbox">
<input type="checkbox" />
@ -246,10 +232,15 @@ type : 'UI Module'
<div class="ui tab" data-tab="settings">
<h3 class="ui header">Settings</h3>
<table class="ui red celled sortable definition table segment">
<h3 class="ui header">
Checkbox Settings
<div class="sub header">Checkbox settings modify its behavior</div>
</h3>
<table class="ui celled sortable definition table segment">
<thead>
<th colspan="3">Checkbox Settings</th>
<th>Setting</th>
<th class="four wide">Default</th>
<th>Description</th>
</thead>
<tbody>
<tr>
@ -265,31 +256,39 @@ type : 'UI Module'
</tbody>
</table>
<table class="ui teal celled sortable definition table segment">
<h3 class="ui header">
Callbacks
<div class="sub header">Callback settings specify a function to occur after a specific behavior.</div>
</h3>
<table class="ui celled sortable definition table segment">
<thead>
<th colspan="3">Callbacks</th>
<th class="four wide">Setting</th>
<th>Context</th>
<th>Description</th>
</thead>
<tbody>
<tr>
<td>onChange</td>
<td>None</td>
<td>Checkbox</td>
<td>Callback after a checkbox is either disabled or enabled.</td>
</tr>
<tr>
<td>onEnable</td>
<td>None</td>
<td>Checkbox</td>
<td>Callback after a checkbox is enabled.</td>
</tr>
<tr>
<td>onDisable</td>
<td>None</td>
<td>Checkbox</td>
<td>Callback after a checkbox is disabled.</td>
</tr>
</tbody>
</table>
<h4 class="ui header">DOM Settings</h4>
<p>DOM settings specify how this module should interface with the DOM</p>
<h3 class="ui header">DOM Settings
<div class="sub header">DOM settings specify how this module should interface with the DOM</div>
</h3>
<table class="ui celled sortable definition table segment">
<thead>
<th>Setting</th>
@ -317,11 +316,9 @@ type : 'UI Module'
<td>className</td>
<td colspan="2">
<div class="code">
className : {
radio : 'radio'
}
</div>
</td>
</tr>

1082
server/documents/modules/dropdown.html.eco
File diff suppressed because it is too large
View File

1
server/files/javascript/semantic.js

@ -42,6 +42,7 @@ semantic.ready = function() {
$menuPopup = $('.ui.main.menu .popup.item'),
$menuDropdown = $('.ui.main.menu .dropdown'),
$pageTabMenu = $('body > .tab.segment .tabular.menu'),
$pageTabs = $('body > .tab.segment .menu .item'),
$downloadDropdown = $('.download.buttons .dropdown'),

6
server/files/stylesheets/semantic.css

@ -159,6 +159,12 @@ a:hover {
#example > .tab.segment {
padding-bottom: 0em;
margin-bottom: 2em;
}
#example > .tab.segment .fixed .tabular.menu {
position: fixed;
top: 50px;
}
#example > .tab.segment .vertical.menu {
display: none;

Loading…
Cancel
Save